《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于内部EEPROM的自动电子定时开关的设计
基于内部EEPROM的自动电子定时开关的设计
来源:微型机与应用2011年第7期
刘凯凯,孙绪保,高 飞,刘伟永
(山东科技大学 信息与电气工程学院,山东 青岛 266510)
摘要: 给出了一种基于STC89C51RC单片机的电子定时开关的设计方案。利用时钟芯片DS1302进行走时,由单片机STC89C51RC的内部EEPROM记忆断开和闭合的时间数据,当定时开关断电重启时,仍能够按已设置的时间间隔运行,避免了重新设置。
Abstract:
Key words :

摘  要: 给出了一种基于STC89C51RC单片机的电子定时开关的设计方案。利用时钟芯片DS1302进行走时,由单片机STC89C51RC的内部EEPROM记忆断开和闭合的时间数据,当定时开关断电重启时,仍能够按已设置的时间间隔运行,避免了重新设置。
关键词: 单片机;EEPROM;多间隔;定时开关

 随着生活节奏的不断加快,人们在生活、工作上的时间分配越来越紧张。而在生活和工作中,人们需要电器在所希望的时间里处于工作状态。因为人们不可能时刻守在电器旁去操作,这时就需要一个自动通电断电的装置,即定时开关。定时开关通常分为机械定时开关和电子定时开关两种。本文基于STC单片机设计了一种电子定时开关。采用了STC89C51RC单片机、DS1302时钟芯片、LED显示、四按键调时,简洁方便。 STC89C51RC特有的内部EEPROM功能结合DS1302时钟芯片,实现了掉电信息不丢失,来电后仍保持用户的设置,避免了掉电后信息丢失的重复操作,自动断电、通电。另外,采用了固态继电器决定插座的通断,在非设定间隔内始终处于断开状态,保证了电路的安全。该设计最多可实现16个定时间隔,可满足大多数用户的使用。
1 硬件电路设计
 本设计的硬件主要包括单片机等主要功能模块芯片、显示和按键电路、电源和控制等电路,原理框图如图1所示。

1.1 主要功能模块元件选择
 单片机采用STC89C51RC,其工作频率范围为0~40 MHz,相当于普通8051的0~80 MHz,实际工作频率可达48 MHz。它有ISP(在系统可编程)/IAP(在应用可编程)应用功能,无需专用编程器/仿真器,可通过串口(P3.0/P3.1)直接下载用户程序。可以利用IAP技术实现 EEPROM功能[2]。

 


时钟走时采用DS1302时钟芯片实现,实时时钟芯片DS1302是一种高性能、低功耗、带RAM的实时时钟电路,具有涓细电流充电能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768 kHz晶振。DS1302的使用使本设计在断电后再次通电时,实现了时钟正常走时。
1.2 显示和按键电路
 显示电路采用共阳极7段式4位数码管显示,P1口为段选码输出端,通过地址锁存器芯片74LS373与数码管相连,P2.4~P2.7管脚为位选码输出端,分别通过三极管与数码管相连。
按键电路设计为独立式键盘,设定为四个,与P2口的P2.0~P2.3相连。按键一端接地,另一端各通过5.1 k?赘的上拉电阻与5 V电源相连。
1.3 控制电路
 控制电路如图2所示。STC89C51RC单片机P3.5管脚送出控制信号。当P3.5输出高电平时,晶体管基极被输入高电平,晶体管饱和导通,集电极变为低电平。因此继电器线圈通电,触点吸合,插座上的电器正常运行。当P3.5输出低电平时,晶体管基极被输入低电平,晶体管截止,继电器线圈断电,触点断开,此时插座上的电器处于断电状态。

2 软件程序设计
2.1 主程序

 程序流程图如图3所示。程序首先清零要使用的RAM相关单元,然后读取STC89C51RC内部EEPROM中的数据到相关RAM单元的30H~6FH,因EEPROM在断电后数据不丢失,就实现了已设定的定时间隔的记忆功能。接着程序读取DS1302中的时间信息到RAM相关单元的78H~7AH。程序调用显示子程序,数码管显示出设定的显示内容。然后调用按键程序,看是否有按键按下。有按键按下就进入按键功能程序,没有就进入下一步判定是否到定时时间。没到定时时间,程序进入主程序循环。如到了定时时间,再判断是定时开启时间还是定时关闭时间,然后进行相关操作,对P3.5进行清0或者置1。操作完成进入主程序循环。

 其中数据存储器RAM中的30H~6FH设定为定时间隔存储数据缓冲区,可储存16个定时开启时间和16个定时关闭时间。这样最多可设置16个时间间隔。30H~3FH和40H~4FH分别为存储定时开启时间的小时和分数据缓冲单元,50H~5FH和60H~6FH分别为存储定时关闭时间的小时和分数据缓冲单元。
