键盘模块控制实验原理及分析报告Word文档下载推荐.docx
《键盘模块控制实验原理及分析报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《键盘模块控制实验原理及分析报告Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
实验器材:
1、超想-3000TC综合实验仪1台
2、KEIL仿真器1台
3、计算机1台
二、实验原理
实验程序可分成三个模块:
1、键输入模块:
扫描键盘、读取一次键盘并将键值存入键值缓冲单元。
2、显示模块:
将显示单元的内容在显示器上动态显示。
3、主程序:
调用键输入模块和显示模块。
细分为:
1、实验仪提供了8段码数码管LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,采用动态方式显示。
8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。
6位位码由8155的PA0口输出,经uA2003反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。
写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为0e101H。
本实验涉及到了8155I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。
2、七段数码管的字型代码表如下表:
显示字形
g
f
e
d
c
b
a
段码
1
3fh
06h
2
5bh
a
fb
g
ec
d
。
dp
3
4fh
4
66h
5
6dh
6
7dh
7
07h
8
7fh
9
6fh
A
77h
B
7ch
C
39h
D
5eh
E
79h
F
71h
3、本实验仪提供了一个6×
4的小键盘,向列扫描码地址(0e101H)逐列输出低电平,然后从行码地址(0e103H)读回,如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高.这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
在判断有键按下后,要有一定的延时,防止键盘抖动。
列扫描码还可以分时用作LED的位选通信号。
三、芯片的使用介绍及其在实验中的作用
1、8051端口草图
2、8051/8052单片机功能方框图
3、试验箱6×
4键盘和八段显示屏
试验箱6×
4键盘和八段显示屏实拍图
键盘草图
八端数码显示管草图
4、8155键显模块原理图
四、实验流程图
1、八段数码管显示程序框图
2、读键输入子程序框图
3、主程序框图
五、实验代码及分析
;
键盘扫描实验
OUTBITequ0e101h;
位控制口
CLK164equ0e102h;
段控制口(接164时钟位)
DAT164equ0e102h;
段控制口(接164数据位)
INequ0e103h;
键盘读入口
ORG0000H
LJMPSTAR
=====================================================================
KEY1:
MOV13H,#06H
MOV12H,#20H
KEY2:
MOVA,12H
CPLA
MOVR7,A
MOVDPTR,#0E101H
MOVA,R7
MOVX@DPTR,A
CLRC
RRCA
MOV12H,A
MOVDPTR,#0E103H
MOVXA,@DPTR
ANLA,#0FH
MOV14H,A
DEC13H
MOVR7,13H
JZKEYDIS
MOVA,14H
JZKEY2
KEYDIS:
JZTESTKEY5
MOVA,13H
ADDA,ACC
MOV13H,A
JNBACC.1,TESTKEY
INC13H
SJMPTESTKEY2
=================================================
键盘扫描
TESTKEY:
JNBACC.2,TESTKEY1
TESTKEY1:
JNBACC.3,TESTKEY2
MOVA,#03H
ADDA,13H
TESTKEY2:
CLRA
TESTKEY3:
MOVR7,#0AH
LCALLMLOOP
LCALLMLOOP4
JNZTESTKEY3
MOVDPTR,#0134H
MOVCA,@A+DPTR
RET
TESTKEY4:
DB22H;
"
TESTKEY5:
MOVR7,#0FFH
GETKEY:
MOV10H,#20H
MOV0EH,#00H
GETKEY1:
MOVA,0EH
SUBBA,#06H
JNCGOON2
MOVR7,0EH
MOVA,#08H
ADDA,R7
MOVR0,A
MOVA,@R0
MOV11H,R7
MOV0FH,#00H
GETKEY2:
MOVA,0FH
SUBBA,#08H
JNCGOON1
MOVA,11H
JNBACC.7,KLOOP
MOVDPTR,#0E102H
MOVA,#01H
SJMPKLOOP1
==========================================
KLOOP:
KLOOP1:
ORLA,#02H
ANLA,#0FDH
MOV11H,A
INC0FH
SJMPGETKEY2
GOON1:
MOVA,10H
MOVR7,#01H
MOV10H,A
INC0EH
SJMPGETKEY1
GOON2:
WAIT:
MOVDPTR,#0E100H
MOV08H,#0FFH
MOV09H,#0FFH
MOV0AH,#0FFH
MOV0BH,#0FFH
MOV0CH,#00H
MOV0DH,#00H
WAIT1:
LCALLGETKEY
JZWAIT1
LCALLKEY1
MOVR6,#00H
MOVA,#24H
MOVDPL,A
ADDCA,R6
MOVDPH,A
MOV0DH,R7
SJMPWAIT1
TAB:
Q0124:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;
?
.[Ofm}.
Q012C:
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;
ow|9^yq
Q0134:
DB00H,01H,04H,07H,0FH,02H,05H,08H;
........
Q013C:
DB0EH,03H,06H,09H,0DH,0CH,0BH,0AH;
Q0144:
DB10H,11H,12H,13H,14H,15H,16H;
.......
MLOOP:
MOV15H,R7
MLOOP1:
MOVR7,15H
DEC15H
JZMLOOP3
MOV16H,#64H
MLOOP2:
MOVA,16H
JZMLOOP1
DEC16H
SJMPMLOOP2
SJMPMLOOP1
MLOOP3:
MLOOP4:
STAR:
MOVR0,#7FH
STAR1:
MOV@R0,A
DJNZR0,STAR1
MOVSP,#16H
LJMPWAIT
END
==============================================================
6、实验现象的分析说明
将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。
进入KEIL软件界面,点击项目/打开项目,在C:
\KEIL\UV2\3000TC51配套实验例程中选择实验二“键盘扫描实验”,内有ASM和C51两种程序,进入ASM文件夹打开LED项目文件。
点击“调试/启动/停止调试”,进入调试界面,点击“调试/运行”,运行无误后就可以在试验箱上操作了。
在试验箱的键盘上按下某个按键,可以看到在八端数码显示管上显示按键上相应的符号。
松开按键后,再按其他键,八端数码显示管上变为显示其他的符号。
当把程序中的防抖动子程序模块注释掉后,发现按下键盘后,八端数码显示管上显示的符号变得不稳定,这证明了防抖动程序的正确性和必要性。
7、实验感想
通过这次课程设计,我不仅加深了对MCS-51/52单片机原理与应用这门课程的理解,从开始的知识听说该课程的懵懂,到课程设计完成之后真正明白了该课程的实践与应用的联系,这些实验箱的强大之处,更加加深了我对该课程的兴趣。
在课程设计过程中,从第一步的八段数码显示管程序的原理,我遇到了很多问题,但是经过老师的讲解和后期学习的不断深入,开始逐渐瞥见单片机的趣味。
在随后老师的耐心指导和同学们的帮助之下我克服了一个又一个得困难,逐渐把整个键盘扫描的程序弄明白了。
在后来实验室里做过实验之后,我进一步理解了这个程序的原理。
总之,通过了这次课程设计,不仅加深了我对单片机这门课程的了解与应用,而且让我掌握了汇编语言的使用,更重要的是使我对该课程产生了更加浓厚的兴趣,这是一次让我收获颇丰的课程设计。