第一次顯示時基本沒做什么改變
第一幅.png (237.85 KB, 下載次數: 20)
下載附件
2023-6-14 20:13 上傳
但是改變數據之后并沒有反應
第二幅.png (239.74 KB, 下載次數: 25)
下載附件
2023-6-14 20:13 上傳
但是關閉重開又改變了
第二幅.png (239.74 KB, 下載次數: 25)
下載附件
2023-6-14 20:13 上傳
這是與溫濕顯示相關代碼(還有其他的亂七八糟的代碼太多太雜了,所以就單獨把DHT11的拿了出來)
void LCD_DIer()//第二行固定符號
{
LCD_Cursor(1);
LCD_Charactor("T:");
}
void LCD_WEN()//溫度示數顯示
{
LCD_Data(shuzi[T_H]);
LCD_Data(shuzi[T_L]);
LCD_Data(0xdf);
LCD_Data(0x43);
LCD_Charactor(" H:");
// LCD_Data(0x53);//固定S顯示
// LCD_Data(0x3a);
// LCD_Data(0xa0);
}
void LED()//濕度警示燈
{
if((S_L+S_H)>45&&(S_L+S_H)<60)
GREEN=1;
if((S_L+S_H)>60)
YELLOW=1;
if((S_L+S_H)<45)
RED=1;
}
void LCD_SHI()//濕度示數顯示
{
LCD_Data(shuzi[S_H]);
LCD_Data(shuzi[S_L]);
LCD_Data(0x25);
}
void LCD_WENSHI()//溫濕數據報警及警示燈
{
if((S_L+T_H)>=50)//高溫報警
{
GREEN=0;
YELLOW=0;
RED=1;
delayms(200);
RED=0;
yy=1;
}
if((T_L+T_H)<50)
yy=0;
if(yy==0)
LED();
}
void DHT11_start()//溫濕傳輸信號判定(數據位移有問題)
{
u8 i,Temp;//后續可能要加延時
for(i=0;i<16;i++)
{
while(!LCD_T);
delayus(30);
Temp=0;
if(LCD_T==1)
Temp=1;
//while(LCD_T);
sum<<=1;
sum|=Temp;
}
}
void LCD_Tem()//溫濕開始電信號
{
u8 i=0;
LCD_T=1;
LCD_T=0;
Delay(200);
LCD_T=1;
delayus(80);
while(LCD_T);
while(!LCD_T);
while(LCD_T);
while(!LCD_T);
DHT11_start();
S=sum;
DHT11_start();
T=sum;
DHT11_start();
res=sum;
}
LCD_T就是DHT11與單片機連接的端口命名
這個是放在中斷函數里的將個十位分開的代碼
if(T_H+T_L+S_H+S_L==res)
{
T_H=(T/10)%10;
T_L=T%10;
S_H=(S/10)%10;
S_L=S%10;
}
|