资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,10,章,MCS-51,与键盘、显示器、拨盘、打印机的接口设计,10.1 LED,显示器的接口原理,10.2,键盘接口原理,10.3,键盘,/,显示器接口设计实例,LED,(Light Emitting Diode),:发光二极管,10.1.1 LED,显示器的结构,常用的有,8,字型和,米,字型,10.1 LED,显示器接口原理,为使,LED,显示不同的符号或数字,要为,LED,提供,段码,(或称字型码)。,字型和段码可由设计者自行设计,,习惯,排序如下:,按上述格式,8段,LED,的段码见课本。,显示字符,共阴极段码,共阳极段码,显示字符,共阴极段码,共阳极段码,0,3,FH,C0H,c,39,H,C6H,1,06,H,F9H,d,5,EH,A1H,2,5,BH,A4H,E,79,H,86,H,3,4,FH,B0H,F,71,H,8,EH,4,66,H,99,H,P,73,H,8,CH,5,6,DH,92,H,U,3,EH,C1H,6,7,DH,82,H,T,31,H,CEH,7,07,H,F8H,y,6,EH,91,H,8,7,FH,80,H,H,76,H,89,H,9,6,FH,90,H,L,38,H,C7H,A,77,FH,88,H,“,灭,”,00,H,FFH,b,7,CH,83,H,表10-1,LED,段码(8段),若将格式改为下列格式:,则,“,0,”,的段码为7,EH(,共阴)。,字型及段码由设计者自行设定,10.1.2,LED,显示器工作原理,图10-2是4位,LED,显示器的结构原理图。,段码线,控制,显示的字型,,,位选线,控制,该显示位的亮或暗。,LED,显示器有,两种显示方式。,1.,静态显示方式,每位的段码线(,adp),分别与一个8位的锁存器,输出相连。,各位的共阴极,/,共阳极连接在一起接地,/,5V,优点:显示的亮度高。,缺点:占用口线较多,例:图10-3:4位静态,LED,显示器电路。,2.动态显示方式,所有位的,段码线,相应段并联在一起,共用一个8位,I/O,口,,多路复用,,各位的共阴极,/,共阳极,(位选线),分别,由相应的,I/O,线控制,,分时选通,。,缺点:占用,CPU,时间多。,例:图10-4:4位8段,LED,动态显示电路。,注:,给一位显示的时间不可过长或者过短,某一时刻,只有一位,LED,位选线为,0,(共阴极)或,1,(共阳极),10.2 键盘接口原理,1.键盘输入的特点,按键未按下,输出为高,按键按下,输出为,0,抖动时间一般为,5,10ms,故确认一个按键是否按下的基本思想为,:,在第一次检测到输出为低电平时,执行一段延时10,ms,的子程序后(去抖动),再次确任该行线电平是否仍为低电平,仍为低,则确认有键按下,否则视为干扰。,确认键是否释放则同样须防抖动。,2.,去抖动措施:,软件去抖动:执行一段延时,10ms,的子程序,硬件去抖动:如双稳态消抖电路,10.2.,1,键盘接口的工作原理,1.独立式键盘接口,含义,:各键相互独立,一个按键一根输入口线。,按键判断,:检测输入线的电平判断按键是否按下,有中断方,式和查询方式,2,种,适用场合,:,适用于按键数较少或操作速度较高的场合,例:,图10-8为,8255,A,扩展,I/O,口,的,独立式,按键接口电路。,图10-9用,三态缓冲器,扩展的,I/O,口的按键接口电路,。,注:,10,8,和,10,9,按键为外部,RAM,单元,,MOVX,设计软件:,请以,10,9,为电路,采用软件去抖动的方法,以查询方式检测,当且仅当有一键按下时才予以识别,如有多键按下讲不予处理。,此子程序如下:,KEYIN:MOV DPTR,#0BFFFH;,键盘端口地址,BFFFH,MOVX A,DPTR;,读键盘状态,ANL A,#00011111B;,屏蔽高三位,CJNE A,#00011111B,GOON,JMP RETURN,GOON:MOV R3,A;,保存键盘状态值,LCALL DELAY10;,延时10,ms,去键盘抖动,MOVX A,DPTR;,再读键盘状态,ANL A,#0001111B;,屏蔽高三位,CJNE A,R3,RETURN;,两次不同,抖动引起转,RETURN,CJNE A,#00011110B,KEY2;,LJMP PKEY1,;,00011110,时为,S1,KEY2:CJNE A,#00011101B,KEY3,LJMP PKEY2,KEY3:CJNE A,#00011011B,KEY4,LJMP PKEY3,KEY4:CJNE A,#00010111B,KEY5,LJMP PKEY4,KEY5:CJNE A,#00001111B,RETURN,LJMP PKEY5,RETURN:RET ;,多键按下不予处理,2.行列式(矩阵式)键盘接口,含义:,由行线和列线组成,按键位于行、列的交叉点上。,适用于:,按键数目较多的场合。,例:,(1)工作原理,当无键按下时,行线电平为高(有上拉电阻),当有键按下时,由与此行线相连的列线的电平决定,。,故:必须,将行、列线信号配合起来并作适当的处理,,才能确定闭合键的位置,。,(2),按键的识别方法,扫描法和线反转法,a,、扫描法:,2,步,第1步:识别键盘有无键按下。,具体方法,:,把所有列线置低,,检查各行线电平是否有变化,有变化,,有键按下,否则无键按下。,第2步:如有键被按下,识别出具体的按键。,具体方法,:,即,先把某一列置低,其余列置高,,,检查各行线电平,如果某行线电平为低,则可确定此行此列交叉点处,的按键被按下。,扫描法的缺点:,b,、线反转法:,2,步,第1步:,让行线输入线,列线输出线,并,使输出线为,低电平,,,则行电平由高变低的行为按键所在行。,第2步:,同第,1,步完全相反,,让行线输出线,列线输入线,,输出线全低,,则列线电平由高变低的列为按键所在列。,注:行线、列线均有上拉电阻。,例:,线反转法更简练,无论按键在第,1,列或最后,1,列,均只需,2,步完成,(3)键盘的编码,独立式键盘:灵活(因按键少),行列式键盘:习惯 行首键号列号,10.2.3 键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输,入,取决于键盘的工作方式。,原则:,即要保证能及时响应按键操作,又不要过多占,用,CPU,的工作时间。,通常,,键盘工作方式有,3种,,即编程扫描、定时扫,描和中断扫描。,1.编程扫描方式,只有当单片机空闲时,才调用键盘扫描子程序。,例:采用扩展,8255AI/0,组成的,4,8,矩阵式键盘,编程思路:主程序初始化:写命令字设置,PA,口方,式,0,输出,,PC,口低4位方式,0,输入,键盘扫描子程序思路:,(1)判断有无键按下;,方法:,PA,口8位输出全0,读,PC,口低4位状态,若,PC0PC3,为全1,则无键按下;否则可能有键按下。,(,2,)去抖动,重新确认;,(,3,)确定有键按下,求按下键键号。,扫描法,逐列置,0,,读,PC0PC3,(,4,)等待按键,释放后,再进行,按键功能的处理操作。,2.定时扫描工作方式,:,每隔一定时间对键盘扫描一次,3.中断工作方式,10.3 键盘/显示器接口设计实例,(几种实用的设计方案),10.3.1 利用并行,I/O,芯片,8155H,实现键盘/显示器接口,硬件接口电路:,分析:,8155,H,的,RAM,地址:7,E00H7EFFH。,I/O,口地址:,7F00H7F05H。,PA,口,为输出口,,,控制键盘,列线的扫描,,同时又是6位共阴极显示器的,位扫描口,。,PB,口,作为显示器段码输出口,,PC,口作为键盘的行线状态的输入口。在主程序初始化中设置。,75452:,反相驱动器,,7407:,同相驱动器。,1动态显示程序设计思路:,PB,口输出要显示的段码,,PA,口输出位选线,在某一时刻,,PA,只有,1,位为高电平,以选中要显示的位选线。,假设要显示的6位数据放在,8031,片内,RAM,:79,H7EH,程序流程如图10-15。,为稳定显示,参考程序,:,DIR:MOV R0,79H;,置缓冲器指针初值,MOV R3,01H;,位选码的初值送,R3,MOV A,R3,LD0:MOV DPTR,7F01H ;,位选码,PA,口(,PA.0,位),;,最左边,LED,亮,MOVX DPTR,A,INC DPTR,;,去掉,MOV A,R0 ;,显示数据,A,ADD A,0DH,MOVC A,APC,改为:,MOV DPTR,#TAB,MOVC A,A+DPTR,MOV DPTR,#7F02H,DIR1:,MOVX DPTR,A;,段码,8155,H,PB,口,ACALL DL1ms ;,该位显示1,ms,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,.,DL1ms:MOV R7,02H;,延时1,ms,子程序,DL:MOV R6,0FFH,DL6:DJNZ R6,DL6,DJNZ R7,DL,RET,2键盘程序设计思路:即扫描法的思路,流程图如图10-16。,这里巧妙运用显示子程序作为延时子程序,这样进入键盘子程序后,显示器始终是亮的。,键闭合一次,只做一次处理,键盘子程序如下:,KEYI:ACALL KS1,;KS1,有无键闭合子程序,无键闭合,A=0,JNZ LK1 ;,有键闭合,跳,LK1,NI:ACALL DIR ;,无键闭合,调用显示子程序,延,;迟6,ms,后,跳,KEYI,AJMP KEYI,LK1:ACALL DIR ;,可能有键闭合,软件延迟12,ms,去抖,ACALL DIR,ACALL KS1 ;,调用判有无键闭合子程序,JNZ LK2 ;,经去抖,判键确实闭合,跳,LK2,ACALL DIR;,AJMP KEYI;,LK2:MOV R2,0FEH,;,确实有键,,R2,列选码(逐列为,0,),MOV R4,00H,;R4,列号计数器,,;为计算键号行首键号列号,LK4:MOV DPTR,7F01H ;PA,口,MOV A,R2,MOVX DPTR,A,INC DPTR,INC DPTR,;PC,口,MOVX A,DPTR;,读8155,H PC,口,JB,Acc.0,LONE,;,第,0,行无键,,转查第1行,MOV A,00H;0,行有键闭合,首键号0,A,AJMP LKP;,跳,LKP,,计算键号,LONE:JB Acc.1,LTW0,MOV A,08H,AJMP LKP,LTW0:JB A.2,LTHR,MOV A,10H,AJMP LKP,LTHR:JB Acc.3,NEXT,;,无键,闭合,,跳,NEXT,,准备下一列扫描,;,MOV A,18H,LKP:ADD A,R4 ;,计算键号:首键号列号=键号,PUSH A ;,键号进栈保护,LK3:ACALL DIR;,调用显示子程序,延时6,ms,ACALL KS1,;,判键释放方法同查有无键闭合,JNZ LK3,;等待释放,POP A ;,键已释放,键号出栈,A,RET,NEXT:INC R4,;,查下一列,MOV A,R2,;,是否已扫到最后一列,JNB Acc.7,KND,RL A ;,键扫描未扫到最后一列,位选码左移,;一位,MOV R2,A;,位选码,R2,AJMP LK4 ;,KND:AJMP KEYI;,INC DP
展开阅读全文