51单片机keil下键盘驱动程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LCALL DELAY JB KEY1,RDKEY2 MOV A,#1 JNB KEY1,$ AJMP RDKEY0 RDKEY2: JB KEY2,RDKEY3 LCALL DELAY JB KEY2,RDKEY3 MOV A,#2 JNB KEY2,$ AJMP RDKEY0
RDKEY3: JB KEY3,RDKEY4 LCALL DELAY JB KEY3,RDKEY4 MOV A,#3 JNB KEY3,$ AJMP RDKEY0
K5: LJMP LOOP
;是key1? ;显示键码
练习3:用动态显示数码管显示键码
;用6位数码管的最右面一位显示键码,按KEY1显示1,按KEY2显示2, 按KEY3显示3,按KEY4显示4。
提示:将动态显示驱动代码添加过来
;参考主程序
ORG 0000H
LJMP START
ORG 000BH
LJMP T0SERV ;T0中断入口
DJNZ R7,DELAY2 DJNZ R6,DELAY1 RET
练习2:用P1口的发光管显示键码
按KEY1点亮1个发光管,按KEY2点亮2个发光管,按KEY3点亮3个发 光管,按KEY4点亮4个发光管。
;参考主程序 ORG 0 MOV SP,#30H MOV P1,#11111111B
LOOP: LCALL RDKEY JZ LOOP
RDKEY4: JB KEY4,RDKEY0 LCALL DELAY JB KEY4,RDKEY0 MOV A,#4 JNB KEY4,$
RDKEY0: RET ;----------------------------;延时程序 DELAY: MOV R6,#255 DELAY1: MOV R7,#255 DELAY2: NOP
键盘接口方式
独立式键盘接口
每个按键占用一个端口 优点:接口简单,编程简单 缺点:占用端口多,适应与按键少的场合
矩阵式键盘接口
按键排列成行列矩阵形式 优点:占用端口少,适应与按键多的场合 缺点:编程复杂
独立式键盘接口电路
AT89S51 P3.2 P3.3 P3.4 P3.5
ORG 0030H
START: MOV SP,#50H ;初始化堆栈
LCALL INIT
;初始化
MOV DISBUF,#10
MOV DISBUF+1,#10
MOV DISBUF+2,#10
MOV DISBUF+3,#10
MOV DISBUF+4,#10
MOV DISBUF+5,#10
MOV FLASH,#00000000B
;是key1? ;显示键码
练习3:用动态显示数码管显示键码
;用6位数码管的最右面一位显示键码,按KEY1显示1,按KEY2显示2, 按KEY3显示3,按KEY4显示4。
K1: CJNE A,#1,K2 MOV P1,#11111110B LJMP LOOP
K2: CJNE A,#2,K3 MOV P1,#11111100B LJMP LOOP
K3: CJNE A,#3,K4 MOV P1,#11111000B LJMP LOOP
K4: CJNE A,#4,K5 MOV P1,#11110000B
Y
KEY3按下? N
延时10ms KEY3按下? N
(A)=3 KEY3抬起? N
Y
KEY4按下? 延时10ms KEY4按下?
(A)=3 KEY4抬起? N
Y
独立式键盘驱动程序参考
;在A中返回键码:01234,0表示没有按键按 下
KEY1 EQU P3.2 KEY2 EQU P3.3 KEY3 EQU P3.4 KEY4 EQU P3.5 ;---------------------------RDKEY: MOV A,#0 RDKEY1: JB KEY1,RDKEY2
+5V
KEY1 KEY2 KEY3 KEY4
Hale Waihona Puke Baidu
练习1:编制独立式键盘驱动程序
;在A中返回键码:01234,0表示没有按键按下
开始 (A)=0 KEY1按下? N
延时10ms KEY1按下? N
(A)=1 KEY1抬起? N
Y 返回
流程图
KEY2按下? N
延时10ms KEY2按下? N
(A)=2 KEY2抬起? N
C8键盘驱动程序设计
山东职业学院
按键种类
按键工作原理
触点通断转换成电平高低
+5V
+5V
4.7K
P1.0
按键
4.7K
P1.0
开关
按键操作时的电压波形
+5V
V1
V1
5V 按下
弹起
5~10mS
t 5~10mS
按键确认消除抖动的方法
硬件消抖
使用RS触发器
软件消抖
+5V
使用软件延时,2次确认的方法
MOV P1,#11111111B
LOOP: K1: K2: K3: K4: K5:
LCALL RDKEY JZ LOOP CJNE A,#1,K2 MOV P1,#11111110B MOV DISBUF+5,#1 LJMP LOOP CJNE A,#2,K3 MOV P1,#11111100B MOV DISBUF+5,#2 LJMP LOOP CJNE A,#3,K4 MOV P1,#11111000B MOV DISBUF+5,#3 LJMP LOOP CJNE A,#4,K5 MOV P1,#11110000B MOV DISBUF+5,#4 LJMP LOOP
RDKEY3: JB KEY3,RDKEY4 LCALL DELAY JB KEY3,RDKEY4 MOV A,#3 JNB KEY3,$ AJMP RDKEY0
K5: LJMP LOOP
;是key1? ;显示键码
练习3:用动态显示数码管显示键码
;用6位数码管的最右面一位显示键码,按KEY1显示1,按KEY2显示2, 按KEY3显示3,按KEY4显示4。
提示:将动态显示驱动代码添加过来
;参考主程序
ORG 0000H
LJMP START
ORG 000BH
LJMP T0SERV ;T0中断入口
DJNZ R7,DELAY2 DJNZ R6,DELAY1 RET
练习2:用P1口的发光管显示键码
按KEY1点亮1个发光管,按KEY2点亮2个发光管,按KEY3点亮3个发 光管,按KEY4点亮4个发光管。
;参考主程序 ORG 0 MOV SP,#30H MOV P1,#11111111B
LOOP: LCALL RDKEY JZ LOOP
RDKEY4: JB KEY4,RDKEY0 LCALL DELAY JB KEY4,RDKEY0 MOV A,#4 JNB KEY4,$
RDKEY0: RET ;----------------------------;延时程序 DELAY: MOV R6,#255 DELAY1: MOV R7,#255 DELAY2: NOP
键盘接口方式
独立式键盘接口
每个按键占用一个端口 优点:接口简单,编程简单 缺点:占用端口多,适应与按键少的场合
矩阵式键盘接口
按键排列成行列矩阵形式 优点:占用端口少,适应与按键多的场合 缺点:编程复杂
独立式键盘接口电路
AT89S51 P3.2 P3.3 P3.4 P3.5
ORG 0030H
START: MOV SP,#50H ;初始化堆栈
LCALL INIT
;初始化
MOV DISBUF,#10
MOV DISBUF+1,#10
MOV DISBUF+2,#10
MOV DISBUF+3,#10
MOV DISBUF+4,#10
MOV DISBUF+5,#10
MOV FLASH,#00000000B
;是key1? ;显示键码
练习3:用动态显示数码管显示键码
;用6位数码管的最右面一位显示键码,按KEY1显示1,按KEY2显示2, 按KEY3显示3,按KEY4显示4。
K1: CJNE A,#1,K2 MOV P1,#11111110B LJMP LOOP
K2: CJNE A,#2,K3 MOV P1,#11111100B LJMP LOOP
K3: CJNE A,#3,K4 MOV P1,#11111000B LJMP LOOP
K4: CJNE A,#4,K5 MOV P1,#11110000B
Y
KEY3按下? N
延时10ms KEY3按下? N
(A)=3 KEY3抬起? N
Y
KEY4按下? 延时10ms KEY4按下?
(A)=3 KEY4抬起? N
Y
独立式键盘驱动程序参考
;在A中返回键码:01234,0表示没有按键按 下
KEY1 EQU P3.2 KEY2 EQU P3.3 KEY3 EQU P3.4 KEY4 EQU P3.5 ;---------------------------RDKEY: MOV A,#0 RDKEY1: JB KEY1,RDKEY2
+5V
KEY1 KEY2 KEY3 KEY4
Hale Waihona Puke Baidu
练习1:编制独立式键盘驱动程序
;在A中返回键码:01234,0表示没有按键按下
开始 (A)=0 KEY1按下? N
延时10ms KEY1按下? N
(A)=1 KEY1抬起? N
Y 返回
流程图
KEY2按下? N
延时10ms KEY2按下? N
(A)=2 KEY2抬起? N
C8键盘驱动程序设计
山东职业学院
按键种类
按键工作原理
触点通断转换成电平高低
+5V
+5V
4.7K
P1.0
按键
4.7K
P1.0
开关
按键操作时的电压波形
+5V
V1
V1
5V 按下
弹起
5~10mS
t 5~10mS
按键确认消除抖动的方法
硬件消抖
使用RS触发器
软件消抖
+5V
使用软件延时,2次确认的方法
MOV P1,#11111111B
LOOP: K1: K2: K3: K4: K5:
LCALL RDKEY JZ LOOP CJNE A,#1,K2 MOV P1,#11111110B MOV DISBUF+5,#1 LJMP LOOP CJNE A,#2,K3 MOV P1,#11111100B MOV DISBUF+5,#2 LJMP LOOP CJNE A,#3,K4 MOV P1,#11111000B MOV DISBUF+5,#3 LJMP LOOP CJNE A,#4,K5 MOV P1,#11110000B MOV DISBUF+5,#4 LJMP LOOP