资源描述:
《按键控制单数码管显示》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机存储器扩展设计题目名称8按键控制单数码管显示学院化学化工学院专业过程装备与控制工程班级12级过控(2)班姓名韩勇学号2012421208指导老师杜俊完成日期2014年11月21号7/78按键控制单数码管显示(韩勇12级过控2班)摘要:利用单片机实现8按键控制数码管显示。单片机是所有微处理机中性价比最高的一种,随着种类的不断全面功能不断完善,其应用领域也迅速扩大。单片机在智能仪表、实时控制机电一体化、办公机械、家用电器等方面都有相当的应用领域。当前8位单片机主要用于工业控制,如温度、压力、流量、计量和机械加工的测量和控制场合;高效能的16位单
2、片机(如MCS-96、MK-68200)可用在更复杂的计算机网络。可以说,微机测控技术的应用已渗透国民经济的各个部门,微机测控技术的应用是产品提高档次和推陈出新的有效途径。关键字:按键,显示。一、设计任务8按键控制器:有8个按键(k1-k8),当按键未按下去时,输出为“0”,当按下k1时,数码管显示1,按下k2时,数码管显示2,依次直至按下k8时,数码管显示8,循环结束;如果同时有2个或2个以上的按键按下去时,则数码管不作任何处理,保持原显示状态。二、硬件设计1.显示部分电路显示采用动态扫描方式,显示器件选用共阴极数码管,它的断码段通过电阻与p0
3、口相连,受p0口低七位管脚控制,由p0口输出要显示的内容,其中p0口要接上拉电阻RP1起限制电流的保护作用。2.按键部分电路8个独立按键k1-k8与p2口直接相接,每个按键占用一根I/O端线,可以控制p2口的8个管脚输入的电平高低,按下键时,相应管脚输入低电平,不按键时,输入高电平,因此可以直接通过观察相应的端口的电平高低来判断是否有按键按下。3.工作原理7/7单片机的p2口为位选控制端,且低电平有效,当按键按下后,其输出低电平,信号经p2口传入单片机的CPU中,CPU将信号传入p0口,由p0口将信号输出并显示在数码管上,其中按键编号与数码管显示
4、的数字一致,当按下k1时,数码管显示1,按下k2时,数码管显示2,依次直至按下k8时,数码管显示8。设计电路图如下图所示:一、软件设计1.按键判断程序对于每一个按键,当进入程序后,根据显示部分所记录的当前显示位置信息可判断出是哪一个键按下,例如当前数码管显示1,则说明是按键k1按下。程序流程图如下图所示:开始7/7N按键是否按下Y延时10ms,去抖动影响YN按键是否按下Y是否只按下一个键NY确定哪个按键按下,得到键盘码根据键盘码,运用C指令,向七段数码管选出相应的字型码一、测试7/71.在proteus软件中,按图搭好电路;2.在keil软件中编
5、辑程序,进行编译,得到.HEX格式文件;3.将得到的.HEX格式文件在proteus中导入到80C51芯片中;4.在proteus中运行仿真,观察仿真结果;5.Proteus中结果正常后,用实际硬件搭接并调试电路,通过编程器将.HEX格式文件下载到80C51中,通电验证实验结果;6.通过验证实现了8按键控制单数码管的识别和显示。五、心得体会这个系统是以单片机80c51芯片为核心部件,实现了8按键控制单数码管的识别和显示。通过这段时间的设计,从这次的课程设计中,我真正的意识到,在以后的学习中要理论联系实际,把我们所学的理论知识用到实际当中,学习单机
6、片机更是如此,程序只有在经常的写与读的过程中才能提高,是我对单片机有了新的认识:首先,在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机片内有哪些资源;然后,设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件流程图;其次,在设计程序时,不能想一次就将整个程序设计好,"反复修改,不断改进"是程序设计的必经之路;最后,要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便,这是我在这次课程设计中的最大收获。一、参考文献[1]丁明
7、亮.51单片机应用设计与仿真.北京:北京航空航天大学出版社,2009.[2]李学礼.基于proteus的8051单片机实例教程.北京:电子工业出版社,2008.[3]贾好来.MCS-51单片机原理及应用.北京:机械工业出版社,2007.7/7七、附录设计程序:#includetypedefunsignedcharuchar;typedefunsignedintuint;uchartable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(uint
8、a){uinti,j;for(i=a;i>0;i--)for(j=110;j>0;j--);}voidmain(){P0=table[0