单片机与矩阵键盘接口电路设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机与矩阵键盘接口电路设计实验报告

姓名:林蔼龄

学号:1060601007

班级:10级物理系电子信息工程A班

单片机与矩阵键盘接口电路设计实验报告

一:实验内容

使用单片机的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

P3S J⅛13R2.6M14

P2.7J⅛15

曲JMFD P31JTXD

P3.2flNτf P3.3⅛JτΓ

P34JTO P3¾Π,1

P3占晅PST丽:程序流程图

r

F-SEH

⅛E EA

四:程序

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

相关文档
最新文档