主要功能為:DS1302,DS18B20,液晶1602驅(qū)動
萬能電視遙控器(000)的解碼。
用遙控器控制DS1302的各種功能
DS18B20的精度為0.06攝氏度
DS1302有蜂鳴器定時報警,繼電器控制高電家器,蜂鳴器整點報時
接口:蜂鳴器P2.2
繼電器 K1:P2.1 K2:P2.0
每秒閃燈 P3.1
紅外接收頭 P3.2外部中斷零T0
按鍵:KEY1:P3.3(調(diào)整時間及切換)P3.4(調(diào)蜂鳴器定時) P3.5(調(diào)繼電器定時)
DS18B20:數(shù)據(jù)傳送DQ P3.7
DS1302 :CEP2.7 CK=P2.5 IO=P2.6
液晶1602:RS P1.0 RW P1.1 EN P1.2 數(shù)據(jù)傳輸接口 P0
注:程序中青色顯示部分為可擴展部分
/**************************************************************************************/
//所用到的文件庫
#include
#include "1602LCDDriver.h"
#include "DS18B20Driver.h"
#include "DS1302Driver.h"
#include
//1302的數(shù)據(jù)表示結(jié)構(gòu)體
struct TimerStruct
{
unsigned char Year;
unsigned char Month;
unsigned char Day;
unsigned char Week;
unsigned char Hour;
unsigned char Minute;
unsigned char Second;
};
struct TimerStruct RealClock;
//標志常量定義
const unsigned char DATECODE1[]={"TS"};
const unsigned char DATECODE2[]={"DF"};
const unsigned char DATECODE3[]={"DJ"};
//重要常數(shù)定義
#define distinguish_y 0x80 //引導(dǎo)碼
#define distinguish_a 0x7e //地址碼
//各個接口定義
sbit key1=P3^3;
sbit key2=P3^4;
sbit key3=P3^5;
sbit sound=P2^2;
sbit k1=P2^1;
sbit k2=P2^0;
sbit led=P3^1;
//有關(guān)液晶顯示的變量
unsigned char idata mins,hours,days,months,weeks,years; //超128個變量擴展變量空間
unsignedchar a,k,endf_flag;
bit keychange_flag,biaof_flag,biaoj_flag,fmq_flag,key_flag;
unsigned char idata Minute1,Hour1,Day1,Month1,Week1,Year1;//超128個變量擴展變量空間
unsigned char idata Minute2,Hour2,Day2,Month2,Week2,Year2;//超128個變量擴展變量空間
unsigned char DATECODE22[1]={' '};
unsigned char DATECODE33[1]={' '};
//紅外參量
bit receiv_en,bootable,rled_flag,end_flag,change_flag,led_flag,bell_flag,click,data_flag;
unsigned char receiv_data[4];
unsigned char receiv_times,led_count,led_a,bell_time,Irq_times;
//液晶顯示數(shù)據(jù)
unsigned char DateBuffer1[]={"2006/08/18/5"};
unsigned char TimeBuffer1[]= {"23:50:00"};
//1302內(nèi)部數(shù)據(jù)
unsigned char DateBuffer[]={"2005/01/01/5"};
unsigned char TimeBuffer[]= {"00:00:00"};
unsigned char LCDDisplayBuffer[]={" "};
//函數(shù)聲明
void tiaoshi(struct TimerStruct *Real);
void dingshif(void);
void dingshij(void);
void tiao_delay(void);
void quxiaofmq(void);
void quxiaojdq(void);
void show_quxiaofmq(void);
//有關(guān)延時的中斷
void times1() interrupt 3 using 2
{
TH1=0X3C;
TL1=0XA8;
if(bell_flag&&bell_time<2) //蜂鳴器提示
{
sound=0;
bell_time++;
}
else
{
sound=1;
bell_time=0;
bell_flag=0;
}
if(++Irq_times==10) //沒秒閃燈指示
{
click=~click;
}
else if(Irq_times==20)
{
Irq_times=0;
click=~click;
}
}
//蜂鳴器測試
void fmq_delay(unsigned char delaytimef)
{
unsigned char j,h,k;
sound=0;TR1=0; //蜂鳴器由此函數(shù)控制時,關(guān)中斷
for(j=delaytimef;j>0;j--)
//for(e=10;e>0;e--) //延時1S
for(k=20;k>0;k--) //延時1MS
for(h=248;h>0;h--);
sound=1; //返回由中斷控制蜂鳴器
TR1=1;
}
//遙控器編碼測試
//編碼接收處理
unsigned int difference(unsigned int val1,val2) //誤差處理函數(shù)
{
if(val1>val2)
{
return(val1-val2);
}
else
{
return(val2-val1);
}
}
void receiv_ray(void) interrupt 0 using 1 //紅外接收
{
unsigned int pulse_width;
if(receiv_en)
{
pulse_width=TH0*256+TL0;
TH0=0;
TL0=0;
if(difference(pulse_width,13400)<300) //接收到引導(dǎo)碼
{
bootable=1;
}
if(bootable)
{
receiv_data[receiv_times/8]>>=1;
if(difference(pulse_width,1100)<200) //接收到零
{
receiv_data[receiv_times/8]&=0x7f;
}
else if(difference(pulse_width,2100)<200) //接收到一
{
receiv_data[receiv_times/8]|=0x80;
}
if(++receiv_times>31)
{
receiv_times=0;
bootable=0;
rled_flag=1;
bell_flag=1;
EX0=1;
}
}
}
}
//接收到遙控器按鍵處理
voidrled_deal(void)
{
switch(receiv_data[2])
{
case 0x03 : k1=1; break;//繼電器一工作 “1”
case 0x05 : k2=1; break;//繼電器二工作 “2”
case 0x25 : k1=0; break;//繼電器一關(guān)閉 “電源”
case 0x1d : k2=0; break;//繼電器二關(guān)閉 “靜音”
case 0x2d : endf_flag=0; break;//切斷蜂鳴器叫 “屏顯”鍵
case 0x3b : show_quxiaofmq(); break;//取消蜂鳴器 “伴音”鍵
case 0x27 : quxiaojdq(); break;//取消繼電器 “麗音”鍵
case 0xb1 : tiaoshi(&RealClock);led_flag=1;break;//調(diào)整時間 “制式”鍵
case 0xa3 : dingshif();led_flag=1; break;//調(diào)整蜂鳴器定時時間 “畫中畫”鍵
case 0xa9 : dingshij();led_flag=1; break;//調(diào)整繼電器定時時間 “正常 ” 鍵
default : break;
}
}
//紅外控制調(diào)整數(shù)據(jù)
voidled_tiao (void)
{
led_count=0;
end_flag=0;
while(!end_flag)
{
if(receiv_data[2]==0x2d) end_flag=1; //“OK完成”鍵
if(receiv_data[2]==0x35||receiv_data[2]==0x37)
{
led_count++,receiv_data[2]=0x00; //“音量+”或“頻道”上鍵
}
if(receiv_data[2]==0x3d||receiv_data[2]==0x3f)
{
led_count--,receiv_data[2]=0x00; //“音量-”或“頻道”下鍵
}
data_flag=0;
switch(receiv_data[2])
{
case 0x01 : led_a=0;data_flag=1; //“0”
break;
case 0x03 : led_a=1;data_flag=1; //“1”
break;
case 0x05 : led_a=2;data_flag=1; //“2”
break;
case 0x07 : led_a=3;data_flag=1; //“3”
break;
case 0x09 : led_a=4;data_flag=1; //“4”
break;
case 0x0b : led_a=5;data_flag=1; //“5”
break;
case 0x0d : led_a=6;data_flag=1; //“6”
break;
case 0x0f : led_a=7;data_flag=1; //“7”
break;
case 0x11 : led_a=8;data_flag=1; //“8”
break;
case 0x13 : led_a=9;data_flag=1; //“9”
break;
default:break;
}
//光標移動方向控制
led_count=led_count%11;
switch(led_count)
{
case 0:write_lcd_command(0x80+0x45);
if(data_flag==1) TimeBuffer1[4]=led_a+0x30; break; //分個修改對應(yīng)位置的字符
case 1:write_lcd_command(0x80+0x44);
if(data_flag==1) TimeBuffer1[3]=led_a+0x30; break; //分十
case 2:write_lcd_command(0x80+0x42);
if(data_flag==1) TimeBuffer1[1]=led_a+0x30;break; //時個
case 3:write_lcd_command(0x80+0x41);
if(data_flag==1) TimeBuffer1[0]=led_a+0x30;break; //時十
case 4:write_lcd_command(0x80+0x0c);
if(data_flag==1) DateBuffer1[11]=led_a+0x30;break; //星期不閃
case 5:write_lcd_command(0x80+0x0a);
if(data_flag==1) DateBuffer1[9]=led_a+0x30;break; //日個 不閃
case 6:write_lcd_command(0x80+0x9);
if(data_flag==1) DateBuffer1[8]=led_a+0x30; break; //日十
case 7:write_lcd_command(0x80+0x7);
if(data_flag==1) DateBuffer1[6]=led_a+0x30;break; //月個
case 8:write_lcd_command(0x80+0x6);
if(data_flag==1) DateBuffer1[5]=led_a+0x30;break; //月十
case 9:write_lcd_command(0x80+0x4);
if(data_flag==1) DateBuffer1[3]=led_a+0x30;break; //年個
case 10: write_lcd_command(0x80+0x3);
if(data_flag==1) DateBuffer1[2]=led_a+0x30;break; //年十
default: break;
//case 11: write_lcd_command(0x80+0x2);break; //年百
//case 12: write_lcd_command(0x80+0x1);break; //年千
}
tiao_delay();
tiao_delay();
//write_lcd_command(0X0C); //全部字符顯示,光標消失
lcd_displaystr_ram(0,1,DateBuffer1); //實時顯示修改的數(shù)據(jù)
lcd_displaystr_ram(1,1,TimeBuffer1); //實時顯示修改的數(shù)據(jù)
write_lcd_command(0x0f); //符號顯示,光標顯示,光標閃爍
}
//數(shù)值記錄
mins=TimeBuffer1[4]-0x30+(TimeBuffer1[3]-0x30)*10; //分
hours=TimeBuffer1[1]-0x30+(TimeBuffer1[0]-0x30)*10;//時
days=DateBuffer1[9]-0x30+(DateBuffer1[8]-0x30)*10; //日
months=DateBuffer1[6]-0x30+(DateBuffer1[5]-0x30)*10; //月
weeks=DateBuffer1[11]-0x30; //星期
years=DateBuffer1[3]-0x30+(DateBuffer1[2]-0x30)*10;//年
}
//時間調(diào)整
void tiao_delay(void)
{
unsigned char i,j;
for(i=100;i>0;i--)
for(j=248;j>0;j--);
}
//機械按鍵調(diào)整數(shù)據(jù)
void key_change( void )
{
while(keychange_flag)
{
if(key2==0) tiao_delay();
if(key2==0) a++;
if(key3==0) tiao_delay();
if(key3==0) a--;
switch(k)
{
case 1:
//write_lcd_command(0x80+0x45);
write_lcd_command(0x80+0x44); //修改對應(yīng)位置的字符
mins=a%60;
break;
case 2:
//write_lcd_command(0x80+0x42);
write_lcd_command(0x80+0x41); //修改對應(yīng)位置的字符
hours=a%24;
break;
case 3:
//write_lcd_command(0x80+0x0a);
write_lcd_command(0x80+0x9); //修改對應(yīng)位置的字符
days=a%32;
break;
case 4:
write_lcd_command(0x80+0x0c); //修改對應(yīng)位置的字符
weeks=a%7;
break;
case 5:
//write_lcd_command(0x80+0x7);
write_lcd_command(0x80+0x6); //修改對應(yīng)位置的字符
months=a%13;
break;
case 6:
//write_lcd_command(0x80+0x4);
write_lcd_command(0x80+0x3); //修改對應(yīng)位置的字符
years=a;
break;
}
if(key1==0) tiao_delay();
if(key1==0) keychange_flag=0;
TimeBuffer1[4]=mins%10+0x30; //分個位
TimeBuffer1[3]=mins/10+0x30;
TimeBuffer1[1]=hours%10+0x30; //時
TimeBuffer1[0]=hours/10+0x30;
DateBuffer1[9]=days%10+0x30;//日
DateBuffer1[8]=days/10+0x30;
DateBuffer1[6]=months%10+0x30;//月
DateBuffer1[5]=months/10+0x30;
DateBuffer1[11]=weeks%10+0x30;//星期
DateBuffer1[3]=years%10+0x30; //年
DateBuffer1[2]=years/10+0x30;
tiao_delay();
tiao_delay();
write_lcd_command(0x0f); //符號顯示,光標顯示,光標閃爍
//write_lcd_command(0x0C); //全部字符顯示,光標消失
lcd_displaystr_ram(0,1,DateBuffer1); //實時顯示修改的數(shù)據(jù)
lcd_displaystr_ram(1,1,TimeBuffer1); //實時顯示修改的數(shù)據(jù)
}
}
//調(diào)整時初值顯示
void show(void) //顯示調(diào)整時的初始值
{ //解決1302和1602的進制不一樣的問題
mins=mins-mins/16*6;
hours=hours-hours/16*6;
days=days-days/16*6;
months=months-months/16*6;
years=years-years/16*6;
TimeBuffer1[4]=mins%10+0x30; //分個位
TimeBuffer1[3]=mins/10+0x30; //分十位
TimeBuffer1[1]=hours%10+0x30; //時個位
TimeBuffer1[0]=hours/10+0x30; //時十位
DateBuffer1[9]=days%10+0x30; //日個位
DateBuffer1[8]=days/10+0x30; //日十位
DateBuffer1[6]=months%10+0x30; //月個位
DateBuffer1[5]=months/10+0x30; //月十位
DateBuffer1[11]=weeks%10+0x30; //星期
DateBuffer1[3]=years%10+0x30; //年個位
DateBuffer1[2]=years/10+0x30; //年十位
//DateBuffer1[1]=years/100+0x30; //年百位
//DateBuffer1[0]=years/1000+0x30;//年千未
lcd_displaystr_ram(0,1,DateBuffer1);
lcd_displaystr_ram(1,1,TimeBuffer1);
}
//為方便定時設(shè)時,分成一,二兩部分
//機械按鍵時間調(diào)整一
void key_tiao1(void)
{
tiao_delay();
k=1,a=mins,keychange_flag=1;
key_change(); //分
tiao_delay();
k++,a=hours,keychange_flag=1;
key_change(); //時
tiao_delay();
k++,a=years,keychange_flag=1;
key_change(); //星期
}
//機械按鍵時間調(diào)整二
voidkey_tiao2(void)
{
tiao_delay();
k++,a=days,keychange_flag=1;
key_change(); //日
tiao_delay();
k++,a=months,keychange_flag=1;
key_change(); //月
tiao_delay();
k++,a=years,keychange_flag=1;
key_change(); //年
}
//調(diào)整1302時間
void tiaoshi(struct TimerStruct *Real)
{
lcd_displaystr(0,14,DATECODE1);
mins=Real->Minute;
hours=Real->Hour;
days=Real->Day;
months=Real->Month;
weeks=Real->Week;
years=Real->Year;
show();
if(key_flag==1)
{
fmq_delay(300);
key_flag=0;
key_tiao1();
key_tiao2();
fmq_delay(300);
}
if(led_flag==1)
{
led_flag=0,
led_tiao();
}
mins=mins+mins/10*6;
hours=hours+hours/10*6;
days=days+days/10*6;
months=months+months/10*6;
years=years+years/10*6;
write_lcd_command(0x01); //清屏
Write_DS1302_RTC(0x8e,0x00); //寫控制
Write_DS1302_RTC(0x80,0x00); //寫秒
Write_DS1302_RTC(0x82,mins); //寫分
Write_DS1302_RTC(0x84,hours);//寫時
Write_DS1302_RTC(0x86,days); //寫日
Write_DS1302_RTC(0x88,months); //寫月
Write_DS1302_RTC(0x8a,weeks);//寫星期
Write_DS1302_RTC(0x8c,years);//寫年
Write_DS1302_RTC(0x8e,0x80); //控制
initize_lcd();
Init_DS1302_RTC();
}
//調(diào)整蜂鳴器定時
void dingshif(void)
{
biaof_flag=1;
lcd_displaystr(0,14,DATECODE2);
mins=Minute1;
hours=Hour1;
days=Day1;
//months=Month1;
//weeks=Week1;
//years=Year1;
show();
if(key_flag==1)
{
fmq_delay(300);
key_flag=0,
key_tiao1();
fmq_delay(300);
}
if(led_flag==1)
{
led_flag=0,
led_tiao();
}
mins=mins+mins/10*6; //解決LCD和1302的進制不同
hours=hours+hours/10*6;
days=days+days/10*6;
Minute1=mins;
Hour1=hours;
Day1=days;
//Month1=months;
//Week1=weeks;
//Year1=years;
write_lcd_command(0x01); //清屏
DATECODE22[0]='&';
if(biaoj_flag==1) DATECODE33[0]='!';
tiao_delay();
lcd_displaystr(0,14,DATECODE22);//蜂鳴器定時加入標志
lcd_displaystr(0,15,DATECODE33);
}
//調(diào)整繼電器定時
voiddingshij(void)
{
biaoj_flag=1;
lcd_displaystr(0,14,DATECODE3);
mins=Minute2;
hours=Hour2;
days=Day2;
//months=Month2;
//weeks=Week2;
//years=Year2;
show();
if(key_flag==1)
{
fmq_delay(300);
key_flag=0;
key_tiao1();
fmq_delay(300);
}
if(led_flag==1)
{
led_flag=0,
led_tiao();
}
mins=mins+mins/10*6; //解決LCD和1302的進制不同
hours=hours+hours/10*6;
days=days+days/10*6;
Minute2=mins;
Hour2=hours;
Day2=days;
//Month2=months;
//Week2=weeks;
//Year2=years;
k1=k2=1;
write_lcd_command(0x01); //清屏
DATECODE33[0]='!';
if(biaof_flag==1) DATECODE22[0]='&';
tiao_delay();
lcd_displaystr(0,14,DATECODE22);//繼電器定時加入標志
lcd_displaystr(0,15,DATECODE33);
}
//蜂鳴器報警及取消
void show_quxiaofmq(void)
{
biaof_flag=0;
DATECODE22[0]=' ';
if(biaoj_flag==0) DATECODE33[0]=' ';
lcd_displaystr(0,14,DATECODE22); //蜂鳴器報警取消標志
lcd_displaystr(0,15,DATECODE33);
write_lcd_command(0x01); //清屏
}
void quxiaofmq(void)
{
endf_flag=60; //蜂鳴器響1分鐘
biaof_flag=0;
if(RealClock.Hour=Hour1)
if(RealClock.Day=Day1)
//if(RealClock.Month=Month1)
// if(RealClock.Year=Year1)
{
while(endf_flag)
{
TR1=1;
TR1=1;
TR1=1;
TR1=1;
TR1=1;
TR1=1;
fmq_delay(100);
endf_flag--;
if(key1==0) tiao_delay();
if(key1==0) endf_flag=0;
if(key1==0) tiao_delay();
if(key1==0) endf_flag=0;
if(key1==0) tiao_delay();
if(key1==0) endf_flag=0;
if(key1==0) tiao_delay();
if(key1==0) endf_flag=0;
}
Minute1=Minute1-2;
write_lcd_command(0x01); //清屏
DATECODE22[0]=' ';
if(biaoj_flag==0) DATECODE33[0]=' ';
lcd_displaystr(0,14,DATECODE22); //蜂鳴器報警取消標志
lcd_displaystr(0,15,DATECODE33);
}
}
//繼電器取消
void quxiaojdq(void)
{
biaoj_flag=0;
if(RealClock.Hour=Hour2)
if(RealClock.Day=Day2)
// if(RealClock.Month=Month2)
// if(RealClock.Year=Year2)
k1=0,k2=0;
fmq_delay(50);
write_lcd_command(0x01); //清屏
DATECODE33[0]=' ';
if(biaof_flag==0) DATECODE22[0]=' ';
lcd_displaystr(0,14,DATECODE22);//繼電器取消標志
lcd_displaystr(0,15,DATECODE33);
Minute2=Minute2-1;
}
//控制主函數(shù)
void main(void)
{
TMOD=0x11; //均為方式一
EA=1;
ET1=1;
EX0=1; //開外中斷
IT0=1; //邊沿觸發(fā)
TR0=1;
//TH1=(65536-50000)/256; //定時50MS
//TL1=(65536-50000)%256;
TR1=1;
k1=k2=0;
fmq_flag=1;
receiv_en=1; //紅外開關(guān)
rled_flag=0; //紅外是否接收到數(shù)據(jù)
led_flag=0; //紅外調(diào)整標志
key_flag=0; //按鍵調(diào)整標志
end_flag=0;
change_flag=1;
bell_flag=0;
fmq_delay(50);
initize_lcd();
Init_DS1302_RTC();
while(1)
{
unsigned intTemp,Temperature; //16位數(shù)據(jù)
unsigned char TemperatureH;
unsigned char TemperatureL;
bell_flag=0;
while(DS18B20_Reset());
DS18B20_Write(0xCC);
DS18B20_Write(0xBE);
TemperatureL=DS18B20_Read(); //低位
TemperatureH=DS18B20_Read(); //高位
while(DS18B20_Reset());
DS18B20_Write(0xCC);
DS18B20_Write(0x44);
Temp=TemperatureH*256+TemperatureL;//左移8位
if(Temp & 0xf800) //去除低11位后判斷
{
LCDDisplayBuffer[0]=' ';
Temp=(~Temp)+1;
TemperatureL=Temp%256;
TemperatureH=Temp/256;
}
Temp>>=4;
Temperature=Temp; //右移四位
LCDDisplayBuffer[1]=Temp/10+0x30;
LCDDisplayBuffer[2]=Temp%10+0x30;
Temp=TemperatureL;
Temp&=0x000F; //保留低四位
Temp*=625; //化小數(shù)
Temp/=100;
LCDDisplayBuffer[3]='.';
LCDDisplayBuffer[4]=Temp/10+0x30;
LCDDisplayBuffer[5]=Temp%10+0x30;
LCDDisplayBuffer[6]='C';
Write_DS1302_RTC(0x90, 0xa5); //打開充電二極管
Temp=Read_DS1302_RTC(0x81); //秒
RealClock.Second=Temp;
TimeBuffer[7]=Temp%16+0x30;
TimeBuffer[6]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x83); //分
RealClock.Minute=Temp;
TimeBuffer[4]=Temp%16+0x30;
TimeBuffer[3]=Temp/16+0x30; //時
Temp=Read_DS1302_RTC(0x85);
RealClock.Hour=Temp;
TimeBuffer[1]=Temp%16+0x30;
TimeBuffer[0]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x87); //日
RealClock.Day=Temp;
DateBuffer[9]=Temp%16+0x30;
DateBuffer[8]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x89); //月
RealClock.Month=Temp;
DateBuffer[6]=Temp%16+0x30;
DateBuffer[5]=Temp/16+0x30;
Temp=Read_DS1302_RTC(0x8b); //星期
RealClock.Week=Temp;
DateBuffer[11]=Temp%16+0x30;
Temp=Read_DS1302_RTC(0x8d); //年
RealClock.Year=Temp;
DateBuffer[3]=Temp%16+0x30;
DateBuffer[2]=Temp/16+0x30;
lcd_displaystr_ram(0,1,DateBuffer);
lcd_displaystr_ram(1,1,TimeBuffer);
lcd_displaystr_ram(1,sizeof(TimeBuffer),LCDDisplayBuffer);
//機械按鍵控制
if(key1==0) tiao_delay();
if(key1==0) tiaoshi(&RealClock),key_flag=1;
if(key2==0) tiao_delay();
if(key2==0) dingshif(),key_flag=1;
if(key3==0) tiao_delay();
if(key3==0) dingshij(),key_flag=1;
//紅外接收控制
if(rled_flag)
{
if(receiv_data[0]==distinguish_y&&receiv_data[1]==distinguish_a)//遙控器是否正確
{
if((receiv_data[2]+receiv_data[3])==0xff) //紅外是否接收到正確的數(shù)據(jù)
{
rled_deal();
EX0=1;
}
else
EX0=1;
}
else
EX0=1;
}
//報警及取消
if(RealClock.Minute==Minute1&&biaof_flag==1) quxiaofmq();//蜂鳴器報警及取消
if(RealClock.Minute==Minute2&&biaoj_flag==1) quxiaojdq();//繼電器取消
if(RealClock.Minute==0x00&&fmq_flag==1) //整點報時
{
fmq_delay(80),fmq_flag=0;
}
if(RealClock.Minute==0x02) fmq_flag=1;
led=click;
//溫度處理
// if(Temperature>=0x3500) fmq_delay(1);
// if(Temperature<=0x2500) fmq_delay(2);
}
}