410 likes | 569 Views
第八章 单片机的人机接口. 西安思源学院. 电子信息工程学院. 8.1 键盘接口 8.1.1 键盘的工作原理和扫描方式 键盘的结构: 1 、独立式键盘. 2 、矩阵式键盘. 3 种键盘扫描方式 1 、程序控制扫描方式 —— 在主程序中用一段专门的扫描和读键程序来检查有无键按下,并确定键值。 2 、定时扫描方式 —— 利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描和读键,检查有无键按下,并确定键值。 3 、中断扫描方式 —— 当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描和读键,再次检查有无键按下,并确定键值。.
E N D
第八章 单片机的人机接口 西安思源学院 电子信息工程学院
8.1 键盘接口 8.1.1 键盘的工作原理和扫描方式 键盘的结构:1、独立式键盘
3种键盘扫描方式 1、程序控制扫描方式——在主程序中用一段专门的扫描和读键程序来检查有无键按下,并确定键值。 2、定时扫描方式——利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描和读键,检查有无键按下,并确定键值。 3、中断扫描方式——当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描和读键,再次检查有无键按下,并确定键值。
用8155为例的键盘输入程序 • 1. 8155初始化程序: • SET8155: MOV DPTR,#7FFCH ;8155命令口地址 • MOV A,#03H • MOVX @DPTR,A • 2.扫描与读键程序 • KEYBOARD: MOV R7,#7H • MOV R6,#1H • KEY1: MOV A,R6 • CPL A • MOV DPTR,#7FFDH ;8155A口地址 • MOVX @DPTR,A ;扫描状态送A口 • MOV DPTR,#7FFDH ;8155C口地址 • MOVX A , @DPTR ;读键 • ANL A,#0FH ;取低四位
CJNE A,#0FH,KEY2;有键按下,从KEY2执行 • AJMP KEY3 • KEY2: XCH A,R5 • MOV A,R6 • CPL A • SWAP A • ADD A,R5 ;得到键的编码值 • MOV DPTR,#KEYTAB • MOVC A,@A+DPTR ;得到键值 • MOV R5,A • AJMP KEY4 • KEY3: MOV A,R6
RL A • MOV R6,A • DJNZ R7,KEY1 • KEY4: RET • KEYTAB: DB …… ;由键的编码查键值的数据表 • 在实际应用中调用一次扫描与读键程序后,要隔10MS左右再调用一次扫描与读键程序,若两次结果相同,说明确实有键按下;若两次 结果不同,说明有干扰或按键有抖动。
键盘处理程序的步骤 判断键盘中有无键按下。单片机先使8255A的A口的各位PA0~PA3均为低电平,再读C口(PC0~PC3)。若C口的各位不全为高电平 ,则表示有键按下。 消除抖动。先延时10ms,然后再读C口,此时,若C口各位仍不全为高电平,说明确实有键按下。 求键号。过程如下:先置PA0=0,PA1~PA3均为1,再读C口,由C口低电平的位置便可确定按下键的位置。例如,若在PA0=0时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 ;送0EH至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 ;判断整个4×4键盘是否扫描结束 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”的字型码,共阴极为3FH,共阳极 为0C0H 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.动态显示电路 图8-8 8155作动态显示控制的原理图
动态显示程序 DIR:MOV R0 ,#6AH ; 显示缓冲区首地址送R0 MOV R3 ,#01H ;指向最右位 MOV A ,R3 DIO: MOV DPTR,#0101H ;DPTR指向8155PA口 MOVX @DPTR,A INC DPTR MOV A ,@R0 ADD A ,#12H ;加上字形码表的偏移量 MOVC A ,@A+PC MOVX @DPTR ,A ACALI,DELAY1 ;调1ms子程序 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;延时1ms DE1: MOV R6, #0FFH DE2: DJNZ R6, DE2 DJNZ R7, DE1 RET
8.3 LCD显示器接口 用液晶制成的显示器是一种被动式显示器件,液晶本身并不发光,而是借助自然光或外来光源显示数码。 8.3.1 LCD显示器的工作原理 1)笔段型。笔段型是以笔段式显示像素组成一个字符显示位。该类型主要用于数字显示,也可用于显示西文字母或某些字符。这种段型显示通常有六段、七段、八段、九段、十四段和十六段等,在形状上总是围绕数字“8”的结构变化,其中以七段显示最常用,广泛用于电子表、数字仪表、笔记本计算机中。 2)点阵字符型。点阵字符型是以点阵快组成一个字符显示位,专门用来显示字母、数字、符号等的点阵型液晶显示模块。在电极图形设计上它是由若干个 5 × 8或 5×10点阵组成,每一个点阵显示一个字符。这类模块广泛应用于寻呼机、大哥大电话、电子笔记本等类电子设备中。
3)点阵图形型。点阵图形型是在整个显示区域形成矩阵形式的点阵,这类液晶显示器可广泛用于图形显示如游戏机、笔记本电脑和彩色电视等设备中3)点阵图形型。点阵图形型是在整个显示区域形成矩阵形式的点阵,这类液晶显示器可广泛用于图形显示如游戏机、笔记本电脑和彩色电视等设备中 8.3.2 LCD显示器的接口电路和显示程序设计 8段和16端(米字型)字符式LCD,控制方法与LED很相似,可参照LED的方法编程。点阵式LCD既可以显示数码,又可以显示图形和汉字,本节重点讲述具有代表性的集成LCD控制器SED1335与单片机的连接方法和软硬件。 1、LCD显示器的接口电路 SED1335 特点 : (1)有较强功能的I/O缓冲器; (2)指令功能丰富; (3)四位数据并行发送,最大驱动能力为640×256点阵。
SED1335的硬件及连接: • MPU接口部:具有功能较强的I/O缓冲器,如P199页图8-10所示。用户可以方便地和成品显示板连接。 • 内部控制器:可以随时准备接收MPU的访问,MPU不需判其忙。通过引脚电平选择,可以适合8080系列、M6800系列操作时序。 • 驱动LCM的驱动部:LCD驱动可以直接驱动LCM,只用连接和软件,不需其他硬件。 • 2、LCD显示程序设计 • SED1335有13条指令,多数带参数,由用户根据液晶显示器模块的特征和显示需要设置。其引脚、时序类型选择信号和指令表见P199页表8-2、8-3、8-4. • (1)初始化参数的设置:见P200页初始化子程序。
(2)光标的设置: • CSRFORM 5DH;设置光标显示方式及其形状,有两个参数。 • CSRW 46H;设置光标地址,一是光标显示的当前位置;二是缓冲区的当前地址指针。 • DISP ON/OFF 59H/58H;设置显示的开关、显示状态。 • 程序举例见P201页下边。 • (3)写字方法 • 编码格式:每字节对应显示屏的8*1点阵,1:显示;0:不示 • 写入方法:根据字库16*16、32*32、48*48三种类型来选择。 • 汉字参数:倍率;X坐标;Y坐标;汉字代码 • (4)汉字显示程序:P203页 • (5)主程序:P203页图8-11.
8.4 8279专用键盘显示器 功能: ①接收来自键盘的输入数据,并作预处理; ②数据显示的管理和数据显示器的控制。 内部资源: ① 16×8显示数据RAM,每个单元寄存1个字符的8位显示代码,能将16个数据分时送到16个显示器并显示出来。 ②为显示数据RAM输出同步扫描信号。通过命令字可选择显示器的4种工作方式即左端输入、右端输入、8位字符显示、16位字符显示。 ③ 8个字节的键盘FIFO的RAM(先入先出堆栈),每按一次键8279便自动进行编码,并送FIFO RAM 中。
8.4.2 8279的引脚分析 1.输出输入信号 DB0一DB7:双向数据总线,用于传送命令字和数据。 RL0一RL7:键盘回送线,当某一个键闭合时变低电平,在选通输入方式下,这些输入端亦可用作8位输入线; SL0—SL3(扫描线):输出为键盘扫描线及显示位控输出线; OUTAO~OUTA3,OUTB0~OUTB3:显示寄存器输出线。 SHIFT(换档信号):输入,高有效。该信号线用来扩充键开关的功能。 CNTL/STB(控制/选通):输入,高电平有效,在键盘工作方式时,作为控制功能键使用,在选通方式时,该信号的上升沿可以将来自RL0-RL7的数据存入FIFO存储器,在传感器方式,无效; BD(消隐显示):输出,低有效。该输出信号在数字切换显示或使用显示消隐命令时,将显示消隐。
2.控制信号 RD(读信号)和WR(写信号):输入,低有效,使8279数据缓冲器向外部总线发送数据或从外部总线接收数据; CLK:外部时钟输入信号,8279设置定时器将外部时钟变为内部时钟,其内部基频外部时钟/定标器值C/S,当C/S=1时,信息的传送地址为片内命令字寄存器,C/S=0时,则传送的信息将作为数据与16X 8显示数据存贮器或FIFO RAM进行交换,其传送方向由RD或WR确定; A0:缓冲器地址线; IRQ:中断请求线,高电平有效。在键盘工作方式下,若FIFO/传感器RAM中有数则IRQ变高,经反相后向单片机请求中断。
8.4.3 8279的键盘显示器电路(图8-13) 0 0 0 D D K K K 8.4.4 8279的设置 8279共有八条命令: (1) 键盘/显示方式设置命令 命令特征位:D7D6D5=000 DD:00;8字符显示左入,01;16字符显示左入, 10;8字符显示左入, 01;16字符显示左入 KKK:000—111见P206页。
(2) 时钟编程命令 命令特征位:D7D6D5=001 0 0 0 1 1 0 AI P P X P A P A A P (3)读FIFO/传感器RAM命令 命令特征位:D7D6D5=010
(4)读显示RAM命令 命令特征位:D7D6D5=011 0 1 1 0 1 0 AI AI A A A A A A A A (5)写显示RAM命令 命令特征位:D7D6D5=100
(6)显示禁止写入/消隐命令 命令特征位:D7D6D5=101。 1 1 0 1 1 0 X CD CD IW IW CD CF BL CA BL (7)清除命令 命令特征位:D7D6D5=110。 其D4D3D2的意义见P207页表8-5
(8)结束中断/错误方式设置命令 命令特征位D7D6D5=111。 1 Du 1 S/E 1 O U E X F X N X N N X 1、作为结束中断命令 2、作为特定错误方式设置命令 3、FIFO RAM字位含义: Du=1,无效;S/E,传感器方式=1,信号已进入;错误方式=1,多键同时按下错误。O=1,溢出错误;U=1,不足错误;F=1,RAM已满;NNN:RAM中的字符数。
8.4.5 8279的应用程序介绍 1. 8279初始化程序 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 $ 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
第八章 结 束 谢谢!