矩阵键盘控制数码管_第1页
矩阵键盘控制数码管_第2页
矩阵键盘控制数码管_第3页
矩阵键盘控制数码管_第4页
矩阵键盘控制数码管_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、江苏食品职业技术学院论文系别 机电工程系班级 机电101姓名 李明学号 目录摘要31、概述32、总体设计方案32.1总体设计要求32.2系统框图43、系统硬件设计43.1单片机的最小系统53.1.1电源电路53.1.2复位电路53.1.3晶振电路63.2 LED数码管显示部分63.3矩阵键盘73.3.1键盘的工作原理73.3.2键盘检测原理74、系统软件设计94.1 软件设计思想94.2 主程序设计104.3 子程序设计114.3.1 数码管显示程序设计114.3.2 键盘检测程序设计114.3.3延时函数程序设计145、系统调试146.设计体会15参考文献15摘要单片机自20世纪70年代以来

2、,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。本设计选用AT89S52芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。用单片机的P3口连接44矩阵键盘,并以单片机的P3.0P3.3口作键盘输入的列线,以单片机的P3.4P3.7口作为键盘输入的行线,然后用P0.0P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0F”。在硬件电路的基础上加上软件程序的控制来实现本设计。其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码

3、管显示该按键所对应的序号。关键词:AT89S52芯片;4*4矩阵键盘;键盘识别;LED数码管1、概述随着单片机系统的日益更新,以及人们对产品的人机交互能力的不断提高;使得单片机系统的人机界面设计能力成为学习单片机的一项重要的基础内容。而4*4键盘的操作和LED数码管的动态显示是人机界面设计中最基础的内容,掌握这些基础的设计能力对以后的学习研究是非常必要的。2、总体设计方案2.1总体设计要求本系统采用单片机AT89S52为数码管的控制核心,制造一种简单的4*4键盘检测显示,能够在目测条件下四位数码管各段亮度均匀、充足,本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。根据设计要求

4、,确定的设计方案如下:2.1.1 选择AT89S52单片机作为整个系统的核心器件,对整个系统进行总体控制,发送并实时处理系统信息。2.1.2通过编程显示字符: 0-F。2.1.3当检测有按键按下时数码管显示与该按键相对应的字符。 2.1.4 键盘检测信号连接到单片机的P3口,显示信号连接到单片机的P0口。2.1.5数码管点亮过程有程序控制,P2.4,P2.5, P2.6,P2.7分别作为四位数码管的位选,数码管采用直接驱动方式,共阳极接法。2.2系统框图本设计行、列驱动电路,显示屏电路,运用单片机的智能化,系统将每个功能电路模块连接在一起,总体结构设计如下图2-1所示:AT89S52 键键盘检

5、测数码管显示图 2-1 系统框图3、系统硬件设计本系统的硬件电路是由单片机最小系统、按键电路、数码管显示电路三部分组成。其中,单片机最小系统包括电源电路、复位电路和晶振电路构成;按键电路采用独立编码方式;显示部分使用共阳型高台扫描、高态显示信号驱动电路,完成数字效果。3.1单片机的最小系统 3.1.1电源电路电源是一切器件工作的根本,有一个稳定的电源是很重要的。由于单片机和数码管的功耗都很小,所以本设计选用单片机下载线直接供电,实验证明单片机和数码管的工作正常。如图3-1所示,电源模块。 图3-13.1.2复位电路为了确保系统中电路稳定可靠地工作,复位电路是必不可少的一部分,复位电路的第一功能

6、是上电复位。一般单片机电路正常工作需要供电5V5%,即4.755.25V。由于系统电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,系统电路开始正常工作。复位电路如图3-2所示。 图3-23.1.3晶振电路晶振是为电路提供频率基准的元器件,通常分成有源晶振和无源晶振两个大类,无源晶振通常信号质量和精度较差,需要精确匹配外围电路(电感、电容、电阻等),如需更换晶振时要同时更换外围的电路。有源晶振不需要芯片的内部振荡器,可以提供高精度的频率基准,信号质量也较无源晶振要好。本设计选用有源晶振,晶振电路如图3

7、-3所示。 图3-33.2 LED数码管显示部分数码管采用的是共阳极的四位数码管,由P2端口的4,5,6,7口分别作为四位数码管的位选,P0端口作为四位数码管的位选。数码管电路图如图3-4所示。 图3-43.3矩阵键盘3.3.1键盘的工作原理 按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。无按键按下时,行线处于高电平的状态, 当有按键按下时, 行线电平由此行线相连的列线电平决定。3.3.2键盘检测原理键盘的检测,首先要解决的问题是键盘抖动现象。(如图3-5所示)消抖的方法有两种,软件消抖和硬件消抖。由于硬件消抖结构比软件复杂,所以本设计采用的是软件消抖的方法,既在程序中加入5毫秒

