功能介绍:
0.本系统采用STC89C52作为单片机
1.LCD1602液晶实时显示时间/当前温度
2.按键可进行闹钟设置和温度上下限设置
3.到达闹钟时间或温度超过阈值范围,蜂鸣器报警
4.到达闹钟时间,蜂鸣器将报警30s,可手动提前停止报警
5.采用DC002作为电源接口可直接输入5V给整个系统供电
原理图:
PCB :
主程序:
#define __MAIN_C#include <reg52.h>#include "main.h"enum DISP_MODE_DF DispMode; //显示模式unsigned char setIndex = 0; //设置位置标志unsigned char alarmTime[3] = {21, 0, 0}; //闹钟时间bit dispFlag = 1; //显示标志bit setFlag = 0; //设置标志bit alarmSwitch = 0; //闹钟开关bit buzzerFlag1 = 0; //蜂鸣器报警标志1bit buzzerFlag2 = 0; //蜂鸣器报警标志2unsigned char buzzerDelay = 0; //蜂鸣器报警倒计时int tempBuf = 0; //温度float f_temperature = 0.0; //温度int minTemp = 15; //温度阈值下限int maxTemp = 35; //温度阈值上限void main(){//初始化DispMode = NORMAL;setFlag = 0;Timer0_Init();LCD_Init();DS1302_Init();DelayMs(20);if (!KEY_ENTER) //启动过程中确定键按下,初始化时间{DelayMs(10);if (!KEY_ENTER){DS1302_WriteTime(); //写入时间}}//开机显示LCD_DispStr(0, 0, " Welcome! ");DS18B20_Start(); DS18B20_GetTemp(&tempBuf);f_temperature = (float)tempBuf * 0.0625;DelayS(2);LCD_Clear();while(1){// LCD1602液晶显示if ((dispFlag == 1) && (setFlag == 0)){dispFlag = 0;DS1302_ReadTime(); //读取时间//检测温度DS18B20_Start(); DS18B20_GetTemp(&tempBuf);f_temperature = (float)tempBuf * 0.0625;if (DispMode == NORMAL){DispNormal(setIndex);}if (alarmSwitch == 1) //闹钟开关打开{if (alarmTime[0] == timeBufDec[4] && alarmTime[1] == timeBufDec[5] && alarmTime[2] == timeBufDec[6]){buzzerFlag1 = 1;buzzerDelay = 120; //报警30s 250ms*120//buzzerDelay = 20; //报警5s 250ms*20}}if (f_temperature < minTemp || f_temperature > maxTemp){buzzerFlag2 = 1;buzzerDelay = 20; //报警5s 250ms*20}else{buzzerFlag2 = 0;}if (buzzerFlag1 == 1 || buzzerFlag2 == 1){if (buzzerDelay != 0){BUZZER = ON;buzzerDelay--;}else{BUZZER = OFF;}}else{BUZZER = OFF;}}KeyProcess(); //按键处理}}void Timer0_Init(void){TMOD &= 0xF0;TMOD |= 0x01;TL0 = 0x00;//设置定时初始值TH0 = 0x4C;//设置定时初始值 50msTR0 = 1; //启动T0计时ET0 = 1; //打开T0中断EA = 1; //打开总中断}void Timer0_Intterupt(void) interrupt 1{static unsigned char time50ms = 0;TL0 = 0x00;//设置定时初始值TH0 = 0x4C;//设置定时初始值 50mstime50ms++;if (time50ms >= 5) //250ms刷新一次状态{time50ms = 0;dispFlag = 1;}}
仿真演示视频:
/video/BV1hD4y117vQ/
实物演示视频:
/video/BV1hP411J78B/