第三章——独立按键及矩阵键盘控制LED灯 (2)



《第三章——独立按键及矩阵键盘控制LED灯 (2)》由会员分享,可在线阅读,更多相关《第三章——独立按键及矩阵键盘控制LED灯 (2)(38页珍藏版)》请在文档大全上搜索。
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上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识