第三章——独立按键及矩阵键盘控制LED灯(2)_第1页
第三章——独立按键及矩阵键盘控制LED灯(2)_第2页
第三章——独立按键及矩阵键盘控制LED灯(2)_第3页
第三章——独立按键及矩阵键盘控制LED灯(2)_第4页
第三章——独立按键及矩阵键盘控制LED灯(2)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8个共阴极的数码管,动态显示0-7ORG 0000HMOV R0,#00H ;给R0赋值0MOV DPTR,#TAB ; 把TAB 表的首地址给DPTRMOV R4,#0FEH; ;给R4赋值0FE MOV A,R4; ;A为0FE 也就是1111 1110 PUSH ACC; ;将A入栈DLO:MOV A,R0MOVC 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入栈INC R0; R

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

3、mp mainOrg 0100hMain:MOV R0,#00H ;给R0赋值0MOV DPTR, #TAB ; MOV R3, #0; ;给R3赋值0M1:MOV R4, #0; ;给R4赋值0GW:MOV R2, #10YS:MOV A, R4; ;A为0MOVC A, A+DPTRMOV P0, A ;显示个位的数据CLR P1.1LCALL DLMOV P0,#0SETB P1.1MOV A, R3MOVC A, A+DPTRMOV P0, A ;显示十位的数据CLR P1.0LCALL DLMOV P0,#0SETB P1.0DJNZ R2,YSINC R4CJNE R4,#10,G

4、WINC R3CJNE R3,#10,M1SJMP MAINDL: MOV R7,#10 D1: MOV R6,#200 D2:DJNZ R6,d2 DJNZ R7,d1RETTAB: DB 3fH, 06H, 05bH, 4fH, 66H, 6dH, 7dH,07H, 7fH, 6fHna_bit equ 20h ;数码管个位数存放内存位置nb_bit equ 21h ;数码管十位数存放内存位置ntemp equ 22h ;计数器数值存放内存位置 norg 0 nstar: mov temp,#0 ;初始化计数器,从0开始nstlop: acall display;调用显示子程序ninc t

5、emp;对计数器加1nmov a,tempncjne a,#100,next ;判断计数器是否满100?nmov temp,#0;满100就清零重新开始nnext: ljmp stlop;不满就循环执行n;显示子程序ndisplay: mov a,temp ;将temp中的十六进制数转换成10进制nmov b,#10 ;10进制/10=10进制ndiv abnmov b_bit,a ;十位在anmov a_bit,b ;个位在bnmov dptr,#numtab ;指定查表启始地址nmov r0,#4dpl1: mov r1,#250 ;dplop: mov a,a_bit ;取个位数取个位数

6、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

7、 ;循环执行循环执行250次次djnz r0,dpl1 ;循环执行循环执行250X4=1000次次Ret;2+2X80=162微秒微秒,延时按延时按12MHZ计计算算D1MS: MOV R7,#80DJNZ R7,$RET共阴数码管的显示代码共阴数码管的显示代码numtab: DB 3fH, 06H, 05bH, 4fH, 66H, 6dH, 7dH,07H, 7fH, 6fH第三章 电子时钟设计 非编码键盘非编码键盘按组成结构又可分为按组成结构又可分为独立式键盘独立式键盘和和矩阵式键盘矩阵式键盘。独立式键盘的工作过程与矩阵式键盘独立式键盘的工作过程与矩阵式键盘类似,无论是硬件结构还是软件设计

8、都比较简单,。类似,无论是硬件结构还是软件设计都比较简单,。 通常,按键按照接口原理键盘有通常,按键按照接口原理键盘有编码编码和和非编码非编码两种。编码键盘通过硬件电路产生被按按键的键码两种。编码键盘通过硬件电路产生被按按键的键码和一个选通脉冲。选通脉冲可作为和一个选通脉冲。选通脉冲可作为CPU的中断请求的中断请求信号。这种键盘使用方便,所需程序简单,但硬件信号。这种键盘使用方便,所需程序简单,但硬件电路复杂,常不被单片机采用。电路复杂,常不被单片机采用。n按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键,磁感应按键等。前者

