下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 基于51单片机能实现任意时间倒计时。

基于51单片机能实现任意时间倒计时。.doc

基于51单片机能实现任意时间倒计时。

Aubrey青财
2017-09-20 0人阅读 举报 0 0 暂无简介

简介:本文档为《基于51单片机能实现任意时间倒计时。doc》,可适用于综合领域

倒 计 时 器只要修改此文档页源程序的(如下图)的到计时初值即可实现想要的倒计时。比如分钟倒计时修改分钟十位和各位即可。一、设计要求:由单片机接收小键盘阵列设定倒计时时间倒计时的范围最大为分钟由LED显示模块显示剩余时间显示格式为 XX(分):XX(秒)X精确到s的整数倍。倒计时到由蜂鸣器发出报警。绘制系统硬件接线图并进行系统仿真和实验。画出程序流程图并编写程序实现系统功能。二、设计的作用目的:此次设计是我们更进一步了解基本电路的设计流程提高自己的设计理念丰富自己的理论知识巩固所学知识使自己的动手动脑能力有更进一步提高为自己今后的学习和工作打好基础为自己的专业技能打好基础。通过解决实际问题巩固和加深“单片机原理与应用”课程中所学的理论知识和实验能力基本掌握单片机应用电路的一般设计方法提高电子电路的设计和实验能力加深对单片机软硬知识的理解获得初步的应用经验为以后从事生产和科研工作打下一定的基础。本次设计注重对单片机工作原理以及键盘控制及显示原理的理解以便今后自己在单片机领域的学习和开发打下基础提高自己的动手能力和设计能力培养创新能力丰富自己的理论知识做到理论和实践相结合。本次设计的重要意义还在于对单片机的内部结构和工作状态做更进一步的了解同时还对单片机的接口技术中断技术存储方式和控制方式作更深层次的了解。三、具体设计:问题分析:在电子技术飞速发展的今天电子产品的人性化和智能化已经非常成熟其发展前景仍然不可估量。如今的人们需求的是一种能给自己带来方便的电子产品当然最好是人性化和智能化的如何能做到智能化呢?单片机的引入就是一个很好的例子。单片机又称单片微型计算机也称为微控制器是微型计算机的一个重要分支单片机是世纪年代中期发展起来的一种大规模集成电路芯片是集CPURAMROMIO接口和中断系统于同一硅片上的器件。单片机的诞生标志着计算机正式形成了通过计算机系统和嵌入式计算机系统两个分支。目前单片机已渗透到我们生活的各个领域几乎很难找到哪个领域没有单片机的踪迹。单片机已在广阔的计算机应用领域中表现得淋漓尽致电器因此单片机已成为电子类工作者必须掌握的专业技术之一。单片机就是一个微型中央处理器通过编程即能完成很多智能化的工作因此它的出现给电子技术智能化和微型化起到了很大的推动作用。本设计将采用C单片机C单片机是一种带K字节闪烁可编程可擦除只读存储器(FPEROMFalshProgrammableandErasableReadOnlyMemory)的低电压高性能CMOS位微处理器俗称单片机。单片机自带个中断两个位定时器个IO口可擦除只读存储器可以反复擦除多次功能相当强大。该器件采用ATMEL高密度非易失存储器制造技术制造与工业标准的MCS指令集和输出管脚相兼容。由于将多功能位CPU和闪烁存储器组合在单个芯片中ATMEL的C是一种高效微控制器。C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。面对如此功能强大的单片机结合本次设计要求应该要用到单片机的内部时钟电路以及外围的显示接口电路和报警电路。对与时钟它有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号主要由晶振和外围电路组成晶振频率的大小决定了单片机系统工作的快慢二是指系统的标准定时时钟即定时时间它通常有两种实现方法:一是用软件实现即用单片机内部的可编程定时计数器来实现但误差很大主要用在对时间精度要求不高的场合二是用专门的时钟芯片实现在对时间精度要求很高的情况下通常采用这种方法。在显示方面有着多种选择但是段LED数码管足以满足此次设计的要求了。LED数码显示器是一种有LED发光二极管组合显示字符的显示器件。它使用了个LED发光二极管其中个用于显示字符一个用于显示小数点故通常称之为段发光二极管数码器。其内部结构如下图(a)所示:LED数码显示器有如下两种连接方法:共阳极接法:把发光二极管的阳极连在一起构成公共阳极使用时公共阳极接V每个发光二极管的阴极通过电阻与输入端相连。共阴极接法:把发光二极管的阴极连在一起构成公共阴极使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。蜂鸣器是一种一体化结构的电子讯响器采用直流电压供电广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。在单片机应用的设计上很多方案都会用到蜂鸣器大部分都是使用蜂鸣器来做提示或报警比如按键按下、开始工作、工作结束或是故障等等。由于蜂鸣器的工作电流一般比较大以致于单片机的IO口无法直接驱动所以要利用放大电路来驱动一般使用三极管来放大电流。本设计采用p口和三极管组成的电路来驱动蜂鸣器。总体设计思想:本设计是基于ATC单片机的键盘控制及显示电路设计从系统的设计功能上看系统可分为两大部分即键盘输入控制部分和显示部分对于每一个部分都有不同的设计方案起初我对键盘和显示每个都拟订了下面两种方案:键盘部分:第一种方案:采用扫描键盘可以用普通按键构成×矩阵键盘直接接到ATC单片机的P口高四位作为行低四位作为列通过软件完成键盘的扫描和定位。这种方式相对下面的独立式键盘节省了很多的IO口。第二种方案:键盘控制采用独立式按键每个按键的一端均接地另一端直接和P口相连在按键和P口之间通过K电阻与V电源相连。键盘通过检测输入线的电平状态就可以很容易地判断哪个键被按下了这种方法操作速度高而且软件结构很简单比较适合按键较少或操作速度较高的场合这种独立式接口的应用很普遍。显示部分:第一种方案:显示部分采用静态显示方法所谓静态显示就是每一个显示器都要占用一个独立的具有锁存功能的接口用于存储字形码。这样单片机只要把要显示的字形代码发送到接口电路从而输送至各数码管显示。被显示的数据只要输出一次直到要显示新的数据时再发送新的字形码。静态驱动的优点是编程简单显示亮度高缺点是占用IO端口多如驱动个数码管静态显示则需要×=根IO端口来驱动要知道一个S单片机可用的IO端口才个)实际应用时必须增加译码驱动器进行驱动增加了硬件电路的复杂性。第二种方案:显示部分采用动态显示。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一动态驱动是将所有数码管的个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起另外为每个数码管的公共极COM增加位选通控制电路位选通由各自独立的IO线控制当单片机输出字形码时所有数码管都接收到相同的字形码但究竟是那个数码管会显示出字形取决于单片机对位选通COM端电路的控制所以我们只要将需要显示的数码管的选通控制打开该位就显示出字形没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端就使各个数码管轮流受控显示这就是动态驱动。动态显示是利用人眼视觉暂留特性来实现显示的。事实上显示器上任何时刻只有一个数码管有显示。由于各数码管轮流显示的时间间隔短、节奏快人的眼睛反应不过来因此看到的是连续显示的现象。为防止闪烁延时的时间在ms左右不能太长也不能太短。本设计可采用P口直接驱动七段数码管显示。此方案成本低而且单片机的IO口占用较少可以节约单片机接口资源而且功耗更低。由于本设计要求按键较少且本次设计只是对所学知识的一次实践设计要求简单容易实现成本低廉。比较以上各种设计方案采用独立式键盘和动态显示两种方案配合成本低占用单片机资源少且容易实现这样的设计比较适合本次设计故最终决定选用这样的一种搭配设计方案。对于蜂鸣器将采用p口和三极管组成的外围电路驱动根据定时时间报警。具体实现方法:根据设计任务与要求可初步将系统分为五大功能模块:主电路、按键电路、显示电路、报警电路。进一步细说主电路选用ATC作为中央处理器系统采用MHZ的晶振按键停控制电路由四个按键(复位键、启动暂停键、设置键、调时键)组成键盘采用软件扫描的方式设计低电平有效显示电路由六位七段共阴极数码管和一个位欧姆上拉电阻组成,显示内容有倒计时器的秒位以及分秒的个、十位,数码管通过P口直接输出数据报警电路主要由蜂鸣器组成通过电路与P口相连。当P口输出高电平时蜂鸣器响。对于本次单片机课程设计根据设计要求可以将功能分成如下部分:()由于单片机内部振荡方式电路简单时钟信号比较稳定是独立的单片机应用系统的首选故本设计采用内部振荡方式采用MHZ的晶振。图()晶振电路图()本设计电路采用定时器T产生定时中断由于本设计需要s的基本时间故选择其工作在定时方式下。这时定时器T是一个位的计时器由它产生ms的基本定时中断两次中断后将得到s的时间。()键盘电路有独立式键盘和矩阵式两种。独立式键盘占用IO口线较多适用于按键较少的情况。矩阵式键盘占用的IO口相对较少适用于按键很多的情况。图()键盘电路图()报警电路将采用p口驱动当数码管显示时p口输出高电平驱动蜂鸣器达到报警的目的只有当复位键按下后蜂鸣器才会停止报警。图()蜂鸣器报警电路图()对于显示电路本设计采用位段共阴极LED数码管显示。上电显示最大倒计时时间。其中“”位为系统状态标志位当显示“”时表示系统处于等待状态按下开始键后将开始计数开始计数后此数码管将关闭显示以达到省电的目的当显示“E”时表示系统正处于调时状态此时只用两个调时键有用按下开始键或复位键将没有用。图()显示电路图系统的原理框图如下图:报警电路图()系统原理框图NN等待按键释放调时设置键按下?图()硬件连线图硬件连接说明:本系统以ATC单片机为核心。单片机采用内部振荡的方式。通过欧姆电阻与一个位段LED数码显示管相连。从P口输出LED数码管的字形码从P口输出LED数码管的位选码高电平有效。个功能按键和P口相连中间通过K的电阻与V电源相连按键另一端接地P口低电平时表示按键被按下。报警电路则与P口相连当P口输出高电平时蜂鸣器响。在程序设计方面:将键盘扫描程序置于主程序中采用扫描方式检测键盘的按键情况主程序流程图见图()。显示部分做成一个子程序方便调用。各个调时子程序由设置键引倒进入调时子程序流程图见图()。计时方面利用定时器T产生的ms基准时间形成s的最小倒计时时间单位并产生“”动作T中断子程序流程图见图()。图()主程序流程图N图()R=#H子程序返回调时子程序流程图N图()将H、H、H置H置将H、H置H置N四、Proteus调试过程及现象:上电后LED数码管显示最大倒计时值程序处于等待状态。图()上电或者复位键被按下时此时主程序不断调用显示子程序以及扫描键盘按键情况当检测到有键按下后转到相应的程序执行。开始暂停键按下后程序开始减计数直到同时状态显示管熄灭计数值到后报警器响。若中途遇到开始暂停键按下则暂停倒计时。若中途遇到复位键按下则将倒计时器的倒计时值设置为最大值并处于等待状态。图()计数值到时图()开始暂停键按下后复位键按下后程序复位系统处于等待状态状态显示管显示“”。当设置键被按下后程序进入调时设置状态同时状态显示管显示“E”。设置状态的初始值位E按下调整键可以将当前的计数单位值加再次按下设置键后即进入了下个计数单位的调时状态当按下次设置键后将退出调时状态若分钟十位被设置为并再次按下设置键后程序直接退出调时状态。设置状态时开始暂停键和复位键无效等退出调时状态后设置状态时开始暂停键和复位键恢复功能。图()调时状态时五、调试问题及解决方法:开始在主程序的循环中没有添加调用显示子程序的语句导致在没有按键按下的情况下LED数码管没有显示。当在主程序循环检测按键的过程中添加了调用显示子程序的语句后就解决了这一问题。由于键盘需要消抖延时和等待按键释放所以相似的情况又出现了按下按键后有一段时间LED数码管断续显示或者按下按键后不释放按键时LED数码管没有显示。仔细分析后发现问题出现的原因还是一样的由于本设计的LED数码管采用了动态显示故需要不断调用显示子程序否则会导致LED数码管没有显示。所以最终做了以下改进:按键的消抖延时选择调用两次显示子程序(每次显示子程序大约用时ms两次即为ms左右)来取代原来的ms软件延时。在等待按键释放时使用循环调用显示子程序来替代原来的循环等待。经过上述两点的改进后LED数码管无显示或者断续显示的问题就得到了彻底的解决。六、设计的优缺点分析:本设计是一个采用了由内部振荡的时钟方式、程控扫描方式的独立式键盘、动态显示LED数码管和蜂鸣器式报警器组成的系统。因此该系统使用的电子器件少、外围电路简单定时精准使用的IO少系统消耗的功耗小剩余的IO口多便于扩展其他功能。但是另一方面本系统由于使用了程控式的键盘和动态显示的LED数码管所以对CPU的使用率相对较高。七、心得体会:初次看到本次的课程设计的题目时感觉设计的难度不大但是由于是第一次运用单片机设计在设计过程中又遇到了种种困难又感觉到要完成此次设计还需要花费很大的时间和精力。但是经过本组同学的共同努力运用科学的分析方法最终顺利完成了本次单片机课程设计。经过两个星期的实习过程曲折可谓一语难尽。在此期间我也失落过也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情点点滴滴无不令我回味无长。生活也是这样汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实习我才真正领略到“艰苦奋斗”这一词的真正含义我才意识到老一辈设计员为我们的社会付出。我想说设计确实有些辛苦但苦中也有乐在如今物欲很流的世界很少有机会能与大自然亲密接触但我们可以而且设计也是一个团队的任务一起的工作可以让我们有说有笑相互帮助配合默契多少人间欢乐在这里洒下大学里一年的相处还赶不上这十来天的实习我感觉我和同学们之间的距离更加近了我想说设计确实很累但当我们的设计出现成果时心中也不免产生兴奋正所谓“三百六十行行行出状元”我认为无论干什么只要人生活的有意义就可以。同时我认为我们的工作是一个团队的工作团队需要个人个人也离不开团队必须发扬团结协作的精神。某个人的离群都可能导致导致整项工作的失败。实习中只有一个人知道原理是远远不够的必须让每个人都知道否则一个人的错误就有可能导致整个工作失败。团结协作是我们实习成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点这也是非常宝贵的。另外课堂上也有部分知识不太清楚于是我又不得不边学边用时刻巩固所学知识这也是我作本次课程设计的第二大收获。整个设计我基本上还满意由于水平有限难免会有错误还望老师批评指正。八、参考文献:曾屹单片机原理与应用湖南:中南大学出版社丁元杰单片微机原理及应用版北京:机械工业出版社严天峰单片机应用系统设计与仿真调试北京:北京航空航天大学出版社杨振江流行单片实用子程序及应用实例西安:电子科技大学出版社附:实验源程序            倒计时器设计源程序ORGH  AJMPMAIN  ORGBH     T中断程序入口地址  AJMPTZD  ORGHMAIN:CLRTR      主程序开始  CLRP     关闭蜂鸣器  SETBH    使显示管状态标志位有效  CLRH     开始暂停标志位使程序处于等待开始|暂停键按下  MOVH,#H   S位查表码  MOVH,#H   秒钟个位位查表码  MOVH,#H   秒钟十位位查表码  MOVH,#H   分钟个位位查表码  MOVH,#H   分钟十位位查表码  MOVH,#H   状态显示管查表码  MOVH,#H   定时器定时次数  SETBEA      开总中断  SETBET     开定时器T中断  MOVTMOD,#H   定时器工作方式  MOVTL,#BH   定时初值采用MS定时  MOVTH,#CHJPJC:LCALLXSCX    显示倒计时初值(XSCX),进入键盘检测程序  MOVP,#FFH   判断复位键是否按下  JBP,JC  LCALLXDYS    调用消抖延时程序(XDYS)  JBP,JCPP:JNBP,DP   等待按键按下  AJMPMAIN     复位键按下后转到主程序(MAIN)重新开始JC:MOVP,#FFH   判断设置键是否按下  JBP,JC  LCALLXDYS  JBP,JCPP:JNBP,DP   调整设置键按下后转到调时子程序(TSCX)  ACALLTSCXJC:MOVP,#FFH   判断开始暂停键是否按下  JBP,JPJC  LCALLXDYS  JBP,JPJCPP:JNBP,DP  CPLH     将标志位取反  JBH,KSJS   开始暂停标志为则开始计数(KSJS)  CLRTR  SETBH  AJMPJPJC     继续检测键盘按键情况(JPJC)DP:LCALLXSCX    等待按键按下时调用显示程序防止显示管没显示  AJMPPPDP:LCALLXSCX  AJMPPPDP:LCALLXSCX  AJMPPPKSJS:CLRH    清除状态显示管  SETBP  JBP,JPJC   若蜂鸣器响则不启动计时器  SETBTR     启动计时器TO(KSJS)  AJMPJPJC  显示子程序XSCX:MOVDPTR,#TAB   显示子程序(XSCX)  MOVA,H  MOVCA,ADPTR  MOV P,#FFH  关闭显示  MOV P,A    输出S位的显示段码  CLR P     P=  ACALLXSYS  MOVDPTR,#TAB    MOVA,H  MOVCA,ADPTR  MOV P,#FFH   关闭显示  MOV P,A     输出秒钟个位的显示码  CLR P     P=  ACALLXSYS  MOVDPTR,#TAB  MOVA,H  MOVCA,ADPTR  MOV P,#FFH   关闭显示  MOV P,A     输出秒钟十位位的显示段码  CLR P     P=  ACALLXSYS  MOVDPTR,#TAB  MOVA,H  MOVCA,ADPTR  MOV P,#FFH   关闭显示  MOV P,A     输出分钟个位的显示段码  CLR P     P=  ACALLXSYS  MOVDPTR,#TAB  MOVA,H  MOVCA,ADPTR  MOV P,#FFH   关闭显示  MOV P,A     输出分钟十位的显示段码  CLR P     P=  ACALLXSYS  JNBH,ZBTC   H为则显示计时器状态  MOVDPTR,#TAB  MOVA,H  MOVCA,ADPTR  MOV P,#FFH   关闭显示  MOV P,A     输出段码  CLR P     P=  ACALLXSYSZBTC:RET  调时子程序TSCX:CLRTR      调时子程序(TSCX)  CLRH     使时间调整时处于暂停状态  MOVH,#H  MOVH,#H  MOVH,#H  MOVH,#H  MOVH,#H  SETBH     使状态显示管的位选码有效  MOVH,#H    将状态显示码更改为E(调时状态)  MOVR,#HJCTZ:ACALLXSCX     先调用显示程序扫描时间调整键  MOVP,#FFH  JBP,NEXT    键盘没有按下  ACALLXDYS     键盘按下消抖延时  JBP,NEXTDEN:JNBP,DEN   等待按键释放  AJMPJYCX     键按下后跳转到程序NEXT:MOVP,#FFH  JBP,JCTZ  ACALLXDYS     键盘按下消抖延时  JBP,JCTZDEN:JNBP,DEN   等待按键释放  MOVA,H  CJNEA,#H,DEC  设置键再次按下将调整指针指向下一位  AJMPTCTSDEC:DECR  CJNER,#FH,JCTZ  若R为FH则退出调时程序  AJMPTCTS      若R不为#H,但R为#FH则跳出调时程序JYCX:CJNER,#H,XIA  加调时部分  CJNER,#H,INCR  调整分钟十位  AJMPSETXIA:CJNER,#H,XIA  AJMPTZ      调整分钟个位XIA:CJNER,#H,XIA  CJNER,#H,INCR  调整秒钟十位  AJMPSETXIA:CJNER,#H,XIA  AJMPTZ      调整秒钟个位XIA:CJNER,#H,TCTSTZ:CJNER,#H,INCR   调整秒位SET:MOVR,#H  AJMPJCTZINCR:INCR  AJMPJCTZDEN:ACALLXSCX  AJMPDENDEN:ACALLXSCX  AJMPDENTCTS:MOVTH,#CH      退出调时程序  MOVTL,#BH  MOVH,#H      将状态显示码更改为D(等待状态)  RET  T中断子程序TZD:CLREA        T中断子程序,关中断(TZD)  CLRET  CLRTR  DJNZH,TCZD  MOVH,#H     当定时两次后重新给计时次数赋值为  MOVR,#H      减计数,R为H  CJNER,#H,R  INCR        R为H  CJNER,#H,DEC  INCR        R为H  CJNER,#H,DEC  INCR        R为H  CJNER,#H,DEC  INCR        R为H  CJNER,#H,DEC  AJMPJYFHR:CJNER,#H,DEC  R为H  INCR        R为H  CJNER,#H,R  INCR        R为H  CJNER,#H,R  INCR        R为H  CJNER,#H,R  INCR        R为H  CJNER,#H,R  AJMPZJFHR:MOVH,#H  DECH  AJMPTCZDR:MOVH,#H  MOVH,#H  DECH  AJMPTCZDR:MOVH,#H  MOVH,#H  MOVH,#H  DECH  AJMPTCZDR:MOVH,#H  MOVH,#H  MOVH,#H  MOVH,#H  DECH  AJMPTCZDDEC:DECHTCZD:MOVTH,#CH      退出中断子程序  MOVTL,#BH  SETBEA  SETBET  SETBTR  AJMPZZFHJYFH:DECHZJFH:SETBP      启动蜂鸣器ZZFH:RETIXDYS:ACALLXSCX 消抖延时程序延时ms(*ms)  ACALLXSCX 采用调用显示子程序延时以改善LED显示效果  RETXSYS:MOVH,#  显示延时程序延时msDEL:MOVH,#DEL:DJNZH,DEL  DJNZH,DEL  RETTAB:DBFH,H,BH,FH,H,DH,DH,H,FH,FHTAB:DBBFH,H,DBH,CFH,EH,EDH,FDH,H,FFH,EFHTAB:DBH,H  D等待状态E调时状态  END

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/15

基于51单片机能实现任意时间倒计时。

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利