数据存储器RAM的78H、79H、7AH分别为秒、分、小时的时间缓冲单元。
2.2 数码管显示程序
 采用4位数码管显示,从左到右依次显示小时十位、小时个位、分十位和分个位,在显示正常时钟时通过第二个数码管的小数点的闪烁表示秒的走动。数码管显示的信息采用8个内存单元70H~77H存放,这8个内存单元称为显示缓冲区,其中秒个位和秒十位、分个位和分十位、时个位和时十位分别由秒数据、分数据和小时数据分拆得到。本设计中数码管显示采用软件译码动态显示[1]。首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段码表中查出所显示信息的字段码,从P1口输出,同时在P2口将对应的位选码输出,选中显示的数码管,就能在相应的数码管上显示缓冲区的内容。
2.3 按键处理程序
 按键设计为四个,分别接STC89C51RC的P2.0、P2.1、P2.2、P2.3口。P2.0为调时位选择按键,P2.1为加1按键,P2.2为调定时间隔数选择按键,P2.3为调定时选择按键。选择RAM的7CH作为调时位选择按键计数单元,7DH作为调定时选择按键计数单元,7EH作为调定时间隔数选择按键计数单元。
 在没有按键按下时,时钟正常走时,数码管显示走时时间,第二个数码管的小数点闪烁。当在未按下P2.3键时,即7DH内数据是0。此时按下P2.0则进入调分状态,小数点停止闪烁,此时按下P2.1可进行加1操作;继续按下P2.0可进行分和小时的调整;最后再按下P2.0键将退出调整状态,小数点闪烁,时钟正常走时。
 首先按下P2.3键时,数码管显示相应的定时开或关时间。按下一次为定时开时间,此时按下P2.2按键可在各定时间隔间调整,这时再通过按键P2.0选择定时开的调小时或分钟的操作,再按下P2.1键可对定时开时间进行加1操作;继续按下P2.3键则进入调定时关时间;最后按P2.3键退出调整定时间隔状态。此操作过程中,时钟后台正常走时,退出此调整状态后,显示时钟,小数点正常闪烁。
2.4 ISP/IAP应用及内部EEPROM应用程序
 IAP即在程序运行时程序存储器可由程序自身进行擦写。STC单片机的ISP功能就是通过IAP技术实现的,单片机在出厂前就已经内置一段小的boot程序。单片机上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到程序存储区。ISP/IAP应用使STC89C51RC系列单片机实现了在线编程。
 利用IAP技术可实现EEPROM,即程序在用户应用程序区时,可以对数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除。STC89C51RC的内部EEPROM共有8个扇区,每个扇区为512字节[2]。本设计仅使用EEPROM功能实现储存定时时间间隔的作用,故选择使用第一扇区的2000H~203FH单元。
2000H~203FH单元分别对应于RAM的30H~6FH单元,每次通过按键程序改变定时时间间隔的时候,先把数据储存于RAM中,然后再储存到EEPROM中。如果定时开关电路不掉电,则程序不从EEPROM中读取数据,仅从RAM中读取相应数据。当定时开关电路掉电后再次来电时,程序先把数据从EEPROM中读取到RAM相应单元,再进入主程序,这样就实现了定时时间间隔的掉电自记忆。
 本文给出了一种基于STC89C51RC单片机的电子定时开关的设计。利用此定时开关设计需要储存数据较少的特点,在RAM和EEPROM之间互相读取,原始数据储存于EEPROM中,实现了自记忆。运算快捷,节省单片机系统资源,又避免了添加外部数据存储器的额外费用。再结合时钟芯片DS1302的使用,解决了时钟的断电后不走时问题,真正实现断电后再通电插座电路自动运行。
参考文献
[1] 谢维成,杨加国.单片机原理与应用及C51程序设计[M].北京:清华大学出版社,2006.
[2] 宏晶科技.STC增强型8051单片机中文指南(RC/RD+系列).
[3] 宋浩,田丰.单片机原理及应用[M].北京:清华大学出版社;北京交通大学出版社,2005.

此内容为AET网站原创,未经授权禁止转载。