9、造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。n一个完善的键盘控制程序应具备以下功能:n(1)检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。n(2)有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。n(3)准确输出按键值(或键号),以满足跳转指令要求。 S1 S1S4S4S3S3S2S2 P1.4 P1.4 P1.5 P1.5 P1.6 P1.6 P1.7 P1.7 89S52 89S52+5V+5V图图3.1 独立式键盘接口独立式键盘接口特点:特点:每个按键占用一条每

10、个按键占用一条I/OI/O线,当按键数量较多时,线,当按键数量较多时,I/OI/O口利用率不高,但程序编制简口利用率不高,但程序编制简单。适用于所需按键较少的场单。适用于所需按键较少的场合。合。特点:特点:电路连接复杂,但提电路连接复杂,但提高了高了I/OI/O口利用率,软件编程口利用率,软件编程较复杂。适用于需使用大量较复杂。适用于需使用大量按键的场合。按键的场合。 89s5289s52P1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3P1.4P1.4P1.5P1.5P1.6P1.6P1.7P1.7+5V+5V图图3.2 矩阵式键盘接口矩阵式键盘接口n独立式按键的软件结构n独立

11、式按键软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。n矩阵式键盘的结构及原理n矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如下图所示。n由图可知,一个44的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多I/O口。n矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识

12、别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。K99K10AK15FP10P11P12P13P14P15P16P17EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN2

13、9ALE/P30TXD11RXD10VCC40GND20U189S52P10P11P12P13P14P15P16P17K00K11K22K33K55K66K77K88K44K11BK12CK13DK14E 89s5289s52P1.0P1.0P1.1P1.1P1.2P1.2P1.3P1.3P1.4P1.4P1.5P1.5P1.6P1.6P1.7P1.7+5V+5V图图3.3 矩阵式键盘接口矩阵式键盘接口键盘控制流程键盘控制流程 单片机对矩阵单片机对矩阵式键盘接口处理的式键盘接口处理的一般过程如图所示。一般过程如图所示。键扫描键扫描消抖消抖求键码求键码等待释放等待释放键扫描键扫描消除抖动消除抖动

14、有键按下?有键按下?键扫描键扫描确有键按下?确有键按下?求键值求键值按键处理按键处理键释放?键释放?Y YY YY YN NN N等待键释放等待键释放N N开始开始返回返回按键处理按键处理图图3.4 键盘处理流程框图键盘处理流程框图1. 键扫描键扫描 键扫描就是要判断有无键按下,当扫描到有键键扫描就是要判断有无键按下,当扫描到有键按下时再进行下一步处理,否则退出键盘处理程序。按下时再进行下一步处理,否则退出键盘处理程序。独立式键盘扫描只需读取独立式键盘扫描只需读取IO口状态口状态,而矩阵式键盘而矩阵式键盘描通常有两种实现方法:描通常有两种实现方法:逐行扫描法逐行扫描法和线反转法。和线反转法。

15、(1) 逐行扫描法。依次从第一至最末行线上发逐行扫描法。依次从第一至最末行线上发出低电平信号出低电平信号, 如果该行线所连接的键没有按下如果该行线所连接的键没有按下的话的话, 则列线所接的端口得到的是全则列线所接的端口得到的是全“1”信号信号, 如如果有键按下的话果有键按下的话, 则得到非全则得到非全“1”信号。信号。 89C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V01111 1 1 110111 1 1 011011 1 1 111101 1 1 1设第2行第4列键按下行线输出 列线输入0 1 1 11 1 1 11 0 1 11 1 1 01 1 0 11

