最新独立按键及矩阵键盘控制LED灯

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CLR P1.0 LCALL DL MOV 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 temp,#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 ;指定查表启始地址 mov r0,#4
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 ;显示十位的数据
第三章 电子时钟设计
键盘接口
键盘是单片机应用系统中使用最广泛的一种
数据输入设备。键盘是一组按键的组合。键通常
是一种常开型按钮开关,常态下键的两个触点处
于断开状态,按下键时它们才闭合(短路)。
通常,按键按照接口原理键盘有编码和非编码
两种。编码键盘通过硬件电路产生被按按键的键码
和一个选通脉冲。选通脉冲可作为CPU的中断请求 信号。这种键盘使用方便,所需程序简单,但硬件 电路复杂,常不被单片机采用。 非编码键盘按组成结构又可分为独立式键盘和 矩阵式键盘。独立式键盘的工作过程与矩阵式键盘
类似,无论是硬件结构还是软件设计都比较简单,。

按键按照结构原理可分为两类,一类是触 点式开关按键,如机械式开关、导电橡胶 式开关等;另一类是无触点开关按键,如 电气式按键,磁感应按键等。前者造价低 ,后者寿命长。目前,微机系统中最常见 的是触点式开关按键。

一个完善的键盘控制程序应具备以下功能: (1)检测有无按键按下,并采取硬件或软件措施, 消除键盘按键机械触点抖动的影响。 (2)有可靠的逻辑处理办法。每次只处理一个按键 ,其间对任何按键的操作对系统不产生影响,且无论一次 按键时间有多长,系统仅执行一次按键功能程序。 (3)准确输出按键值(或键号),以满足跳转指令 要求。
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入栈 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 ; 左移 RET END
Biblioteka Baidu
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次 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
相关文档
最新文档