8、的延时,延时后再次返回P3的值二次判断是否有键盘按下。 图3-5首先,将0xfe赋于P3口(此值是用于检测矩阵键盘的第一行按键),然后看P3&0xf0是否等于0xf0,如果等于则键盘第一行无按键按下,反之则键盘第一行有按键按下。具体是哪个键按下要根据P3&0xf0的值确定。例如:P3&0xf0=0xe0,则表示键盘第一行的第一个键按下。将键盘检测函数的值返回table中,这样数码管就能显示与按键一相对应的字符了。P3等于0xfd,0xfb,0xf7分别用于检测按键的二,三,四行的,如果第一行检测无按键按下,则跳到其他行进行检测,如此循环。键盘连接图如图3-6所示。 图3-64、系统软件设计4.

9、1 软件设计思想主程序先进行设置数码管闲时显示- - - -,并启动,再进行键盘检测载入0-F字符,然后判断是否有按键按下,按不同情况进行循环调用子程序。进入子程序后,首先设置相应的程序,反复调用显示子程序,并在显示过程中反复调用键盘扫描子程序进行延时,判断是否退出相应的显示子程序。设计过程中,很好地提高了按键响应速度。如图4-1所示为软件系统框图。主程序扫检测子程序延时子程序显示子程序图 4-1 软件设计框图显示编码:因为该数码管为共阳极显示,可以把I/O口输出位对应每段数码管显示段,因此若要使数码管一段点亮,则该位为“0”;该段不亮,则该位为“1”。所以对“0-F”的编码,并将编码写入数组

10、中便于查表操作。“0-F”对应的十六进制数如下表4-2:0123456789ABCDEF0xc00xf90xa40xb00x990x920x820xf80x800x900x880x830xc60xa10x860x8e 表4-24.2 主程序设计程序开始后只有一个不断执行键盘检测函数的循环。图4-3为主程序的流程图。 开始声明函数变量执行检测函数图 4-3 主程序流程图主程序如下: void main()/主函数num=17;P2=0x0f;/数码管位选,让四个数码管都亮P0=0xbf;/数码管段选,程序刚开始数码管显示- - - -while(1)/死循环,始终执行键盘检测和数码管的显示P0=

11、tablekeyscan()-1;/数码管的显示,调用键盘检测函数 4.3 子程序设计本设计的子程序包括数码管显示程序、按键检测程序、延时程序三种,下面依次详细介绍。4.3.1 数码管显示程序设计将0-F字符的十六进制码编好,放入数组table中。在程序开始时数码管显示- - - - 。当有按键按下时,则数码管显示与该按键相对应的字符。数码管显示子程序如下:Uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf;P2=0x0f;/数码管位选,让四个

12、数码管都亮 P0=tablekeyscan()-1;/调用键盘检测函数4.3.2 键盘检测程序设计系统中采用4*4矩阵键盘,在P3口接按键,P0端口控制数码管显示。在键盘检测函数里,依次送出列检测信号,而每组列检测信号输出后,即读取按键状态,若有按下按键,则进行键值的判断与计算,再将其对应的字符信号送入数码管显示。部分键盘检测子程序如下:uchar keyscan()/键盘检测部分P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5);/延时5毫秒,消抖temp=P3;temp=temp&0xf0;while(temp!=0xf0)/再

13、次确认是否有按键按下temp=P3;switch(temp)case 0xee:num=1;/如果P3=0xee,则检测到键盘第一个键按下,以下同理break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0)delay(5); /延时5毫秒,消抖temp=P3;temp=temp&0xf0;while(temp!=0xf0) /再次确认是

14、否有按键按下temp=P3;switch(temp)case 0xed:num=5;/如果P3=0xed,则检测到键盘第五个键按下,以下同理break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;while(temp!=0xf0)temp=P3;temp=temp&0xf0;return num;4.3.3延时函数程序设计本设计采用有返回值的延时函数,延时函数如下:void delay(uint z)/有返回值的延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);5、系统调试此次系统设计的结果很好,数码管和键盘都能按原先设想的工作。这个方案设计的4*4键盘检测显示字符,电路简单,成本较低,且较容易扩展;数码管各段亮度均匀、充足;显示字符稳定、清晰无串扰.在KEIL软件中的仿真如图5-1所示。 图5-16.设计体会通过此次课程设计,让我学到了许多不知道的知识,在单片机的基本功能、数码管的显示、矩阵键盘的使用,还有其他元器件的选用有了一个较清晰的认识,在程序设计的思路,理论到实践的运用能力有了很大提高。通过这次课程设计的学习,我有了一定的实践经验和理论基础,让我位以后的学习奠定了基础;在设计思路上,通过查阅资料了解

温馨提示

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

最新文档

评论

0/150

提交评论