16、 1 1 11 1 1 01 1 1 1 (2 2)线反转法。)线反转法。 线反转法也是识别闭合键的一种常用方法线反转法也是识别闭合键的一种常用方法, , 该该法比行扫描速度快法比行扫描速度快, , 但在硬件上要求行线与列线外但在硬件上要求行线与列线外接上拉电阻。接上拉电阻。 先将行线作为输出线先将行线作为输出线, , 列线作为输入线列线作为输入线, , 行线行线输出全输出全“0 0”信号信号, , 读入列线的值读入列线的值, , 那么在闭合键所那么在闭合键所在的列线上的值必为在的列线上的值必为0 0;然后从列线输出全;然后从列线输出全“0 0”信信号,再读取行线的输入值,闭合键所在的行线值必

17、号,再读取行线的输入值,闭合键所在的行线值必为为 0 0。这样。这样, ,当一个键被按下时当一个键被按下时, , 必定可读到一对必定可读到一对唯一的行列值。再由这一对行列值可以求出闭合键唯一的行列值。再由这一对行列值可以求出闭合键所在的位置。所在的位置。 00001 1 1 00 0 0 01011 89C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V设第2行第4列键按下列值:1110行值:1011 由于按键按下时的机械动作,在按键被按下或松由于按键按下时的机械动作,在按键被按下或松开的瞬间,其输出电压会产生波动,称为键的抖动开的瞬间,其输出电压会产生波动,称为键的

18、抖动。键按下键按下前沿前沿抖动抖动后沿后沿抖动抖动 2.消抖消抖 为确保每按一次键单片机只进行一次处理,使为确保每按一次键单片机只进行一次处理,使键盘可靠地工作,必须消除按键抖动。消抖方法有键盘可靠地工作,必须消除按键抖动。消抖方法有硬件硬件消抖消抖和和软件软件延时两种。延时两种。 图图3.5 键闭合及断开时的抖动键闭合及断开时的抖动+5V& & &Q QQ Q (1 1)硬件消抖法:)硬件消抖法:就是在键盘中附加去抖动电就是在键盘中附加去抖动电路,从根上消除抖动产生的可能性。右路,从根上消除抖动产生的可能性。右图所示电路图所示电路实际上是由实际上是由R-SR-S触发器构成的单脉冲电路。当按钮

19、触发器构成的单脉冲电路。当按钮开关按下时开关按下时Q Q端输出低电平,当开关松开时端输出低电平,当开关松开时Q Q端恢复端恢复高电平,即输出一个负脉冲,以此消除抖动。高电平,即输出一个负脉冲,以此消除抖动。图图3.6 硬件去抖动电路硬件去抖动电路 (2 2)软件消抖法:键按下的时间与操作者的按)软件消抖法:键按下的时间与操作者的按键动作有关,约为十分之几到几秒不等。而键抖动键动作有关,约为十分之几到几秒不等。而键抖动时间与按键的机械特性有关,一般为时间与按键的机械特性有关,一般为5 510ms10ms不等。不等。软件消抖法即是采用延时(一般延时软件消抖法即是采用延时(一般延时101020ms2

20、0ms)的)的方法,以避开按键的抖动,即在按键已稳定地闭合方法,以避开按键的抖动,即在按键已稳定地闭合或断开时才读出其状态。或断开时才读出其状态。 100ms100ms10ms10ms10ms10ms键抖动时间键抖动时间 图图3.7 软件消抖法软件消抖法延时区间示意图延时区间示意图3. 计算键码计算键码 键码是每个按键的标识。被按键确定下来之后,键码是每个按键的标识。被按键确定下来之后,接下来的工作是计算闭合键的键码,然后才能根据接下来的工作是计算闭合键的键码,然后才能根据键码进行对应的操作。键码进行对应的操作。 为编程方便,键码通常都是以键的排列顺序安为编程方便,键码通常都是以键的排列顺序安

