第5章单片机原理课后答案Word下载.docx
- 文档编号:18761068
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:11
- 大小:547.66KB
第5章单片机原理课后答案Word下载.docx
《第5章单片机原理课后答案Word下载.docx》由会员分享,可在线阅读,更多相关《第5章单片机原理课后答案Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
8.矩阵键盘有几种编码方式怎样编码
通常有以下两种方法进行编码;
(1)用连接键盘的I/O线的二进制组合进行编码。
(2)顺序排列编码。
9.简述对矩阵键盘的扫描过程。
矩阵式键盘的工作过程可分为两步:
第一步是CPU首先检测键盘上是否有键按下;
第二步是识别哪一个键按下。
(1)检测键盘上是否有键按下的处理方法是:
将列线送入全扫描字,读入行线的状态来判别。
(2)识别键盘中哪一个键按下的处理方法是:
将列线逐列置成低电平,检查行输入状态,称为逐列扫描。
10.共阴极数码管与共阳极数码管有何区别
共阴极结构,8段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,要使哪根发光二极管亮,则对应的阳极端接高电平;
共阳极结构,8段发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源,要使哪根发光二极管亮,则对应的阴极端接地。
11.简述LED数码管显示的译码方式。
所谓译码方式是指由显示字符转换得到对应的字段码的方式。
对于LED数码管显示器,通常的译码方式有硬件译码方式和软件译码方式两种。
12.简述LED动态显示过程。
LED动态显示是将所有的数码管的段选线并接在一起,用一个I/O接口控制,公共端不是直接接地(共阴极)或电源(共阳极),而是通过相应的I/O接口线控制,工作过程为:
第一步使右边第一个数码管的公共端D0为1,其余的数码管的公共端为0,同时在I/O
(1)上发送右边第一个数码管的字段码,这时,只有右边第一个数码管显示,其余不显示;
第二步使右边第二个数码管的公共端D1为1,其余的数码管的公共端为0,同时在I/O
(1)上发送右边第二个数码管的字段码,这时,只有右边第二个数码管显示,其余不显示,依此类推,直到最后一个,这样4个数码管轮流显示相应的信息,一次循环完毕后,下一次循环又这样轮流显示,从计算机的角度看是一个一个地显示,但由于人的视觉暂留效应,只要循环的周期足够快,则看起来所有的数码管就都是一起显示的了,这就是动态显示的原理。
13.使用2764(8KB8)芯片通过部分译码法扩展24KB程序存储器,画出硬件连接图,指明各芯片的地址空间范围。
使用2764(8K8)芯片通过部分译码法扩展24KB程序存储器,须要3块。
采用线译码,与第一片2764的CE相连,与第二片2764的CE相连,与第三片2764的CE相连,硬件连接如下:
地址空间如下:
第一片:
1100000000000000~1101111111111111;
即C000H~DFFFH;
第二片:
1010000000000000~1011111111111111;
即A000H~BFFFH;
第三片:
0110000000000000~0111111111111111;
即6000H~7FFFH;
14.使用6264(8KB8)芯片通过全译码法扩展24KB数据存储器,画出硬件连接图,指明各芯片的地址空间范围。
使用6264(8K8)芯片通过全译码法扩展24KB程序存储器,须要3块。
采用138译码器译码,硬件连接如下:
0000000000000000~0001111111111111;
即0000H~1FFFH;
0010000000000000~0011111111111111;
即2000H~3FFFH;
0100000000000000~0101111111111111;
即3000H~5FFFH;
15.试用一片74LS373扩展一个并行输入口,画出硬件连接图,指出相应的控制命令。
答:
硬件电路图如下:
74LS373的输入端为扩展的输入口,输出端接8051的数据总路线P0口,控制端接高电平,输出允许由片外数据存储器读信号RD和控制。
当片外数据存储器读信号RD和同为低平时从74LS373中读入输入的数据。
输入数据的命令如下:
MOVDPTR,#0FE00H
MOVXA,@DPTR
16.用8255A扩展并行I/O,实现把8个开关的状态通过8个二极管显示出来,画出硬件连接图,用汇编语言和C语言分别编写相应的程序。
硬件电路图如下:
8051与8255的连接略,设8255的A,B,C和控制控口的地址为7F00H,7F01H,7F02H,7F03H。
8255的A口接8个开关,B口接8个发光二极管。
程序如下:
汇编程序
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#7F03H
MOVA,#90H
MOVX@DPTR,A
LOOP:
MOVDPTR,#7F00H
MOVXA,@DPTR
MOVDPTR,#7F01H
SJMPLOOP
SJMP$
END
C语言程序:
#include<
>
main()
{
unsignedchari;
XBYTE[0x7f03]=0x90;
while
(1)
i=XBYTE[0x7f00];
XBYTE[0x7f01]=i;
}
17.用汇编语言编写出定时扫描方式下矩阵键盘的处理程序。
该程序放于定时器的中断服务程序中。
定时器每10ms中断一次,执行一次中断服务程序。
F1和F2标志位用片内RAM的50H和51H单元。
ACALLKS1
JNZLK1
MOV50H,#0;
无键按下,F1的F0标志清0结束
MOV51H,#0
SJMPOUT
LK1:
CJNE50H,#1,OUT1;
有键按下检查F1标志是否为1,不为1置1结束。
CJNE51H,#01,OUT;
再检查F2标志是否为1,为1说明已处理按键则结束。
LK2:
MOVR2,#0FEH;
扫描查询键码
MOVR4,#00H
LK4:
MOVDPTR,#7F00H
MOVA,R2
MOVX@DPTR,A
INCDPTR
INCDPTR
MOVXA,@DPTR
JB,LONE
MOVA,#00H
AJMPLKP
LONE:
JB,LTWO
MOVA,#08H
AJMPLKP
LTWO:
JB,LTHR
MOVA,#10H
AJMPLKP
LTHR:
JB,NEXT
MOVA,#18H
LKP:
ADDA,R4;
求键码放累加大器A,
MOV51H,#1;
F2标志置1,结束
NEXT:
INCR4
JNB,KEND
RLA
MOVR2,A
SJMPLK4
KEND:
SJMPOUT;
扫描完结束
KS1:
MOVDPTR,#7F00H;
检查有无按键
MOVX@DPTR,A
INCDPTR
INCDPTR
CPLA
ANLA,#0FH
RET
OUT1:
MOV50H,#1
OUT:
18.用C语言编写出定时扫描方式下矩阵键盘的处理程序。
F1和F2标志已在主函数前定义。
7f7f0f0f7f7f试编制44的键盘扫描程序。
设P0口低4位接行线,P2口低4位接列线。
有键按下,R2中放键代码0~F,有无键按下,R2中放无键代码FFH。
KEYSUB:
ACALLKS1;
调用判断有无键按下子程序
JNZLK1;
有键按下时,(A)≠0转消抖延时
AJMPNOKEY;
无键按下返回
ACALLTM6;
调用10ms延时子程序
ACALLKS1;
查有无键按下,若真有键按下
JNZLK2;
键(A)≠0逐行扫描
NOKEY:
MOVR2,#0FFH;
不是真有键按下,R2中放无键代码FFH
AJMPKEYOUT;
返回
MOVR3,#0FEH;
初始行扫描字(0行)送入R3
MOVR4,#00H;
初始行(0行)号送入R4
LK3:
MOVA,R3;
行扫描字送至P0口
MOVP0,A
MOVA,P2;
从P2口读入列状态
JB,LONE;
查第0列无键按下,转查第1列
MOVA,#00H;
第0列有键按下,列首键码#00H→A
AJMPLKP;
转求键码
JB,LTWO;
查第1列无键按下,转查第2列
MOVA,#04H;
第1列有键按下,列首键码#04H→A
JB,LTHREE;
查第2列无键按下,转查第3列
MOVA,#08H;
第2列有键按下,列首键码#08H→A
LTHREE:
JB,KNEXT;
查第3列无键按下,转查下一行
MOVA,#0CH;
第3列有键按下,列首键码#0CH→A
ADDA,R4;
求键码,键码=列首键码+行号
MOVR2,A;
键码放入R2中
ACALLKS1;
等待键释放
JNZLK4;
键未释放,等待
KEYOUT:
RET;
键扫描结束,出口状态R2:
无键按下为FFH,有键按下为键码
KNEXT:
INCR4;
准备扫描下一行,行号加1
MOVA,R3;
取行扫描字送累加器A
JNB,NOKEY;
判断4行扫描完否
RLA;
扫描字左移一位,变为下一行扫描字
MOVR3,A;
扫描字送入R3中保存
AJMPLK3;
转下一行扫描
MOVA,#00H;
全扫描字→A
MOVP0,A;
全扫描字送往P0口
读入P2口行状态
CPLA;
变正逻辑,以高电平表示有键按下
ANLA,#0FH;
屏蔽高4位,只保留低4位列线值
RET;
出口状态:
(A)≠0时有键按下
TM12ms:
MOVR7,#14H;
延时10ms子程序
TM:
MOVR6,#0FFH
TM6:
DJNZR6,TM6
DJNZR7,TM
RET
20.根据图,编制一个在两个数码管上显示1和2的显示程序。
图见书
程序:
MOVP1,#B;
在第一个数码管显示1
在第二个数码管显示2
21.根据图,用汇编语言或C语言编制一个在8个数码管上滚动显示1~8的程序。
显示子程序DISPLAY见书,在字段码表最后放不显示的编码00H,显示缓冲区50H~57H;
显示效果:
在第一个数码管上显示1后,第一个数码管不显示,然后在第二个数码管上显示2,依此类推,直到在第八个上显示8。
然后重复。
MOVR1,#50H
MOVR4,#08H
MOVA,#10H
LOOP:
MOV@R1,A;
初始化为全部不显示。
INCR1
DJNZR4,LOOP
START:
MOVR2,#01H
MOVR4,#08H
LOOP2:
MOVA,R2
MOV@R1,A
MOVR5,#0FFH
LOOP1:
LCALLDISPLAY
DJNZR5,LOOP1
INCR1
INCR2
DJNZR4,LOOP2
SJMPSTART
END
22根据图,用汇编语言或C语言编制程序,要求按键从左边入右边出。
参考书上。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 课后 答案