发一个自己原创小玩意,多功能电子时钟。
功能:年,月,日,星期,时,分,秒,温度大屏幕实时显示;带闹钟功能(最多支持3个独立闹钟,闹钟支持和弦可选);带3路独立定时开关;断电记忆,掉电后时间会继续走。
方案:STC89C54+LCD12864(ST7920控制器)+DS1302+DS18B20
编程语言:C
开发环境:keil
电路设计软件:Protel 99se
此小制作是本人在大二时所作,本人原创。初衷是制作一个电子钟,放在工作台上,方便自己看时间,看温度,使用闹钟。3路定时开关可以拿来控制一些小电器,比如定时控制台灯的开关。这个小玩意制作成功时,还引起了不少师弟师妹的好奇,他们觉得特神奇,原来单片机这么有趣。
废话不多说了,上图吧
实物图:LCD12864白字蓝背光,时钟采用了自定义的大字符显示,看起来感觉好些。背光可长亮,也可短亮,可以人为设置。在背光熄灭状态时按任意一个按键背光就会亮起。主界面右上角那个“T”下面一个开关是指示自动控制开关是否开启,右下角的小喇叭是闹钟指示,闹钟没打开的时候小喇叭会消失。
液晶旁边的三个继电器可实现自动定时控制作用。在设置里面可以分别调整三个继电器吸合、断开时间,比如用于定时控制台灯开关,还是很实用的。
液晶下面是4个按键,分别是设置,+,-,OK;由于板子尺寸限制,按键较少,操作起来会稍微麻烦一点。
按键的右边是电源输入,只需接一个5V0.8A左右的直流电源即可。
液晶下面是STC单片机、DS1302、DS18B20、备份电池和蜂鸣器。
DS1302实时时钟,外接备份电池,可以实现断电时钟仍继续走的功能,并且将用户设置存于DS1302的RAM中,避免断电之后需要重新设置的麻烦。DS18B20测量温度,精度很高,很好用,蜂鸣器用于按键声和闹钟,单片机内部集成了两首和弦,避免单调的滴滴声,该制作里面有三个闹钟,一般够用了。
原理图:
PCB:
部分程序截图:
程序均采用了模块化编写,每个程序有对应的输入输出参数说明,便于调用,有较多注释,读程序比较容易
主函数程序比较简单,就包含了液晶、IO、DS1302、DS18B20还有定时器的初始化。主循环里面主要执行液晶显示、按键扫描、定时开关控制、闹钟处理、备份电池充电程序。
这个DS1302读数据的子程序,SPI三线串口
这个是闹钟和弦的数据表,可以根据个人喜好更改。
附件是这个小制作的所有文件,包含99格式的原理图、PCB;源代码及HEX文件,还有一张实物照片,喜欢的朋友可以直接动手做,直接把程序烧好就可工作,只要焊接无误,一般不需要调试。注意:LCD12864需要用ST7920控制器带字库的,不带字库的话会出现乱码。