21、排,按照从左到右、从上向下的顺序编排。键码可排,按照从左到右、从上向下的顺序编排。键码可根据行号列号以查表求得,也可通过计算得到。我根据行号列号以查表求得,也可通过计算得到。我们将结合实例加以介绍。们将结合实例加以介绍。 4.等待释放等待释放 等待释放是为了保证键的一次闭合仅进行一次处等待释放是为了保证键的一次闭合仅进行一次处理。求得键码后,然后通过不断进行键扫描,如有理。求得键码后,然后通过不断进行键扫描,如有键按下,则继续扫描,否则认为键已释放。键按下,则继续扫描,否则认为键已释放。 5.按键处理按键处理 根据系统功能要求,利用单片机控制完成特定操作。根据系统功能要求,利用单片机控制完成特

22、定操作。 键盘接口的控制方式键盘接口的控制方式 在单片机的运行过程中,何时进行键盘扫描和在单片机的运行过程中,何时进行键盘扫描和处理,可有下列三种情况:处理,可有下列三种情况:1.1.查询方式:单片机通过调用键盘扫描子程序,查查询方式:单片机通过调用键盘扫描子程序,查询有无键按下。询有无键按下。2.2.定时扫描方式:每隔一定时间执行一次键盘扫描定时扫描方式:每隔一定时间执行一次键盘扫描子程序。子程序。3.3.中断方式:每当有键闭合时才向中断方式:每当有键闭合时才向CPUCPU发出中断请求,发出中断请求,中断服务时进行键盘扫描和处理。中断服务时进行键盘扫描和处理。开关输入的连接方法开关输入的连接

23、方法 n 当需要使用的开关数量较少时,一般直接使用独立式按键输入,每个开关占用一个端口,其优点是编程简单,缺点是占用端口资源多。当需要的开关数量较多,CPU端口不够用时,使用矩阵式输入,其优点是占用端口资源少,缺点是编程比较复杂。本任务中使用独立式按键输入方法。n图3-8所示为一个独立式按键输入的常用连接方法,当按键按下时CPU端口为“0”,当按键松开时CPU端口为“1”。通过程序读取端口状态就能知道开关的状态。硬件知识1、硬件电路原理图、硬件电路原理图图3-8 独立式按键输入端口在上拉电阻的作用下保持为高电平 按键按下端口为低电平状态,输入逻辑“0” 输入逻辑“1”2、模拟开关灯、模拟开关灯

24、n参考程序如下:nORG 0000HnL1:JB P3.2,L2;如果P3.2的状态为1(1号键未按),则跳转到L2nCLR P0.0;1号键按下,P0.0清0,输出低电平,LED 发光nSJMP L1nL2:JB P3.3,L1;如果P3.3的状态为1(2号键未按),则跳转到L1nSETB P0.0;2号键按下,P0.0置1,输出高电平,LED熄灭nSJMP L1nENDn按下1号键时,P3.2=0,程序从L1顺序执行,P0.0被清0,输出低电平,LED发光,1号键未按下,程序跳转到L2,检测2号键,即P3.3的状态,如果P3.3的状态为1(2号键未按),则跳转到L1,完成一个循环;如果P3

25、.3的状态为0(2号键被按下),程序从L2顺序执行,P0.0置1,输出高电平,LED熄灭。最后执行 SJMP L1,回到开始处继续执行。3、按键控制任意、按键控制任意LED灯点亮灯点亮n参考程序如下:nORG 0000H;定位伪指令,指定下一条指令的地址,第一条指令必须放在0000HnL1: MOV A,P3;把P3口的状态读入累加器A中nRL A;A中的内容循环左移nRL AnMOV P0,A;把A中的数据送到P0口,控制P0口输出电平,控制LED亮灭n SJMP L1;返回L1,循环执行程序nEND;结束伪指令n在以上的这段程序中,加了两条RL A指令,实现了两次左移,这样P3.2、P3.3、P3.4、P3.5分别控制P0.4、P0.5 、P0.6、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论