矩阵键盘值显示实验.doc

上传人:hw****26 文档编号:3117542 上传时间:2019-05-22 格式:DOC 页数:5 大小:171.50KB
下载 相关 举报
矩阵键盘值显示实验.doc_第1页
第1页 / 共5页
矩阵键盘值显示实验.doc_第2页
第2页 / 共5页
矩阵键盘值显示实验.doc_第3页
第3页 / 共5页
矩阵键盘值显示实验.doc_第4页
第4页 / 共5页
矩阵键盘值显示实验.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、河南师范大学计算机与信息技术学院计算机与信息技术学院综合性(设计性)实验报告专业:通信工程 年级/班级: 08 级 20102011 学年第一学期课程名称 单片机原理及接口技术 指导教师 祝天龙本组成员学号姓名 杜芳芳 0808224023实验地点 计科楼 111 实验时间 2010 年 11 月 6 日8:00-11:50项目名称 矩阵键盘值显示实验 实验类型 综合性一、实验目的1理解键盘扫描和去抖动的原理;2掌握键盘扫描实现方法;3设计一个矩阵键盘,编程实现按下某按键,数码管显示相应键值的功能。二、实验仪器或设备装 WAVE 软件、Proteus 软件的微机一台三、总体设计(设计原理、设计

2、方案及流程等)(一) 设计原理:在行列矩阵式非编码键盘的单片机系统中,键盘处理程序首先执行行有无键按下的程序段,当确认有键按下后,下一步就要识别哪一个按键被按下。对键的识别用逐行(或列)扫描查询法。在进行行扫描时,首先判别键盘中有无键按下,由单片机 I/O口向键盘输出全扫描字,然后读入列线状态来判断。方法是:向行线输出全扫描字 00H,把全部行线置为低电平,然后将列线的电平状态读入累加器 A 中。如果有键按下,总会有一根列线电平被拉至低电平,从而使列输入不全为 1。判断键盘中哪一个键被按下是通过将行线逐行置低电平后,检查列输入状体来实现的。方法是:依次给行线送低电平,然后查所有列线状态,称行扫

3、描。如果全为 1,则所按下的键不在此行;如果不全为 1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个按键。在扫描过程中,当发现某行有键按下,也就是输入的列线中有一位为 0,便可以闭合按键所在的位置。根据行线和列线的位置就可以知道是哪一个键按下。按键的位置码并不等于按键实际定义的键值,因此还需要进行转换。这可以借助查表法来完成。然后根据按键的编号来执行相应的功能的子程序,来完成按键键帽上所定义的实际按键功能。程序在行扫描时,先将行计数器、列计数器置 0,然后再设置行扫描初值 FEH。程序流程图中 FEH 的低 4 位 EH 是行扫描码,高 4位 FH 是将 P2.4-P2.7 高

4、 4 位置 1 为输入方式,在输入扫描字后,立即读出列值,检测是否有列值为低电平。若无键按下,则将行计数器加 1,并将行扫描字左移一位,变为 FDH。这样使第一行为低电平,其它为高电平;然后依次逐行扫描,直到行计数器的值大于或等于4 时,表明一次行扫描结束。河南师范大学计算机与信息技术学院在此过程中若检测到某一列为低电平,则将列值保存;然后再进行行列值判别,得到列的位置,存入列计数器转入键位置码的译码程序。上述行扫描过程结束后得到的行号存放在 R0中,列号存放在 R2 中。(二)设计方案及流程图1依次给行线送低电平,然后查所有列线状态,称行扫描。如果全为 1,则所按下的键不在此行;如果不全为

5、1,则所按下的键必在此行,而且是在与零电平列线相交的交点上的那个按键。在扫描过程中,当发现某行有键按下,也就是输入的列线中有一位为 0,便可以闭合按键所在的位置。根据行线 图 1:矩阵键盘接口图和列线的位置就可以知道是哪 一个键按下。2根据按下的键可以得到相应的键值,键值的获得通常采用计数译码法。键盘的原理图如下,可以根据矩阵键盘的特点得到:键值=行首键号+列号3列出共阴/阳极 7 段LED 显示字型编码表4将所得到的键值,借助查表的方法得到其相应的LED 显示,将 16 进制转换成10 进制显示。5按照要求在伟福中编译程序并运行6将程序烤入 89C51 中,运行即可图 2 流程图四、实验步骤

6、(包括主要步骤、代码分析等)(一)主要步骤1打开 WAVE6000 集成调试软件2单击“文件”“新建文件” ,在文件中按照流程图写入程序,并给河南师范大学计算机与信息技术学院该程序的文件命名为“JUZHENJIANPAN.ASM ”3单击“项目”“编译”4打开 Proteus 软件,在 ISIS Professional 环境中按照电路原理图连接电路5双击 AT89C51 芯片,在 Program File 中添加 JUZHENJIANPAN 的.HEX 文件,单击 OK 即可6点下开始按钮,按下键盘的按键,在数码管上即显示出相应的数字(二)主要代码分析MOV P2,#0F0H ;给列送高电平

7、MOV A,P2 ;取 P2 口的值ANL A,#0F0H ;屏蔽行线的影响MOV P2,#0FH ;给行送高电平JB ACC.0,Q2 ;判断是不是第 0 行,不是则转MOV R4,#00H ;如果是,则将 0 送给 R4AJMP JIA ;调用加法程序,取得键盘的五、结果分析与总结通过此次实验,我了解了键盘扫描和去抖动的原理,掌握键盘扫描实现方法,并设计一个矩阵键盘,编程实现按下某按键,数码管显示相应键值的功能。六、附录(一)电路图(二)源程序ORG 0000HAJMP MAINORG 0030HMAIN: MOV P2,#0F0H ;给列送高电平LCALL Delay ;延时,使电路稳定

8、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 这一列有键按下?没有则跳转至 l1MOV R3,#00H ;如果有则将值 0 存入 R3AJMP Q1 ;跳到行判断程序l1: JB ACC.5,l2MOV R3,#01HAJMP Q1l2: JB ACC.6,l3MOV R3,#02HAJMP Q1l3: JB ACC.7,MAINMOV R3,#03HAJ

9、MP Q1Q1: MOV P2,#0FH ;给行送高电平LCALL Delay ;延时,稳定电路MOV A,P2 ;取值ANL A,#0FH ;屏蔽高四位JB ACC.0,Q2 ;判断是不是第 0 行,不是则转MOV R4,#00H ;如果是,则将 0 送给 R4AJMP JIA ;调用加法程序,取得键盘的值Q2: JB ACC.1,Q3MOV R4,#04HAJMP JIAQ3: JB ACC.2,Q4MOV R4,#08HAJMP JIAQ4: JB ACC.3, MAINMOV R4,#0CHAJMP JIAJIA: MOV A,R3 ;行号加上列号就是该键的值ADD A,R4DA A ;十六进制调整为十进制MOV P1,A ;调整后送给数码管显示(静态显示)AJMP MAINDelay: MOV R6,#20HQ6: MOV R5,#0BBHQ5: DJNZ R5,Q5DJNZ R6,Q6RETEND教师签名:河南师范大学计算机与信息技术学院年 月 日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。