单片机与矩阵键盘接口电路设计实验报告
单片机与矩阵键盘接口电路设计实验报告
姓名:
林蔼龄
学号:
1060601007
班级:
10级物理系电子信息工程 A班
XTALlKTAL2RSTaDEATftSCSlΓEX1rCF-SEH ?E EAIU9亠?
XTALl
KTAL2
RST
a
D
E
ATftSCSl
ΓEX1
r
C
F-SEH ?E EA
IU9
亠
?>
一:实验内容
使用单片机的P1 口与矩阵式键盘连接时,可以将 P1 口低4位的4条端口 线定义为行线,P1 口高4位的4条端口线定义为列线,形成 4*4键盘,可以配 置16个按键,将单片机P2 口与七段数码管连接,当按下矩阵键盘任意键时,数 码管显示该键所在的键号。
:电路图
[PD.QfADO M.HAD1 何2也02 Pα.3ΓAD3 賀
P0.5∕AD5
IPa 5IADE 叮 1-∣?∕
P2.o?a P2.1J?9 P3iMI0 P2:3?11 P2.12 P3Sj?13 R2.6M14 P2.7J?15
曲 JMFD P31JTXD P3.2flNτf P3.3?JτΓ
P34JTO P3?Π,1
P3占晅 PST丽
:程序流程图
四:程序
Org Ooooh
IjmP mai n
main:mov p1,#Ofh;列线输出O,行线设为输入 mov a,p1;读 P1 口
an I a,#Ofh;屏蔽高4位,留下行线状态
Cjne a,#0fh,look;有按键按下,转 look
ret;无按键按下,返回主程序
look:lcall dIay10;延时 10ms
mov a,p1;读 P1 口
anl a,#0fh;屏蔽高4位,留下行线状态
Cjne a,#0fh,ra nk确认键已按稳,转 RANK ljmp main;是抖动,未按稳,重新扫描 rank:mov r2,#00h ;窜键标志寄存器请0 mov r3,#04h ;查列次数
mov r4,#0f7h ;列扫描字初值
mov r5,#0ffh ;列号处值
rloop1:inc r5 ;开始列扫描,列号加1 mov a,r4 ;列扫描字送A
rl a ;列扫描字左移一位
mov r4,a;暂存列扫描字
mov p1,a;送出列扫描字
mov a,p1;读 P1 口
anl a,#0fh;屏蔽高 4 位,留下行线状态
cjne a,#0fh,next1;当前列有键按下,转 next1 rloop2:djnz r3,rloop1;列扫描未完,继续 sjmp line;列扫描完,转行扫描 next1:inc r2;窜键标志加 1
mov 20h,r5;暂存有按键的列号
sjmp rloop2;继续列扫描
Iine:Gjne r2,#01h,main ;若已窜键,转 main,重新扫描
mov r2,#00h;开始查行,窜键标志寄存器清 0
mov r3,#04h ;行扫描次数
mov r6,#0ffh ;行号初值
mov p1,#0fh ;列线送 0,准备读行线
mov a,p1 ;读 P1 口,获取行线状态
IIoop1:inG r6 ;行号加 1
rrG a ;从第 0 行开始,判断有无按键
jnG next2 ;本行有按键,转 next2
IIoop2:djnz r3,IIoop1 ;无按键,继续查下一行 sjmp next3 ;查完,转 next3
next2:inG r2 ;窜键标志加 1
mov 21h,r6 ;暂存有按键的行号
sjmp IIoop2 ;继续行扫描
next3:Cjne r2,#01h,main ;若窜键,转 main,重新扫描 gainky:mov a,21h ;无窜键,取出行号 mov b,#04h ;键盘列数 muI ab ;行号 *键盘列数
add a,20h ;乘积与列号相加,得到键号 mov b,#03h;为执行键处理程序做准备 muI ab ;键号 *3
mov dptr,#ptab ;键处理程序表首地址送 DPTR jmp @a+dptr ;散转至与键号对应的键处理程序 ptab:Ijmp prog0; 键处理程序表
Ijmp prog1
Ijmp prog2
Ijmp prog3
Ijmp prog4
Ijmp prog5
Ijmp prog6
Ijmp prog7
Ijmp prog8
Ijmp prog9
Ijmp prog10
ljmp prog11
ljmp prog12
ljmp prog13
ljmp prog14
ljmp prog15 prog0:mov p2,#3fh ret prog1:mov p2,#06h ret prog2:mov p2,#5bh ret prog3:mov p2,#4fh ret prog4:mov p2,#66h ret prog5:mov p2,#6dh ret prog6:mov p2,#7dh ret prog7:mov p2,#07h ret prog8:mov p2,#7fh ret prog9:mov p2,#6fh ret prog10:mov p2,#77h ret prog11:mov p2,#7ch ret prog12:mov p2,#39h ret prog13:mov p2,#5eh ret prog14:mov p2,#79h ret prog15:mov p2,#71h ret dlay10:mov r0,#100;约 10ms 延时 dlay1:mov r1,#50 dlay2:djnz r1,dlay2 djnz r0,dlay1 ret end
五:实验结果
当矩阵键盘的3号键被按下时,P2 口的七段数码管显示的数据为 3.如下图1所 以:
UlIL J∏AL2PoOD0 POJADl PD2?AD2 P03?D3PO 4d?Dα PO?ME>?PP7J(AP7ILLPSEN AL£ £aP2QλAfiP2.1 P2.2?1O P2.3?11 P2 AfAl 2
Ul
IL J∏AL2
PoOD0 POJADl PD2?AD2 P03?D3
PO 4d?Dα PO?ME>?
PP7J(AP7
ILL
PSEN AL£ £a
P2QλAfi
P2.1 P2.2?1O P2.3?11 P2 AfAl 2
P2≡5Wj∣3
P2 EW4 P27ΛA15
PaeWRXD
P3j∣∏?>
F3 2?∏Γ
P33jSfΓ
F3JσD
P3.?ff1
P?-6i^F P3.7i^"
ATfiSLti
Γ≡-
■92 ■23 ≡2q
■^6
■”
■ J?
■
4
图1
当矩阵键盘的A号键被按下时,P2 口的七段数码管显示的数据为 A.如下图2所 以:
LHj^l≡ >XTΛL1d XTAURSTP(IgDO RCHgDIPC2?D2P(I 那&
LH
j^l≡ >XTΛL1
d XTAU
RST
P(IgDO RCHgDI
PC2?D2
P(I 那&3 P(I ^.'ΛEM M5?D5
PoEJ?D6
P<∣T?O7
R2D?β
P2 1X4?
P2.2^10
R2.MA11
R2.4M12 P24M13
P2W14
P2.7AA15
P3 JOfiXD
P3.1ΠXD
P32ΛNTΓ
P3 3J∣NT1
P3.^m∣
P3.5/T1
P3.&^ P37fRCΓ
ATBgCSl
*T?!√t:- I
图2
当矩阵键盘的D号键被按下时,P2 口的七段数码管显示的数据为 d.如下图3所 以:
Ul丄 KT?2RSTRIWADD PQ.1MD1 FCl.2Jl?D2 PO紳茁 PO.4JA[MR15?D5 FHG.?DEPaHADT:1?X?P5EN ALE EAPl O Pl Ii P12Pi 3
Ul
丄 KT?2
RST
RIWADD PQ.1MD1 FCl.2Jl?D2 PO紳茁 PO.4JA[M
R15?D5 FHG.?DE
PaHADT
:1?X?
P5EN ALE EA
Pl O Pl Ii P12
Pi 3
ATE9C51
F12.D?B
P2.VA9
P2^,A11
P24ft12
P2.5?13
P2£/A14
P?7W?
F3.0/RXO P31Π?D
P3.2?jT0^
P3.3ifrfΓ
P3.4∏0
^3?T1
R3 6AW
P3.7M-
图3
当矩阵键盘的F号键被按下时,P2 口的七段数码管显示的数据为 F.如下图4所 以:
」1
Ia- ?r?ι
d XT?2
-3-l RST
迅
11—
PS&F
ALE EA
RQ QjAPq Pl I:Aril P0.2ΛAD2 P0.3AAD3 RO.?λ?M PO.5JAD5
PeI.6M[? P07AAD7
F30W8
P2.1^ P2.2W10 P2.-3?11 F2.H?13 P2.5ΓA13 F2.?,AH F27?15
兰?t?t
P3,Ofl?Hβ PSJfTXD P3.2?jfθ~ P3.3fr∏T
P3.?TD
Kill
P3師F
P?7颌
推荐访问:实验报告 矩阵 单片机 电路设计 单片机与矩阵键盘接口电路设计实验报告