LED数码管秒表

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机课程设计说明书课题名称专业电气工程学生姓名班级学号指导教师完成日期2012年6月10日LED数码管秒表设计第2页共24页目录1概述----------------------------------------------------------------31.1总体设计方案------------------------------------------31.2硬件设计与焊接----------------------------------------31.3软件设计方案------------------------------------------32系统总体方案及硬件设计----------------------------------42.1硬件总体设计------------------------------------------42.2单片机基本电路设计------------------------------------62.3秒表时间显示电路设计----------------------------------72.4独立按键电路设计--------------------------------------92.5蜂鸣器电路设计---------------------------------------103软件设计-------------------------------------------------113.1程序设计思路-----------------------------------------113.2秒表程序构成-----------------------------------------113.3源程序代码与流程图-----------------------------------124实验仿真-------------------------------------------------145设计总结-------------------------------------------------15附录1-----------------------------------------------------------------16附录2-----------------------------------------------------------------22附录3-----------------------------------------------------------------23盐城工学院课程设计说明书(2012)第3页共24页1概述1.1总体设计方案先进行系统板的基本焊接,即先将晶振电路和复位电路焊接完成。然后对秒表的功能进行总体的设计和规划,列写出程序的纲要,规划好I/O口的控制对象。再进行外围电路的设计,根据安排好的I/O口的使用,设计出合理的电路图,并进行最后的焊接。最后,根据自己的总体设计和规划进行软件设计。1.2硬件设计与焊接最小系统版是现成的套件,只要焊接时细心一点基本不会出错,而数码管一般是由P0和P2口控制,或者由P0口加锁存器控制,这也不需要自己过多的去设计,只要焊接时仔细一点,一般也不会出错。在这个秒表中,最重要的就是独立按键的设计和焊接,因为,如果设计不合理,就很有可能造成秒表的操作不便或者是计时误差增大。我认为,按键2控制外部中断0是最优选择。1.3软件设计方案将各个功能以模块化的形式设计出来,当然,要先写主体,编译通过并下载入实验板功能可以实现后再添加其他功能模块,然后再编译下载,一步一步直至完成所有功能。软件设计要比硬件设计复杂很多,出现的问题也多。小问题一大堆,。在设计中,我遇到的最大的两个问题就是存储时间的数组定义和减小按键存数时产生的误差。刚开始我存储时间数组定义为code型,结果不能用设置的时间变量赋值,在网上找了好久才发现问题所在,只能将code去掉;最初存储时间数值的按键只是一个单纯的按键,结果发现按键按下期间秒表是停止的,最后只得将该功能用外部中断来实现,并且将其设置为下降沿触发,这样就大大减少了误差。LED数码管秒表设计第4页共24页2系统总体方案及硬件设计2.1硬件总体设计1)单片机选型:AT89S512)复位电路:上电+按钮3)晶振电路4)键盘:独立键盘+中断5)数码管显示:LED6)独立按键控制原理图如下:盐城工学院课程设计说明书(2012)第5页共24页单片机管脚图:LED数码管秒表设计第6页共24页2.2单片机基本电路设计1)复位电路:上电+按钮2)晶振电路原理图如下:盐城工学院课程设计说明书(2012)第7页共24页2.3秒表时间显示电路设计1)4位7段LED数码管(共阴)2)排阻3)1kΩ电阻*44)S9012PNP三极管*4为了不使LED数码管过流损坏,用上拉排阻限流。LED数码管位选直接与P2口相连,数码管显示会比较暗,为了解决这个问题,我从网上找到利用S9012PNP三极管作为驱动的方法来解决这个问题!七段LED数码管及其接口七段LED数码管由七个发光段构成,每段均为1个LED二极管。通过控制不同段的点亮和熄灭,显示出16进制数字或字符。七段LED显示器有共阳极和共阴极两种结构,如图所示的七段LED实际上包含8个LED(7段字形加上小数点DP)。1位LED显示器有1根位选线和8根段选线,段选线控制字符的选择,位选线控制显示位的亮和暗。十六进制数及空白字符与数码管的显示段码字型共阳级段码共阴极段码字型共阳级段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73HLED数码管秒表设计第8页共24页4位LED数码管(共阴)管脚图:原理图如下:盐城工学院课程设计说明书(2012)第9页共24页2.4独立按键电路设计参考市场上的秒表,一般都有清零、开始计时和查看计时记录的功能,所以我用4个按钮来实现清零/查看、开始/计时、上翻、下翻的功能,这样我的秒表基本上和市场上的秒表功能一致。原理图如下:LED数码管秒表设计第10页共24页2.5蜂鸣器电路设计当用户按下任意有效按键时蜂鸣器都会发出蜂鸣提醒,以提示用户按键成功,已进入既定程序进行工作,从而提升该秒表系统的用户体验。原理图如下:盐城工学院课程设计说明书(2012)第11页共24页3软件设计3.1程序设计思路利用定时器经确定时,并且利用随机存储区的有限空间,定义一个二维数组,通过按键将时间数值赋给数组(实践证明,随机存储器内最多只能存储30组时间数值),然后在秒表停止或在数组存满的情况下将所存的时间数值读出。当然,也需要通过按键来读取不同时间数值,并且使用按键来控制秒表的开始、停止与清零。附加项目:1)按键每按下一次,蜂鸣器声响50毫秒或100毫秒;2)在秒表启动时,第二段数码管小点亮0.5毫秒,灭0.5毫秒;3)在秒表启动和读取所存时间数值时,由于只有四段数码管,不可能将分,秒,毫秒同时显示,所以在秒表启动时,当时间小于60秒时,数码管显示秒和毫秒,而大于60秒时则显示分和秒;在读取所存时间数值时,采用“点”作标志位,第二段数码管的“点”亮表示显示的是秒和毫秒,而第四段的数码管的“点”亮则表示的是分和秒。3.2秒表程序构成(具体程序参见附1)3.2.1主程序(main函数)程序的初始入口,不断调用各个子程序,程序的骨架。3.2.2秒表启动存数程序(keeptime函数)用以处理分,秒和毫秒之间的联系。3.2.3读取所存数值处理程序(showtime函数)用以读取处理所存时间数值并加以处理。3.2.4数码管显示程序1)秒表启动时显示程序(display函数):确定显示数值,将显示数值分为个位、十位、百位、千位,分别查表显示。2)读取所存时间数值显示程序(display2函数):调取数组值赋给该函数,确定显示数值,将将其分为个、十、百、千位,分别查表显示。3)所存时间数值序号显示程序(display3函数):用以显示所存时间的序号,以便于区分。3.2.5按键扫描程序1)扫描按键1(scankey1函数)用于停止秒表或所存时间数值清零。2)扫描按键2(exter0函数)用以触发外部中断0,触发方式为下降沿触发,尽量降低了存储LED数码管秒表设计第12页共24页时间数值时引起的误差。3)扫描按键3(scankey3函数)用于所存时间数值的序号加一。4)扫描按键3(scankey4函数)用于所存时间数值的序号减一。3.2.6延时程序(delay函数)用于延时z*1毫秒。3.3源程序代码与流程图见附录1程序框图:开始开中断扫描键盘P3.1=1?计时程序运行YP3.1=1?Y时间储存程序P3.0=1?Y时间查看程序P3.0=1?Y盐城工学院课程设计说明书(2012)第13页共24页计时程序流程图:时间存储程序、时间查看程序流程图略开始计时N毫秒个位10?毫秒个位清零毫秒十位加一毫秒个位加一毫秒十位10?毫秒十位清零秒个位加一毫秒十位加一秒个位10?秒个位清零秒十位加一秒个位加一秒十位6?秒十位清零分个位加一秒十位加一发中断结束命令中断返回取消毫秒显示进入分.秒显示模式NNNYYYYLED数码管秒表设计第14页共24页4实验仿真单片机学习中我们使用proteus做仿真,该软件的优点是可以搭建单片机的常用仿真电路,并且可以利用丰富的外设器件,如数码管,LCD,按键,传感器,A/D,D/A等,实现与实际系统板运行相接近的效果,即可以完成系统级的调试。使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计中,我们使用Proteus开发环境学习,在不需要硬件投入的条件下,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。Proteus仿真软件可以看做是构建了一个特殊的单片机系统,只要将所写程序的HEX文件导入该单片机系统,就可以让它一句句的执行所写的指令,也可以让它与Keil实现联调,程序有问题可以随时改,帮助快速调试程序。Proteus仿真软件的应用,使我们在没有硬件开销的情况下,更快更好的接触到单片机的开发和应用,并且方便了程序的调试。盐城工学院课程设计说明书(2012)第15页共24页5设计总结我认为单片机本来就是一门应用大于理论、实践大于书本的课程,所以能够有这样一次单片机的课程设计实在是太好了!特别是让我们自己动手制作成品电路,自己动脑编写程序,自己发现自己的不足,自己改正错误。在本次课程设计中,我遇到了困难!编写程序,如何让用户知道你这个东西是用来干嘛的?比如我设计的是一个秒表,在显示的问题上,我一开始设计的是以秒的单位符号作为秒和毫秒的分界,但是经过老师的指导发现并不是大多数人所能理解的,相当一部分人会认为这位的数码管出现了乱码,老师指正后我改为以小数点做为分界,不但让用户更清楚的辨认,而且还引入了分的计时,更加完善了秒表的功能。实际电路,如何让实际电路更符合实际的使用需求?我一开始连的电路板,没有加上S9012PNP三极管作为驱动电路,4位数码管显示的数字略显暗淡,用户在白天阳光下很难辨认清楚,于是在网上发现了用S9012PNP三极管做驱动的办法加以解决,加上了S9012PNP三极管后数码管显示问题改善了,数字显示明亮了。S9012PNP三极管作为驱动在共阳极数码管上有显著的作用,在共阴极数码管上的效果没有共阳极的好。通过这次课程设计让我对单片机的应用有了更深层次的了解,也加深了对单片机的兴趣,我想在日后的学习生活工作中我也能基本的运用单片机这一手段来做一些基本的电气电路

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功