slide1
Download
Skip this Video
Download Presentation
8.1 键盘接口技术

Loading in 2 Seconds...

play fullscreen
1 / 34

8.1 键盘接口技术 - PowerPoint PPT Presentation


  • 113 Views
  • Uploaded on

8.1 键盘接口技术. 8.1.1 行列式非编码键盘的工作原理 行列式键盘又叫矩阵键盘,如图 8-1 所示,按键设置在行列的交叉点上,如用 2×2 的行列结构可构成四个键的键盘, 4×4 的行列结构可构成 16 个键的键盘。在按键数量较多时,矩阵键盘可节省 I/O 口线。. 图 8-1 矩阵键盘与 AT89C51 接口连接图. 图 8-2 键闭合及断开时的电压抖动. 综上所述,对于非编码键盘,按键处理程序应具有如下四个功能: (1) 判断键盘上有无键按下。 (2) 去除键的机械抖动。 (3) 求按下键的键码。

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '8.1 键盘接口技术' - archer


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1
8.1 键盘接口技术
  • 8.1.1 行列式非编码键盘的工作原理
  • 行列式键盘又叫矩阵键盘,如图8-1所示,按键设置在行列的交叉点上,如用2×2的行列结构可构成四个键的键盘,4×4的行列结构可构成16个键的键盘。在按键数量较多时,矩阵键盘可节省I/O口线。
slide4
综上所述,对于非编码键盘,按键处理程序应具有如下四个功能:
  • (1) 判断键盘上有无键按下。
  • (2) 去除键的机械抖动。
  • (3) 求按下键的键码。
  • (4) 闭合一次,只进行一次键功能操作。
  • 8.1.2 单片机对非编码键盘的控制方式
  • 1. 查询方式
  • 这种方式是指在单片机完成其它工作后的空余时间,调用键盘扫描子程序,来响应键盘输入的要求,在执行键功能程序时,CPU不再响应键输入要求。
slide5
[例8.1] 用查询法按图8-1读取行列键盘键码,并将键码存入内部RAM 32H单元。
  • 图中P1.4~P1.7用于控制行线,P1.0~P1.3用于控制列线。行、列线通过上拉电阻接+5 V,没有键按下时,被钳在高电平状态。通过发送扫描字确定键码,具体方法如下:
  • (1) 由列线输出0,然后读入P1口的值存入内部RAM 30H单元。
slide6
(2) 由行线输出0,然后读入P1口的值存入内部RAM 31H单元。
  • (3) 把30H的低4位与31H的高4位的值相加存入累加器A。
  • (4) 最后判断累加器A的值,如果累加器A的数据全为1,说明无键按下,否则说明有键按下,且累加器A的数据就是被按下键的键值(程序中对累加器A取反,目的是用JNZ指令判断是否有键按下)。如图中圆圈所指键的键值为10111110B。
slide7
键扫描程序如下:
  • BOAD:LCALL BOADD
  • JNZ BOAD1 ;无键按下转BOAD
  • LCALL DELAY ;调延时子程序
  • AJMP BOAD ;继续扫描键盘
  • BOAD1:LCALL DELAY ;消除键抖动(延时子程序略)
  • LCALL BOADD ;确认是否有键按下
  • JNZ BOAD2
  • LCALL DELAY
  • SJMP BOAD ;转键扫描
slide8
BOAD2: CPL A
  • MOV 32H,A ;取键值
  • BOAD3: LCALL DELAY
  • LCALL BOADD
  • JNZ BOAD3 ;等待键松开
  • B2: RET ;返回
  • ;获取键值子程序
slide9
BOADD: MOV P1,#0FH ;置行线为0
  • MOV A,P1
  • MOV 30H,A
  • MOV P1,#0F0H ;置列线为0
  • MOV A,P1
  • MOV 31H,A
  • ANL 30H,#0FH ;取列值
slide10
MOV A,30H
  • ANL 31H,#0F0H ;取行值
  • ADD A,31H ;行值加列值
  • CPL A ;A全0无键按下
  • RET
slide11
2. 定时扫描工作方式
  • 定时扫描工作方式是利用单片机内部定时器产生定时中断,CPU响应中断后对键盘进行扫描,当有键按下时,转入键功能的处理程序。
  • 定时扫描在本质上是中断方式,只不过是定时扫描键盘,以中断的方式处理键盘,它的硬件电路与编程扫描工作方式相同。
  • 3. 中断工作方式
  • 单片机应用系统工作时,并不经常需要键输入。因此,无论是编程工作方式或是定时工作方式,CPU经常处于空扫描状态。
  • 图8-3是AT89C51利用中断扫描方式实现的一个2×8矩阵式键盘的硬件接口电路。
slide13
通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图8-4所示(INT1中断流程图与INT0类似,略)。
slide14
程序如下:
  • ORG 0000H
  • LJMP BEGIN ;转主程序
  • ORG 0003H
  • LJMP WZD0 ;转外中断0程序
  • ORG 0013H
  • LJMP WZD1 ;转外中断1程序
slide15
BEGIN: ORG 0100H
  • MOV SP,#60H ;设置堆栈
  • MOV R1,#00H ;R1存放键值
  • SETB IT1 ;设INT0、INT1为边沿触发
  • SETB IT0
  • SETB EA ;开中断
  • SETB EX0
  • SETB EX1
  • MOV P1,#00H
