版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
矩阵键盘的应用项目十四1(1)了解矩阵键盘的结构和按键识别原理。23项目指南(2)掌握比较不相等转移指令CJNE的功能和用法。(3)掌握矩阵键盘与单片机的连接方法。4(4)掌握读写单片机引脚的锁存器问题。56项目指南(5)学会编写单片机识别矩阵键盘按键的程序。(6)巩固译码器控制数码管的知识。用Proteus软件仿真单片机识别矩阵键盘按键并显示对应数字的系统。(1)制作单片机识别矩阵键盘按键并显示对应数字的电路。(2)实践清单矩阵键盘是按键排列成矩形的键盘如图14-1所示,在生活中这种键盘很常见,如电话、计算器、微波炉等家用电器都使用矩阵键盘。本项目我们来学习在单片机系统中怎样使用矩阵键盘。知识链接图14-1矩阵键盘实例图14-2(a)为Proteus软件中4×4矩阵键盘元件,图14-2(b)为矩阵键盘的结构。从结构可以看出,矩阵键盘由多个按键排列成矩形,同一行按钮的一端都连接到一根线上,这根线称为行线,同一列按钮的一端都连接到一根线上,这根线称为列线。图14-2所示的4×4矩阵键盘有4根行线和4根列线,在图14-2(a)中行线被标识为A、B、C、D,列线被标识为1、2、3、4。知识链接一、矩阵键盘的结构及按键识别原理1.矩阵键盘的结构知识链接图14-2矩阵键盘的结构在前面的内容中我们已经学会了使用启动和停止按钮。按钮的接法是一端接低电平的地线,另一端接单片机的引脚。由于单片机引脚默认为高电平,因此按键不按时引脚保持高电平,按键按下时引脚与地线接通而变为低电平,单片机通过引脚电平变化就能识别按键是否按下。2.矩阵键盘按键识别原理知识链接观察矩阵键盘的结构可以知道,矩阵键盘上的按键按下就是把按键所在的行线和列线接通,否则该行线和列线为断开状态。如果使行线为高电平,列线为低电平,那么当有按键被按下时,该按键所在行线会变为低电平,只要能识别哪根行线变为低电平就能识别按键所在的行;反之,如果使列线为高电平,行线为低电平,那么当有按键被按下时,该按键所在列线会变为低电平,只要能识别哪根列线变为低电平就能识别按键所在的列;而单片机运行的速度很快,在一次按键中足以先后识别出行线和列线,从而判断这一次按的是哪一个键,这就是识别矩阵键盘中哪个按键被按下的基本原理。知识链接图14-3为矩阵键盘与单片机的连接,图中矩阵键盘的行线A~D连接到P1.0~P1.3,列线1~4连接到P1.4~P1.7。在Proteus软件中输入关键字“KEYPAD”就能找到矩阵键盘。为了连接方便对键盘进行了X镜像操作,也可以将矩阵键盘连接到其他I/O接口。图14-3矩阵键盘与单片机的连接二、矩阵键盘与单片机的连接知识链接假设键盘上有一个键被按下,根据前一节的内容,如果要识别是哪一个键被按下,可以先让行线为高电平,列线为低电平,从而根据引脚电平的变化来判断按下的键位于哪一行,然后让列线为高电平,行线为低电平,再根据引脚电平的变化就知道这一行中位于哪一列的键被按下了。设定行线和列线的电平状态所需的指令很简单,将特定的引脚设置为1或0即可,因此使用数据传送指令。例如,在图14-3的连接方式下,要使行线为高电平,列线为低电平,只需让单片机执行指令“MOVP1,#00001111B”。可以按照图14-3绘制电路,并将“MOVP1,#00001111B”写入单片机,开始仿真,观察P1的引脚状态,然后在软件中按下键盘上的某个键,如“1”键,然后观察P1的引脚状态,我们会发现不按键和按键时P1的引脚状态不同,不按“1”键时P1数值为00001111B,按下“1”键P1数值变为00001011B,如图14-4所示,若按下“5”键,P1数值变为00001101B,……。通过按不同的键可以总结出P1数值后4位中0的位置对应着当前按键所在行,00001110B代表按下了第一行的某个键,00001101B代表按下了第二行的某个键,00001011B代表按下了第三行的某个键,00000111B代表按下了第四行的某个键。知识链接知识链接图14-4按1键时P1数值知识链接通过判断P1的数值就能判断按键所在行,从而决定程序执行方向的指令是比较不相等转移指令。查阅附录“指令系统”可以看到如下表述:CJNEA,data,rel
;若(A)≠data,则PC←(PC)+3+rel
若(A)=data,则PC←(PC)+3
若(A)≥data,则CY=0;否则CY=1看注释我们知道,这条指令是根据A中存储的数值与一个数data是否相等来决定程序是否转移的,若两数不相等则根据rel转移,若两数相等则不转移顺序执行下一条指令,且可以根据这条指令执行完毕后CY的数值判断两数哪个大,CY是一个特殊位,将在下一项目详细说明。在上一小节所述矩阵键盘按键识别程序中,就可以根据P1引脚的数值是否为00001110来判断第一行的键是否有按下,但是P1属于direct,查阅附录“指令系统”可以看到比较不相等转移指令没有“CJNEdirect,data,rel”这样的类型,因此只能将P1的数值赋予A,然后进行比较。三、比较不相等转移指令知识链接综合前面的知识,矩阵键盘识别按键的程序编程思路应当为先设置行线高电平、列线低电平,根据P1数值判断出按下键位于哪一行,再设置列线高电平、行线低电平,根据P1数值判断出按下键位于哪一列,最终判断出按键位置。由于CJNE指令每次只能比较一个数值,因此需要逐次判断按键是否位于第一行、第二行……具体程序流程图如图14-5所示。四、按键识别程序流程图知识链接图14-5矩阵键盘按键识别程序流程图知识链接在程序流程图中,每一个判断框都使用CJNE指令判断矩阵键盘连接的I/O口,如P1是否等于某一个数值,从而来判断该事件是或否。例如,在图14-5的“有键按下?”这个判断框就通过判断P1是否等于00001111B来判断事件,如果P1等于00001111B,则说明没有键被按下。流程图的最后完成判断,如判断出“9”被按下,这里需要执行的程序与下一步的功能有关,即与判断出按键后需要做什么有关。例如,要在数码管显示按下的数字,则执行框“9被按下”应该编写与显示9有关的程序。由于篇幅所限,程序流程图未画完整,省略的部分与其他部分思路相同,请同学们练习补齐,并尝试根据程序流程图写出程序。图14-6是51单片机P1接口的结构。右侧的引脚P1.X通过场效应管V2与地线相连,也就是引脚是否和地线连通取决于这个场效应管是否导通。可以看到,当向引脚写入1,也就是让引脚输出高电平时V2截止,引脚不与地线导通。知识链接五、I/O引脚的锁存问题反之V2导通,引脚与地线相连,此时如果进行读引脚操作,则与引脚相连的外部电路无论是何种电平都会被拉低到地线电平,即低电平,因此在这种情况下不能通过引脚读取外部电路正确电平。为了避免这种错误,在编程时如果反复对引脚进行读写操作则需要在每次读写前都令I/O接口输出1,以使V2截止,如果只让引脚单独做输出或单独做输入,也就是只写引脚或读引脚,则不需要这样操作。这里以P1为例进行说明,其他I/O接口也具有相似结构,需要注意相同问题。知识链接图14-6P1接口的结构接下来利用前面所学知识完成一个小练习,将1个矩阵键盘和1个数码管接到单片机上,当按下键盘上的数字时,数码管显示对应的数字。为了简化程序,只识别“4”“5”“7”“8”这4个按键。要求系统上电时数码管显示“0”,按4后显示“4”,再按5显示“5”……,按其他键数码管显示的数字不变。知识链接六、按矩阵键盘显示对应数字练习1.功能要求知识链接图14-7矩阵键盘显示对应数字电路这个练习采用译码器74LS47驱动数码管,译码器和数码管使用方法可以参考前面的内容,其电路如图14-7所示。2.电路这个控制任务的程序流程图主要部分与图14-5的按键识别流程图相同,只需要判断2根行线和2根列线。在开头要增加使数码管显示0的指令,在判断没有按“4”“5”“7”“8”这4个键后应转移至按键识别程序开头重新识别。在判断出按了“4”“5”“7”“8”这4个键后应增加使数码管显示“4”“5”“7”“8”的指令,且显示完指定数字后应当转移至按键识别程序开头重新识别。请自行画出这个控制任务的完整程序流程图。知识链接控制任务程序如【程序14-1】所示,请参照其中的注释理解,并将没有注释的指令的功能自行补全。3.程序流程图4.程序项目训练(1)编写按下矩阵键盘的2、3、5、6键能显示对应数字的程序并仿真。(2)编写按下矩阵键盘的全部数字键能显示对应数字的程序并仿真。(3)在按键能显示对应数字的基础上,增加按“C/ON”键数码管能显示0的功能,编写程序并仿真。仿真运行参照电路如图14-7所示。一、参照电路仿真元件列表见表14-1。二、所用元件列表参照程序见【程序14-1】。三、参照程序表14-1仿真元件列表点击图标可观看仿真运行:矩阵键盘按键示数仿真运行【程序14-1】MOVP2,#0D0:MOVP1,#11111111BMOVP1,#00001111BMOVA,P1CJNEA,#00001110B,HANG2MOVP1,#11111111BMOVP1,#11110000BMOVA,P1CJNEA,#11100000B,LIE13;使数码管显示0;准备判断哪行键被按下,读写P1前先令P1输出1;写引脚,使行线高电平列线低电平;读引脚,将P1数值赋予A,准备判断P1数值;第一行是否有键按下,若是则下一步,若否则转移判断第二行;已判断第一行有键按下,开始判断位于哪一列;按键是否位于第四列,若是则下一步,若否则转移判断第三列仿真运行【程序14-1】MOVP2,#7SJMPD0LIE13:CJNEA,#11010000B,D0MOVP2,#8SJMPD0HANG2:CJNEA,#00001101B,D0MOVP1,#11111111BMOVP1,#11110000B;按键在第一行第四列,显示7;返回按键识别程序开头,准备识别下次按键;按键是否位于第三列,若是则下一步,若否则准备识别下次按键;按键在第一行第三列,显示8;第二行是否有键按下,若是则下一步,若否则准备识别下次按键仿真运行【程序14-1】MOVA,P1CJNEA,#11100000B,LIE23MOVP2,#4SJMPD0LIE23
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 综合部工作职责
- 如何理解央行重启7天逆回购投放
- 制定融合发展目标激励方案
- 测量观察责任追究管理制度
- 高中信息技术必修一“数据、信息与知识”教学设计
- 高中一年级化学“元素周期表与元素周期律综合考查”素养提升教学设计
- 高中一年级信息技术:数据处理与可视化表达单元整体教学设计
- 小学科学三年级云量与降水量观测实践教学设计
- 小学六年级综合实践活动“体验‘挣钱’”教学设计
- 高三化学一轮复习醛酮同分异构与性质整合教学设计
- 高空作业平台倾覆现场处置方案
- 口腔颌面部感染诊疗临床应用专家共识(2025版)
- 2026年芯片设计DFT工程师高频面试题包含详细解答
- 网络传播概论(第5版)全套教学课件(完整版)
- 三宝四口五临边安全防护施工方案
- 临床肝紫癜病影像学表现
- 2026江苏法院招聘聘用制书记员202人考试参考题库及答案解析
- 市委办公厅机关考核制度
- 万科运营分析内控制度
- 校园餐培训课件教学
- 歼20科普教学课件
评论
0/150
提交评论