独立按键及矩阵键盘控制le

上传人:tia****nde 文档编号:69329221 上传时间:2019-01-13 格式:PPT 页数:46 大小:901.82KB
返回 下载 相关 举报
独立按键及矩阵键盘控制le_第1页
第1页 / 共46页
独立按键及矩阵键盘控制le_第2页
第2页 / 共46页
独立按键及矩阵键盘控制le_第3页
第3页 / 共46页
独立按键及矩阵键盘控制le_第4页
第4页 / 共46页
独立按键及矩阵键盘控制le_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《独立按键及矩阵键盘控制le》由会员分享,可在线阅读,更多相关《独立按键及矩阵键盘控制le(46页珍藏版)》请在金锄头文库上搜索。

1、8个共阴极的数码管,动态显示0-7,ORG 0000H MOV R0,#00H ;给R0赋值0 MOV DPTR,#TAB ; 把TAB 表的首地址给DPTR MOV R4,#0FEH; ;给R4赋值0FE MOV A,R4; ;A为0FE 也就是1111 1110 PUSH ACC; ;将A入栈 DLO:MOV A,R0 MOVC A,A+DPTR; ;查TAB表 MOV P0,A ; 把查的值给数码管的8个段 POP ACC; 将之前的A出栈 MOV P1,A; 将A的值给P1 也就是给P1 1111 1110 是那个为0的管亮 LCALL QF; 调用取反子程序 PUSH ACC; 将A

2、入栈 INC R0; R0值加1 LCALL DELAY ; 调用延时程序,CJNE R0,#08H,DLO; 判断是否查完一便表 没查完再跳到DLO MOV R4,#0FEH; 查完了重新给A赋值 MOV A,R4 PUSH ACC ; 再将A入栈 MOV R0,#00H; 给R0清0 SJMP DLO ;跳到DLO再显示 DELAY:MOV R1,#18 LP1:MOV R2,#200 LP2:MOV R3,#126 DJNZ R3,$ DJNZ R2,LP2 DJNZ R1,LP1 RET TAB:DB 3fH,06H,5bH,4fH,66H,6dH,7dh,07h QF: RL A ;

3、 左移 RET END,0-99的显示,Org 0 Ljmp main Org 0100h Main:MOV R0,#00H ;给R0赋值0 MOV DPTR, #TAB ; MOV R3, #0; ;给R3赋值0 M1:MOV R4, #0; ;给R4赋值0 GW:MOV R2, #10 YS:MOV A, R4; ;A为0 MOVC A, A+DPTR MOV P0, A ;显示个位的数据 CLR P1.1 LCALL DL MOV P0,#0 SETB P1.1 MOV A, R3 MOVC A, A+DPTR MOV P0, A ;显示十位的数据,CLR P1.0 LCALL DL M

4、OV P0,#0 SETB P1.0 DJNZ R2,YS INC R4 CJNE R4,#10,GW INC R3 CJNE R3,#10,M1 SJMP MAIN DL: MOV R7,#10 D1: MOV R6,#200 D2:DJNZ R6,d2 DJNZ R7,d1 RET TAB: DB 3fH, 06H, 05bH, 4fH, 66H, 6dH, 7dH,07H, 7fH, 6fH,a_bit equ 20h ;数码管个位数存放内存位置 b_bit equ 21h ;数码管十位数存放内存位置 temp equ 22h ;计数器数值存放内存位置 org 0 star: mov t

5、emp,#0 ;初始化计数器,从0开始 stlop: acall display;调用显示子程序 inc temp;对计数器加1 mov a,temp cjne a,#100,next ;判断计数器是否满100? mov temp,#0;满100就清零重新开始 next: ljmp stlop;不满就循环执行 ;显示子程序 display: mov a,temp ;将temp中的十六进制数转换成10进制 mov b,#10 ;10进制/10=10进制 div ab mov b_bit,a ;十位在a mov a_bit,b ;个位在b mov dptr,#numtab ;指定查表启始地址 mo

6、v r0,#4,dpl1: mov r1,#250 ; dplop: mov a,a_bit ;取个位数 MOVC A,A+DPTR ;查个位数的7段代码 mov p0,a ;送出个位的7段代码 clr p1.7 ;开个位显示 acall d1ms ;显示162微秒 setb p1.7;关闭个位显示,防止鬼影 mov a,b_bit ;取十位数 MOVC A,A+DPTR ;查十位数的7段代码 mov p0,a ;送出十位的7段代码 clr p1.6 ;开十位显示 acall d1ms ;显示162微秒 setb p1.6;关闭十位显示,防止鬼影 djnz r1,dplop ;循环执行250次

7、 djnz r0,dpl1 ;循环执行250X4=1000次 Ret ;2+2X80=162微秒,延时按12MHZ计算 D1MS: MOV R7,#80 DJNZ R7,$ RET 共阴数码管的显示代码 numtab: DB 3fH, 06H, 05bH, 4fH, 66H, 6dH, 7dH,07H, 7fH, 6fH,键盘接口,键盘是单片机应用系统中使用最广泛的一种 数据输入设备。键盘是一组按键的组合。键通常是一种常开型按钮开关,常态下键的两个触点处于断开状态,按下键时它们才闭合(短路)。,第三章 电子时钟设计,非编码键盘按组成结构又可分为独立式键盘和矩阵式键盘。独立式键盘的工作过程与矩阵

8、式键盘类似,无论是硬件结构还是软件设计都比较简单,。,通常,按键按照接口原理键盘有编码和非编码两种。编码键盘通过硬件电路产生被按按键的键码和一个选通脉冲。选通脉冲可作为CPU的中断请求信号。这种键盘使用方便,所需程序简单,但硬件电路复杂,常不被单片机采用。,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。,一个完善的键盘控制程序应具备以下功能: (1)检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。 (2)有可靠的逻辑处

