资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第八章 单片机的人机接口,键盘接口,LED,显示器接口,LCD,显示器接口,8279专用键盘显示器,8.1 键盘接口,8.1.1,键盘的工作原理和扫描方式,键盘的结构:,1、独立式键盘,2、矩阵式键盘,3种,键盘扫描方式,1、,程序控制扫描方式,在主程序中用一段专门的扫描和读键程序来检查有无键按下,并确定键值。,2、,定时扫描方式,利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描和读键,检查有无键按下,并确定键值。,3、,中断扫描方式,当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描和读键,再次检查有无键按下,并确定键值。,8.1.2,键盘的接口电路,2、用8255实现的键盘接口电路,A,口,值,键,值,C,口,值,键盘处理程序的步骤,判断键盘中有无键按下。,单片机先使,8255,A,的,A,口的各位,PA,0,PA3,均为低电平,再读,C,口,(,PC0,PC3),。,若,C,口的各位不全为高电平,,则表示有键按下。,消除抖动。,先延时,10,ms,,,然后再读,C,口,此时,若,C,口各位仍不全为高电平,说明确实有键按下。,求键号。,过程如下:先置,PA00,PA1PA3,均为1,再读,C,口,由,C,口低电平的位置便可确定按下键的位置。例如,若在,PA00,时,PC0=0,,那么是0号键按下。键码值高4位是键所在行号,低4位是键所在列的号码。,8.1.3 键盘输入程序设计方法,扫描与读键程序:,(1.判断有无键按下子程序,),JUDGE:MOV DPTR,#0FFDDH ;8255A,口地址,MOV A,#00H,MOVX DPTR,A ;A,口输出低电平,INC DPTR,INC DPTR,MOVX A,DPTR ;,从,C,口读数据,CPL A,ANL A,#0FH ;,取低四位,RET,(2.读键程序),KEY1:ACALL JUDGE ;,看有否键按下,JNZ LK1 ;,有键按下,跳转至按键处理,ACALL DELAY,AJMP KEY1 ;,无键则延时后再扫描,LK1:ACALL DELAY ;,延时去抖动,JNZ LK2 ;,再次判断有无键,ACALL DELAY,ALMP KEY1 ;,无键则延时后再扫描,LK2:MOV R2,#0EH ;,扫描列线,MOV R4,#00H ;,列号,LK3:MOV DPTR,#0FFDDH,MOV A,R2,MOVX DPTR,A ;,送0,EH,至,A,口,INC DPTR,INC DPTR,MOVX A,DPTR ;,从,C,口读入,JB ACC.0,LINE1 ;,第0行为1表示无键,则转1行,MOV A,#00H,AJMP LKP,LINE1:JB ACC.1,LINE2 ;,第1行为1表示无键,则转2行,MOV A,#04H,AJMP LKP,LINE2:JB ACC.2,LINE3 ;,第2行为1表示无键,则转3行,MOV A,#08H,AJMP LKP,LINE3:JB ACC.3,NEXT ;,第3行为1表示无键,则转,NEXT,MOV A,#0CH,LKP:ADD A,R4,PUSH ACC,NT:ACALL DELAY,ACALL JUDGE,JNZ NT,POP ACC,RET,NEXT:INC R4,MOV A,R2,JNB ACC.3,KND ;,判断整个44键盘是否扫描结束,RL A,MOV R2,A ;,扫描下一列,AJMP LK3,KND:AJMP KEY1,8.2,LED,显示器接口,LED,显示器是由发光二极管构成的字段组成的显示器,分类:8,段和,16,段,LED,显示器,连接方法:共阴极和共阳极,字型码表:,通过字符查到相应的,字型码。,排列顺序:,dp,/g/f/e/d/c/b/a,例如“0”的字型码,共阴,极为3,FH,,共阳极为0,C0H。,LED,显示器的工作原理,静态显示,需要显示的字符的各字段连续通电,所显示的字段连续发光。,动态显示,所需显示字段断续通以电流,在需要多个字符同时显示时,可以轮流给每一个字符通以电流,逐次把所需显示的字符显示出来。,1.,静态显示电路,1)、本身的静态端口(,P1,口)或扩展的,I,O,端口直接与,LED,电路连接;,2)、利用本身的串行端口,TXD,和,RXD,与,LED,电路连接(让串行接口工作在方式0:,RXD,串行,I/O、TXD,移位脉冲,)。,1.,静态显示程序,DIR,:,SETB P3.3,MOV R7,,,#08H,;,循环次数为,8,次,MOV R0,,,6FH,;,先送最后一个显示字符,DI0:MOV A,,,R0,;,取显示的数据,ADD A,#e,;,加上字形码表的偏移量,MOVC A,,,A+PC,;,取字形码,MOV SBUF,,,A,;,送出显示,DI1:JNB TI,,,DIl,;,查询输出完否,?,CLR TI,DEC R0,DJNZ R7,DI0,CLR P3.3,RET,TBT,:,DB 0COH,0F9H,0A4H,TBLl,:,DB 0BOH,99H,92H,TBL2,:,DB 82H,0F8H,80H,TBL3,:,DB 90H,00H,00H,2,动态显示电路,2.,动态显示程序,DIR,:,MOV R0,,,#6AH,;,显示缓冲区首地址送,R0,MOV R3,,,#01H,;,指向最右位,MOV A,,,R3,DIO:MOV DPTR,,,#0101H,;,DPTR,指向,8155,PA,口,MOVX DPTR,,,A,INC DPTR,MOV A,,,R0,ADD A ,#12H,;,加上字形码表的偏移量,MOVC A ,A+PC,MOVX DPTR,A,ACALI,,,DELAY1,;,调,1,ms,子程序,INC R0,MOV A,R3,JB ACC.6,DI1,;,查,6,个显示位扫完否?,RL A,MOV R3,A,AJMP DI0,DI1,:,RET,CODE,:,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,00H,00H,;,共阴极段码表,END,DELAY1:MOV R7,#02H,;,延时1,ms,DE1:MOV R6,#0FFH,DE2:DJNZ R6,DE2,DJNZ R7,DE1,RET,8.3,LCD,显示器接口,用液晶制成的显示器是一种被动式显示器件,液晶本身并不发光,而是借助自然光或外来光源显示数码。,8.3.2,LCD,显示器的接口电路 和显示程序设计,1、,LCD,显示器的接口电路,SED1335,特点,:,(,1,)有较强功能的,I/O,缓冲器;,(,2,)指令功能丰富;,(,3,)四位数据并行发送,最大驱动能力为,640256,点阵。,SED1335,的电路原理图,8.4 8279,专用键盘显示器,功能:,接收来自键盘的输入数据,并作预处理;,数据显示的管理和数据显示器的控制。,内部资源:,16,8,显示数据,RAM,,每个单元寄存1个字符的8位显示代码,能将16个数据分时送到16个显示器并显示出来。,为显示数据,RAM,输出同步扫描信号。通过命令字可选择显示器的,4,种工作方式即左端入、右端输入、,8,位字符显示、,16,位字符显示。,8,个字节的键盘,FIFO,的,RAM,(,先入先出堆栈),每按一次键,8279,便自动进行编码,并送,FIFO RAM,中。,8279,的内部原理图,8.4.2 8279,的引脚分析,1,输出输入信号,DB0,一,DB7:,双向数据总线,用于传送命令字和数据。,RL0,一,RL7:,键盘回送线,当某一个键闭合时变低电平,在选通输入方式下,这些输入端亦可用作8位输入线;,SL0SL3,(,扫描线):,输出为键盘扫描线及显示位控输出线;,OUTAOOUTA3,OUTB0OUTB3:,显示寄存器输出线。,SHIFT,(,换档信号):,输入,高有效。该信号线用来扩充键开关的功能,。,CNTL/STB,(,控制,/,选通):,输入,高电平有效,在键盘工作方式时,作为控制功能键使用,在选通方式时,该信号的上升沿可以将来自,RL0-RL7,的数据存入,FIFO,存储器,在传感器方式,无效,;,BD(,消隐显示):,输出,低有效。该输出信号在数字切换显示或使用显示消隐命令时,将显示消隐。,2,控制信号,RD,(,读信号)和,WR,(,写信号):,输入,低有效,使,8279,数据缓冲器向外部总线发送数据或从外部总线接收数据;,CLK,:,外部时钟输入信号,,8279,设置定时器将外部时钟变为内部时钟,其内部基频外部时钟定标器值,C,S,,,当,C,S=1,时,信息的传送地址为片内命令字寄存器,,C,S=0,时,则传送的信息将作为数据与,16,X 8,显示数据存贮器或,FIFO RAM,进行交换,其传送方向由,RD,或,WR,确定;,A0,:,缓冲器地址线;,IRQ,:,中断请求线,高电平有效。在键盘工作方式下,若,FIFO,传感器,RAM,中有数则,IRQ,变高,经反相后向单片机请求中断。,8279,的键盘显示器电路,8.4.3 8279,的键盘显示器电路,8.4.4 8279,的设置,8279,共有八条命令:,(,1,),键盘,/,显示方式设置命令,命令特征位:,D7D6D5=000,0,0,0,D,D,K,K,K,(,2,),时钟编程命令,命令特征位:,D7D6D5=001,0,0,1,P,P,P,P,P,(,3,)读,FIFO/,传感器,RAM,命令,命令特征位:,D7D6D5=010,0,1,0,AI,X,A,A,A,(,4,),读显示,RAM,命令,命令特征位:,D7D6D5=011,0,1,1,AI,A,A,A,A,(,5,),写显示,RAM,命令,命令特征位:,D7D6D5=100,。,1,0,0,AI,A,A,A,A,(,6,),显示禁止写入,/,消隐命令,命令特征位:,D7D6D5=101,。,1,0,1,X,IW,IW,BL,BL,(,7,),清除命令,命令特征位:,D7D6D5=110,。,1,1,0,CD,CD,CD,CF,CA,(,8,),结束中断,/,错误方式设置命令,命令特征位,D7D6D5=111,。,1,1,1,E,X,X,X,X,SET8279,:,MOV R0,,,#0EDH,;,命令字口地址送,R0,MOV A,,,#25H,MOVX R0,A,MOV A,#0A0H,MOVX R0,A,MOV A,#10H,MOVX R0,A,MOV A,#90H,;,写显示,RAM,,,从,0,地址开始地址自动加,1,MOVX R0,A,;,MOV A,#40H,MOVX R0,A,SJMP$,8.4.5 8279,的应用程序介绍,1.8279,初始化程序,2.,显示子程序:,DISPLAY,:,MOV R7,,,#08H,;,显示字符指针长度,MOV R1,,,#060H,MOV R0H,,,#0ECH,DIS01:MOV A,,,R1,;,显示字符送,8279,MOVX R0,A,INC R1,DJNZ R7,DIS01,;,没显示完循环显下一个,RET,3.,键盘中断服务子程序,INT01,:,PUSH PSW,PUSH ACC,MOV R0,,,#0EDH,MOV A,,,#40H,MOVX R0,A,MOV R0,#0ECH,MOVX A,R0,;,读入一个键值,ANL A,#03FH,MOV R6,A,LCALL KEYCODE,;,调用键代码处理子程序,获得键码,POP ACC,POP PSW,RETI,
展开阅读全文