一.设计功能
1、实现日历功能,显示年月日时分秒 2、测量温度并显示 3、具有闹钟功能,可设置闹钟时间 4、温度超过上下限则启动报警 5、使用存储器芯片存储系统参数,掉电保存
二、程序流程图
![在这里插入图片描述](https://img-blog.csdnimg.cn/9253c0876218433c8b4d3df4cb860526.png)
三、仿真
日期 星期 时间 当前温度 下一页 闹钟时间 温度上限 温度下限 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0325b3ee35ff4aa18f14589695984eae.png)
四、相关程序
sbit beep=P2^7;//蜂鸣器
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;
sbit k4=P3^5;
//-----------------------------------显示数组
uchar ye=0;//第一页
uchar hang1[]="2000.00.00 0 ";//日期+星期
uchar hang2[]="00:00:00 T:000 C";//时间+温度
uchar hang3[]="lock 00:00 ";//第二页 闹钟
uchar hang4[]="L:000 C H:000 C";//温度阀值
uchar lcd_xian=0;//显示延时变量
//-----------------------------------
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>光标位置
uchar cursor=0;//光标位置
uchar code cursor_num[]={1,3,1,6,1,9,1,12,2,1,2,4,2,7,1,6,1,9,2,4,2,13};//光标位置数组.行+列
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//###################################测量值变量
uchar wendu=0,wen_L=10,wen_H=30;//温度+阀值
uchar shi=6,fen=0;//闹钟
//###################################
//**************************************主函数
void main()
{
uchar two;
//11111111111111111111111111111111基本模块初始化
hang2[14]=0xdf;
hang4[5]=0xdf;
hang4[14]=0xdf;
init_1602();
Ds1302ReadTime();//启动DS1302
TIME[0]=0;
Ds1302Init();
//11111111111111111111111111111111
//22222222222222222222222222222222显示初始化
wen_L=At24c02Read(0); //读取温度阀值
if(wen_L>200)
{
wen_L=10;
At24c02Write(0,wen_L);
Delay1ms(10);
}
wen_H=At24c02Read(1);
if(wen_H>200)
{
wen_H=10;
At24c02Write(1,wen_H);
Delay1ms(30);
}
shi=At24c02Read(2);
if(shi>200)
{
shi=6;
At24c02Write(2,shi);
Delay1ms(10);
}
fen=At24c02Read(3);
if(fen>200)
{
fen=0;
At24c02Write(3,fen);
Delay1ms(10);
}
//22222222222222222222222222222222
//===============定时器初始化
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
//===============
while(1)
{
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;判断报警
if((wendu>wen_H)||(wendu |