实物演示效果:
https://www.bilibili.com/video/BV1RN4y1Q7dK/?vd_source=6ff7cd03af95cd504b60511ef9373a1d
void main()
{
int temp; // 保存温度值
LcdInit(); // 执行液晶初始化
DS1302_Init(); // 时钟芯片的初始化
LcdShowInit(); // 液晶显示内容的初始化
TimerInit(); // 定时器初始化
if(DS1302_Read_Byte(0x81)>=128) // 判断时钟芯片是否正在运行
{
DS1302_Write_Time(); // 如果没有,则初始化一个时间
}
Clock_Hour=EEPROM_Read(0x2000); // 读取0x2000这个地址的内容,赋值给闹钟的小时变量
if(Clock_Hour>23) // 如果读取到的闹钟小时数值不正常,则重新赋值
{
Clock_Hour=12;
}
Clock_Minute=EEPROM_Read(0x2001); // 读取0x2001这个地址的内容,赋值给闹钟的分钟变量
if(Clock_Minute>59) // 如果读取到的闹钟分钟数值不正常,则重新赋值
{
Clock_Minute=30;
}
Clock_Swt=EEPROM_Read(0x2002); // 读取0x2002这个地址的内容,赋值给闹钟的开关变量
if(Clock_Swt>1) // 如果读取到的闹钟开关数值不正常,则重新赋值
{
Clock_Swt=0;
}
while(DS18B20_ReadTemp()==850) // 等待温度传感器初始化完成
{
DelayMs(10);
}
while(1)
{
DS1302_Read_Time(); // 获取当前时钟芯片的时间,存在数组time_buf中
FlashTime(); // 刷新时间显示
ClockJudge(); // 闹钟工作的判断
temp=DS18B20_ReadTemp(); // 读取温度
LcdGotoXY(1,9); // 定位到显示温度的地方
LcdPrintTemp(temp); // 显示温度
KeyScanf1(); // 按键扫描(时间的设置)
KeyScanf2(); // 按键扫描(闹钟的设置)
KeyScanf3(); // 按键扫描(进入和退出秒表)
DelayMs(100); // 延时0.1秒
}
}