收藏 分销(赏)

矩阵键盘值显示实验.doc

上传人:s4****5z 文档编号:8728082 上传时间:2025-02-27 格式:DOC 页数:4 大小:171.50KB 下载积分:10 金币
下载 相关 举报
矩阵键盘值显示实验.doc_第1页
第1页 / 共4页
矩阵键盘值显示实验.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
计算机与信息技术学院综合性(设计性)实验报告 专业:通信工程 年级/班级: 08级 2010—2011学年第一学期 课程名称 单片机原理及接口技术 指导教师 祝天龙 本组成员 学号姓名 杜芳芳 0808224023 实验地点 计科楼111 实验时间 2010年11月6日 8:00-11:50 项目名称 矩阵键盘值显示实验 实验类型 综合性 一、 实验目的 1. 理解键盘扫描和去抖动的原理; 2. 掌握键盘扫描实现方法; 3. 设计一个矩阵键盘,编程实现按下某按键,数码管显示相应键值的功能。 二、 实验仪器或设备 装WAVE软件、Proteus软件的微机一台 三、 总体设计(设计原理、设计方案及流程等) (一) 设计原理: 在行列矩阵式非编码键盘的单片机系统中,键盘处理程序首先执行行有无键按下的程序段,当确认有键按下后,下一步就要识别哪一个按键被按下。对键的识别用逐行(或列)扫描查询法。 在进行行扫描时,首先判别键盘中有无键按下,由单片机I/O口向键盘输出全扫描字,然后读入列线状态来判断。方法是:向行线输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入累加器A中。如果有键按下,总会有一根列线电平被拉至低电平,从而使列输入不全为1。 判断键盘中哪一个键被按下是通过将行线逐行置低电平后,检查列输入状体来实现的。方法是:依次给行线送低电平,然后查所有列线状态,称行扫描。如果全为1,则所按下的键不在此行;如果不全为1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个按键。在扫描过程中,当发现某行有键按下,也就是输入的列线中有一位为0,便可以闭合按键所在的位置。根据行线和列线的位置就可以知道是哪一个键按下。 按键的位置码并不等于按键实际定义的键值,因此还需要进行转换。这可以借助查表法来完成。然后根据按键的编号来执行相应的功能的子程序,来完成按键键帽上所定义的实际按键功能。 程序在行扫描时,先将行计数器、列计数器置0,然后再设置行扫描初值FEH。程序流程图中FEH的低4位EH是行扫描码,高4位FH是将P2.4-P2.7高4位置1为输入方式,在输入扫描字后,立即读出列值,检测是否有列值为低电平。若无键按下,则将行计数器加1,并将行扫描字左移一位,变为FDH。这样使第一行为低电平,其它为高电平;然后依次逐行扫描,直到行计数器的值大于或等于4时,表明一次行扫描结束。 在此过程中若检测到某一列为低电平,则将列值保存;然后再进行行列值判别,得到列的位置,存入列计数器转入键位置码的译码程序。上述行扫描过程结束后得到的行号存放在R0中,列号存放在R2中。 (二)设计方案及流程图 1.依次给行线送低电平,然后查所有列线状态,称行扫描。如果全为1,则所按下的键不在此行;如果不全为1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个按键。在扫描过程中,当发现某行有键按下,也就是输入的列线中有一位为0,便可以闭合按键所在的位置。根据行线 图1:矩阵键盘接口图 和列线的位置就可以知道是哪 一个键按下。 2.根据按下的键可以得到相应的键值,键值的获得通常采用计数译码法。键盘的原理图如下,可以根据矩阵键盘的特点得到: 键值=行首键号+列号 3.列出共阴/阳极7段LED显示字型编码表 4.将所得到的键值,借助查表的方法得到其相应的LED显示,将16进制转换成10进制显示。 5.按照要求在伟福中编译程序并运行 6.将程序烤入89C51中,运行即可 图2 流程图 四、 实验步骤(包括主要步骤、代码分析等) (一)主要步骤 1.打开WAVE6000集成调试软件 2.单击“文件”——“新建文件”,在文件中按照流程图写入程序,并给该程序的文件命名为“JUZHENJIANPAN.ASM” 3.单击“项目”——“编译” 4.打开Proteus软件,在ISIS Professional环境中按照电路原理图连接电路 5.双击AT89C51芯片,在Program File中添加JUZHENJIANPAN的.HEX文件,单击OK即可 6.点下开始按钮,按下键盘的按键,在数码管上即显示出相应的数字 (二)主要代码分析 MOV P2,#0F0H ;给列送高电平 MOV A,P2 ;取P2口的值 ANL A,#0F0H ;屏蔽行线的影响 MOV P2,#0FH ;给行送高电平 JB ACC.0,Q2 ;判断是不是第0行,不是则转 MOV R4,#00H ;如果是,则将0送给R4 AJMP JIA ;调用加法程序,取得键盘的 五、 结果分析与总结 通过此次实验,我了解了键盘扫描和去抖动的原理,掌握键盘扫描实现方法,并设计一个矩阵键盘,编程实现按下某按键,数码管显示相应键值的功能。 六、附录 (一)电路图 (二)源程序 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV P2,#0F0H ;给列送高电平 LCALL Delay ;延时,使电路稳定 MOV A,P2 ;取P2口的值 ANL A,#0F0H ;屏蔽行线的影响 CJNE A,#0F0H,l ;如果有键按下,就跳转到l AJMP MAIN l: LCALL Delay ;延时去抖 MOV A,P2 ;重新取值 JB ACC.4,l1 ;P2.4这一列有键按下?没有则跳转至l1 MOV R3,#00H ;如果有则将值0存入R3 AJMP Q1 ;跳到行判断程序 l1: JB ACC.5,l2 MOV R3,#01H AJMP Q1 l2: JB ACC.6,l3 MOV R3,#02H AJMP Q1 l3: JB ACC.7,MAIN MOV R3,#03H AJMP Q1 Q1: MOV P2,#0FH ;给行送高电平 LCALL Delay ;延时,稳定电路 MOV A,P2 ;取值 ANL A,#0FH ;屏蔽高四位 JB ACC.0,Q2 ;判断是不是第0行,不是则转 MOV R4,#00H ;如果是,则将0送给R4 AJMP JIA ;调用加法程序,取得键盘的值 Q2: JB ACC.1,Q3 MOV R4,#04H AJMP JIA Q3: JB ACC.2,Q4 MOV R4,#08H AJMP JIA Q4: JB ACC.3, MAIN MOV R4,#0CH AJMP JIA JIA: MOV A,R3 ;行号加上列号就是该键的值 ADD A,R4 DA A ;十六进制调整为十进制 MOV P1,A ;调整后送给数码管显示(静态显示) AJMP MAIN Delay: MOV R6,#20H Q6: MOV R5,#0BBH Q5: DJNZ R5,Q5 DJNZ R6,Q6 RET END 教师签名: 年 月 日 河南师范大学计算机与信息技术学院
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 社会民生

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服