问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

51单片机的4*4键盘程序

发布网友 发布时间:2022-04-23 14:54

我来回答

4个回答

热心网友 时间:2023-10-03 06:24

/* 实验目的:1.掌握键盘扫描的原理以及十/十六进制的转换
* 2.了解单片机输入和输出的过程,以及如何对数据进行采集的
* 实验内容:键盘上对应有16个按键,从0到F,按下相应的键会在数码管上显示相应的数字,
* 其中K0到K15是采用4*4的方式连接的
*/
;******************************************************************
; 0 1 2 3 ---P30
; 4 5 6 7 ---P31
; 8 9 A B ---P32
; C D E F ---P33
; | | | |
; P34 P35 P36 P37
;******************************************************************

ORG 0000h
LJMP MAIN
ORG 0030h
MAIN:
MOV DPTR,#TAB ;将表头放入DPTR
LCALL KEY ;调用键盘扫描程序
MOVC A,@A+DPTR ;查表后将键值送入ACC
MOV P0,A ;将Acc值送入P0口
CLR P1.3 ;开显示
LJMP MAIN ;返回调用子程序反复循环显示

KEY: LCALL KS ;调用检测按键子程序
JNZ K1 ;有键按下继续
LCALL DELAY2 ;无键按下调用延时去抖动程序
AJMP KEY ;返回继续检测有无按键按下
K1: LCALL DELAY2
LCALL DELAY2 ;有键按下继续延时去抖动
LCALL KS ;再一次调用检测按键程序
JNZ K2 ;确认有按下进行下一步
AJMP KEY ;无键按下返回继续检测
K2: MOV R2,#0EFH ;将扫描值送入 R2暂存
MOV R4,#00H ;将第一列的列值00H送入R4暂存,R4用于存放列值。
K3: MOV P3,R2 ;将R2的值送入P3口
L6: JB P3.0,L1 ;P3.0等于1跳转到L1
MOV A,#00H ;将第一行的行值00H送入ACC
AJMP LK ;跳转到键值处理程序
L1: JB P3.1,L2 ;P3.1等于1跳转到L2
MOV A,#04H ;将第二行的行值送入ACC
AJMP LK ;跳转到键值理程序进行键值处理
L2: JB P3.2,L3 ;P1.2等于1跳转到L3
MOV A,#08H ;将第三行的行值送入ACC
AJMP LK ;跳转到键值处理程序
L3: JB P3.3,NEXT ;P3.3等于1跳转到NEXT处
MOV A,#0cH ;将第四行的行值送入ACC
LK: ADD A,R4 ;行值与列值相加后的键值送入A
PUSH ACC ;将A中的值送入堆栈暂存
K4: LCALL DELAY2 ;调用延时去抖动程序
LCALL KS ;调用按键检测程序
JNZ K4 ;按键没有松开继续返回检测
POP ACC ;将堆栈的值送入ACC
RET

NEXT:
INC R4 ;将列值加一
MOV A,R2 ;将R2的值送入A
JNB ACC.7,KEY ;扫描完成跳至KEY处进行下一回合的扫描
RL A ;扫描未完成将A中的值右移一位进行下一列的扫描
MOV R2,A ;将ACC的值送入R2暂存
AJMP K3 ;跳转到K3继续
KS: MOV P3,#0FH ;将P3口高四位置0低四位值1
MOV A,P3 ;读P3口
XRL A,#0FH ;将A中的值与A中的值相异或
RET ;子程序返回
DELAY2: ;40ms延时去抖动子程序8*FA*2=40ms
MOV R5,#08H
L7: MOV R6,#0FAH
L8: DJNZ R6,L8
DJNZ R5,L7
RET

TAB:
DB 0C0H;0
DB 0F9H;1
DB 0A4H;2
DB 0B0H;3
DB 099H;4
DB 092H;5
DB 082H;6
DB 0F8H;7
DB 080H;8
DB 090H;9
DB 088H;A
DB 083H;b
DB 0C6H;C
DB 0A1H;d
DB 086H;E
DB 08EH;F
END

热心网友 时间:2023-10-03 06:25

呵呵,太长了,不至于这么复杂吧?

热心网友 时间:2023-10-03 06:25

你告诉我你的邮箱传给你。

热心网友 时间:2023-10-03 06:26

汇编的书上都有啊 额 只会C~~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
万能粉碎机清洁规程 中药粉碎机如何清洗比较好 磨粉机能用水洗吗 正确的家用粉碎机清洗方法 粉碎机清洗不干净粉碎机怎么清洗才干净 励志语句长句精选123句 caxa如何保存图幅模板 美迪特MDT-IN158重要参数 打玻尿酸已一个月眼睛疼,会不会打玻尿酸一个月,突然眼睛疼会不会... 玻尿酸失明概率真的小吗-玻尿酸失明有光感还能恢复吗 陈华军人物简介 单片机键盘自检程序 矩阵式键盘工作流程主要包括 三个步骤 win7下怎么记录键盘按键过程,就是按过哪些按键 关于单片机温度控制系统C语言程序中的按键设置程序,请求详细的介绍下按键的输入过程。while(1) { if(KeyFl 雪莲果的热量?每天都吃可以吗? VB一个简单的键盘按键响应程序 雪莲果可以天天吃吗,没次吃多少合适,吃多了对身体 求51单片机中断式独立按键的程序流程图,完整一点谢谢。 雪莲果什么时候吃最好?求解。 怎样用程序制作软键盘 雪莲果是水果还是蔬菜,怎么吃? 如何用易语言写网络游戏最小化后 后台按键程序? 雪莲果含糖量是多少? 单片机C语言两个数码管按键计数程序 雪莲果什么时候吃最好? 如何用易语言制作游戏最小化后 后台按键程序。 什么季节吃雪莲果好值 51单片机最有效的按键处理程序 8月份吃雪莲果好吃吗 tcl xqb55f101t怎么设置洗衣按键流程 按键控制led灯的程序 单片机5个IO口扫描25个按键的程序,怎么只能扫描到下面5个键 有什么app可以把证件照背景颜色改了 请问有没有改变图片上的文字和背景颜色的手机app? 哪个app可以换照片底色 怎样制做微信二维码红包? 怎么让别人扫我的二维码收红包? 我想设置一个微信二维码,别人扫到就可以得到我发的红包,请问怎么办 唐诗三百首究竟是哪三百首 唐诗三百首是哪300首 唐诗三百首到底有多少首诗? 《唐诗300首》都有哪300首诗把题目,作者 谁知道唐诗有哪300首? 唐诗300首诗句 tang唐诗300首都有哪些? 唐诗300首,主要搜集了哪些人的? 有名的一些古诗(至少300首) 七步洗手法什么时候需要洗手 小翼管家语音权限怎么打开 流水洗手应该采用七步洗手法,具体操作方法是怎样的?