单片机原理及接口技术课后习题答案 第八 九章
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章:
1.下图831是4片8K×8位存储器芯片的连接图。请确定每片存储器芯片的地址范围
答:设地址线A0-A7分别接在引脚,A8-A15分别接在引脚,则:
1#芯片地址:0000H-1FFFH,2#芯片地址:2000H-3FFFH,3#芯片地址:4000H-5FFFH,4#芯片地址:6000H-7FFFH,
2.用8255的A口做输入口,B口做输出口。假设8255工作在方式1,控制口地址为7FH,写出相应的初始化程序。
答:MOVR0,#07FH;8255控制字地址
MOVA,#B;或1011*00*B,*表示任意
MOVX@R0,A
3.用到三片74HC373的某89C51应用系统的电路如上图所示。现要求通过74HC373(2)输出80H,请编写相应的程序。
答:从图中可知74HC373(1)的地址为012H,74HC373(2)的地址为02H,74HC373(3)的地址为04H,且芯片的使能端与单片机的WR端相连是作为外部存储器扩展,所以程序如下:
MOVR0,#02H
MOVA,#80h
MOVX@R0,A
第九章
1.设计一个3×3行列式键盘电路并编写键扫描子程序。
答:图略,设接行扫描口,接列扫描口。程序如下:
KEY:LCALL KS;调用判断有无键按下子程序
JZ KEY;无键按下,重新扫描键盘
LCALL T10ms;有键按下,延时去抖动
LCALL KS
JZ KEY
MOV R2,#0FEH;首列扫描字送R2
MOV R4,#00H;首列号#00H送入R4
MOV P0,#0FFH
LK1: MOV P1,R2;列扫描字送P1口
MOV A,P0
JB ,ONE;0行无键按下,转1行
MOV A,#00H;0行有键按下,该行首号#00H送A LJMP KP;转求键号
ONE:JB ,TWO;1行无键按下,转下列
MOV A,#03H;1行有键按下,该行首号#03H送A LJMPKP;转求键号
TWO:JB ,NEXT;1行无键按下,转下列MOVA,#06H;2行有键按下,该行首号#06H送A KP: ADD A,R4;求键号,键号=行首键号+列号PUSH ACC;键号进栈保护
LK: LCALL KS;等待键释放
JNZ LK;未释放,等待
POP ACC;键释放,键号送A
RET;键扫描结束,出口状态:(A)=键号NEXT:INC R4;列号加1
MOV A,R2;判断三列扫描完了吗
JNB ,KND;三列扫描完,返回
RL A;未扫描完,扫描字左移一位
MOV R2,A;扫描字入R2
AJMP LK1;转扫下一列
KND:AJMP KEY
KS: MOV P1,#0F8H;全扫描字送P1口
MOV P0, #0FFH
MOV A,P0;读入P0口行状态
CPL A;取正逻辑,高电平表示有键按下
ANL A,#03H;保留P0口低2位(屏蔽高6位)
RET;出口状态:(A)≠0时有键按下
T10ms:MOV R7,#10H;延迟10ms子程序
TS1: MOV R6,#0FFH
TS2: DJNZ R6,TS2
DJNZR7,TS1
RET
2.设计一个有6位LED显示、8个按键的显示键盘电路。
答:(1)利用串行口的(课堂上的例子),可去掉一行键盘,2位数百管。
(2)直接利用并行口扩展。
3.在一个fOSC为12MHz的89C51系统中接有一片A/D器件ADC0809,它的地址为7FF8H~7FFFH。试画出有关逻辑框图,并编写ADC0809初始化程序和定时采样通道2的程序(假设采样频率为1ms/次,采样4个数据,存于89C51内部RAM70H~73H中)。
答:电路如下图所示:
参考程序如下:(用延时程序实现1ms延时,也可使用定时器实现延时,请自行设计)
MOVR0,#70H
MOVR7,#4
MOVDPTR,#7FFAH;通道2地址
LP:MOVX@DPTR,A
LCALLDELAY1ms
MOVXA,@DPTR
MOVX@R0,A
INCR0
DJNZR7,LP
RET
4.在一个89C51单片机与一片DAC0832组成的应用系统中,DAC0832的地址为7FFFH,输出电压为0~5V。试画出有关逻辑框图,并编写产生矩形波,其波形占空比为1∶4,高电平时电压为V,低电平时电压为V的转换程序。
答:电路如下图所示:
(1)题目中没有要求输出频率,故可设为任意值,但要求占空比为1:4,则低电平时间应该为高电平时间的3倍。
(2)要求高电平时输出电压为,则单片机送入DAC0832的数字量应该为:*255/5=128(127),低电平时输出电压为,则单片机送入DAC0832的数字量应该为:*255/5=64。
参考程序如下:
MOVDPTR,#7FFFH
LP:MOVA,#128
MOVX@DPTR,A
LCALLDELAY
MOVA,#64
MOVX@DPTR,A
LCALLDELAY
LCALLDELAY
LCALLDELAY
SJMPLP
;延时程序请自行编写。