基于单片机的数字钟的设计.doc
《基于单片机的数字钟的设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的数字钟的设计.doc(26页珍藏版)》请在沃文网上搜索。
1、单片机课程设计 摘 要文章以数字电子钟为研究对象,介绍了数据采集系统的设计过程与仿真的实现方法。详细介绍了程序以及单片机电路的设计,软件流程及汇编语言源程序的设计。另外,在Proteus环境下结合KeiluVision 2将硬件相结合,成功的实现了系统的仿真调试,并可在线演示。该方法可以提高系统的开发效率,缩短周期和降低成本。为单片机系统的开发提供了手段。本设计实现了时间的修改功能、年、月、日和星期的显示功能。并且通过对比实际的时钟,查找出误差的来源,确定了调整误差的方法,尽可能的减少误差,使得系统可以达到实际数字钟的允许误差范围内。关键词:单片机 AT89S52芯片 电子时钟不要删除行尾的分
2、节符,此行不会被打印- I -目 录 摘 要 .I第1章 绪论31.1 研究意义31.2 应用前景3第2章 数字中的硬件设计42.1 最小系统的设计52.2 数字钟电路设计5第3章 数字钟的软件设计73.1 系统软件设计内容73.2 系统程序的设计73.2.1 主程序73.2.2 时钟显示子程序83.2.3 LED显示子程序93.2.4 定时器T0中断服务程序93.2.5 延时子程序11第4章 仿真结果与调试124.1 仿真结果124.2 实验结果15总结 16致谢 .17参考文献 18附录 19不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个目录”。打印前,不要
3、忘记把上面“Abstract”这一行后加一空行- II -第1章 绪论1.1 研究意义实现的功能:该电路可使数据采集系统平时处于关闭状态,当定时开启时,系统上电,进行数据采集;当一次工作结束时,关闭开关,系统断电。数字显示的计时装置,广泛应用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集电路的发展和石英晶体振荡器的广泛应用。使得数字种的精度远远超过老式钟表。钟表的数字化给人们生产生活带来了极大的方便。而且大大扩展了钟表原先的报时功能。因此研究数字钟及扩大其应用,有着非常现实的意义。1.2 应用前景数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式
4、时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,节省了电能。因此得到了广泛的使用。数字钟是一种典型的数字电路,包括了组合逻辑电路和时序电路。通过设计加深对刚刚学习了的数字电子技术的认识。我们此次设计数字钟是为了了解数字钟的原理,加深对我们所学知识的了解和认识。通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。且由于数字钟包括组合逻辑电路和时叙电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法,以及各种电路之间怎样联系起来的。第2章 数字钟的硬件设计单片机采用易购的AT89S52系列,秒表/时钟计时器的硬件电路采用AT8
5、9S52单片机,最小化应用设计;采用共阳七段LED显示器,P0口输出段码数据,P3.0P3.7口作列扫描输出,P1.0,P1.1,P1.2口接三个按钮开关,用以调时功能设置,P1.6口接温度传感器用于温度的测量。为了提供共阴LED数码管的驱动电压,用74LS244作电源驱动输出。采用12MHz晶振,有利于提高通信波特率的准确性。为了提高驱动能力在P0口,P3口和数码管之间要接上74LS244和2803芯片,实习中我开始没有接,发现数码管很暗。为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。由于静态显示法需要数据锁存器等硬件,接口复杂一些。考虑时钟显示只有4位,且系统没有其他复杂
6、的处理任务,所以决定采用动态扫描法实现LED的显示。系统显示器由4位LED数码管组成,分别显示时间值的小时和分,以24h(小时)计时方式。系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。该信号将被送到“时计数器”也采用60进制计数器,每累计到60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计数器,可实现对一天,24小时的累计。显示电路将“时”、“分”、“秒”、计数器的输出,通过六个七段LED显示器显示
7、出来。校时是由P1口控制,由内部设定程序扫描控制。这样单片机可具有足够的空余硬件资源实现其它的扩充功能。下面是总体设计框图:单片机显示电源按键图1系统方框图2.1 最小系统的设计本次实习老师首先向我们讲解了单片机的原理以及KAIL和Protuse软件的使用方法。为了让我们具体体会这些软件的使用方法,我们先设计了一个最小系统,具体电路连线图如下:图2 电路连线图2.2 数字钟电路设计1 时钟芯片时钟芯片采用ULN2803,该芯片可以进行时分秒的计数,可编程接口,还具有报警功能和掉电保存功能,并且可以对其方便的进行程序控制。它通过串行方式与单片机进行数据传送,向单片机提供包括秒、分、时、日、月、年
8、等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整:还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。2 LED显示电路于AT89C51 单片机I/ O 口有限,采用可编程的并行I/ O 口芯片8155 进行扩展, 由于LED具有显示清晰、亮度高、使用电压低、寿命长的特点,时间显示电路为了简化硬件线路,降低成本,利用LED显示接口电路实现。3.2.3晶体振荡器电路晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。晶体振荡器电路给数字钟提供一个频率稳定准确的32768z的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字
9、显示的电子钟都使用了晶体振荡器电路3.2.4电源电路部分在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一能量来源,它的设计思路是根据我们以前学过的模电电子技术,要想得到我们所要的+5V输出电压,就需将交流220V的电压经过变压器、整流电路、滤波电路和稳压电路四个部分。3.2.5相关控制电路1按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。2复位电路上电复位:上电复位电路是一种简单的复位电路,只要在RST复位引脚接一个电
10、容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。第3章 数字钟的软件设计3.1 系统软件设计内容本设计的软件程序包括主程序、中断子程序、时钟显示子程序以及延时子程序等。在整个系统中,在单片机的30H、31H和32H中存储当前时间的小时、分钟和秒。用LCD显示当前的时间,必须用到分字和合字,因此在33H、34H、35H、36H、37H和38H中存储当前时
11、间的时十位、时个位、分十位、分个位、秒十位和秒个位,方便显示。本设计有由四个轻触按键组成的小键盘,这些按键可以任意改变当前的状态。按功能移位键一次,表示当前要校对小时的十位;按第二次,表示当前校对的是小时的个位;按第三次,则表示校对的是分钟的十位;第四次,表示的校对的是分钟的个位。按下数字“+”键和数字“-”键可在当前校对的数字上相应加上1或者减去1。系统软件采用C语言编写。时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。秒计时是采用中断方式进
12、行溢出次数的累计,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。3.2 系统程序的设计3.2.1 主程序主程序由初始化,显示初值,开始计数,判断,经判断显示分秒,或者再由调值反馈到显示初值,再循环。 初始化显示初值开始计数判断修改值显示秒分调值图4 主程序流程图3.2.2 时钟显示子程序时钟的修改首先要按功能键并停止时间的输出显示,否则系统继续刷新时间则无法修改,所以时间是不输出到L
13、CD的。修改的部分以修改的为准,没有修改的通过中断保护起来。等修改成功后继续显示。#include #include sbit DQ=P16;sbit LED=P17;sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;#define jump_ROM 0xcc#define start 0x44#define read_EEROM 0xbebit flash_flag;/数码管闪烁周期控制0.2秒bit second_flag;/秒周期控制bit minute_flag;/分周期控制unsigned int num;/10毫秒累加一次unsigned char
14、 hours,minutes,seconds;/小时 分钟 秒当前值unsigned int temperature;#define SEG_PORT P0#define BIT_PORT P3unsigned char disp_buf8;code unsigned char codevalue17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00;bit key_operated; /按键已处理过unsigned char start_time,elaps;unsigne
15、d char status; /状态此模块的主要作用是完成24小时的即时显示。3.2.3 LED显示子程序数码管显示的数据存放在内存单元disp_buf0- disp_buf7中。其中 disp_buf 0- disp_buf 1存放时数据,disp_buf 2- disp_buf 3存放分数据,disp_buf 4- disp_buf 5存放秒数据,每一地址单元内均为十进制BCD码。 clock() /时钟运行子程序 if(minute_flag) minute_flag=0;minutes+;if(minutes=60) minutes=0;hours+;if(hours=24)hours
16、=0; disp_buf0=hours/10;disp_buf1=hours%10;disp_buf2=minutes/10;disp_buf3=minutes%10;disp_buf4=seconds/10;disp_buf5=seconds%10;由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应码段存放在ROM表(codevalue17中。显示时,先取出disp_buf 0- disp_buf 7中的某一数据,然后查得对应的显示用码段,并从P0口输出,P3口将对应的数码管选中供电,就能显示该地址单元的数据值。3.2.4 定时器T0中断服务程序 定时器T0用于时间计时。中
17、断进入后,时钟计时累计中断达1秒时,对秒计数单元进行加1操作。在计数单元中采用十进制BCD码计数,满60进位,T0中断服务程序执行流程见下图:T0中断保护现场秒表/时钟加1s处理恢复现场,中断返回加10s处理图5 T0中断服务程序执行流程ISR_Timer0() interrupt 1 /10ms定时中断服务子程序 static unsigned char i=0;unsigned char temp;TH0=-1000/256;TL0=-1000%256;num+;if(num%200=0)flash_flag=1;if(num=1000)num=0;second_flag=1;second
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 设计