单片机原理与应用 第8章 单片机的人机接口.ppt
第八章 单片机的人机接口l键盘接口键盘接口lLED显示器接口显示器接口lLCD显示器接口显示器接口l8279专用键盘显示器专用键盘显示器8.1 键盘接口键盘接口8.1.1键盘的工作原理和扫描方式键盘的结构:1 1、独立式键盘、独立式键盘2、矩阵式键盘3 3种种键盘扫描方式键盘扫描方式1、程序控制扫描方式在主程序中用一段专门的扫描和读键程序来检查有无键按下,并确定键值。2、定时扫描方式利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描和读键,检查有无键按下,并确定键值。3、中断扫描方式当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描和读键,再次检查有无键按下,并确定键值。8.1.2 键盘的接口电路键盘的接口电路 2 2、用、用82558255实现的键盘接口电路实现的键盘接口电路A口值键值C口值 键盘处理程序的步骤键盘处理程序的步骤l判断键盘中有无键按下。单片机先使8255A的A口的各位PA0PA3均为低电平,再读C口(PC0PC3)。若C口的各位不全为高电平,则表示有键按下。l消除抖动。先延时10ms,然后再读C口,此时,若C口各位仍不全为高电平,说明确实有键按下。l求键号。过程如下:先置PA00,PA1PA3均为1,再读C口,由C口低电平的位置便可确定按下键的位置。例如,若在PA00时PC0=0,那么是0号键按下。键码值高4位是键所在行号,低4位是键所在列的号码。8.1.3 8.1.3 8.1.3 8.1.3 键盘输入程序设计方法键盘输入程序设计方法键盘输入程序设计方法键盘输入程序设计方法 扫描与读键程序:扫描与读键程序:(1.(1.判断有无键按下子程序判断有无键按下子程序)JUDGE:MOV DPTR,#0FFDDH ;8255AJUDGE:MOV DPTR,#0FFDDH ;8255A口地址口地址 MOV A,#00HMOV A,#00H MOVX DPTR,A ;A MOVX DPTR,A ;A口输出低电平口输出低电平 INC DPTRINC DPTR INC DPTR INC DPTR MOVX A,DPTR ;MOVX A,DPTR ;从从C C口读数据口读数据 CPL ACPL A ANL A,#0FH ;ANL A,#0FH ;取低四位取低四位 RETRET(2.2.读键程序)读键程序)KEY1:ACALL JUDGE ;KEY1:ACALL JUDGE ;看有否键按下看有否键按下 JNZ LK1 ;JNZ LK1 ;有键按下,跳转至按键处理有键按下,跳转至按键处理 ACALL DELAYACALL DELAY AJMP KEY1 ;AJMP KEY1 ;无键则延时后再扫描无键则延时后再扫描LK1:ACALL DELAY ;LK1:ACALL DELAY ;延时去抖动延时去抖动 JNZ LK2 JNZ LK2 ;再次判断有无键再次判断有无键 ACALL DELAY ACALL DELAY ALMP KEY1 ;ALMP KEY1 ;无键则延时后再扫描无键则延时后再扫描LK2:MOV R2,#0EH ;LK2:MOV R2,#0EH ;扫描列线扫描列线 MOV R4,#00H ;MOV R4,#00H ;列号列号LK3:MOV DPTR,#0FFDDHLK3:MOV DPTR,#0FFDDH MOV A,R2 MOV A,R2 MOVX DPTR,A ;MOVX DPTR,A ;送送0 0EHEH至至A A口口 INC DPTRINC DPTR INC DPTR INC DPTR MOVX A,DPTR ;MOVX A,DPTR ;从从C C口读入口读入 JB ACC.0,LINE1 ;JB ACC.0,LINE1 ;第第0 0行为行为1 1表示无键,则转表示无键,则转1 1行行 MOV A,#00HMOV A,#00H AJMP LKP AJMP LKPLINE1:JB ACC.1,LINE2 ;LINE1:JB ACC.1,LINE2 ;第第1 1行为行为1 1表示无键,则转表示无键,则转2 2行行 MOV A,#04HMOV A,#04H AJMP LKP AJMP LKPLINE2:JB ACC.2,LINE3 ;LINE2:JB ACC.2,LINE3 ;第第2 2行为行为1 1表示无键,则转表示无键,则转3 3行行 MOV A,#08HMOV A,#08H AJMP LKP AJMP LKPLINE3:JB ACC.3,NEXT ;LINE3:JB ACC.3,NEXT ;第第3 3行为行为1 1表示无键,则转表示无键,则转NEXTNEXT MOV A,#0CHMOV A,#0CHLKP:ADD A,R4LKP:ADD A,R4 PUSH ACC PUSH ACCNT:ACALL DELAYNT:ACALL DELAY ACALL JUDGE ACALL JUDGE JNZ NT JNZ NT POP ACC POP ACC RET RETNEXT:INC R4NEXT:INC R4 MOV A,R2 MOV A,R2 JNB ACC.3,KND ;JNB ACC.3,KND ;判断整个判断整个4444键盘是否扫描结束键盘是否扫描结束 RL A MOV R2,A ;扫描下一列扫描下一列 AJMP LK3KND:AJMP KEY18.2 8.2 LEDLED显示器接口显示器接口 lLED显示器是由发光二极管构成的字段组成的显示器l分类:8段和16段LED显示器l连接方法:共阴极和共阳极字型码表:字型码表:通过字符查到相应的通过字符查到相应的字型码。字型码。排列顺序:排列顺序:dp/g/f/e/d/c/b/a例如例如“0”的字型码,共阴的字型码,共阴极为极为3FH,共阳极为共阳极为0C0H。LED显示器的工作原理显示器的工作原理 静态显示静态显示需要显示的字符的各字段连续通电,所显示的字段连续发光。动态显示动态显示所需显示字段断续通以电流,在需要多个字符同时显示时,可以轮流给每一个字符通以电流,逐次把所需显示的字符显示出来。1.静态显示电路静态显示电路1)1)、本身的静态端口(、本身的静态端口(P1口)或扩展的口)或扩展的IO端口直接与端口直接与LED电路连接;电路连接;2)2)、利用本身的串行端口、利用本身的串行端口TXD和和RXD与与LED电路连接电路连接(让串让串行接口工作在方式行接口工作在方式0 0:RXDRXD串行串行I/OI/O、TXDTXD移位脉冲移位脉冲)。1.静态显示程序静态显示程序DIR:SETBP3.3MOVR7,#08H;循环次数为8次MOVR0,6FH;先送最后一个显示字符DI0:MOVA,R0;取显示的数据ADDA,#e;加上字形码表的偏移量MOVCA,A+PC;取字形码MOVSBUF,A;送出显示DI1:JNBTI,DIl;查询输出完否?CLRTIDECR0DJNZR7,DI0CLRP3.3RETTBT:DB0COH,0F9H,0A4HTBLl:DB0BOH,99H,92HTBL2:DB82H,0F8H,80HTBL3:DB90H,00H,00H2动态显示电路动态显示电路2.动态显示程序动态显示程序 DIRDIR:MOV R0 MOV R0,#6AH#6AH ;显示缓冲区首地址送显示缓冲区首地址送R0R0 MOV R3 MOV R3,#01H#01H ;指向最右位指向最右位 MOV A MOV A ,R3 R3 DIO:MOV DPTR DIO:MOV DPTR,#0101H#0101H ;DPTRDPTR指向指向81558155PAPA口口 MOVX DPTRMOVX DPTR,A A INC DPTR INC DPTR MOV A MOV A ,R0R0 ADD A ,#12H ADD A ,#12H ;加上字形码表的偏移量加上字形码表的偏移量 MOVC A ,A+PCMOVC A ,A+PC MOVX DPTR,A MOVX DPTR,A ACALI ACALI,DELAY1 DELAY1 ;调调1 1msms子程序子程序 INC R0INC R0 MOV A,R3 MOV A,R3 JB ACC.6,DI1 JB ACC.6,DI1 ;查查6 6个显示位扫完否?个显示位扫完否?RL ARL A MOV R3,A MOV R3,A AJMP DI0 AJMP DI0 DI1 DI1:RET RETCODE:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EHDB31H,6EH,1CH,23H,40H,03HDB18H,00H,00H,00H;共阴极段码表ENDDELAY1:MOVR7,#02H;延时1msDE1:MOVR6,#0FFHDE2:DJNZR6,DE2DJNZR7,DE1RET8.3 LCD显示器接口显示器接口 用用液液晶晶制制成成的的显显示示器器是是一一种种被被动动式式显显示示器器件件,液液晶晶本本身身并并不不发发光光,而而是是借借助助自自然然光光或或外外来来光光源显示数码。源显示数码。8.3.2 LCD显显 示示 器器 的的 接接 口口 电电 路路 和显示程序设计和显示程序设计 1、LCD显示器的接口电路显示器的接口电路 SED1335 特点特点:(1)有较强功能的)有较强功能的I/O缓冲器;缓冲器;(2)指令功能丰富;)指令功能丰富;(3)四位数据并行发送,最大驱动能力为)四位数据并行发送,最大驱动能力为640256点阵。点阵。SED1335的电路原理图的电路原理图 8.4 8279专用键盘显示器专用键盘显示器 功能:接收来自键盘的输入数据,并作预处理;数据显示的管理和数据显示器的控制。内部资源:168显示数据RAM,每个单元寄存1个字符的8位显示代码,能将16个数据分时送到16个显示器并显示出来。为显示数据RAM输出同步扫描信号。通过命令字可选择显示器的4种工作方式即左端入、右端输入、8位字符显示、16位字符显示。8个字节的键盘FIFO的RAM(先入先出堆栈),每按一次键8279便自动进行编码,并送FIFORAM中。8279的内部原理图8.4.2 82798.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设置定时器将外部时钟变为内部时钟,其内部基频外部时钟定标器值CS,当CS=1时,信息的传送地址为片内命令字寄存器,CS=0时,则传送的信息将作为数据与16X8显示数据存贮器或FIFORAM进行交换,其传送方向由RD或WR确定;A0:缓冲器地址线;IRQ:中断请求线,高电平有效。在键盘工作方式下,若FIFO传感器RAM中有数则IRQ变高,经反相后向单片机请求中断。8279的键盘显示器电路8.4.3 82798.4.3 8279的键盘显示器电路的键盘显示器电路的键盘显示器电路的键盘显示器电路 8.4.48279的设置8279共有八条命令:(1)键盘/显示方式设置命令命令特征位:D7D6D5=000000DDKKK(2 2)时钟编程命令时钟编程命令命令特征位:命令特征位:D7D6D5=001D7D6D5=001001PPPPP(3 3)读)读FIFO/FIFO/传感器传感器RAMRAM命令命令命令特征位:命令特征位:D7D6D5=010D7D6D5=010010AIXAAA(4 4)读显示读显示RAMRAM命令命令 命令特征位:命令特征位:D7D6D5=011D7D6D5=011011AIAAAA(5)写显示RAM命令命令特征位:D7D6D5=100。100AIAAAA(6 6)显示禁止写入显示禁止写入/消隐命令消隐命令 命令特征位:命令特征位:D7D6D5=101D7D6D5=101。101XIWIWBLBL(7 7)清除命令清除命令 命令特征位:命令特征位:D7D6D5=110D7D6D5=110。110CDCDCDCFCA(8 8)结束中断结束中断/错误方式设置命令错误方式设置命令 命令特征位命令特征位D7D6D5=111D7D6D5=111。111EXXXXSET8279: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,#40HMOVX R0,A SJMP$8.4.5 82798.4.5 8279的应用程序介绍的应用程序介绍的应用程序介绍的应用程序介绍 1.82791.8279初始化程序初始化程序初始化程序初始化程序 2.2.显示子程序:显示子程序:显示子程序:显示子程序:DISPLAY:MOVR7,#08H;显示字符指针长度MOVR1,#060HMOVR0H,#0ECHDIS01:MOVA,R1;显示字符送8279MOVXR0,AINCR1DJNZR7,DIS01;没显示完循环显下一个RET3.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