单片机-矩阵键盘实验-实验报告.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
实验五 矩阵键盘实验 一、实验内容 1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来 。按其它键退出。 2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能 。可定义"A"键为"+"键,"B"键为"="键。 二、实验目的 1. 学习独立式按键的查询识别方法。 2、 非编码矩阵键盘的行反转法识别方法。 三、实验说明 1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入"1"。 2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。 3、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为 低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下 ,否则扫描下一行,直到扫完所有行。 行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接 到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电 平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对 两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才 读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在 行线上的值必定为0。这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线 值。 由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识 别最为简便。 行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作 为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值 应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读 出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四 位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键 是"4",则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个 键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被 按下了。 四、接线方法 键盘连接成4×4的矩阵形式,占用单片机P1口的8根线,行信号是P1.0- 1.3,列信号是P1.4-1.7。 五、实验电路 参考学习板说明书P14。 六、参考程序 "程序一: " " " "/***********************************************************" "**** " "功能:4*4矩阵键盘,LED显示所按的键 " "作者:txl " "时间:2009-04 " "版本:V1.0 " "************************************************************" "***/ " "#include<reg52.h> " "#define uint unsigned int " "#define uchar unsigned char " " " "sbit wei1=P2^0; " " " " " "uchar code table[]={0xC0,0xF9,0xA4,0xB0, " "0x99,0x92,0x82,0xF8, " "0x80,0x90,0x88,0x83, " "0xC6,0xA1,0x86,0x8E};//共阳数码管码表 " "//全局变量 " "uchar num,temp,num1; " "//函数声明 " "void delay(uint z); " "uchar keyscan(); " "void display(uchar aa); " " " "void main() " "{ " "num=1; " "wei1=0; " "P0=0xC0; " " " " " "while(1) " "{ " " " "display(keyscan()); " "} " "} " " " " " "void display(uchar aa) " "{ " "P0=table[aa-1]; " "} " " " " " " " "uchar keyscan() " "{ " "P1=0xfe; " "temp=P1; " "temp=temp&0xf0; " "while(temp!=0xf0) " "{ " "delay(5); " "temp=P1; " "temp=temp&0xf0; " "while(temp!=0xf0) " "{ " "temp=P1; " "switch(temp) " "{ " 【单片机矩阵键盘实验详解】 实验五的焦点在于理解和应用矩阵键盘以及单片机的交互,特别是MCS51系列单片机。这个实验旨在让学习者掌握独立式按键的查询识别方法以及非编码矩阵键盘的行反转法识别方法。 1. **实验内容** - 实验要求编写程序,使得当按下0到F的数字键时,对应的代码通过发光二极管显示出来。按下其他键则退出。 - 进一步设计一个加法计算器,利用12个按键实现一位整数的加法运算。这里规定"A"键代表"+","B"键代表"="。 2. **实验目的** - 学习如何通过查询方法识别独立式按键。 - 掌握非编码矩阵键盘的行反转法识别技术。 3. **实验说明** - 在MCS51系列单片机中,P0到P3口用作输入口时,需预先向端口写入"1"。 - 查询按键时,需加入约10到20毫秒的软件延时来消除按键抖动。 - 行扫描法和行反转法是识别按键闭合的常用方法。行反转法更适用于51单片机,因为它可以动态改变端口的输入输出模式。 4. **行反转法详解** - 开始时,4条行线设为输出并置0,4条列线设为输入并置1,即向P1口写入0xF0。 - 如果无按键按下,读取P1口值应仍为0xF0。若有键按下,如1、4、7、0键中的一个,P1.6会被拉低,读取值为0xB0。 - 通过将读取值的低四位设为1(如0xBF)再写回P1口,可以确定具体按下的是哪个键。例如,如果按下的是"4",则P1.1会被拉低,读取值为0xBE。 - 每个键都有唯一的反转码,通过建立12键的反转码表,通过查表即可确定按下的是哪个键。 5. **接线方法** - 键盘以4x4矩阵形式连接,占用P1口的8条线,行信号由P1.0到P1.3表示,列信号由P1.4到P1.7表示。 6. **实验电路** - 实验电路细节参照学习板说明书的第14页。 7. **参考程序** - 提供的程序示例是一个4x4矩阵键盘的LED显示程序,用于显示按下的键。程序中定义了数码管的显示代码表,并包含了按键扫描、延迟函数以及显示函数的声明和实现。 通过这个实验,学习者将深化对单片机硬件接口、输入/输出控制、键盘扫描及抖动处理的理解,同时也锻炼了实际编程解决问题的能力。
- 粉丝: 192
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页