计算机与信息技术学院综合性(设计性)实验报告专业:通信工程年级/班级: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,然后再设置行扫描初值F