1 / 41

第八章 单片机的人机接口

第八章 单片机的人机接口. 西安思源学院. 电子信息工程学院. 8.1 键盘接口 8.1.1 键盘的工作原理和扫描方式 键盘的结构: 1 、独立式键盘. 2 、矩阵式键盘. 3 种键盘扫描方式 1 、程序控制扫描方式 —— 在主程序中用一段专门的扫描和读键程序来检查有无键按下,并确定键值。 2 、定时扫描方式 —— 利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描和读键,检查有无键按下,并确定键值。 3 、中断扫描方式 —— 当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描和读键,再次检查有无键按下,并确定键值。.

urian
Download Presentation

第八章 单片机的人机接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章 单片机的人机接口 西安思源学院 电子信息工程学院

  2. 8.1 键盘接口 8.1.1 键盘的工作原理和扫描方式 键盘的结构:1、独立式键盘

  3. 2、矩阵式键盘

  4. 3种键盘扫描方式 1、程序控制扫描方式——在主程序中用一段专门的扫描和读键程序来检查有无键按下,并确定键值。 2、定时扫描方式——利用单片机内的定时器来产生定时中断,然后在定时中断的服务程序中扫描和读键,检查有无键按下,并确定键值。 3、中断扫描方式——当有键按下时由相应的硬件电路产生中断信号,单片机在中断服务程序中扫描和读键,再次检查有无键按下,并确定键值。

  5. 1. 用8155实现的键盘接口电路

  6. 表8-1 扫描与键值编码表(用颜色对应)

  7. 用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 ;取低四位

  8. 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

  9. RL A • MOV R6,A • DJNZ R7,KEY1 • KEY4: RET • KEYTAB: DB …… ;由键的编码查键值的数据表 • 在实际应用中调用一次扫描与读键程序后,要隔10MS左右再调用一次扫描与读键程序,若两次结果相同,说明确实有键按下;若两次 结果不同,说明有干扰或按键有抖动。

  10. 2.用8255实现的键盘接口电路

  11. 键盘处理程序的步骤 判断键盘中有无键按下。单片机先使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位是键所在列的号码。

  12. 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

  13. (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口读入

  14. 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

  15. RET NEXT:INC R4 MOV A,R2 JNB ACC.3,KND ;判断整个4×4键盘是否扫描结束 RL A MOV R2,A ;扫描下一列 AJMP LK3 KND:AJMP KEY1

  16. 8.2 LED显示器接口 LED显示器是由发光二极管构成的字段组成的显示器 分类:8段和16段LED显示器 连接方法:共阴极和共阳极

  17. 字型码表:通过字符查到相应 的字型码。 排列顺序:dp/g/f/e/d/c/b/a 例如“0”的字型码,共阴极为3FH,共阳极 为0C0H LED显示器的工作原理 静态显示——需要显示的字符的各字段连续 通电,所显示的字段连续发光。 动态显示——所需显示字段断续通以电流, 在需要多个字符同时显示时,可以轮流给每 一个字符通以电流,逐次把所需显示的字符显示出来。

  18. 1.静态显示电路 1)、本身的静态端口(P1口)或扩展的I/O端口直接与LED电路连接; 2)、利用本身的串行端口TXD和RXD与LED电路连接(让串行接口工作在方式0:RXD-串行I/O、TXD-移位脉冲)。

  19. 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

  20. 2.动态显示电路 图8-8 8155作动态显示控制的原理图

  21. 动态显示程序 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个显示位扫完否?

  22. 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

  23. 8.3 LCD显示器接口 用液晶制成的显示器是一种被动式显示器件,液晶本身并不发光,而是借助自然光或外来光源显示数码。 8.3.1 LCD显示器的工作原理 1)笔段型。笔段型是以笔段式显示像素组成一个字符显示位。该类型主要用于数字显示,也可用于显示西文字母或某些字符。这种段型显示通常有六段、七段、八段、九段、十四段和十六段等,在形状上总是围绕数字“8”的结构变化,其中以七段显示最常用,广泛用于电子表、数字仪表、笔记本计算机中。 2)点阵字符型。点阵字符型是以点阵快组成一个字符显示位,专门用来显示字母、数字、符号等的点阵型液晶显示模块。在电极图形设计上它是由若干个 5 × 8或 5×10点阵组成,每一个点阵显示一个字符。这类模块广泛应用于寻呼机、大哥大电话、电子笔记本等类电子设备中。

  24. 3)点阵图形型。点阵图形型是在整个显示区域形成矩阵形式的点阵,这类液晶显示器可广泛用于图形显示如游戏机、笔记本电脑和彩色电视等设备中3)点阵图形型。点阵图形型是在整个显示区域形成矩阵形式的点阵,这类液晶显示器可广泛用于图形显示如游戏机、笔记本电脑和彩色电视等设备中 8.3.2 LCD显示器的接口电路和显示程序设计 8段和16端(米字型)字符式LCD,控制方法与LED很相似,可参照LED的方法编程。点阵式LCD既可以显示数码,又可以显示图形和汉字,本节重点讲述具有代表性的集成LCD控制器SED1335与单片机的连接方法和软硬件。 1、LCD显示器的接口电路 SED1335 特点 : (1)有较强功能的I/O缓冲器; (2)指令功能丰富; (3)四位数据并行发送,最大驱动能力为640×256点阵。

  25. 图8-9SED1335的电路原理

  26. 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页初始化子程序。

  27. (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.

  28. 8.4 8279专用键盘显示器 功能: ①接收来自键盘的输入数据,并作预处理; ②数据显示的管理和数据显示器的控制。 内部资源: ① 16×8显示数据RAM,每个单元寄存1个字符的8位显示代码,能将16个数据分时送到16个显示器并显示出来。 ②为显示数据RAM输出同步扫描信号。通过命令字可选择显示器的4种工作方式即左端输入、右端输入、8位字符显示、16位字符显示。 ③ 8个字节的键盘FIFO的RAM(先入先出堆栈),每按一次键8279便自动进行编码,并送FIFO RAM 中。

  29. 图8-12 8279的内部原理图

  30. 8.4.2 8279的引脚分析 1.输出输入信号 DB0一DB7:双向数据总线,用于传送命令字和数据。 RL0一RL7:键盘回送线,当某一个键闭合时变低电平,在选通输入方式下,这些输入端亦可用作8位输入线; SL0—SL3(扫描线):输出为键盘扫描线及显示位控输出线; OUTAO~OUTA3,OUTB0~OUTB3:显示寄存器输出线。 SHIFT(换档信号):输入,高有效。该信号线用来扩充键开关的功能。 CNTL/STB(控制/选通):输入,高电平有效,在键盘工作方式时,作为控制功能键使用,在选通方式时,该信号的上升沿可以将来自RL0-RL7的数据存入FIFO存储器,在传感器方式,无效; BD(消隐显示):输出,低有效。该输出信号在数字切换显示或使用显示消隐命令时,将显示消隐。

  31. 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变高,经反相后向单片机请求中断。

  32. 图8-13 8279的键盘显示器电路

  33. 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页。

  34. (2) 时钟编程命令 命令特征位:D7D6D5=001 0 0 0 1 1 0 AI P P X P A P A A P (3)读FIFO/传感器RAM命令 命令特征位:D7D6D5=010

  35. (4)读显示RAM命令 命令特征位:D7D6D5=011 0 1 1 0 1 0 AI AI A A A A A A A A (5)写显示RAM命令 命令特征位:D7D6D5=100

  36. (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

  37. (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中的字符数。

  38. 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 ;

  39. 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

  40. 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

  41. 第八章 结 束 谢谢!

More Related