矩阵键盘值显示实验.doc_第1页
矩阵键盘值显示实验.doc_第2页
矩阵键盘值显示实验.doc_第3页
矩阵键盘值显示实验.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机与信息技术学院综合性(设计性)实验报告专业:通信工程 年级/班级: 08级 20102011学年第一学期课程名称单片机原理及接口技术指导教师祝天龙本组成员学号姓名杜芳芳 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 0030HMAIN: MOV P2,#0F0H ;给列送高电平 LCALL Delay ;延时,使电路稳定 MOV A,P2 ;取P2口的值 ANL A,#0F0H ;屏蔽行线的影响 CJNE A,#0F0H,l ;如果有键按下,就跳转到l AJMP MAINl: 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 Q1l2: JB ACC.6,l3 MOV R3,#02H AJMP Q1l3: JB ACC.7,MAIN MOV R3,#03H AJMP Q1Q1: 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 JIAQ3: JB ACC.2,Q4 MOV R4,#08H AJMP JIAQ4: JB ACC.3, MAIN MOV R4,#0CH AJMP JIAJIA: MOV A,R3 ;行号加上列号就是该键的值 ADD A,R4 DA A ;十六进制调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论