8.1
Download
1 / 34

8.1 键盘接口技术 - PowerPoint PPT Presentation


  • 112 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
8.1 键盘接口技术

  • 8.1.1 行列式非编码键盘的工作原理

  • 行列式键盘又叫矩阵键盘,如图8-1所示,按键设置在行列的交叉点上,如用2×2的行列结构可构成四个键的键盘,4×4的行列结构可构成16个键的键盘。在按键数量较多时,矩阵键盘可节省I/O口线。


8-1 矩阵键盘与AT89C51接口连接图


8-2 键闭合及断开时的电压抖动


  • 综上所述,对于非编码键盘,按键处理程序应具有如下四个功能:

  • (1) 判断键盘上有无键按下。

  • (2) 去除键的机械抖动。

  • (3) 求按下键的键码。

  • (4) 闭合一次,只进行一次键功能操作。

  • 8.1.2 单片机对非编码键盘的控制方式

  • 1. 查询方式

  • 这种方式是指在单片机完成其它工作后的空余时间,调用键盘扫描子程序,来响应键盘输入的要求,在执行键功能程序时,CPU不再响应键输入要求。


  • [ 例8.1] 用查询法按图8-1读取行列键盘键码,并将键码存入内部RAM 32H单元。

  • 图中P1.4~P1.7用于控制行线,P1.0~P1.3用于控制列线。行、列线通过上拉电阻接+5 V,没有键按下时,被钳在高电平状态。通过发送扫描字确定键码,具体方法如下:

  • (1) 由列线输出0,然后读入P1口的值存入内部RAM 30H单元。


  • (2) 由行线输出0,然后读入P1口的值存入内部RAM 31H单元。

  • (3) 把30H的低4位与31H的高4位的值相加存入累加器A。

  • (4) 最后判断累加器A的值,如果累加器A的数据全为1,说明无键按下,否则说明有键按下,且累加器A的数据就是被按下键的键值(程序中对累加器A取反,目的是用JNZ指令判断是否有键按下)。如图中圆圈所指键的键值为10111110B。


  • 键扫描程序如下 :

  • BOAD:LCALL BOADD

  • JNZ BOAD1 ;无键按下转BOAD

  • LCALL DELAY ;调延时子程序

  • AJMP BOAD ;继续扫描键盘

  • BOAD1:LCALL DELAY ;消除键抖动(延时子程序略)

  • LCALL BOADD ;确认是否有键按下

  • JNZ BOAD2

  • LCALL DELAY

  • SJMP BOAD ;转键扫描


  • BOAD2 : CPL A

  • MOV 32H,A ;取键值

  • BOAD3: LCALL DELAY

  • LCALL BOADD

  • JNZ BOAD3 ;等待键松开

  • B2: RET ;返回

  • ;获取键值子程序


  • BOADD : MOV P1,#0FH ;置行线为0

  • MOV A,P1

  • MOV 30H,A

  • MOV P1,#0F0H ;置列线为0

  • MOV A,P1

  • MOV 31H,A

  • ANL 30H,#0FH ;取列值


  • MOV A ,30H

  • ANL 31H,#0F0H ;取行值

  • ADD A,31H ;行值加列值

  • CPL A ;A全0无键按下

  • RET


  • 2. 定时扫描工作方式

  • 定时扫描工作方式是利用单片机内部定时器产生定时中断,CPU响应中断后对键盘进行扫描,当有键按下时,转入键功能的处理程序。

  • 定时扫描在本质上是中断方式,只不过是定时扫描键盘,以中断的方式处理键盘,它的硬件电路与编程扫描工作方式相同。

  • 3. 中断工作方式

  • 单片机应用系统工作时,并不经常需要键输入。因此,无论是编程工作方式或是定时工作方式,CPU经常处于空扫描状态。

  • 图8-3是AT89C51利用中断扫描方式实现的一个2×8矩阵式键盘的硬件接口电路。


8-3 利用中断扩展2×8键盘电路图



  • 程序如下:通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图

  • ORG 0000H

  • LJMP BEGIN ;转主程序

  • ORG 0003H

  • LJMP WZD0 ;转外中断0程序

  • ORG 0013H

  • LJMP WZD1 ;转外中断1程序


  • 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


  • 键值处理程序通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图(略)

  • 其它主程序(略)

  • WZD0: PUSH PSW ;保护现场

  • PUSH A

  • CLR EX0 ;关中断INT0

  • LCALL DELAY ;调延时程序去抖动

  • JNB P3.2,WZD01

  • ;再次确认是INT0中断吗


  • SETB EX0 通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图;不是,则恢复现场退出中断

  • POP A

  • POP PSW

  • RETI

  • WZD01: MOV A,#01H ;置S1键的键值为1

  • MOV P1,#0FEH ;扫描P1.0

  • JNB P3.2,KEYR1 ;是S1键则转移


  • 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


  • 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


  • 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: …;延时程序(略)


通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图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完全相同。


通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图8-5 七段LED显示器

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


字形码通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图

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 字形码数据格式


  • 8.2.2 LED通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图显示器的显示方式

  • 1.静态显示方式

  • 在静态显示方式中,各位的共阴或共阳极连接在一起接地或接+5 V,每位的段选线(a~dp)与一个8位并行口相连。如图8-7所示,它是一个4位的静态显示电路,之所以称之为静态显示电路,是由于显示器的各位相互独立,而且各位的显示字符一经确定,相应的输出将维持不变,直到显示另一个字符为止。


通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图8-7 4位LED静态显示电路图


  • 2. 通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图动态方式

  • 为了克服静态显示方式的缺点,节省I/O口线,人们常常使用动态显示方式。它将所有数码管的a、b、c、d、e、f、g、sp引线并联在一起,由一个8位I/O口控制,而公共端由另一个I/O口控制。应用时,轮流送入每个LED的字形码与位选码,利用人的视觉暂留现象来显示各位的字符。图8-8是一个8位LED动态显示电路图.


通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图8-8 8位LED动态显示电路图


  • [通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图例8.2] 根据图8-9编写程序显示内部RAM 50H~57H单元中的数据。

图8-9 AT89C51与动态显示LED接口连接图


  • 通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图8-9是用8255A对8位动态显示器的接口电路。图中LED为八段共阴数码管,A口输出字形码,B口输出位选码,片选端直接接地。根据图中连接可知,8255A的A口地址为FFFCH,B口地址为FFFDH,控制口地址为FFFFH,由于A、B口均为输出,因此控制字为80H。下面是一个动态显示内部RAM 50H~57H单元数据的子程序。


  • 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


  • SCAN通过前面的原理分析可知,完成键盘管理的程序主要有主程序和中断服务程序,主程序主要完成初始化和键值处理任务,中断服务程序主要完成键盘扫描和键值读入任务。对应的程序流程图如图: MOV DPTR,#0FFFDH ;指向B口

  • MOVX @DPTR,A ;位选码送B口

  • MOV A,@R0 ;取显示数据

  • MOV DPTR,#TAB ;取字形码表首址

  • MOVC A,@A+DPTR ;取字形码

  • MOV DPTR,#0FFFCH ;指向A口


  • 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 ;继续显示下一位


  • 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