基于DS1302的电子时钟设计6.doc
基于DS1302的电子时钟设计6目录摘要:11 引言:21.1 功能电子时钟研究的背景和意义21.2 电子时钟的功能22 基于单片机的电子时钟硬件选择分析22。1 微处理器选择22. 2 DS1302简介42。 3 DS1302引脚说明43 电子时钟硬件电路设计53.1 时钟电路设计63。2 显示器的选择63.3 按键调时电路64 proteus软件仿真及调试74.1 系统工作流程图74。2 电路板的仿真84。3 软件调试85 源程序8总结16参考文献17附录18基于DS1302的电子时钟设计 摘要:电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C52芯片作为核心,LCD1602显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能.这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。关键词:电子时钟;多功能;AT89C52;时钟日历芯11 引言: 时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。从古代的水漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现出了时间的重要,同时也代表着科技的进步.致力于计时器的研究和充分发挥时钟的作用,将有着重要的意义。1.1 功能电子时钟研究的背景和意义 20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂容易使人忘记当前的时间.然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦.平时我们要求上班准时,约会或召开会议必然要提及时间;火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的. 电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、0按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1。2 电子时钟的功能 电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时间精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。当今市场上的电子时钟品类繁多,外形小巧别致.也有体型较大的,诸如公共场所的大型电子报时器等。电子时钟首先是数字化了的时间显示或报时器,在此基础上,人们可以根据不同场合的要求,在时钟上加置其他功能,比如定时闹铃,万年历,环境温度、湿度检测,环境空气质量检测,USB扩展口功能等。本设计电子时钟主要功能为:1.具有时间显示和手动校对功能,24小时制;2。具有年、月、日显示和手动校对功能;2 基于单片机的电子时钟硬件选择分析考虑单片机货源充足、价格低廉,可软硬件结合使用,能够较方便的实现系统的多功能性,故采用单片机作为本设计的硬件基础。2。1 微处理器选择 目前在单片机系统中,应用比较广泛的微处理器芯片主要为AT89系列单片机.该系列单片机均采用标准MCS52内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛.例如比较常用的AT89C52单片机,带有2KB Flash可编程、可擦除只读存储器(E2PROM)的低压、高性能8位CMOS微型计算机。拥有15条可编程I/O引脚,2个16位定时器/计数器,6个中断源,可编程串行UART通道,并能直接驱动LED输出.仅仅是为了完成时钟设计或者是环境温度采集设计,应用AT89C52单片机完全可以实现。但是将两种功能结合在一片单片机上,就需要更多的I/O引脚,故本设计采用具有32根I/O引脚的AT89C52单片机。AT89C52单片机是一款低功耗,低电压,高性能CMOS 8位单片机,片内含4KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器(EPROM),器件采用CMOS工艺和ATMEI公司的高密度、非易失性存储器(NURAM)技术制造,其输出引脚和指令系统都与MCS52兼容。片内的FLASH存储器允许在系统内可改编程序或用常规的非易失性存储器编程器来编程。因此,AT89C52是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域6。AT89C52具有以下主要性能:1. 4KB可改编程序Flash存储器;2. 全静态工作:024Hz;3. 128×8字节内部RAM;4. 32个外部双向输入/输出(I/O)口;5. 6个中断优先级; 2个16位可编程定时计数器;6. 可编程串行通道;7. 片内时钟振荡器。此外,AT89C52是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式空闲方式(Idle Mode)和掉电方式(Power Down Mode)。在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内RAM中的内容,直到下一次硬件复位为止。图2-1 AT89C52引脚图AT89C52为适应不同的产品需求,采用PDIP、TQFP、PLCC三种封装形式,本系统采用双列直插PDIP封装形式。2. 2 DS1302简介 DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2。55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力.有主电源和备份电源双引脚,而且备份电源可由大容量电容(1F)来替代.需要强调的是,DS1302需要使用32。768KHz的晶振。2。 3 DS1302引脚说明图22 DS1302芯片引脚图其的引脚功能参照表21。表2-1 DS1302引脚功能说明引脚号名称功能1VCC1备份电源输入2X132。768KHz晶振输入3X232。768KHz晶振输出4GND地5RST控制移位寄存器/复位6I/O数据输入/输出7SCLK串行时钟8VCC2主电源输入3 电子时钟硬件电路设计 电子闹钟至少要包括秒信号发生器、时间显示电路、按键电路、供电电源等几部分。硬件电路框图参照图3-1。该系统使用AT89C52单片机作为核心,通过读取时钟日历芯片DS1302数据,完成此电子时钟的主要功能-时钟。DS1302具有自身计时的功能,但是自身却没法显示并且调整时间,这时就不可避免地要使用到单片机AT89C52,它可以作为一个桥梁,架接液晶显示器和DS1302,并且利用单片机的输入/输出端口可以实现调整时间的功能。利用单片机AT89C52实现数据的显示和调整是整个系统的关键所在,在整个系统中,使用单片机的P0口作为液晶显示屏的显示端口,液晶显示屏所显示的数据全都通过P0口发送 ,P1口用作调整按键的电路连接接口,这样单片机可以较好地完成时间的显示与调整。DS1302电子时钟总体设计方案图如下图所示。P1端口按键调整电路单片机DS1302电子时钟P0端口1602显示器图3-1 多功能电子时钟硬件系统框图键盘是为了完成时钟/日历的校对和日历/时钟的显示功能。整个电路使用了两种电源,+5V电源将为整个电路供电。而+3V电源仅作为DS1302的备用电源。当+5V电源被切断后,DS1302启用+3V电源,可以保持DS1302继续工作。当+5V电源恢复供电,LCD1602依旧显示当前时间,而不会因为断电使系统复位到初始化时间,避免了重新校时的麻烦。3。1 时钟电路设计 系统时钟应用了实时时钟日历芯片DS1302,其连接如图3-2。该硬件电路设计简单,抗干扰能力强.如图,AT89C52单片机P2.5直接接DS1302的RST端,上电后,AT89C52的P2.5脚自动输出高电平。P2。6作为串行时钟接口,P2。7作为时钟数据的I/O。DS1302采用双电源供电,平时由+5V电源供电,当+5V掉电之后,由图中BT1(+3V备用电池)供电.特别需要注意X1和X2两端连接的晶振Y1,该晶振频率为32。768KHz。图32 系统时钟电路3.2 显示器的选择此次设计需要显示东西比较多,如果选用数码管来显示,则需要数十个,这样就会增加成本,而且接线不方便,不符合设计的初衷。LCD1602具有微功耗、体积小、显示内容丰富、超薄轻巧,对比度可调、内含复位电路、提供各种控制命令等特点,完全满足本次设计的需要,因此,选择LCD1602作为显示器进行使用。3。3 按键调时电路 按键调时电路主要的作用是校正时间,校正日历和记录周的次数,它由8个按键构成:其中S7是负责切换按键调时电路的加减,若S7没有被按下,日历方面:年加一(S0),月加一(S2),日加一(S3);时间方面:时加一(S4),分加一(S5),秒加一(S6);周加一(S1).若S7被按下,则恰好相反,按键功能全部变为减一。按键调时电路如图3-3所示。图3-3 按键调时电路4 proteus软件仿真及调试由于单片机是可编程的控制器, 故需要采用C语言对单片机进行程序的编写。主程序主要由DS1302程序、按键调整程序及1602液晶屏程序组成4.1 系统工作流程图图4-1 系统工作流程图4。2 电路板的仿真 利用keil软件编写源程序.在protues中画好其电路图如下图4-2所示:4.3 软件调试 在硬件调试完毕的基础上,需要进一步完善程序,也就是进入软件调试阶段.在本设计中,软件调试主要分两大部分:实时时钟日历子程序调试、按键子程序调试。将这两部分调试成功,那么整个设计的软件部分也就基本完成了。图4-2 数字钟仿真图5 源程序include <reg52。h>include <intrins.h>#define uchar unsigned chardefine uint unsigned int#define out P0void chaxun_mangl(void);void xie_mingl(uchar com);void xie_shuj(uchar dat);void LCD_initial(void);void string(uchar ad,uchar s);void lcd_test(void);void delay(uint);sbit rs=P20;sbit rw=P21;sbit en=P22;sbit rst=P25;sbit sclk=P26;sbit io=P27;sbit bit7=ACC7;sbit bit0=ACC0;void input(uchar);uchar output(void);void wr1302(uchar,uchar);uchar re1302(uchar);void set1302(uchar p);void get1302(uchar curtime) ;void display(void);void xianshi_xuehao();uchar cd(uchar a);uchar cb(uchar a);uchar code clock7=0x55,0x59,0x23,0x16,0x05,0x07,0x17;uchar data dis114=”TFG2014211019”; uchar data dis214="WXF2014211020”;uchar time7;void main(void)LCD_initial(); xianshi_xuehao();delay(1500);xie_mingl(0x01);set1302(clock); IT0=1,EX0=1,EA=1;while(1)get1302(time); display();void xianshi_xuehao() uchar i; xie_mingl(0x80); for(i=0;i<13;i+) xie_shuj(dis1i); xie_mingl(0xc0); for(i=0;i<13;i+) xie_shuj(dis2i); void input(uchar date)uchar i;ACC=date;for(i=8; i0; i-)io=bit0;sclk=1;sclk=0;ACC=ACC>1;uchar output(void)uchar i;for(i=8; i0; i)ACC=ACC>1;bit7=io;sclk=1;sclk=0; return(ACC);void wr1302(uchar add,uchar date) rst=0; sclk=0; rst=1; input(add); input(date); sclk=1; rst=0; uchar re1302(uchar add) uchar date; rst=0; sclk=0; rst=1; input(add); date=output(); sclk=1; rst=0; return(date); void set1302(uchar p) uchar i; uchar add=0x80; wr1302(0x8e,0x00); for(i=7;i>0;i-) wr1302(add,p); p+; add+=2; wr1302(0x8e,0x00); void get1302(uchar curtime) uchar i; uchar add=0x81; for (i=0;i<8;i+) curtimei=re1302(add); add+=2; void delay(uint j)uchar i=250;for(;j0;j-)while(-i);i=249;while(-i);i=250;void chaxun_mangl(void)uchar dt;dodt=0xff;en=0;rs=0;rw=1;en=1;dt=out;while(dt0x80);en=0;void xie_mingl(uchar com)chaxun_mangl();en=0;rs=0;rw=0;out=com;en=1;_nop_();en=0;delay(10);void xie_shuj(uchar dat)chaxun_mangl();en=0;rs=1;rw=0;out=dat;en=1;_nop_();en=0;delay(10);void LCD_initial(void)delay(1);xie_mingl(0x30);xie_mingl(0x38); xie_mingl(0x0C); xie_mingl(0x06); xie_mingl(0x01);delay(10);void display(void)xie_mingl(0x84); xie_shuj(time6/16+0x30); xie_shuj(time616+0x30);xie_shuj(0x2D); xie_mingl(0x87); xie_shuj(time4/16+0x30);xie_shuj(time416+0x30);xie_shuj(0x2D); xie_mingl(0x8a); xie_shuj(time3/16+0x30);xie_shuj(time3%16+0x30);xie_mingl(0xc1); xie_shuj(time516+0x30);xie_mingl(0xc4); xie_shuj(time2/16+0x30);xie_shuj(time2%16+0x30);xie_shuj(0x2D); xie_mingl(0xc7);xie_shuj(time1/16+0x30);xie_shuj(time1%16+0x30);xie_shuj(0x2D); xie_mingl(0xca);xie_shuj(time0/16+0x30);xie_shuj(time0%16+0x30);总结首先,这次设计让我们更加了解了单片机及其运用,让我们受益匪浅,在这次设计中,我们想挑战一下自己,由于这是第一次做具有多功能的电子时钟,这对我们来说还是有难度的,但是我相信我们一定会克服这个困难的,因为我坚信只有给自己真正的压力,自己才会获得真正的知识!通过这次单片机课程设计,不仅对我们的动手能力有进一步的提高,而且还对我们的性格成长上也产生了很大的影响:设计操作量大,对我们的习惯和技能要求高,对我们的素质发展有着相当重要的作用,要在操作前应该认真学习理论知识,以便更好地指导实践,之后应该继续思考,把理论与实践更好地结合起来,凡事不能操之过急,静下心来,认真的思考,谨慎的处理好动手与动脑的有效结合。这种改变无疑让我们在以后的生活中能获取更多的益处与经验。 “读万卷书,不如行万里路”,现在我终于明白这句从古至今都在流传的话了,一句名言存在自有它存在的道理。我们会谨记此次设计带给我们的启发,我们一定会认真的去思,仔细的去体会此次设计的真正意义参考文献1倪晓军 章韵。单片机原理与接口技术教程M。北京:清华大学出版社,2009.2陈忠平。基于Proteus的51系列单片机设计与仿真(第三版)M。北京:电子工业出版社.2016。3谭浩强.C语言程序设计(第四版)M.北京:清华大学出版社.2011.4陈中频 曹巧媛等。单片机原理及接口(第二版)(M).北京:清华大学出版社.2011.5张靖武 周灵彬.单片机系统的Proteus设计与仿真M.北京:电子工业出版社.20076张毅刚.单片机原理及应用M。北京:高等教育出版社。2010。7吴戈.案例学单片机C语言开发M。北京:人民邮电出版社.2008。8王东峰.单片机C语言应用100例M。北京。电子工业出版社。2009.9朱清慧。Proteus教程M.北京:清华大学出版社。2008.10王幸之。AT89系列单片机原理与接口技术M。北京:北京航空航天大学出版社.2004。附录20