硬件方案
本电路是由AT89C52单片机为控制核心,具有在线程功能,低功耗,能在3V超低压工作;时钟电路有DS1302提供,它是一种高性能.低功耗,带RAM的实时时钟电路,它可以对年,月,日,周日,时,分,秒进行及时,同时具有闰年补偿功能,工作电压为2.5~5.5V.采用三线接口与CPU进行同步通信,并可采用突发方式一次产送多个字节的时钟信号或RAM数据.具有寿命长精度高和低功耗等特点.温度数据有DS18B20采集.显示部分有LCD12864液晶显示。
整体电路主要由51单片机+最小系统+LCD12864液晶显示模块+时钟模块+温度采集模块+按键模块+语音芯片及喇叭;原理图如图:
PCB图如下:
设计功能
- 采用DS1302时钟芯片、DS18B20温度传感器、LCD12864液晶屏构成的万年历系统设计。
- 有闹钟和测温和整点报时和阴历功能,可以准确的显示时间等信息,可以显示年、月、日、时、分、秒、星期、温度和农历。
- 掉电走时,不用重新调时。
- 闹钟是嘀嘀响,响30s。闹钟和整点时会有语音报时。
- 按键可以设置时间和闹钟。设置的数据掉电保存,下次开机无需重新设置。按键1设置、按键2加、按键3减/查看闹钟。
软件设计
主程序源码
/********************************************************************
* 名称 : main()
* 功能 : 主程序
* 输入 : 无
* 输出 : 无
***********************************************************************/
void main()
{
read_time1();
data_dispose();
do
{
Temper();
}
while(temp==850) ;
TMOD=0x01; //定时器0配置 方式0 定时模式
TH0=0x3c; //定时50ms 赋初值
TL0=0xb0;
EA=1; //打开总中断
TR0=1; //定时器0启动定时
ET0=1; //定时器0中断
LCD12864_init();
temp_h=byte_read(0x2000); //读取单片机EEPROM中保存的数据
temp_l=byte_read(0x2200);
if((temp_h>99)||(temp_l>99)||(temp_l>=temp_h)) //判断读出的数据是否正确 如果不正确
{
temp_h=30; //则重新赋值
temp_l=10;
}
shi_1=byte_read(0x2600); //读取单片机EEPROM中保存的数据
fen_1=byte_read(0x2800);
if(shi_1>23||shi_1<0||fen_1>59||fen_1<0)
{
shi_1=8;
fen_1=0;
}
ir_on=byte_read(0x2400);
if(ir_on!=1&&ir_on!=0)
{
ir_on=1;
}
while(1)
{
key(); //调用按键控制程序
proc(); //调用程序处理函数
sound();
display();
}
}
资料链接:https://pan.baidu.com/s/1HCfQzNpYvKGgPTJ69zw_gQ?pwd=8gly
提取码:8gly