9、理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。 (3)准确输出按键值(或键号),以满足跳转指令要求。,特点:每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单。适用于所需按键较少的场合。,特点:电路连接复杂,但提高了I/O口利用率,软件编程较复杂。适用于需使用大量按键的场合。,独立式按键的软件结构 独立式按键软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。,矩阵式键盘的结构及原理

10、矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如下图所示。 由图可知,一个44的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。 矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位

11、置。,扫描法 和线反转法,0 1 2 3 ee de be 7e 4 5 6 7 ed dd bd 7d 8 9 A B eb db bb 7b C D E F e7 d7 b7 77,键盘控制流程,单片机对矩阵式键盘接口处理的一般过程如图所示。,键扫描,消抖,求键码,等待释放,按键处理,图3.4 键盘处理流程框图,1. 键扫描,键扫描就是要判断有无键按下,当扫描到有键按下时再进行下一步处理,否则退出键盘处理程序。独立式键盘扫描只需读取IO口状态,而矩阵式键盘描通常有两种实现方法:逐行扫描法和线反转法。,(1) 逐行扫描法。依次从第一至最末行线上发出低电平信号, 如果该行线所连接的键没有按下的

12、话, 则列线所接的端口得到的是全“1”信号, 如果有键按下的话, 则得到非全“1”信号。,0 1 1 1,1 1 1 1,1 0 1 1,1 1 1 0,1 1 0 1,1 1 1 1,1 1 1 0,1 1 1 1,设第2行第4列键按下,行线输出,列线输入,0 1 1 1,1 1 1 1,1 0 1 1,1 1 1 0,1 1 0 1,1 1 1 1,1 1 1 0,1 1 1 1,(2)线反转法。 线反转法也是识别闭合键的一种常用方法, 该法比行扫描速度快, 但在硬件上要求行线与列线外接上拉电阻。 先将行线作为输出线, 列线作为输入线, 行线输出全“0”信号, 读入列线的值, 那么在闭合键

13、所在的列线上的值必为0;然后从列线输出全“0”信号,再读取行线的输入值,闭合键所在的行线值必为 0。这样,当一个键被按下时, 必定可读到一对唯一的行列值。再由这一对行列值可以求出闭合键所在的位置。,0 0 0 0,1 1 1 0,0 0 0 0,1 0 1 1,设第2行第4列键按下,列值:1110,行值:1011,由于按键按下时的机械动作,在按键被按下或松开的瞬间,其输出电压会产生波动,称为键的抖动。,2.消抖,为确保每按一次键单片机只进行一次处理,使键盘可靠地工作,必须消除按键抖动。消抖方法有硬件消抖和软件延时两种。,图3.5 键闭合及断开时的抖动,(1)硬件消抖法:就是在键盘中附加去抖动电

14、路,从根上消除抖动产生的可能性。右图所示电路实际上是由R-S触发器构成的单脉冲电路。当按钮开关按下时Q端输出低电平,当开关松开时Q端恢复高电平,即输出一个负脉冲,以此消除抖动。,图3.6 硬件去抖动电路,(2)软件消抖法:键按下的时间与操作者的按键动作有关,约为十分之几到几秒不等。而键抖动时间与按键的机械特性有关,一般为510ms不等。软件消抖法即是采用延时(一般延时1020ms)的方法,以避开按键的抖动,即在按键已稳定地闭合或断开时才读出其状态。,图3.7 软件消抖法延时区间示意图,3. 计算键码,键码是每个按键的标识。被按键确定下来之后,接下来的工作是计算闭合键的键码,然后才能根据键码进行

15、对应的操作。,为编程方便,键码通常都是以键的排列顺序安排,按照从左到右、从上向下的顺序编排。键码可根据行号列号以查表求得,也可通过计算得到。我们将结合实例加以介绍。,4.等待释放,等待释放是为了保证键的一次闭合仅进行一次处理。求得键码后,然后通过不断进行键扫描,如有键按下,则继续扫描,否则认为键已释放。,5.按键处理,根据系统功能要求,利用单片机控制完成特定操作。,键盘接口的控制方式,在单片机的运行过程中,何时进行键盘扫描和处理,可有下列三种情况: 1.查询方式:单片机通过调用键盘扫描子程序,查询有无键按下。 2.定时扫描方式:每隔一定时间执行一次键盘扫描子程序。 3.中断方式:每当有键闭合时

16、才向CPU发出中断请求,中断服务时进行键盘扫描和处理。,开关输入的连接方法,当需要使用的开关数量较少时,一般直接使用独立式按键输入,每个开关占用一个端口,其优点是编程简单,缺点是占用端口资源多。当需要的开关数量较多,CPU端口不够用时,使用矩阵式输入,其优点是占用端口资源少,缺点是编程比较复杂。本任务中使用独立式按键输入方法。 图3-8所示为一个独立式按键输入的常用连接方法,当按键按下时CPU端口为“0”,当按键松开时CPU端口为“1”。通过程序读取端口状态就能知道开关的状态。,硬件知识,1、硬件电路原理图,图3-8 独立式按键输入,端口在上拉电阻的作用下保持为高电平 按键按下端口为低电平状态,输入逻辑“0” 输入逻辑“1”,2、模拟开关灯,参考程序如下: ORG 0000H L1: JB P3.2,L2 ;如果P3.2的状态为1(1号键未按),则跳转到L2 CLR P0.0 ;1号键按下,P0.0清0,输出低电平,LED 发光 SJMP L1 L2: J

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号