基于STC89C52单片机和DS1302时钟芯片定时开关的设计与仿真摘要:本设计介绍一种以STC89C52单片机、DS1302、1602液晶显示为核心,具备调节时间,设置开启时间与关闭时间的定时开关的实现过程。本系统采用C语言编写,其与汇编语言相比具有更好的移植性和可读性,便于修改和增减功能,并通过protues成功仿真。关键词:单片机;定时开关;C语言;Protues中图分类号:TP39文献标识码:A0引言定时开关[1]在人们生活中扮演着重要的角色,给人们的生活带来了很大的方便,早在我国的古代采用滴水方式计时,当水滴到一定量时引发机关报时。随着电子信息的快速发展,如今的电视机,电风扇等电器产品都附带了定时器,但是电子产品附带的定时器只适用于该用电器,并不能扩展使用到其他用电器上。本文所介绍的定时开关目的在于控制主电源,从而适用于能瞬间断电的一切电子产品,不仅能在规定的时间准时断开同时能在设定的时间内准时开启,给人们日常生活带来了极大的方便,如能通过应用此定时开关在上班期间定时煮饭,手机充电在适当时间将电源断开。该定时器具备以下几个特点:1.采用C语言[2]编写程序,与汇编语[3]言相比便于修改和增减功能;2.所才用的芯片STC89C52单片机、1602液晶显示器,DS1302时钟芯片功耗低、可靠性高;3.与机械定时器相比不仅消除了噪声,更加准确,且使用寿命要长;4.采用Protues仿真,方便直观。1系统设计方案以STC89C52[4]单片机为核心,通过DS1302时钟芯片进行时间控制,使用1×4键盘作为数据输入方式,驱动1602显示器提示程序运行过程和开锁的步骤。系统结构如图1。STC89C52单片机键盘电路Ds1302时钟芯片继电器提示电路1602液晶显示器图1系统结构图Figure1ThestructurechartofSystem2系统设计2.1系统硬件组成使用的元器件有:核心芯片STC89C52、时钟芯DS1302、液晶显示1602、继电器、蜂鸣器、1*4键盘[5]、发光二极管和三极管。2.2系统软件设计本系统采用单片机的C语言编写程序对整个系统的硬件进行管控。实现了对DS1302的控制,1602的显示,时间管控。其中时间管控包括:系统时间以及开启与关闭时间的设定,系统时间与开启或关闭时间相同时继电器、蜂鸣器和指示灯工作状态的管控。系统程序流程如图2所示。启动系统初始化数据与启动时间相同?键按下?S4与停止时间相同?继电器闭合继电器断开键按下?S1显示系统时间设定系统时间设定启动与停止时间显示系统时间YesYesYesYesNoNoNoNo图2系统程序流程图Figure2TheflowchartofSystemProcess2.2.1DS1302的控制[6]DS1302的RST、SCLK和I/O分别与单片机的P2.0、P2.1和P2.2相连。单片机与DS1302进行数据交换时,首先要将RST变为高电位,也就是单片机P2.0必须逻辑1。在RST保持为高电位时候,SCLK时钟由低电位变为高电位的上升沿时,数据被写入DS1302中,数据从最低位通过I/O开始写入。在RST保持高电位,SCLK时钟由高电位变为低电位的下降沿时,从DS1302读取数据,数据也是从DS1302的最低位通过I/O读取。DS1302读取数据子程序unsignedcharread(unsignedcharaddr){unsignedcharj,temp,value;CE=0;SCLK=0;CE=1;//发送地址for(j=8;j0;j--){SCLK=0;temp=addr;IO=(bit)(temp&0x01);addr=1;SCLK=1;}//读取数据for(j=8;j0;j--){ACC_7=IO;SCLK=1;ACC=1;SCLK=0;}CE=0;value=ACC;value=value/16*10+value%16;return(value);}2.2.21602的显示[7]通过单片机指令控制1602光标是否闪烁,是否清除原来数据以及显示的具体位置,并不停地对数据显示进行刷新,从而显示了准确的时间,并为系统提供了智能的人机对话模式。2.2.3时间的管控当系统启动时,STC89C52单片机立即从DS1302时钟芯片获取时间,并通过键盘和1602显示器配合完成对当系统时间、启动时间和关闭时间的设定。当系统时间与启动时间相同,从而控制继电器闭合,直到系统时间与关闭时间相同时断开。3系统仿真本文采用具有强大的EDA仿真功能的protues[8]软件进行仿真,仿真图如图2。图3系统仿真图Figure3SimulationdiagramoftheSystem3.1系统介绍系统仿真图中的STC89C52为真个系统的控制核心,将其编写的程序以二进制的形式烧入后,它将按照编写的指令运行。通过P2.0、P2.1和P2.2与右上方的DS1302时钟芯片的联系在一起,从而控制DS1302的执行方式。在STC89C52的控制下,1602液晶显示器能显示当前时间,提示用户修改时间;左下方的继电器能在设定的开启时间闭合,在设定的关闭时间断开;中间的蓝色信号灯在继电器闭合是点亮;四个独立键盘在1602液晶显示器配合下完成系统时间、开启时间和关闭时间的设置;右下方整个模块为系统提示模块,当系统时间与设定的开启或者关闭时间相同时,D1将闪烁3次同时蜂鸣器响3下;D2用于模拟用电器,当继电器闭合时,将会被点亮。3.2系统时间的设置当电源开启时,1602将显示系统初始化时间,按下FUC键后,时间停止走动并且显示秒的数字将会闪烁,此时可以通过ADD和SUB键调节。其中每按下一次ADD键数字将加1,每按下SUB键数字将减1。调节完秒后,再次按下FUC键,闪烁的光标将转移到分钟位置,同样通过调节ADD和SUB键盘调节当前的时间。同样的原理调节小时与日期。当调节星期时候,按下ADD和SUB将按照星期的英文缩写变化显示。调节完星期后在此按下FUN键后,闪烁光标将消除,同时时间开始在调节完毕的基础上开始运行。3.3开启与关闭时间的设置在1602显示器正常显示时间的期间,按下CHOOSE键一次,液晶显示器显示当前设置的开启时间,如图4。按下FUC键后,光标在秒位闪烁,同样通过ADD和SUB键进行调节。再次按下CHOOSE键后,液晶显示器显示当前关闭时间。同样按下FUC键配合ADD与SUB键调节关闭时间。再次按下CHOOSE键,显示器回到系统时间显示界面。当系统时间与设定的启动时间相同时,继电器闭合,蜂鸣器[9]响3声,D1闪烁3次,信号灯变蓝,同时D2被点亮。直到系统时间与设定的关闭时间相同,蜂鸣器再次响3声,D1闪烁3次,信号灯和D2都熄灭。图4液晶显示Figure4liquid-crystaldisplay4结语该智能定时开关系统采用C语言编写以STC89C52和DS1302为核心,具备时间准确,功耗低,增加功能方便;成功通过Protues的仿真,直观展示了系统的运行界面,证明了此设计方案的可行性。参考文献:[1]雷道仲,李书成,罗政球.基于单片机定时开关的设计[J].贵州教育学院报.2005(4):224-225.[2]张天凡.完全手册51单片机C语言开发详解[M].北京:电子工业出版社.2008.[3]王振宇.基于单片机设计的多功能定时器[J].贵州教育学院报.2005(4):79-81[4]刘焕平,李娟.基于51单片机的智能定时控制系统设计[J].石家庄职业技术学院学报.2010(6):26-28.[5]张自聪,金永兴.基于AT89S52的奥运倒计时牌的设计[J]:中国计量学院报.2007(4):305-307.[6]曹晖,彭小军.DS1320的C51编程[J](5):新余高专学报.2001(2):28-29.[7]于志赣,刘国平,张旭斌.液显LCD1602模块的应用[J].机电技术.2009(3):21-23.[8]李娜,刘雅举.Proteus在单片机仿真中的应用[J].现代电子技术.2007(4):181-182.[9]金贵,向国梁.基于C语言STC89C52单片机电子密码锁的设计与仿真[J].现代电子技术.2010(19):176-178.TheelectronicswitchusingSTC89C52MCUandDS1302clockchipAbstract:Thispaperintroducesprocessofatimerswitchthathasthesettingsystemtime,startingtimeandstoppingtimefunctions,basingonthecoreICmicrocontrollerSTC89C52、DS1302andLCD1602.ItisconvenienttomodifyandaddfunctionbyusingClanguageprogram,whichismoretransplantableandreliablecomparewithassemblylanguage.Thesystemhassuccessfullysimulatedbyprotues.Keywords:MCU;timeswitch;Clanguage;protues