资源描述:
《单片机第章习题解答.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十章习题解答1.为什么要消除按键的机械抖动?消除按键的机械抖动的方法有哪几种?原理是什么?解:在按键的闭合和断开过程中,由于开关的机械特性,导致了按键抖动的产生。如果不消除按键的机械抖动,按键的状态读取将有可能出现错误。消除按键抖动一般是采用软件或硬件去抖。软件去抖的原理:在第一次检测到有键按下时,该键所对应的航线是为低电平,执行一端延时10ms的子程序后,确认该行线电平是否仍然为低电平,如果仍为低电平,则确认为该行确实有键按下。2.判断下列说法是否正确?(1)8279是一个用于键盘和LED(LCD)显示器的专用芯片。(2)在单片机与微型打印机的接口中,打印机的BUSY信号可
2、作为查询信号或中断请求信号使用。(3)为给以扫描发方式工作的8*8键盘提供接口电路,在接口电路中只需要提供2个输入口和1个输出口。(4)LED的字型码是固定不变的。解:(1)正确;(2)正确(3)错误(4)错误3.LED的静态显示方式于动态显示方式有何区别?各有什么优缺点?解:静态显示时,数据是分开送到每一位LED上的。而动态显示则是数据是送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示则好一点,适合用在显示位数较多的场合。4.写出表10-1中仅显示小数点“.”的段码。解:80H(共阴极);7FH(共阳极)5.说明矩阵式键盘
3、按键按下的识别原理。解:按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平亦为高。将行、列线信号配合起来并做适当的处理,才能确定闭合键的位置。6.对于图10-11的键盘,采用线反转法原理来编写识别某一按键按下并得到其键号的程序。解:先对P1口高四位送低电平,读取P1口低四位的值;再对P1口低四位送低电平,读取P1口高四位的值,将两次读到的值组合在一起就得到了按键的特征码,在根
4、据特征码查找键值。KEYIN:MOVP1,#0FH;反转读键MOVA,P1ANLA,#0FHMOVB,AMOVP1,#0F0HMOVA,P1ANLA,#0F0HORLA,BCJNEA,#0FFH,KEYIN1RET;未按键KEYIN1:MOVB,A;暂存特征码MOVDPTR,#KEYCOD;指向码表MOVR3,#0FFH;顺序码初始化KEYIN2:INCR3MOVA,R3MOVCA,@A+DPTRCJNEA,B,KEYIN3MOVA,R3;找到,取顺序码RETKEYIN3:CJNEA,#0FFH,KEYIN2;未完,再查RET;已查完,未找到,以未按键处理KEYCOD:DB0E
5、7H,0EBH,0EDH,0EEHDB0D7H,0DBH,0DDH,0DEHDB0B7H,0BBH,0BDH,0BEHDB77H,7BH,7DH,7EH7.键盘有哪3种工作方式,它们各自的工作原理及特点是什么?解:一.编程扫描方式:当单片机空闲时,才调用键盘扫描子程序,反复的扫描键盘,等待用户从键盘上输入命令或数据,来响应键盘的输入请求。二.定时扫描工作方式:单片机对键盘的扫描也可用定时扫描方式,即每隔一定的时间对键盘扫描一次。三.中断工作方式:只有在键盘有键按下时,才执行键盘扫描程序并执行该按键功能程序,如果无键按下,单片机将不理睬键盘。8.根据图10-14的电路,编写在6个
6、LED显示器上轮流显示“1,2,3,4,5,6”的显示程序。解:本电路图采用的是动态显示。程序如下DIR:MOVR0,#79H;从79H开始里面存放着MOVR3,#01H;1,2,3,4,5,6MOVA,R3LD0:MOVDPTR,#7F01H;位选码MOV@DPTR,AINCDPTRMOVA,@R0ADDA,#0DHMOVCA,@A+PC;取到笔形码DIR1:MOVX@DPTR,A;送出显示ACALLDL1MSINCROMOVR3JBACC.5,LD1;是否到最右边的LEDRLAMOVR3,A;保存位选码AJMPLD0LD1:RETDSEG:DB3FH,06H,5BH,4FH
7、,66H,6DH,7DH;0,1,2,3,4,5,6DL1MS:MOVR7,#02HDL:MOVR6,#0FFHDL6:DJNZR6,DL6DJNZR7,DLRET9.根据图10-17的接口电路编写在8个LED上轮流显示“1,2,3,4,5,6,7,8”的显示程序,比较一下与上一题显示程序的区别。解:本电路图采用的是静态显示。程序如下:DIR:SETBP3.3;允许显示MOVSCON,#0;工作方式一MOVDPTR,#TAB;笔形码MOVR7,#08H;初值为8CALLOUT;8DECR7C