MCS与键盘、显示器、课件

上传人:hloru****lorv6 文档编号:243140572 上传时间:2024-09-16 格式:PPT 页数:52 大小:2.76MB
返回 下载 相关 举报
MCS与键盘、显示器、课件_第1页
第1页 / 共52页
MCS与键盘、显示器、课件_第2页
第2页 / 共52页
MCS与键盘、显示器、课件_第3页
第3页 / 共52页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第10章 MCS-51与键盘、显示器、拨盘、打印机的接 口设计,信息技术教研室,温川雪,输入外设:,键盘、BCD码拨盘等;,输出外设:,LED显示器、LCD显示器、打印机等。,10.1 LED显示器接口原理,LED,(Light Emitting Diode):发光二极管的缩写。,显示器前面冠以“LED”。,10.1.1 LED显示器的结构,常用的LED显示器为,8段,(或,7段,,8段比7段多了一,个小数点“dp”段)。,为使LED显示不同的符号或数字,,要为LED提供,段码,(或称,字型码,)。,提供给LED显示器的段码,(,字型码,),正好是一个字,节(8段),。各段与字节中各位对应关系如下:,按上述格式,8段LED的段码如表10-1所示。,显示字符,共阴极段码,共阳极段码,显示字符,共阴极段码,共阳极段码,0,3FH,C0H,c,39H,C6H,1,06H,F9H,d,5EH,A1H,2,5BH,A4H,E,79H,86H,3,4FH,B0H,F,71H,8EH,4,66H,99H,P,73H,8CH,5,6DH,92H,U,3EH,C1H,6,7DH,82H,T,31H,CEH,7,07H,F8H,y,6EH,91H,8,7FH,80H,H,76H,89H,9,6FH,90H,L,38H,C7H,A,77FH,88H,“灭”,00H,FFH,b,7CH,83H,表10-1 LED段码(8段),表10-1只列出了部分段码,,可根据实际情况选用,。,另外,,段码是相对的,,它由各字段在字节中所处的,位决定。例如表10-1中8段LED段码是按格式,:,而形成的,,“0”的段码为3FH(共阴)。,反之,如,将格式改为下列格式:,则,“0”的段码为7EH(共阴),。,字型及段码由设计者自行设定,,习惯上还是以“a”,段对应段码的最低位。,N个LED显示块有,N位位选线,和,8N根段码线,。,10.1.2 LED显示器工作原理,图10-2是4位 LED显示器的结构原理图。,段码线,控制,显示的字型,,,位选线,控制,该显示位的亮或暗。,静态显示,和,动态显示,两种显示方式。,1. 静态显示方式,各位的公共端连接在一起(接地或+5V)。,每位的段码线(adp)分别,与一个8位的锁存器输出相连。,显示字符一确定,相应锁存器的段码输出将维持,不变,直到送入另一个段码为止。,显示的亮度高,。,2. 动态显示方式,所有位的段码线,相应段并在一起,由一个8位I/O,口控制,,形成,段码线的多路复用,,各位的,公共端,分别由,相应的I/O线控制.,图10-4:4位8段LED动态显示电路。其中段码线占用一个8位I/O口,而位选线占用一个4位I/O口。,动态显示接口,此时同时向6位LED灯管输出相同的字符,如何能实现显示多个不同字符?,扫描显示方式(,Scan Display Mode):,某一时刻只选通一盏灯(其他5位是熄灭的),同时,段选线上输出相应要显示的字符的段码。,下一时刻,位选信号选通下一位LED,同时,段选线上输出相应要显示的字符的段码。,0 0 0 0 0 1,1,段码,39H,字符C,1,1,1,1,1,位选信号,3EH,字符U,7FH,字符8,3FH,字符0,40H,字符-,73H,字符P,位选信号轮流选中每位LED灯,同时段码输出对应显示器要显示的字符。,只要实现间隔足够短,由于LED显示器的余辉和人眼视觉残留作用,造成多位同时点亮的假象。,Segment,Code,Digit,Select,Signal,1,段码,00,无显示,39H,字符C,73H,字符P,3EH,字符U,1,1,1,1,1,位控信号,图10-5为8位LED,动态显示2003.10.10的过程,。,MOV DPTR,#TAB;表首地址,MOVC A,A+DPTR;查表段码,MOV DPTR, #A口地址,MOVX DPTR,A;输出段码,MOV A,R4; 取位码,MOVX DPTR, #C口地址,MOVX DPTR,A;输出位码,RL A; 左移位码,MOV R4,A; 保存新位码,TAB:,DB 00H,00H,00H,00H,00H,DB 39H,73H,3EH,40H,DB 7FH,3FH,6DH,06H,DB 00H,00H,00H,00H,00H,10.2 键盘接口原理,1. 键盘输入的特点,键盘:一组按键开关的集合,。,行线电压信号通过键盘开关机械触点的断开、闭合,,输出波形如图10-6。,2. 按键的确认,检测,行线,电平,高电平:,断开;,低电平,:闭合,,常用,软件来消除按键抖动。,基本思想,:检测到有键按下,键对应的行线为低,软,件延时10ms后,行线如仍为低,则确认该行有键按下。,3.如何消除按键的抖动,当键松开时,,行线变高,软件延时10ms后,行线仍为,高,说明按键已松开。,采取以上措施,,躲开了两个抖动期t1和t3的影响,。,10.2.2 键盘接口的工作原理,独立式,按键接口和,行列式,键盘接口。,1.独立式键盘接口,各键相互独立,每个按键各接一根输入线,通过,检,测输入线的电平状态,可很容易判断那个键被按下。,此种接口,适于键数较少,或,操作速度较高,的场合。,图10-7(a)为,中断方式的独立式,键盘工作电路,图10-7(b)为,查询方式的独立式,键盘工作电路,。,图10-8为8255A扩展I/O口的独立式按键接口电路。,图10-9用三态缓冲器扩展的I/O口的按键接口电路。,对图10-9独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。,KEYIN:MOV DPTR,#0BFFFH;键盘端口地址BFFFH,MOVX A,DPTR;读键盘状态,ANL A,#1FH;屏蔽高三位,MOV R3,A;保存键盘状态值,LCALL DELAY10;延时10ms去键盘抖动,MOVX A,DPTR;再读键盘状态,ANL A,#1FH;屏蔽高三位,CJNE A,R3,RETURN ;两次不同,抖动引起转RETURN,CJNE A,#1EH,KEY2 ;相等,有键按下,不等转KEY2,LJMP PKEY1;是K1键按下,转K1键处理 ;子程序PKEY1,KEY2: CJNE A,#1DH,KEY3 ;S2键未按下,转KEY3,LJMP PKEY2 ;S2键按下,转PKEY2处理,KEY3:CJNE A,#1BH,KEY4;S3未按下,转KEY4,LJMP PKEY3 ;S3按下,转PKEY3处理,KEY4: CJNE A,#17H,KEY5 ;S4键未按下,转KEY5,LJMP PKEY4 ;S4按下,转PKEY4处理,KEY5:CJNE A,#0FH,PASS ;S5未按下,转RETURN,LJMP PKEY5 ;S5按下,转PKEY5处理,RETURN:RET ;重键或无键按下,从子程序返回,识别和编程简单,,用在按键数较少的场合。,2. 行列式(矩阵式)键盘接口,用于按键数目较多的场合,,由,行线和列线组成,,,按键位于行、列的交叉点上。如图10-10所示。,1,1,1,1,无键按下,当有键按下时,行线电平由列线的电平来决定,无键按下,该行线为高电平,。,0 0 0 0,0,0,1 1 1,1,0,1 1,1 1,0,1,列输出,行输入,逐列置低电平,其余各列置为高电平,检查各行电平变化,如检查出在某行线电平为低,对应此时列线低电平出现位置,交叉点处为按键按下处,按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。,10.2.3 键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输,入,取决于键盘的工作方式。,原则:,即要保证能及时响应按键操作,又不要过多占,用CPU的工作时间。,通常,,键盘工作方式有,3种,,即编程扫描、定时扫,描和中断扫描。,1. 编程扫描方式,只有当单片机空闲时,才调用键盘扫描子程序,,扫描键盘。,工作过程:,(1)在键盘扫描子程序中,先判断有无键按下。,方法:,PA口8位输出全0,读PC口低4位状态,若PC0,PC3为全1,则说明键盘无键按下;若不全为1,则说明,键盘可能有键按下。,(2)用软件来消除按键抖动的影响。如有键按下,则,进行下一步。,(3)求按下键的键号。,(4)等待按键释放后,再进行按键功能的处理操作。,2. 定时扫描工作方式,利用单片机内的定时器,产生10ms的定时中断,对,键盘进行扫描。,3.中断工作方式,只有在键盘有键按下时,才执行键盘扫描程序,如,无键按下,单片机将不理睬键盘。,键盘所做的工作分为三个层次,,如图10-13。,第1层:,单片机如何来监视键盘的输入。三种工作方,式:编程扫描定时扫描中断扫描。,第2层:,确定具体按键的键号。体现在按键的识别方,法上就是:扫描法;线反转法。,第3层:,执行键处理程序。,10.3 键盘/显示器接口设计实例,10.3.1 利用8155H芯片实现键盘/显示器接口,8031外扩一片8155H,。,RAM地址:7E00H7EFFH。,I/O口地址:7F00H7F05H。,PA口,为输出口,控制键盘,列线的扫描,,同时又是6位共阴极显示器的,位扫描口,。,PB口,作为显示器段码输出口,,PC,口作为键盘的行线状态的输入口。,75452:,反相驱动器,,7407:,同相驱动器。,1动态显示程序设计,8031内部RAM 6个显示缓冲单元:79H7EH,存,放要显示的6位数据。,8155H的PB口输出相应位的段码,,依次改变PA口,输出为,高,的位,使某一位显示某一字符,其它位为暗。,动态地显示出由缓冲区中显示数据所确定的字符。程,序流程如图10-15 。,位码PA口,查表取段码,段码PB口,位码左移,移完一遍?,结束,参考程序,:,DIR: MOV R0,79H;置缓冲器指针初值,MOV R3,01H;位选码的初值送R3,MOV A,R3,LD0: MOV DPTR,7F01H;位选码PA口(PA.0位),;,最左边LED亮,MOVX DPTR,A,INC DPTR ;数据指针指向PB口,MOV A,R0 ;显示数据A,ADD A,0DH ;加偏移量(下条指令到表首间,;所有指令占的单元数),MOVC A,APC ;根据显示数据来查表取段码,DIR1:,MOVX DPTR,A ;段码8155HPB口,ACALL DL1ms ;该位显示1ms,INC R0 ;指针指向下一个数据单元,MOV A,R3 ;位选码送入A中,JB Acc.5,LD1 ;判断是否扫描到最右边的,; LED,如到最右边则返回,RL A ;位选码向左移一位,准备让,; 右边的下一位LED亮,MOV R3,A ;,位选码,送R3中保存,AJMP LD0 ;,LD1: RET ;,DSEG: DB 3FH,06H,5BH,4FH,66H,6DH ;共阴极段码表,DB 7DH,07H,7FH,6FH,77H,7CH,DB 39H,5EH,79H,71H,73H,3EH,DB 31H,6EH,1CH,23H,40H,03H,DB 18H,00H,DL1ms: MOV R7,02H;,延时1ms子程序,DL: MOV R6,0FFH,DL6: DJNZ R6,DL6,DJNZ R7,DL,RET,2键盘程序设计,(1)判别键盘上有无键闭合,(2)去除键的机械抖动,(3)判别闭合键的键号,(4)使CPU对键的一次闭合仅作一次处理,(1)判别键盘上有无键闭合,PA07输出全“0”,读PC口的状态,若PC0PC3为全“1”,则键盘上没有闭合键,若PC03不全为“1”,则有键处于闭合状态。,(2)去除键的机械抖动,延迟一定时间再判别键盘状态,仍有闭合,则处于稳定闭合期,否则是抖动,(3)判别闭合键的键号,PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0,PC3 PC2 PC1 PC0,1 1 1 1 1 1 1 0 1 1 1 1,1 1 1 1 1 1 0 1 1 1 0 1,1 1 1 1 1 0 1 1 1 1 1 1,0 1 1 1 1 1 1 1 1 1 1 1,.,.,闭合的键号:,N=行首键号+列号=8+1=9,(4)使CPU对键的一次闭合仅作一次处理,处理方法:等待闭合键释放以后再作处理。,键盘子程序如下:,KEYI:,ACALL KS1 ;调用判有无键闭合子程序,JNZ LK1 ;有键闭合,跳LK1,NI:,ACALL DIR ;无键闭合,调用显示子程序,延,;迟6ms后,跳KEYI,AJMP KEYI,LK1:,ACALL DIR ;可能有键闭合,软件延迟12ms去抖,ACALL DIR,ACALL KS1 ;调用判有无键闭合子程序,JNZ LK2 ;经去抖,判键确实闭合,跳LK2,ACALL DIR;调用显示子程序延迟6ms,AJMP KEYI;抖动引起,跳KEYI,LK2:,MOV R2,0FEH;列选码R2,MOV R4,00H;R4为列号计数器,LK4:,MOV DPTR,7F01H ;列选码8155H的PA口,MOV A,R2 ;,MOVX DPTR,A ;,INC DPTR ;数据指针增2,指向PC口,INC DPTR ;,MOVX A,DPTR ;读8155H PC口,JB Acc.0,LONE ;0行线为高,无键闭合,跳,LONE,转判1行,MOV A,00H ;0行有键闭合,首键号0A,AJMP LKP ;跳LKP,计算键号,LONE:,JB Acc.1,LTW0 ;1行线为高,无键闭合,跳LTW0,,;转判2行,MOV A,08H ;1行有键闭合,首键号8A,AJMP LKP,LTW0:,JB A.2,LTHR ;2行线为高,无键闭合,跳 ;LTHR,转判3行,MOV A,10H ;2行有键闭合,首键号10HA,AJMP LKP;跳LKP,计算键号,LTHR:,JB Acc.3,NEXT ;3行线为高,无键,;闭合,跳NEXT,准备下一列扫描,MOV A,18H;3行有键闭合,首键号18HA,LKP:,ADD A,R4 ;计算键号:首键号列号=键号,PUSH A ;键号进栈保护,LK3:,ACALL DIR;调用显示子程序,延时6ms,ACALL KS1;调用判有无键闭合子程序,延时;6ms,JNZ LK3 ;判键释放否,未释放,则循环,POP A ;键已释放,键号出栈A,RET,NEXT:,INC R4 ;列计数器加1,为下一列扫描作准备,MOV A,R2 ;判是否已扫到最后一列(最右一列),JNB Acc.7,KND ;键扫描已扫到最后一列,跳KND,,;重新进行整个键盘扫描,RL A ;键扫描未扫到最后一列,位选码左移,;一位,MOV R2,A ;位选码R2,AJMP LK4 ;,KND:,AJMP KEYI ;,KS1:,MOV DPTR ,#7F01H;判有无键闭合子程序,全“0”,;扫描口(PA口),MOV A,00H ;即列线全为低电平,MOVX DPTR,A ;,INC DPTR ;DPTR增2,指向PC口,INC DPTR ;指针增1,指向PC口,MOVX A,DPTR ;从PC口读行线的状态,CPL A ;行线取反,如无键按下,则A为0;,ANL A,0FH ;屏蔽无用的高4位,RET,10.3.2 利用8031的串行口实现键盘/显示器接口,串口未作它用,可用来外扩键盘/显示器。,串口为方式0输出,串口外接移位寄存器74LS164。,接口电路如图10-17。,74LS164(0)74LS164(7):,作为8位LED的段码输出,,8031的P3.4、P3.5:,两行键的行状态输入,P3.3(TXD):,同步移位脉冲输出控制线,,优点:,亮度大,,容易做到,显示不闪烁,,且,CPU不必,频繁的为显示服务,,从而使单片机有更多的时间处理,其它事务。,显示子程序:,DIR,: SETB P3.3 ;P3.3=1允许TXD脚同步移位,;脉冲输出,MOV R7,08H ;送出的段码个数,R7为段,;码个数计数器,MOV R0,7FH ;7FH78H为显示数据缓冲区,DL0,: MOV A,R0 ;取出要显示的数送A,ADD A,0DH ;加上偏移量,MOVC A,APC ;查段码表SEGTAG,取出段码,MOV SBUF ,A ;将段码送SBUF,DL1,: JNB TI,DL1;输出段码,查询TI状态,1个字节,;的段码输出完否?,CLR TI ;1个字节的段码输出完,清TI标志,DEC R0;指向下一个显示数据单元,DJNZ R7,DL0;段码个数计数器R7是否为0, 如不,; 为0,继续送段码,CLR P3.3 ;8个段码输出完毕,关显示器输出,RET ;返回,SEGTAB,:DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极段码表,,;0,1,2,3,4,DB 92H,82H,0F8H,90H;5,6,7,8,9,DB 88H,83H,0C6H,0A1H,86H;A,B,C,D,E,DB 8FH,0BFH,8CH,0FFH,0FFH;F,P,暗,键盘扫描子程序:,KEYI,:MOV A,00H;判有无键按下,使所有列线为0,;的编码送A,MOV SBUF,A;扫描键盘的(8)号74LS164输,;出为00H,使所有列线为0,KL0,: JNB TI,KL0;串行输出完否?,CLR TI;串行输出完毕,清TI,KL1,: JNB P3.4,PK1;第1行有闭合键吗?如有,跳,;PK1进行处理,JB P3.5,KL1;在第2行键中有闭合键吗?无闭,;合键跳KL1,PK1,: ACALL DL10;调用延时10ms子程序DL10,软,;件消除抖动,JNB P3.4,PK2;判是否抖动引起的?,JB P3.5,KL1,PK2,:MOV R7,08H ;不是抖动引起的,MOV R6,0FEH;判别是哪一个键按下,FEH为最,;左一列为低,MOV A,R6 ;,KL5,: MOV SBUF,A;列扫描码从串行口输出,KL2,: JNB TI,KL2;等待串行口发送完,CLR TI;串行口发送完毕,清TI标志,JNB P3.4,PKONE;读第1行线状态,第1行有键闭,;合,跳PKONE处理,JB P3.5,NEXT ;读第2行状态,是第2行某键否?,MOV R3,#00H ; 扫描的列序号初始值为0,MOV R4,08H;第2行键中有键被按下,行首键,;号08H送R4,AJMP PK3 ;,PKONE:,MOV R4,00H ;第1行有键按下,行首键号00H送R4,PK3:,MOV SBUF,00H ;等待键释放,发送00H使所有列,;线为低,KL3:,JNB TI,KL3 ;,CLR TI ;发送完毕,清标志,KL4:,JNB P3.4,KL4 ;判行线状态,JNB P3.5,KL4 ;,MOV A,R4 ;两行线均为高,说明键已释放,ADD A,R3 ;计算得到键码A,RET,NEXT,: MOV A,R6 ;列扫描码左移一位,判下列键,RL A ;,MOV R6,A ;记住列扫描码于R6中,DJNZ R7,KL5 ;列计数器R7减1,8列键都检查,;完?,AJMP KEYI ;8列键扫描完毕,开始下一个键,;盘扫描周期,作业:,现有8031单片机,74LS373锁存器,1片2764EPROM和两片6116RAM,请使用它们组成1个单片机应用系统。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!