求助!4线制的HR202湿度传感模块接DS2450,LCD上一直显示不出来数据,怎么解决啊?
时间:10-02
整理:3721RD
点击:
求助各路大神,当我把电位器接到单总线器件DS2450的D通道时,LCD上有显示,且调节电位器,数据有变化。但当我将HR202传感模块接到单总线器件DS2450的D通道时,在lcd上的显示一直为0。这是为什么啊? 我买的是现成的模块,不是单个的湿敏电阻,且我接的是4线制的AO口,输出的是模拟电压。请教各位大神,我这是哪里出了问题呢?
这是我的部分程序:
void star2450(void) //读数据开始命令
{
reset();
write_byte(0xcc);
write_byte(0x3c); //转换命令
write_byte(0x08);
write_byte(0x00);
read_byte();
read_byte();
if (read_byte()!=0xff)
read_byte();
}
readAD2450() // 读取转换数据
{
EA=0; //关中断,防止读数错误
reset(); //初始化1820
if(yes0==0) //若yes0=0,则1820正常
{
uchar a=0,b=0,i=0;
uint t=0;
write_byte(0xcc);
write_byte(0xaa); //read memory
write_byte(0x06);
write_byte(0x00);
a=read_byte();
b=read_byte();
t=b;
t<<=8;
t=t|a;
temp_flag=1;
return(t);
}
else temp_flag=0; //出错标志置0
EA=1; //读取完数据后,开中断
}
void date_2450()
{
uint l,c;
uchar q,i,j,a,b,d ;
star2450();
l=readAD2450();
q=l/10000;
i=l%10000/1000;
j=l%1000/100;
a=l%100/10;
b=l%10/10;
d=l%10;
LCD_pos(2,0); //从第2行第0列开始显示数据 (湿度
for(i=0;i<16;i++)
{
LCD_wdat(line3_data[i]);
delay(10);
}
LCD_pos(2,3); //从第3行第3列开始显示数据
LCD_wdat(0x30+q);
LCD_wdat(0x30+i);
LCD_wdat(0x30+j);
LCD_wdat(0x2e); //小数点
LCD_wdat(0x30+a);
LCD_wdat(0x30+b);
LCD_wdat(0x30+d);
delay(10);
}
这是我的部分程序:
void star2450(void) //读数据开始命令
{
reset();
write_byte(0xcc);
write_byte(0x3c); //转换命令
write_byte(0x08);
write_byte(0x00);
read_byte();
read_byte();
if (read_byte()!=0xff)
read_byte();
}
readAD2450() // 读取转换数据
{
EA=0; //关中断,防止读数错误
reset(); //初始化1820
if(yes0==0) //若yes0=0,则1820正常
{
uchar a=0,b=0,i=0;
uint t=0;
write_byte(0xcc);
write_byte(0xaa); //read memory
write_byte(0x06);
write_byte(0x00);
a=read_byte();
b=read_byte();
t=b;
t<<=8;
t=t|a;
temp_flag=1;
return(t);
}
else temp_flag=0; //出错标志置0
EA=1; //读取完数据后,开中断
}
void date_2450()
{
uint l,c;
uchar q,i,j,a,b,d ;
star2450();
l=readAD2450();
q=l/10000;
i=l%10000/1000;
j=l%1000/100;
a=l%100/10;
b=l%10/10;
d=l%10;
LCD_pos(2,0); //从第2行第0列开始显示数据 (湿度
for(i=0;i<16;i++)
{
LCD_wdat(line3_data[i]);
delay(10);
}
LCD_pos(2,3); //从第3行第3列开始显示数据
LCD_wdat(0x30+q);
LCD_wdat(0x30+i);
LCD_wdat(0x30+j);
LCD_wdat(0x2e); //小数点
LCD_wdat(0x30+a);
LCD_wdat(0x30+b);
LCD_wdat(0x30+d);
delay(10);
}
已退回5积分