我的濕度顯示是這樣的,很奇怪,連I都有??


左邊是DHT11的資料,右邊是設定的報警溫度,程式如下?
能不能教教我怎么把濕度的資料調正常呀?
DHT11部分的程式:
/*********************** DHT11測驗模塊***************************************/
void start()//開始信號
{
io=1;
delay1();
io=0;
delay(20);//>18ms
io=1;
delay1();//20-40us
delay1();
delay1();
delay1();
delay1();
}
uchar receive_byte()//接收一個位元組
{
uchar i,temp,count;
for(i=0;i<8;i++)
{
temp=0;
delay1();delay1();delay1();delay1();
if(io==1)temp=1;
count=2;
while((io)&&count++);
if(count==1)break;
data_byte<<=1;
data_byte|=temp;
}
return data_byte;
}
void receive()//接收資料
{
uchar T_H,T_L,R_H,R_L,check,num_check;
uchar count;
start();//開始信號
io=1;
if(!io)//讀取DHT11回應信號
{
while((io)&&count++);
R_H=receive_byte();
R_L=receive_byte();
T_H=receive_byte();
T_L=receive_byte();
check=receive_byte();
io=0;//拉低延時50us
delay1();delay1();delay1();delay1();delay1();
io=1;
num_check=R_H+R_L+T_H+T_L;
if(num_check=check)
{
RH=R_H;
RL=R_L;
TH=T_H;
TL=T_L;
check=num_check;
}
}
}
中間其他模塊的省了,
這是主程式中的顯示:
display(0x05,TH/10+0x30); //溫度顯示
display(0x06,TH%10+0x30);
display(0x45,RH/10+0x30); //濕度顯示
display(0x46,RH%10+0x30);
這里的RH好像只有濕度的整數部分,但這樣取出來也不會像照片里那樣吧,好奇怪啊
uj5u.com熱心網友回復:
檢查你的顯示函式,檢查RH變數推薦你在RH=R_H;這里設個斷點,觀察RH的值是否正常,若正常則可能是顯示函式的用法有問題。若不正常則可能是模塊設定有問題
uj5u.com熱心網友回復:
檢查你 RH 中的值,可能是太大了。display(0x45,RH/10+0x30); 中如果 RH/10 的值大于 9,+0x30 后就可能是數字以外的字符。
例如,
ASC("B") = 0x42,RH/10 = 18
ASC("B") = 0x49,RH/10 = 27
試試 display(0x45,(RH/10)%10+0x30);。是否高位有其他內容?
uj5u.com熱心網友回復:
能顯示出來應該資料校驗時正常的。會不會是液晶屏顯示程式的問題? 要不試試在上面顯示固定的數字看看效果?
uj5u.com熱心網友回復:
學習學習學習轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/119766.html
標籤:單片機/工控
上一篇:單片機
下一篇:verilog 設計密碼鎖
