1、电子设计综合训练设计报告 定时闹钟河南理工大学万方科技学院电子设计综合训练设计报告 定时闹钟姓 名: 学 号: 专业班级: 指导老师: 2011年12月 12 日摘要本设计是用中小规模集成器件实现数字显示电子钟。数字钟是一种以数字电路技术为原理,综合运用各种逻辑器件来实现时、分、秒计时显示的装置,与机械式时钟相比具有更高的准确性和直观性,具有更长的使用寿命,因而被广泛应用于车站,码头,机场,商店等公共场合。在控制系统中,也常用来做定时控制的时钟源等。数字钟的设计方法有许多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单
2、片机来实现电子钟等等。这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,并便于功能的扩展。此设计是应用AT89S51单片机设计单片机实现数字秒表(LED显示秒)电路;使用4位七段显示器来显示现在的时间。显示格式为“时”“分”,由LED闪动作为秒计数表示。“时”显示有二十四进制计数器,译码器,显示器构成,“分”,“秒”显示分别由六十进制计数器,译码器,显示器构成。根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定器计数。在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整,设定作息时间,并进行到时提醒。 本设计的目的是进一步的了解各种在制作中用到的中小规
3、模集成电路的作用及实用方法。且数字钟逻辑电路包括组合逻辑电路和时序电路。通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。 目录 1 概述3 1.1 设计任务3 1.2 设计目的3 1.3 设计要求32 系统总体方案及硬件设计 4 2.1、预期效果4 2.2 电子钟说明及总体方案介绍4 2.3 多功能电子钟的工作原理4 2.4 系统原理框图53 软件设计6 3.1 概述6 3.2 主模块的设计6 3.3 系统软件设计流程图7 3.4闹铃功能的实现114 Proteus软件仿真135课程设计体会15参考文献15附1:源程序代码16附2:系统原理图231 概述1.1设计任务:用
4、实验室的AT89S51实验板,写出数字时钟的程序,能滚动显示实时时间于LED数码管,并可以修改时间,设定作息,并进行到时提醒。在规定的时间内完成设计、调试,经答辩合格后,提交设计说明书。1.2设计目的:通过一个微机应用系统的设计与调试过程,运用微机原理及接口技术课程所学的知识,在设计中加以实践,达到理解、巩固和发展所学内容的目标。通过系统构造、流程设计、编程与调试的过程,掌握分析与解决实际问题的方法与手段,提高系统设计、程序编码与调试方面的实际动手能力,作为从事工程技术工作的一次系统训练。1.3设计要求:(1)设计的功能:1 时间以24小时为一个周期;2 显示时、分、秒;3 具有校时功能,可以
5、分别对时及分进行单独校时,使其校正到标准时间;4 计时过程具有报时功能,当时间到达进行鸣叫报时;5 为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。(2)设计要求:1 画出电路原理图;2 元器件及参数选择;3 电路仿真与调试; (3)编写设计报告: 写出设计的全过程,附上有关资料和图纸,心得体会。 2 系统总体方案及硬件设计2.1、预期效果:可显示时间的时,分。并由LED闪烁作为秒计数;时间可调,按外部中断键时间暂停,进入时间,此时可以矩阵键盘输入时间,输入完后再按一下外部中断键,时间按照设置的值接着走。2.2电子钟说明及总体方案介绍本次设计电子钟系统功能简单,用单片机的最小系统就
6、能得以实现。而单片机的最小系统设计中实际上最重要的就是对键盘/显示器接口电路的设计,由于系统功能不同所以要求就不同,接口设计也就不同。对一个键盘/显示器接口设计应从整个系统出发,综合考虑软、硬件特点。下面是在设计前对各种设计方案的考虑:方案一:采用实时时钟芯片实时时钟芯片具备时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据进行显示,因此计时功能的实现无需占用CPU的时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还
7、带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。由于功能完善,精度高,软件程序设计相对简单,且计时不占用CPU时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。方案二: 软件控制。利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术MCS-51汇编语言程序设计方法,因此,本系统设计采用此种软件控制方法来实现计时。而由于ATMEL公司的AT89S51单片机是低功耗的具有4KB在线可编程Flash存储器的单片机。它与通用80C51系列单片机的指令系和
8、引脚兼容。片内的Flash可允许在线重新编程,也可使用通用非易失性存储器编程。它将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能价格比的微控制器。它的功能强大,而且也较容易购买,故本设计中所选的单片机为AT89S51单片机。 2.3 多功能电子钟的工作原理本设计中的电子钟的核心是AT89S51单片机,其内部带有4KB在线可编程Flash存储器的单片机,无须外扩程序存储器,硬件电路主要由四部分构成:时钟电路,复位电路,键盘以及显示电路。时钟电路是电子表硬件电路的核心,没有时钟电路,电子表将无法正常工作计时。本系统时钟电路采用的晶振的频率为12MHz,定时
9、器采用的是定时器0工作在方式1定时,用于实现时、分、秒的计时,定时时间为62.5ms。复位电路可使电子表恢复到初始状态。键盘可对电子表进行开启、停止,还能实现时、分、秒的显示及设定等操作。显示电路由两个共阳级4位一体LED数码管构成,它的段控端和位控端通过74LS244及其S8550PNP型号三极管与AT89S51单片机的I/O口相连,显示器可使电子表显示出时、分。 多功能电子表的计时原理为:上电后,电子表显示P.提示符,按下A键后,电子表从00:00:00开始计时。当定时器0的定时时间满62.5ms后,定时器0溢出一次,溢出满16次后,电子表的秒加1,满60秒后,分加1,满60分后,时加1,
10、满24时后,电子表重新从00:00开始计时。2.4系统原理框图小时显示 分显示 秒 显示 二十四进制计数器六十进制计数器六十进制计数器 开始12MHz时钟源百分频 复位 图(1)原理框图 3 软件设计3.1 概述系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;(3
11、)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性。3.2 主模块的设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。本系统的主模块的程序框图如下图2所示: 3.3 系统软件设计流程图 这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。 主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以
12、显示时间。图4-1 主程序流程图按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。 图4-2 按键处理流程图 定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。 图4-3 定时器中断流程图时间显示是先秒个位计算显示,然后是秒十位计算显示,再是分个位计算显示,再然后是分十位显示,再就是时个位
13、计算显示,最后是时十位显示。 图4-4 时间显示流程图 3.4闹铃功能的实现闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。译码显示电路将“分”、“时”计数器的输出送到七段显示译码驱动器译码驱动,通过个七段LED显示器显示出来。闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。校时电路是直接加一个脉冲信号到时
14、计数器或者分计数器或者时计数器来对“分”、“时”显示数字进行校对调整。其流程图如下所示:图5.1 图5.2 在显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。分,秒显示则是用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数。由于定义了定时闹钟组,在这里采用中断组次,每中断一次比较一组闹钟,避免了一次比较中断时间过长,影响下次中断时间。显示之后查询闹铃标志位是否与前面所置数相等,若相等则响铃。 为了避
15、免响铃影响显示,采用了每显示几屏以后在显示程序中出现脉冲,驱动喇叭,不会影响显示。之后用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。4 Proteus软件仿真 性能及误差分析 该电子钟有4个按键: K1, K2,K3和K4键。按K1键进行设定时间并且切换小时和分钟,K2键进行定时闹钟,K3键设计为加,K4键设计为减。在一天的累计误差约为0. 1秒。该电子钟的误差主要由晶振自身的误差所造成,晶振的误差约为0. 00010. 000001。另外在中断的过程中,只会在
16、第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。仿真部分采用protus 6 professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。首先打开protus 6 professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择wave6000已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课设的要求再修改程序,再运行查,直到满足要求。 5课程设计体会 通过本次的课程设计,使我们对课本的知识进一步系统化,找到了自己的不足,在本次设计当中应用比较实际,涉及的知识面不是很广,查阅了相关的资料,才完成
17、了这份课程设计。由于知识积累有限、掌握不牢固,所以设计的结果不很理想,但是此次电子的课程设计使我懂得了许多书本上学不到的知识,经过这次的独自学习和思考感觉到自己知识的匮乏,有很多的东西没学透。对以前的知识掌握不牢固使这次课程设计很被动,拿到电路图后不知道该从何入手,怎样分析。经过上网搜索、查阅资料和课本,使得一部分掌握不牢的知识又复习了一遍更加深了掌握过的知识,所以在这次设计中学到了许多。在这次课程设计,使我更深刻的认识到理论与实践的辨证关系,虽然我对课本上的知识掌握的不错,可到用的时候却不知所措,课程设计拉近了理论与实践的距离。另外,在做电路图时候,我用到了protues7.7版本对定时闹钟
18、进行了仿真。 通过这次学习,让我们对各种电路都有了大概的了解,所以说,纸上得来终觉浅,绝知此事要躬行,对于这些电路还是应该自己动手设计操作才会有深刻理解和达到学习的目的参考文献1. 曹巧媛,单片机原理及应用M,北京:电子工业出版社,1997.7。2. 康华光主编,数字电子技术,第四版,北京:高等教育出版社3. 阎有运主编,电子技术实践,徐州:中国矿业大学出版社4. 周润景,张丽娜,刘印群. PROTEUS入门实用教程,北京:机械工业出版社5. 陆应华,王照平,王理. 电子系统设计教程, 北京:国防工业出版社附1:源程序代码#include#define uint unsigned int#de
19、fine uchar unsigned charuchar code tab10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;sbit L1=P23;sbit L2=P22;sbit L3=P21;sbit L4=P20;sbit LED=P17; / 二极管 秒闪烁sbit key1=P10; / 时钟设置sbit key2=P11; / 闹钟设置sbit key3=P12; / +1sbit key4=P13; / -1sbit beep=P25;uchar m,n,s0,f0,shi,fen,miao,aa,b,c; / b 设置时
20、钟、闹钟变量 1 时钟 2闹钟 c 蜂鸣器鸣叫次数 void key();void display();void init();void delay(uint);void main() init(); while(1) display(); key(); void display() if(b=1) P0=tabfen/10; L3=0; delay(2); L3=1; P0=0x00; P0=tabfen%10; L4=0; delay(2); L4=1; P0=0x00; P0=tabshi/10; L1=0; delay(2); L1=1; P0=0x00; P0=tabshi%10;
21、L2=0; delay(2); L2=1; P0=0x00; if(b=2) /设置闹钟显示函数 s0 闹钟小时 f0 闹钟分钟 P0=0x00; P0=tabs0/10; L1=0; delay(2); L1=1; P0=0x00; P0=tabs0%10; L2=0; delay(2); L2=1; P0=0x00; P0=tabf0/10; L3=0; delay(2); L3=1; P0=0x00; P0=tabf0%10; L4=0; delay(2); L4=1; void init() miao=0; fen=0; shi=0; TMOD=0x01; TH0=(65536-500
22、00)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; b=1;void key() if(key1=0) delay(20); if(key1=0) if(n=0) m+; TR0=0; if(m=3) m=0; TR0=1; while(key1=0); if(key2=0) delay(20); if(key2=0) if(m=0) n+; b=2; if(n=3) n=0; b=1; while(key2=0); if(key3=0) delay(20); if(key3=0) if(m=1) shi+; if(shi=24) shi=0
23、; if(m=2) fen+; if(fen=60) fen=0; if(n=1) s0+; if(s0=24) s0=0; if(n=2) f0+; if(f0=60) f0=0; while(key3=0); if(key4=0) delay(20); if(key4=0) if(m=1) shi-; if(shi=255) shi=23; if(m=2) fen-; if(fen=255) fen=59; if(n=1) s0-; if(s0=255) s0=23; if(n=2) f0-; if(f0=255) f0=59; while(key4=0); void timer0() i
24、nterrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; aa+; beep=1; if(aa=10) LED=0; if(aa=20) aa=0; LED=1; miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+; if(shi=24) shi=0; if(shi=s0) if(fen=f0) if(aa=5) beep=0; if(aa=10) beep=1; if(aa=15) beep=0; if(aa=0) beep=1; void delay(uint a) uchar x,y; uint z; for(z=a;z0;z-) for(x=2;x0;x-) for(y=226;y0;y-); 附2:系统原理图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1