/*************************************
系統作用情況
該系統可示重,示溫,提醒功能,存儲
提醒模塊,系統每隔半小時提醒一次用戶喝水,提醒時長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;
}
}
|