您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 单片机实验五报告-单片机键盘实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合■设计⃞创新实验日期:2018.05.18实验成绩:实验五单片机键盘实验(一)实验目的1.掌握单片机键盘控制;2.掌握数码管显示控制。(二)设计要求1.行列扫描按键键值为0~F;2.按键只支持单键按下,不支持多键同时按下;3.要求用数码管显示按键值。(三)实验原理1.矩阵式键盘的设计按键数目较多的杨合常采用矩阵式(也称行列式)键盘。键盘由行线和列线组成,按键位于行、列的交叉点上,如下图所示,一个4×4的行列结构可构成一个16个按键的键盘,需要一个8位的并行I/O口。很明显,在按键数目较多的场合,矩阵式键盘要比独立式键盘节省较多的I/O口线。对下图所示的矩阵式键盘的查询扫描,一般包括以下4个步骤。(1)首先判别整个键盘有无按键按下方法为单片机驱动列线P0.0-P0.3输出全0,然后读行线P0.4-P0.7的状态,若全为1,则键盘上没有闭合键;若P0.4-P0.7,则有键按下。(2)去除键的抖动当判别出可能有键按下时,软件延时一段时间(10ms左右)再判别键盘的状态,若仍有键闭合,则认为键盘上有确定的键按下,否则是键抖动。(3)求出按下键的键号上图中的16个按键,键号依次为0,1,...15。各行的首键号分别为0,4,8,12,列号依次为0,1,2,3。行线通过上拉电阻接+5V,当无键按下时,行线为高电平,当有按键按下时,对应的行线与列线短接,行线的电平将由此行线相连的列线电平决定。如果把行线设置为单片机的输入口线,列线设置为单片机的输出口线,则按键号的识别过程是:先令0列线P0.0为低电平0,其余3根列线都为高电平,遂行检查行线状态。如果行线P0.4-P0.7都为高电平1,则P0.0这列上没有按键闭合,若P0.4-P0.7中有一行为低电平,则该行线与列线交叉的按键按下。如果P0.0这一列上没有按键闭合,接着再使P0.1为低电平,其余列线为高电平。用同样的方法检查P0.1这列上有无按键闭合,以此类推。这样采用逐列扫描(只有列为低),然后读入各行线的电平,即可求出设下键的键号N=行的首键号+列号。各行的首键号分别为0,4,8,12,列号依次为0,1,2,3。编程时设置1个列号计数器,初值为0,每扫描1列,列号计数器加1。(4)判闭合键是否松开如果松开则将键号送入相应的寄存器中保存,单片机根据按下键的键号,对该键的一次闭合仅作一次键功能处理。2.数码管显示键值上述的键盘扫面步骤结束后,键号存储在相应的寄存器中,要把键号显示出来,只须向P4.0口输出对应的段码、位码以及向P4.3和P5.4口输出相应信号,利用74HC595芯片控制八段数码管从而达到显示相应键号的效果。电路图如下所示:(四)实验设备硬件:PC机、USB数据传输线、STC单片机综合实验箱软件:兼容51单片机的Keiluvision5集成开发环境、STC-ISP单片机烧录软件(五)实验结果实验源代码如(七)所示,对代码进行编译,提示0错误0警告,生成hex文件将单片机试验箱和电脑通过USB数据线连接,打开STC-ISP检测串口点击点开程序文件,选择刚才生成的hex文件,点击下载程序(六)结果讨论与心得体会结果分析讨论:将程序烧录至单片机后,可观察数码管最高位显示0(初始值),其他位消隐。按下矩阵键盘的键,数码管显示相应的键号,从0-F都能完整显示,完成实验。心得体会:通过本次实验,我学会了如何使用矩阵键盘,掌握了矩阵键盘的扫描原理,理解了矩阵键盘的电路结构以及数码管的显示方式。希望通过自己多次尝试能在今后实验中熟练使用矩阵键盘并将其运用到其他方面。(七)附录:实验源代码P4DATA0C0HP5DATA0C8HP0M1DATA0x93;P0M0DATA0x94;P4M1DATA0xB3;P4M0DATA0xB4;P5M1DATA0xC9;P5M0DATA0xCA;P_HC595_SERBITP4.0;P_HC595_RCLKBITP5.4;P_HC595_SRCLKBITP4.3;KeyStateDATA70H;ORG0000HLJMPF_MainORG0100HF_Main:CLRAMOVP0M1,A;MOVP0M0,A;MOVP4M1,A;MOVP4M0,A;MOVP5M1,A;MOVP5M0,A;MOVpsw,#00H;MOV27H,#40H;MOVKeyState,#00H;F_Main_Loop:LCALLKEY2;LCALLF_delay_ms;LCALLF_DisplayScan;AJMPF_Main_Loop;KEY2:LCALLKS;JNZS1;LCALLF_delay_ms;AJMPQUIT;S1:LCALLF_delay_ms;LCALLKS;JNZS2;AJMPQUIT;S2:MOVR4,#0FEH;MOVR5,#00H;S3:MOVP0,R4;L0:JBP0.4,L1;MOVA,#00H;AJMPLK;L1:JBP0.5,L2;MOVA,#04H;AJMPLK;L2:JBP0.6,L3;MOVA,#08H;AJMPLK;L3:JBP0.7,NEXT;MOVA,#0CH;LK:ADDA,R5;PUSHACC;LJMPS4;NEXT:INCR5;MOVA,R4;JNBACC.3,S4;RLA;MOVR4,A;AJMPS3;S4:LCALLKS;JNZS4;POPACC;MOVKeyState,A;LJMPQUIT;KS:MOVP0,#0FH;MOVA,P0;XRLA,#0FH;RETQUIT:RETF_delay_ms:MOVR2,#25;D1:MOVR3,#200DJNZR3,$DJNZR2,D1RETF_Send_595:PUSH01H;MOVR1,#8;L_Send_595_Loop:RLCA;MOVP_HC595_SER,C;SETBP_HC595_SRCLK;CLRP_HC595_SRCLK;DJNZR1,L_Send_595_Loop;POP01H;RETF_DisplayScan:PUSHACC;MOVA,#080H;CPLA;LCALLF_Send_595;POPACC;MOVA,KeyState;MOVDPTR,#T_Display;MOVCA,@A+DPTR;LCALLF_Send_595;SETBP_HC595_RCLK;CLRP_HC595_RCLKLCALLF_delay_ms;RETT_Display:;DB;03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH,077H,07CH,039H,05EH,079H,071HDB000HT_COM:DB001H,002H,004H,008H,010H,020H,040H,080HEND
本文标题:单片机实验五报告-单片机键盘实验
链接地址:https://www.777doc.com/doc-5408957 .html