资源描述:
《硬件实验十七键盘显示实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、硬件实验十七键盘扫描显示实验一、实验要求在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。实验程序可分成三个模块。①键输入模块:扫描键盘、读取-•次键盘并将键值存入键值缓冲单元。②显示模块:将显示单元的内容在显示器上动态显示。③主程序:调用键输入模块和显示模块。二、实验目的1、掌握键盘和显示器的接口方法和编程方法。2、掌握键盘扫描和LED八段码显示器的工作原理。三、实验电路及连线这里只是键盘草图,详细原理参见图1连线连接孔1连接孔21KEY/LEDCSCS0读回行码丄1列码(0X001H)(0X0
2、02H)四、实验说明木实验仪提供Z—个6X4的小键盘,向列扫描码地址(0X002H)逐列输出低电•〒,然后从行码地址(0X001H)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为髙。这样就可以通过输出的列码和读取的行码来判断按不的是什么键。在判断有键按下后,要有一定的延时,防止键盘抖动。地址中的X是由KEY/LEPCS决定,参见地址译码。做键盘和LEP实验时,需将KHY/LEP接到相砬的地址译码上。以便用相应的地址来访问。例如将KEY/LEPCS信号接6?S6>上,则列扫描地址为行码地址为列扫描码还可以分时用作LED的位选通信号。五、实验框图读键输
3、入子程序框图程序:ORG0000HUMPMAINORG0030HMAIN:MOVSP,#60HKEYLACALLKS1JNZLK1Nl:ACALLDIRAJMPKEYILK1:ACALLDIRACALLDIRACALLKS1JNZLK2ACALLDIRAJMPKEYILK2:MOVR2,#OFEHMOVR4,#00HLK4:MOVDPTR,#08002HMOVA,R2MOVX@DPTR,AMOVDPTR,#08001HMOVXA,@DPTRJBACC.O,LONEMOVA,#OOHAJMPLKPLONEJBACC.1,LTWOMOVA,#06HAJMPLKPLTWO:JBACC
4、.2,LTHRMOVA,#OCHAJMPLKPLTHRJBACC.3,NEXTMOVA,#12HLKP:ADDA,R4PUSHALK3:ACALLDIRACALLDIRACALLKS1JNZLK3POPAMOVB,#OAHDIVABMOV5AH,AMOVA,BMOV59H,ARETNEXT:INCR4;第一条指令入口地址;调用判定有无键闭合子程序KS1;有键闭合,跳转至LK1;无键闭合,调用显示子程校,延迟6毫秒,跳转至KEYI;可能有键闭合,延迟12毫秒,软件去抖动9;调用判定有无闭合子程序;经去抖动,判定键确实闭合,跳转至LK2去处理;调用显示子程序延迟6毫秒;是抖动引起,
5、跳转至KEYI;定义R2列选码;定义R4列号计数器;列选码入口地址;送入列选码;行码地址;读行码;0行线为高电平,无键闭合,跳转,转判1行;0行首建号;跳转,计算键号;1行线为高电平,无键闭合,跳转,转判2行;1行首建号;跳转,计算键号;2行线为高电平,无键闭合,跳转,转判3行;2行首建号;跳转,计算键号行线为高电平,无键闭合,跳转;3行首建号;计算建号,即行首建号加列号;键号进栈保护;调用显示子程序延迟6毫秒;调用判定有无键闭合子程序6毫秒;判定键是否释放,未释放,则循环;键已释放,建号山栈;赋值;除法运算;罝缓冲器指针初值;返回;列计数器加1MOVA,R2JNBACC.5Z
6、KNDRLAMOVR2,AAJMPLK4KND:AJMPKEYIKS1:MOVDPTR,#08002HMOVA,#OOHMOVX@DPTR,AMOVDPTR,#08001HMOVXA,@DPTRCPLAANLA,#OFHRETDIR:MOVR0,#59HMOVR3,#O1HMOVAZR3LDO:MOVDPTR,#08002HMOVX@DPTR,AMOVDPTR,#08004HMOVA,@ROADDA,#ODHMOVCA、@A+PCDIR1:MOVX@DPTR,AACALLFYlmsINCROMOVA,R3JBAcc.l,LOOP到最右边,则返冋RLAMOVR3,AAJMPLDO
7、LOOP:RET;判定是否已扫到最后一列;若扫到S后一列,跳转,重新键盘扫描;未扫到最后一列,位选码左移一位;判定有无键闭合子程序;列线全0;行线;读取状态;行状态取反,无键按下,A中内容为0;屏蔽无用的高四位;返回;把位选码的初值送R3;(A)=01H;置位选码的地址(DPTR)=8002H;((DPTR))=O1H向片外数据存储器写内容;置段码的地址(DPTR)=8004H;读取第一个数据;加偏移量(下条指令到表首间所有指令占得单元数);根据显示数据来查表収段码;数据对应的段码送到段码地