查询式键盘与阵列式键盘的实验Word格式.docx
《查询式键盘与阵列式键盘的实验Word格式.docx》由会员分享,可在线阅读,更多相关《查询式键盘与阵列式键盘的实验Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
二、实验步骤及内容
1、用一根扁平数据线连接查询式键盘实验模块与八位逻辑电平显示模块,无键按下时,键盘输出全为“1”发光二极管全部熄灭,有键按下,对应发光二极管点亮。
此种电路的程序要判断是否有2个或2个以上的键盘同时按下,以免键盘分析错误。
阵列式键盘的编程同样也有这样的问题要注意。
2、一根八位数据线连接查询式键盘实验模块与扫描显示实验模块。
无键按下时,LED数码显示八段全部熄灭,有键按下时,则对应LED段点亮。
3、使用静态串行显示模块显示键值。
单片机最小应用系统1的P1口接查询式键盘输出口,RXD接静态数码显示DIN,TXD接CLK。
4、安装好伟福仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。
5、启动计算机,打开伟福仿真软件,进入仿真环境。
选择仿真器型号、仿真头型号、CPU类型;
选择通信端口,测试串行口。
6、打开查询KEY.ASM源程序,编译无误后运行程序,在键盘上按下某个键,观察数显是否与按键值一致,键值从左至右为0~7。
7、可把源程序编译成可执行文件,烧录到89C51芯片中。
三、流程图及源程序
1、流程图
图1-2
2、源程序
ORG0000H
DBUFEQU30H
TEMPEQU40H
MOV30H,#16
MAIN:
ACALLDISP
ACALLKEY0
AJMPMAIN
KEY:
MOVP1,#0FFH;
输入前,锁存器置“1”
MOVA,P1;
读取键盘状况
CJNEA,#0FFH,K00;
有键按下
AJMPKEY;
无键按下
K00:
ACALLDELAY;
延时去抖动
MOVA,P1
CJNEA,#0FFH,K01;
确有键按下
AJMPKEY
K01:
MOVR3,#8;
8个键
MOVR2,#0;
键码
MOVB,A;
暂存键值
MOVDPTR,#K0TAB
K02:
MOVA,R2
MOVCA,@A+DPTR;
从键值表中取键值
CJNEA,B,K04;
键值比较
K03:
相等
CJNEA#0FFH,K03;
等键释放
MOVA,R2;
得键码
RET
K04:
INCR2;
不相等,到继续访问键值表
DJNZR3,K02
MOVA,#0FFH;
键值不在键值中,即多键同时按下
K0TAB:
DB0FEH,0FDH,0FBH,0F7H;
键值表
DB0EFH,0DFH,0BFH,07FH
DISP:
MOVDBUF,A
MOVDBUF+1,#16
MOVDBUF+2,#16
MOVDBUF+3,#16
MOVDBUF+4,#16
MOVR0,#DBUF
MOVR1,#TEMP
MOVR2,#5
DP10:
MOVDPTR,#SEGTAB
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR2,DP10
MOVR0,#TEMP
MOVR1,#5
DP12:
MOVR2,#8
MOVA,@R0
DP13:
RLCA
MOV0B0H,C
CLR0B1H
SETB0B1H
DJNZR2,DP13
INCR0
DJNZR1,DP12
RET
SEGTAB:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH,77H,7CH
DB58H,5EH,79H,71H,00H,40H
DELAY:
MOVR4,#02H
AA1:
MOVR5,#0F8H
AA:
DJNZR5,AA
DJNZR4,AA1
END
四、原理图
图1-3
阵列式键盘实验
2、掌握阵列式键盘的硬件组成和软件编程方法
1、用一根扁平10线插头连接阵列式键盘实验模块与LED与单片机接口模块。
无键按下或有键按下,发光二极管全亮。
若将A1-A4接地,则发光二极管显示0000XXXX;
B1线上有键按下,则发光二极管显示0000XXX,B2线上有键按下,则发光二极管现世0000X0XX,B1和B2均有键按下,则发光二极管显示000000XX……同样可将B1与B4接地,按键与发光二极管显示情况,用户可以自行判断,自由操作。
2、用一根扁平10线插头连接阵列式键盘实验模块与扫描显示实验模块。
无键按下或有键按下,八段LED全亮。
用户参照1,观察键盘与八段LED亮熄的关系。
单片机最小应用系统1的P1口接阵列式键盘的A1~B4口,单片机最小应用系统1的RXD接串行静态数码显示DIN,TXD接CLK。
6、打开阵列KEY.ASM源程序,编译无误后运行程序,在键盘上按下某个键,观察数显是否与按键值一致。
16位建盘的键值从左至右、从上至下依次为0~F(16进制数)。
三、流程图及源程序
2、源程序
DBUFEQU30H
TEMPEQU40H
MOVA,#16
MOV30H,A
ACALLKEY1
KEY1:
MOVP1,#0FH;
A1-A4输出,B1-B4输入,输
;
入者对应锁存先写“1”
MOVA,P1;
CJNEA,#0FH,K11;
K10:
AJMPKEY1;
K11:
去抖动
MOVP1,#0FH
再读键盘状况
CJNEA,#0FH,K12;
确有键盘按下
SJMPK10;
误动作
K12:
MOVB,A;
存列值
MOVP1,#0EFH;
按键在Ai行
MOVA,P1
CJNEA,#0EFH,K13;
键在A4
MOVP1,#0DFH
CJNEA,#0DFH,K13;
键在A3行
MOVP1,#0BFH
MOVA,P1
CJNEA,#0BFH,K13;
键在A2行
MOVP1,#7FH
CJNEA,#7FH,K13;
键在A1行
AJMPK10;
多键同时按下
K13:
ANLA,#0F0H;
的行值
ORLA,B;
的按下键的行列值
MOVB,A;
MOVR1,#16;
16个键
MOVR2,#0;
键码初值
MOVDPTR,#K1TAB;
键码表首址
K14:
MOVA,R2
MOVCA,@A+DPTR;
CJNEA,B,K16;
与按下键,键值比较
MOVP1,#0FH;
相等,则完成以下步骤
K15:
CJNEA,#0FH,K15;
等释放
MOVA,R2;
K16:
不相等,则继续访问键值表
DJNZR1,K14
多键同时按下处理
K1TAB:
DB0EEH,0DEH,0BEH,07EH;
DB0EDH,0DDH,0BDH,07DH
DB0EBH,0DBH,0BBH,07BH
DB0E7H,0D7H,0B7H,077H
MOVDBUF+1,#16
MOVR0,#DBUF
MOVR1,#TEMP
INCR1
DJNZR1,DP12
段码表
DB3FH,06H,5BH,4FH,66H,6DH;
“0,1,2,3,4,5”
DB7DH,07H,7FH,6FH,77H,7CH;
“6,7,8,9,A,b”
DB58H,5EH,79H,71H,00H,40H;
“C,d,E,F,,-”
NOP
图2-3
参考文献:
夏继强.单片机实验与实践教程.北京:
北京航空航天大学出版社,2001
李广第.单片机基础.第1版.北京:
北京航空航天大学出版社,1999
赵晓安.MCS-51单片机原理及应用.天津:
天津大学出版社,2001.3