矩阵键盘检测实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
昆明理工大学信息工程与自动化学院学生实验报告
(2013 —2014 学年第 2 学期)
课程名称:单片机原理及接口技术开课实验室: 2014年5月27日
一、上机目的及内容
上机目的:掌握单片机I/O口的输入检测的方法、矩阵按键的识别方法、键盘消抖等。
学会实时程序的调试技巧。
上机内容:实验板上电时,数码管不显示,顺序按下矩阵键盘后,在数码管上依次显示0到F,6个数码管同时静态显示即可。
二、实验原理及本技术路线图(方框原理图或程序流程图)
我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms 左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。
下图中按键s6-s218条线分别联接p3口相连,p3.0~p3.3控制1~4行,p3.4~p3.7控制1~4列。
三、所用仪器、材料(设备名称、型号、规格等或使用软件)
Pc机一台,keil软件,stc-isp
四、实验方法、步骤(或:程序代码或操作过程)
1、按实验要求在KeilC中创建项目,编辑、编译程序。
2、将编译生成的目标码文件(后缀为.Hex)下载到实验板电路中。
3、在实验板中运行程序,观察实验运行结果并记录。
程序代码:
org 0000h
wei bit p2.7
duan bit p2.6
main: mov p3,#0ffh
mov a,p3
setb wei
mov p0,#0ffh
clr wei
mov dptr,#table
m1: mov p3,#0feh
mov a,p3
cjne a,#0feh,s1
jmp s7
s1: call delay
mov a,p3
cjne a,#0feh,s2
jmp s7
s2: mov a,p3
cjne a,#0eeh,s3
mov r2,#0
jmp s8
s3: mov a,p3
cjne a,#0deh,s4
mov r2,#1
jmp s8
s4: mov a,p3
cjne a,#0beh,s5
mov r2,#2
jmp s8
s5: mov a,p3
cjne a,#7eh,s8
mov r2,#3
jmp s8
s8: mov a,p3
cjne a,#0feh,s8
call display
s7: nop
jmp m2
m2: mov p3,#0fdh
mov a,p3
cjne a,#0fdh,l0
jmp l0
l0: call delay
mov a,p3
cjne a,#0fdh,l2
jmp l7
l2: mov a,p3
cjne a,#0edh,l3
mov r2,#4
jmp l8
l3: mov a,p3
cjne a,#0ddh,l4
mov r2,#5
jmp l8
l4: mov a,p3
cjne a,#0bdh,l5
mov r2,#6
jmp l8
l5: mov a,p3
cjne a,#7dh,l8
mov r2,#7
jmp l8
l8: mov a,p3
cjne a,#0fdh,l8
call display
l7: nop
jmp m3
m3 : mov p3,#0fbh
mov a,p3
cjne a,#0fbh,a0
jmp a0
a0: call delay
mov a,p3
cjne a,#0fbh,a2
jmp a7
a2: mov a,p3
cjne a,#0ebh,a3
mov r2,#8
jmp a8
a3: mov a,p3
cjne a,#0dbh,a4
mov r2,#9
jmp a8
a4: mov a,p3
cjne a,#0bbh,a5
mov r2,#10
jmp a8
a5: mov a,p3
cjne a,#7bh,a8
mov r2,#11
jmp a8
a8: mov a,p3
cjne a,#0fbh,a8
call display
a7: nop
jmp m4
m4: mov p3,#0f7h
mov a,p3
cjne a,#0f7h,b0
jmp b0
b0: call delay
mov a,p3
cjne a,#0f7h,b2
jmp b7
b2: mov a,p3
cjne a,#0e7h,b3
mov r2,#12
jmp b8
b3: mov a,p3
cjne a,#0d7h,b4
mov r2,#13
jmp b8
b4: mov a,p3
cjne a,#0b7h,b5
mov r2,#14
jmp b8
b5: mov a,p3
cjne a,#77h,b8
mov r2,#15
jmp b8
b8: mov a,p3
cjne a,#0f7h,b8
call display
b7: nop
jmp m1 display:setb wei
mov p0,#0c0h
clr wei