资源描述:
《实验4矩阵键盘的使用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验4矩阵键盘的使用一、实验0的:莩握矩阵键盘的使用及键盘扫描程序的没计方法。二、实验设备:ZY15M⑶12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。三、实验原理及环境:实验箱上有一个16键的矩阵键盘,分为4彳j:X4列。4行分别连接到一片8255(与8段LK)显示器的段驱动和位驱动共用)的PCO〜PC3,4列分別连接到8255的PC4〜PC7。8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、400111、400211、400311。00H01H02H031104H05H06H
2、07H08H09H0AH0BH0CII0DII0EH0EII第4列(PC7)第3列(PC6)第2列(PC5)第1列(PC4)PC3PC2PC1PC0第4行笫3行第2行第1行00H01H02H03H列驱动阁4-1键盘布置及键位选择列驱动码使某一列为低电平而其它列为高电平,再读取行输入,若该列有键按下则相应的位便是低电平。每个键均安排一个键值,如图4-1所示。四、实验内容.•1.编写一个键盘扫描子程序(在主程序屮已对接口芯片8255做好必要的初始化)。这个程序对键盘作一次扫描,若无键按下,返回时累加器A中为FFH,若有键按下,返回时A中为该键键值
3、,键盘扫描了程序流程图如图4-2所示。A-#OFFHiI调用査键值子程序返回jf一、返回图4-2键盘扫描子程序流程图其屮,查键值子程序可以自行编写,也可以使用下面这个查键值子程序,这个了程序的参数如下:AU:行列关键值码放在累加器A中,高4位是列驱动码(被扫描列的对应位为0,其余位均为1),低4位是行状态(按下键的对应位为0,其余位均为1)。出口:键码放在A中带出。占用:Rl、A、PSW、DPTR。程序清单如下:;查键值子程序,起始地址为KEY20KEY20:PUSHACC;暂存关键值MOVR1,#OOII;杳键值Q变量清0KEY21:JNB
4、ACC.4,KEY22;计算列数RRAINCR1SJMPKRY21KEY22:MOVA,R1;按每列4个键计算MOVB,#4MULABMOVRl,APOPACC;恢复关键值KEY23:JNBACC.0,KEY24;计算行数RRAINCR1SJMPKEY23KRY24:MOVDPTR,ttKEYTAB;读取键值MOVA,R1MOVCA,@A+DPTRRETKEYTAB:DBOFH,OBH,07H,03HDBORH,OAH,06H,02HDBODH,09H,05H,01HDBOCH,OSH,04H,OOH1.键盘扫描子程序自身无法运行,为了运行这
5、个子程序,另编写以下程序:ORG0000HMOVSP,#6FHMOVRO,#5;延时0.5秒L00P1:MOVRl,#200L00P2:MOVR2,#250DJNZR2,$DJNZRl,L00P2DJNZRO,L00P1MOVDPTR,#4003H;8255初始化MOVA,#10000001B;A口、B口方式0输出,C口高4位输出,低4位输入MOVX@DPTR,AL00P3:LCALLDTSP;调用姑示子程序DIS,设姑示子程序入口为DISPLCALLKEY:调用键盘扫描子程序,设键盘扫描子程序入口为KEYCJNEA,#OFFH,L00P4;
6、如果有键按下转SJMPL00P3L00P4:MOV2011,2111MOV21H,22HMOV22H,23HMOV2311,24HMOV24H,25HMOV25H,ASJMPLOOP3其中显示子程序使用实验3中的显示子程序。程序运行后,每按-•键便从显示器的右端移入一个对应的数。五、实验步骤:1.将P0.0〜P0.7与JDO〜JD7连接起来。开关KC倒向上方。2.建立一个工程,将在预习屮做好的实验内容1和2的程序以及实验5屮的显示子程序拷贝到一个的*.asm文件加入。3.编译£;与单片机硬件连接,运行。4.按T键盘上的各键,相应的数字会出现在
7、LED显示器上。©按键挪-pVi$ion4□JrJJAl卜1*
8、产
9、淳漳//i/Ai
10、0廑由1<941@3多3■»--41X
11、1背
12、Target1-A蠱色1BialTarget1曰cSSourceGroui[?
13、STARTUP.E圍资as考j.chim#include02//--定义使用的10口--//W#defineGPIO_DIGPOos#defineGPIO_KEYPlG607//~定义全局变量一//unsignedcharcodeDIG_C0DEL17,{090x3f,0x06,0x5b,0x4f,0x66,0x6d
14、,0x7d,0x07,100x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};”//0:1、2、3、4、5、6、7、8、9、A、b、C