/*************************************
系统作用情况
该系统可示重,示温,提醒功能,存储
提醒模块,系统每隔半小时提醒一次用户喝水,提醒时长12秒,提醒方式为led灯快速闪烁。
*************************************/
#include <reg52.h>
#include "LCD1602.H"
#include "DS18B20.H"
#include "RP_C18.3_ST.H"
sbit LED = P1^0;
uint vibrationInterval = 600; //间隔半小时提醒,10x60x60;
uchar vibrationNum = 240; //提醒长度5s 20x12
uchar powerOnHour = 0; //记录上电的小时数
uchar enoughFlag;
uint vibrationTime = 0; //提醒时间计数
uchar hourVbrationFlag = 0;
void Delay1Ms(uint t){ //大致延时1mS
uint x, y;
for(x = t; x > 0; x--)
for( y = 125; y > 0; y--);
}
void main(){
uchar a;
uchar temp;
LED = 0;
TMOD = 0X01;
TH0 = (65536 - 46080) / 256;
TL0 = (65536 - 46080) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
cmg88();
LCD_Init();
LCD_Clear();
while(1){
if(vibrationTime / 5 % 2 == 0){
tmpchange();
for(a = 10; a > 0; a--){
displayTem();
displayVal();
}
}
if(hourVbrationFlag){
if(vibrationTime / 3 % 2 == 0){
LED = 0;
}else{
LED = 1;
}
if(vibrationTime > (vibrationNum + vibrationInterval)){
LED = 0;
vibrationTime = 0;
hourVbrationFlag = 0;
}
}
}
}
void Timer0() interrupt 1{
TH0 = (65536 - 46080) / 256;
TL0 = (65536 - 46080) % 256;
vibrationTime++;
if(vibrationTime >= vibrationInterval){ //每半小时上电计数加1
powerOnHour++;
hourVbrationFlag = 1;
}
}
|