矩阵键盘(参考).doc_第1页
矩阵键盘(参考).doc_第2页
矩阵键盘(参考).doc_第3页
矩阵键盘(参考).doc_第4页
矩阵键盘(参考).doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

矩阵键盘的设计与应用一、实验目的:1、 了解矩阵式键盘的内部结构,掌握至少一种常用的按键识别方法。2、 掌握子程序结构和子程序设计的基本知识。二、实验内容:设计一个矩阵键盘的识别系统,在一个8段数码管上分别按16个键盘轮流显示0123456789ABCDE。三、实验要求:给定一个4*4的矩阵键盘,按下某一个按键在8段数码管上显示其对应的数值(0123456789ABCDE),完成对键盘的正确识别。ABCDE在数码管上无法表达,可以用其它代替,例如:B用8表示,D用0表示,E用H表示等。四、实验设备及实验耗材:计算机一台,WAVE6000软件模拟器,完成ISP下载的XLISP软件,XL1000单片机综合仿真试验仪一台(共阳接法的8段数码管,4*4矩阵键盘一个,89C51一片,9针对9针的串口线一条,USB电缆一条)五、实验基本原理与方法:预习教科书MCS-51单片机的I/O技术及子程序结构和子程序设计,查找相关资料掌握矩阵式键盘的内部结构和常用的按键识别方法,建议采用按键识别方法中最常用的“行扫描法”编写程序。确定矩阵键盘上何键被按下,采用“行扫描法”,又称逐行(或列)扫描查询法,是最常用的按键识别方法。判断有无键按下:将全部行线置低电平,然后检测列线的状态。只要由一列的电平为低,则表示键盘中有键按下。若所有列线为高电平,则无键按下。判断闭合键所在位置:确认有键按下后,依次将行线置为低电平(在置某根行线为低电平时,其它线为高电平)。在确定某根行线为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 下面给出一个具体的例子:矩阵按键部分JP50实验中单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位(P1.0-P1.3),键盘的行线接到P1的高4位(P1.4-P1.7)。P1.0-P1.3设置为输入线, P1.4-P1.7设置为输出线,行线和列线形成16个交叉点。1、检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。2、去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。3、若有键被按下,应识别出哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出:P1.7 1110P1.6 1101P1.5 1011P1.4 0111 在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或者查表法将闭合键的行值和列值转换为所定义的键值。4、为了保证键每闭合一次CPU仅作一次处理,必须去除键释放时的抖动。六、实验方案设计:1、 采用哪些I/O口完成通信,采用何种按键识别的方法。2、 说明该程序的功能,给程序加上注释。3、 硬件连接原理图。七、实验步骤:1. 弄清实验内容和实验要求。2. 学习相关理论知识,提出实验方案,画出程序流程图。 键盘扫描开始存入表头延时去抖延时去抖行扫描法完成键值识别延时去抖有键按下吗再次确认是否有键按下按键是否松开选中某数码管显示识别的键值结束NoYesNoNoYesYes软件流程图3. 编制程序,作相关的程序注释,便于查看和调试。程序:org 0000hajmp mainorg 0030hmain: mov dptr,#tab ;将表头放入DPTR lcall key ;调用键盘扫描程序 movc a,a+dptr ;查表后将键值送入ACC mov p0,a ;将Acc值送入P0口 CLR P2.1 ljmp main ;返回反复循环显示KEY: LCALL KS ;调用检测按键子程序 JNZ K1 ;有键按下继续 LCALL DELAY2 ;无键按调用延时去抖 AJMP KEY ;返回继续检测按键K1: LCALL DELAY2 LCALL DELAY2 ;有键按下延时去抖动 LCALL KS ;再调用检测按键程序 JNZ K2 ;确认有按下进行下一步 AJMP KEY ;无键按下返回继续检测K2: MOV R2,#0EFH ;将扫描值送入 R2暂存MOV R4,#00H ;将第一列值送入R4暂存K3: MOV P1,R2 ;将R2的值送入P1口L6: JB P1.0,L1 ;P1.0等于1跳转到L1 MOV A,#00H ;将第一行值送入ACC AJMP LK ;跳转到键值处理程序L1: JB P1.1,L2 ;P1.1等于1跳转到L2 MOV A,#04H ;将第二行的行值送入ACC AJMP LK ;跳转到键值理程序进行键值处理L2: JB P1.2,L3 ;P1.2等于1跳转到L3 MOV A,#08H ;将第三行的行值送入ACC AJMP LK ;跳转到键值处理程L3: JB P1.3,NEXT ;P1.3等于1跳转到NEXT处 MOV A,#0cH ;将第四行的行值送入ACCLK: ADD A,R4 ;行值与列值相加后的键值送入A PUSH ACC ;将A中的值送入堆栈暂存K4: LCALL DELAY2 ;调用延时去抖动程序 LCALL KS ;调用按键检测程序 JNZ K4 ;按键没有松开继续返回检测 POP ACC ;将堆栈的值送入ACC RETNEXT: INC R4 ;将列值加一 MOV A,R2 ;将R2的值送入A JNB ACC.7,KEY ;扫描完至KEY处进行下一扫描 RL A ;扫描未完将A中的值右移一位进行下一列的扫描 MOV R2,A ;将ACC的值送入R2暂存 AJMP K3 ;跳转到K3继续KS: MOV P1,#0FH ;将P1口高四位置0低四位值1 MOV A,P1 ;读P1口 XRL A,#0FH ;将A中的值与A中的值相异或 RET ;子程序返回DELAY2: ;40ms延时去抖动子程序 MOV R5,#08HL7: MOV R6,#0FAHL8: DJNZ R6,L8 DJNZ R5,L7 RETtab: db 28h,34h,28h,34h,0a9h,60h,20h,7ah,20h,21h,61h,74h,30h,62h,0a2h,7eh ;0h0hc9878654a321 轮流显示键盘因为无法表达*# 就用H表示,B用8表示End4. 编译和调试。伟福软件:a) 打开伟福WAVE V3.20软件,采用伟福默认的仿真器就可以了。文件新建文件,在弹出的窗口中输入实验程序,保存为“文件名.asm”文件,若窗口内的部分程序字体颜色发生改变,表示保存成功。b) 文件新建项目加入模块文件:打开刚才已经保存的文件“文件名.asm”加入包含文件:取消保存项目“文件名.PRJ”,在项目窗口里可以看到。c) 确保仿真器仿真器设置目标文件里“生成HEX文件”和“生成BIN文件”被勾选上。d) 项目编译,调试,编译成功后就会生成“文件名.HEX”文件。5. 软件调试成功后,完成硬件连接。接线方法: 1 将XL1000单片机综合仿真试验仪的串口连接到计算机的COM口,注意连接的是哪一个几号COM。 2 用一条8PIN数据排线,把矩阵按键部份的JP50,接到CPU部份的P1口JP44.3 接8位数码管的数据线。将数码管部份的数据口 JP5接到CPU部份的P0口JP51.4 接8位数码管的显示位线。将数码管部份的显示位口 JP8接到CPU部份的P2口JP52.数码管显示第二位p2.1。6. 将程序烧写到单片机上,试运行。若出现问题,修改程序,重新编译和调试,直至运行成功。ISP下载烧写程序:确保试验仪与计算机的串口和USB口都连接上后,打开软件XLISP,注意串口设置,计算机和试验仪采用的是哪个串口连接,不同的计算机可能会不同,有的是COM1,有的是COM3等,可以采用自动

温馨提示

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

评论

0/150

提交评论