您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机完整电子时钟设计报告
目录一.作品简介……………………………………………………………………………………2二.单片机系统原理图及工作原理描述………………………………………………………2三.设计过程中碰到的问题及解决方法………………………………………………………4四.测试数据及误差分析………………………………………………………………………4五.总结…………………………………………………………………………………………5六.程序模块框图………………………………………………………………………………5七.程序清单……………………………………………………………………………………72单片机的个性化电子钟设计报告一.作品简介该作品是个性化电子钟设计,技术上主要用单片机(AT89S52)主控,4位LED数码显示,分别显示“小时:分钟”。该作品主要用于24小时计时显示,能整时报时,能作为秒表使用,能定时闹铃1分钟。使用方法:开机后显示日期,学号,时钟在00:00:00起开始计时。(1)长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。(2)按P3.3进入设定闹时状态:12:00:,可进行分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟结束.在闹铃时可按P3.2停闹,不按闹铃1分钟。(3)按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。二.单片机系统原理图及工作原理描述(1)总原理图如原理图所示,硬件系统主要由单片机最小应用系统、LED数码管显示模块组成。3(2)各个模块说明1.单片机最小系统AT89S52是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2、显示模块在实际应用中,用户很少直接设计LCD显示器驱动接口,一般是直接使用专用的LCD显示驱动器和LCD显示模块。其中,LCD显示模块LCM(LiquidCrystalDisplayModule)是把LCD显示器、背景光源、线路板和驱动集成电路等部件构成一个整体,作为一个独立的部件使用,具有功能较强、易于控制、接口简单等优点,在单片机系统中应用较多。其内部结构如图2-8所示。LCD显示模块只留一个接口与外部通信。显示模块通过这个接口接收显示命令和数据,并按指令和数据的要求进行显示。外部电路通过这个接口读出显示模块的工作状态和显示数据。LCD显示模块一般带有内部显示RAM和字符发生器,只要输入ASCII码就可以进行显示。LCD显示模块按功能显示可分为:LCD段式显示模块、LCD字符型显示模块、LCD图形显示块三类。本系统利用4位LED数码管显示时间,共阳极结构。LED数码管由7段发光二极管组成,当要显示某个数字时只要将数字所对应的引脚送入低电平。3.按键模式本设计中主要有三个控制按键,按键功能为:P3.2为调时间模式,长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。按P3.3进入设定闹时状态:12:00:,可进行分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟结束.在闹铃时可按P3.2停闹,不按闹铃1分钟。(3)按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。图1.AT98S52正面图图3.按键引脚图44.元件器材元器件型号/大小单片机AT89S52译码器74LS164七段数码显示管一位共阳极LED发光二极管蜂鸣器二极管1N4007、1N4148电阻1K、10K、排阻电容10uF、30pF、100uF、220uF晶振12M开关按键USB口其它芯片底槽、导线三.设计过程中碰到的问题及解决方法硬件方面:(1)焊接三极管时,由于三个引脚间的距离太近,自己过于急躁,弄了很多锡在上面,造成短路;最后用吸锡器弄干净,重新焊接,有些锡粘在板上,必须用小刀把两引脚间的锡削掉。这里花费了大量时间。(2)LED显示器有一排显示不出来,查明是接口虚焊问题。重新补焊接显示器接口。软件方面:(1)程序编写开始有点混乱,最后重新构思,确定各个按键功能,再根据各个功能编写,这样一步步来,思路比较清晰。(2)程序编写时感觉最难的是按键切换,开始感觉无法下手。最后找了一些按键方面的程序,慢慢看,慢慢了解;然后根据自己设计的特点编写程序。(3)调试时感觉按键声太吵,影响到宿舍其他人,觉得作用不大,就去掉。四.测试数据及误差分析(1)测试数据如下:实际时间显示时间校准前12:17:0012:17:00校准后20:52:5320:52:50测试总时间长度是8:35:53,设计的时钟误差比实际时间慢3秒。(2)误差分析误差由元件的精确度和焊接导致的连接不稳定,以及软件算法上的缺陷而产生。要消除这些误差,首先必须提高焊接电工技术,其次可以通过了解各元器件的特点,针对这些特点编写程序,用软件算法来克服这些误差。本次设计时钟测试时比实际时间慢3秒,可以通5过降低T0对机器周期计数时间来提高它的准确率。五.总结数字电子钟所有功能都以实现,可以通过按键进行模式切换,并对其数值进行调节。在这基础上还添加了省电模式,开机显示时间和学号,还有秒表,闹铃功能。存在不足是设计的电子钟存在一定的误差,不能在实际中运用。通过本次课程设计,对单片机AT89S52有更深入的了解,同时在对单片机进行软件编程的过程中,学会了单片机编程的流程控制,熟悉了单片机显示按键系统的编程实现。六.程序模块框图硬件框图:时钟调整模式:AT89S52蜂鸣器LDE显示器DOWNLOADYNNNYY开始系统初始化是否按下设置键时间调整模式是否退出调整模式是否跟闹钟时间一致启动闹铃显示时间6秒表模式:YYYYNNNN开始是否按功能切换键系统初始化是否按秒表暂停键是否按秒表启动键是否按秒表清零键切换秒表秒表计时暂停秒表显示时间7整点报时模式:七.程序清单;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AT89S52时钟程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;******************************************************************************;定时器T0、T1溢出周期为50MS,T0为秒计数用,T1为调整时闪烁及秒表定时用,;P3.2、P3.3、P3.4为调整按钮,P0口为字符输出口,P2为扫描口,P1.2为蜂呜器口,采;用共阳显示管。;50H-55H为闹钟定时单元,60H-65H为秒表计时单元,72H-75H为显示时间单元,76H-79H;为分时计时单元。;03H标志=0时钟闪烁,=1秒表,05H=0,不闹铃,=1要闹铃.07H每秒改变一次,;用作间隔呜叫.;******************************************************************************DISPFIRSTEQU30H;显示首址存放单元BELLEQUP1.2CONBSEQU2FH;存放报时次数CLOCKEQU2DH;;****************************************YYNN开始显示时间分钟是否为00蜂鸣器响一次K=0?退出8;;中断入口程序;;;****************************************;ORG0000H;程序执行开始地址LJMPSTART;跳到标号START执行ORG0003H;外中断0中断程序入口RETI;外中断0中断返回ORG000BH;定时器T0中断程序入口LJMPINTT0;跳至INTTO执行ORG0013H;外中断1中断程序入口RETI;外中断1中断返回ORG001BH;定时器T1中断程序入口LJMPINTT1;跳至INTT1执行ORG0023H;串行中断程序入口地址RETI;串行中断程序返回;;****************************************;;以下程序开始;;;****************************************;整点报时用QQQQ:MOVA,#10HMOVB,79HMULABADDA,78HMOVCONBS,ABSLOOP:LCALLDS21MSLCALLDL1SLCALLDL1SLCALLDL1SDJNZCONBS,BSLOOPCLR08H;清整点报时标志AJMPSTART1;;****************************************;;主程序开始;;;****************************************;START:LCALLST;上电显示年月日及班级学号MOVR0,#00H;清00H-7FH内存单元MOVR7,#80H;CLEARDISP:MOV@R0,#00H;INCR0;DJNZR7,CLEARDISP;MOV20H,#00H;清20H(标志用)9MOV55H,#1MOV54H,#2MOV7AH,#0AH;放入熄灭符数据MOVTMOD,#11H;设T0、T1为16位定时器MOVTL0,#0B0H;50MS定时初值(T0计时用)MOVTH0,#3CH;50MS定时初值MOVTL1,#0B0H;50MS定时初值(T1闪烁定时用)MOVTH1,#3CH;50MS定时初值SETBEA;总中断开放SETBET0;允许T0中断SETBTR0;开启T0定时器MOVR4,#14H;1秒定时用计数值(50MS×20)MOVDISPFIRST,#72H;显示单元为72-75H;以下主程序循环START1:LCALLDISPLAY;调用显示子程序JNBP3.2,SETMM1;P3.2口为0时转时间调整程序JNBP3.3,TSFUN;定时闹铃设定JNBP3.4,FUNPT;秒表功能(STOP,RUN,CLR)JB08H,QQQQAJMPSTART1;P3.2口为1时跳回START1FUNPT:LJMPFUNPTTSTART12:LJMPSTART1;以下闹铃时间设定程序,按P3.3进入设定TSFUN:LCALLDS20MSJBP3.3,START1;WAIT113:JNBP3.3,WAIT113;等待键释放JB05H,CLOSESP;闹铃已开的话,关闹铃MOVDISPFIRST,#52H;进入闹铃设定程序,显示52-55H闹钟定时单元;DSWAIT:SETBEALCALLDISPLAYJNBP3.4,DSFINC;分加1JNBP3.2,DSDEC;分减1JNBP3.3,DSSFU;进入时调整AJMPDSWAIT;CLOSESP:CLR05H;关闹铃标志CLRBELLAJMPSTART1DSSFU:LCALLDS20MS;消抖JBP3.3,DSWAITLJMPDSSFUNN;进入时调整10;SETMM1:LJMPSETMM;转到时间调整程序SETMM;DSFINC:LCALLDS20MS;消抖JBP3.4,DSWAITDSWAIT12:LCALLDISPLAY;等键释
本文标题:单片机完整电子时钟设计报告
链接地址:https://www.777doc.com/doc-6030060 .html