您当前的位置:五五电子网电子知识单片机-工控设备51单片机18B20温度LCD显示程序 正文
18B20温度LCD显示程序

18B20温度LCD显示程序

点击数:7580 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   51单片机
{uchar i;
for(i=0;i<8;i++)
{
if(byte&0x01)
write1TS();
else
write0TS();
byte=byte>>1;
}
}
//****************************************
uchar readBTS(void)                        //读1字节
{uchar i,j;
bit b;
j=0;
for(i=0;i<8;i++)
{
b=readTS();
if(b)j+=1;
j=_cror_(j,1);
}
return j;
}
//************************************************
void initTS(void)                    //初始化DS18B20
{
resetTS();
writeBTS(0xCC);
writeBTS(0x4e);
writeBTS(0x64);
writeBTS(0x8a);
writeBTS(0x1f);
}
//******************************************************
void gettempTS(void)                    //读取测得的环境温度
{
resetTS();
writeBTS(0xcc);
writeBTS(0x44);
delay(200);
resetTS();
writeBTS(0xcc);
writeBTS(0xbe);
temp2=readBTS();
temp1=readBTS();
readBTS();readBTS();readBTS();readBTS();
readBTS();readBTS();readBTS();
temp1=temp1<<4;
temp1+=(temp2&0xf0)>>4;
temp2=(temp2&0x0f)?5:0;
}

//********主函数*********
void main(void)
{
delay(500);                      //延时500ms,等电源稳定
InitLcd();                        //LCM初始化
init_timer0();//初始化定时器T0
DisplayListChar(0,0,str0);// 显示预定行
DisplayListChar(0,1,str1);
initTS();//初始化DS18B20
reset()
for(;;)
{
//========================
switch(set)                //LCD根据工作模式进行显示
{
case 0:fun0();break;// 正常工作显示
case 1:fun1();break; //调整时显示
case 2:fun2();break;// 调整分显示
case 3:fun3();break; //设置控温值显示
default:break;
}
delay(300);
gettempTS();            //读取测得的环境温度
if(ON_OFF==1)            // 若控温标志为1,控制压缩机动作
{
    if(temp1>=T+1){delay(1000);//
             if(temp1>=T+1){outflag=1;OUT=0;}//测得的温度大于等于控温值+1度时,
//压缩机启动致冷
                }
    if(temp1<T){delay(1000);
            if(temp1<T){outflag=0;OUT=1;} //测得的温度小于控温值时,
//压缩机停止工作
                }
}
else // 否则控温标志为0,压缩机停止工作
{outflag=0;OUT=1;}
}
}



上一页  [1] [2] [3] [4] 


本文关键字:程序  51单片机单片机-工控设备 - 51单片机