当前位置:首页 > 水温控制系统
break; case
ge--;if(ge==-1)ge=9;b=ge;
write_com(0x95);
write_date(table[ge]);write_com(0x95);
break; case
xs--;if(xs==-1)xs=9;c=xs;
write_com(0x96);write_date('.');write_date(table[xs]);write_com(0x96);
break; } } } } }
/**********************
*****************************************************/
DS18B20温度采集子程序
3:2:
系统采用DS18B20对1L水
的温度进行采集。首先根据DS18B20的工作时序对其进行初始化,并对DS18B20内部寄存器读写操作进行定义。系统工作时,单片机读取DS18B20内部寄存器的二进制数值,将其转化为十进制的真实温度值。
DS18B20温度采集子程序如
下:
/*******************
DS18B20温度采集子程序************************/
void init_DS18B20()//初
始化
{
uchar x=0;
DS18B20 = 1; //DQ复
位
delay(8); //稍做延时 DS18B20 = 0; //单片机
将DQ拉低
delay(80); //精确延时
大于 480us
DS18B20 = 1; //拉高总
线
delay(14);
x=DS18B20; //稍做
延时后 如果x=0则初始化成功 x=1则初始化失败
一个字节
移
delay(20); }
uchar read_onechar()//读
{
uchar i=0; uchar date = 0; for (i=8;i>0;i--) {
DS18B20 = 0; date>>=1; //寄存器右
DS18B20 = 1; if(DS18B20) date|=0x80; delay(4); }
return(date); }
date)//写一个字节
度
void write_onechar(uchar
{
uchar i=0;
for (i=8; i>0; i--) {
DS18B20 = 0; DS18B20 = date&0x01; delay(5); DS18B20 = 1; date>>=1; } }
uint read_temp()//读取温
{ uchar a=0; uchar b=0; uint t=0; float tt=0; init_DS18B20();
write_onechar(0xcc); //
共分享92篇相关文档