slide16
键值处理程序(略)
  • 其它主程序(略)
  • WZD0: PUSH PSW ;保护现场
  • PUSH A
  • CLR EX0 ;关中断INT0
  • LCALL DELAY ;调延时程序去抖动
  • JNB P3.2,WZD01
  • ;再次确认是INT0中断吗
slide17
SETB EX0 ;不是,则恢复现场退出中断
  • POP A
  • POP PSW
  • RETI
  • WZD01: MOV A,#01H ;置S1键的键值为1
  • MOV P1,#0FEH ;扫描P1.0
  • JNB P3.2,KEYR1 ;是S1键则转移
slide18
INC A ;不是S1键,键值加1
  • MOV P1,#0FDH ;扫描P1.1,以下同P1.0类似
  • JNB P3.2,KEYR1
  • INC A
  • MOV P1,#0FBH
  • JNB P3.2,KEYR1
  • INC A
  • MOV P1,#0F7H
  • JNB P3.2,KEYR1
  • INC A
slide19
MOV P1,#0EFH
  • JNB P3.2,KEYR1
  • INC A
  • MOV P1,#0DFH
  • JNB P3.2,KEYR1
  • INC A
  • MOV P1,#0BFH
  • JNB P3.2,KEYR1
  • INC A
  • MOV P1,#7FH
slide20
JNB P3.2,KEYR1
  • LJMP KEYR2
  • KEYR1:MOV R1,A ;将键值存入R1中
  • KEYR2:CLR IE0 ;清中断标志(因扫描中可能使IE0置位)
  • SETB EX0 ;开中断INT0
  • POP A ;恢复现场
  • POP PSW
  • RETI ;中断返回
  • WZD1: …;外中断1程序与中断0相似(略)
  • DELAY: …;延时程序(略)
slide21
图8-4 中断方式扩展键盘流程图

(a) 主程序流程图;(b)  INT0中断服务程序流程图

8 2 led
8.2 LED显示器接口技术
  • 8.2.1 LED显示器的结构原理
  • LED显示器用发光二极管显示字段,分为共阴极和共阳极两种。图8-5给出了八段LED数码显示器的结构图和原理图。图8-5(a)是八段共阴极LED显示器,它将八个发光二极管阴极共地。当某发光二极管要点亮时,只需在该发光二极管的阳极加高电平即可。图8-5(b)是八段共阳极LED显示器,它的操作与共阴极相反。LED显示器也有七段的,它只比八段LED少一只发光二极管DP,其它结构与八段LED完全相同。
slide23
图8-5 七段LED显示器

(a) 共阴性;(b) 共阳性;(c) 管脚配置

slide24
字形码

3F

06

5B

4F

66

6D

7D

07

7F

6F

显示字符

0

1

2

3

4

5

6

7

8

9

  • 表8-1 共阴极LED数码管字形码表

图8-6 字形码数据格式

slide25
8.2.2 LED显示器的显示方式
  • 1.静态显示方式
  • 在静态显示方式中,各位的共阴或共阳极连接在一起接地或接+5 V,每位的段选线(a~dp)与一个8位并行口相连。如图8-7所示,它是一个4位的静态显示电路,之所以称之为静态显示电路,是由于显示器的各位相互独立,而且各位的显示字符一经确定,相应的输出将维持不变,直到显示另一个字符为止。
slide27
2. 动态方式
  • 为了克服静态显示方式的缺点,节省I/O口线,人们常常使用动态显示方式。它将所有数码管的a、b、c、d、e、f、g、sp引线并联在一起,由一个8位I/O口控制,而公共端由另一个I/O口控制。应用时,轮流送入每个LED的字形码与位选码,利用人的视觉暂留现象来显示各位的字符。图8-8是一个8位LED动态显示电路图.
slide30
图8-9是用8255A对8位动态显示器的接口电路。图中LED为八段共阴数码管,A口输出字形码,B口输出位选码,片选端直接接地。根据图中连接可知,8255A的A口地址为FFFCH,B口地址为FFFDH,控制口地址为FFFFH,由于A、B口均为输出,因此控制字为80H。下面是一个动态显示内部RAM 50H~57H单元数据的子程序。
slide31
DIR:MOV A,#10000000B
  • ;设置8255的工作方式,A、B口为输出
  • MOV DPTR,#0FFFFH
  • ;8255的命令口地址送DPTR
  • MOVX @DPTR,A
  • MOV R0,#50H ;50H~57H为显示缓冲区
  • MOV R3,#7FH ;第一位的位选码
  • MOV A,R3
slide32
SCAN: MOV DPTR,#0FFFDH ;指向B口
  • MOVX @DPTR,A ;位选码送B口
  • MOV A,@R0 ;取显示数据
  • MOV DPTR,#TAB ;取字形码表首址
  • MOVC A,@A+DPTR ;取字形码
  • MOV DPTR,#0FFFCH ;指向A口
slide33
MOVX @DPTR,A ;字形码送A口
  • ACALL DL1ms ;调延时1 ms子程序
  • INC R0 ;指向下一显示数据单元
  • MOV A,R3
  • JNB ACC.0,ED ;8位显示完,退出
  • RR A ;指向下一位
  • MOV R3,A
  • AJMP SCAN ;继续显示下一位
slide34
ED:RET
  • TAB:DB 3FH,06H,5BH,4FH,66H
  • ;共阴0~F的字型码表
  • DB 6DH,7DH,07H,7FH,6FH
  • DL1ms: MOV R7,#01H ;延时1 ms子程序
  • DL0: MOV R6,#0FFH
  • DL1: DJNZ R6,DLI
  • DJNZ R7,DLO
  • RET
ad