51测温度并显示华氏和摄氏程序
d alert()
{
if(flag_h==1) //高温触发
{
HEATER=1; //加热器关
FAN=0; //风扇开
SPEAKER=0;//蜂鸣器开
}
else if(flag_l==1)
{
SPEAKER=1;//蜂鸣器关
HEATER=0; //加热器开
FAN=1; //风扇关
}
else if((flag_l&&flag_h)==0)
{
FAN=1; //风扇关
SPEAKER=1;//蜂鸣器关
HEATER=1; //加热器关
}
}
////////////以下是中断初始化///////////
void interrupt_first()
{
/////////中断允许设置//////////////
EA=1;
EX0=1; //外中断0中断允许 进入设置
// ET0=1; //计数器0中断允许
ET1=1; //定时器1中断允许
////////////////////////////////////
/////////中断方式设置//////////////
IT0=0; //外中断0为低电平触发方式
//////////////////////////////////
//////////中断优先设置//////////////////////
PX0=1;
// PT0=1; //计数器0中断为高中断优先级
PT1=0; //定时器中断为低中断优先级
}
///////////////计数器和定时器初始化///////
void C_T_first()
{
TMOD=0x25; //00100110 1为定时器 0为计数器 都使用第二种工作方式 //00100101
TH1=0x19; //预置0.25ms
TL1=0x19;
TL0=0x00;
TH0=0x00;
}
///////////////////////////////////////
////////////按键初始化///////////
void key_first()
{
k_TH=1;
k_TL=1;
k_E=1;
}
///////////////////////////////
/////////////////////所有初始化程序打包///////
void all_first()
{
interrupt_first();//中断初始化
Init_DS18B20(); //DS18B20初始化
lcd_first(); //液晶初始化
key_first(); //按键初始化
C_T_first(); //计数器0及定时器1初始化
DisplayListChar(0x00,0,tab0);//显示标签tab0[]={"CTemper:"}
DisplayListChar(0x00,1,tab1);//显示标签tab0[]={"HTemper:"}
}
/////////////////////////////////////////////
//////////////////////////以下是主函数区//////////////////////////////////
void main()
{
all_first();
while(1)
{
DS18B20_deal_data(); //DS18B20处理数据
alert(); //报警查询
}
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////中断函数区/////////////////////////////////////////
void interrupt_TIMER1() interrupt 3 using 2 //定时器1中断
{
TR1=0;
n=n+1;
TR1=1;
if(n==2000)
{
TR0=0;
TR1=0;
flag_COUNTER=1;
}
}
51测温度显示华氏摄 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)