1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 單片機DHT11接收數據異常,而且改變數據時LCD不會隨之改變? [打印本頁]

作者: dwx31    時間: 2023-6-14 20:16
標題: 單片機DHT11接收數據異常,而且改變數據時LCD不會隨之改變?
第一次顯示時基本沒做什么改變


但是改變數據之后并沒有反應

但是關閉重開又改變了


這是與溫濕顯示相關代碼(還有其他的亂七八糟的代碼太多太雜了,所以就單獨把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;
                }


作者: 人中狼    時間: 2023-6-14 22:46
1602顯示的是ASCII碼,不是數字
作者: dwx31    時間: 2023-6-15 18:00
人中狼 發表于 2023-6-14 22:46
1602顯示的是ASCII碼,不是數字

顯示我做了一個數組,把1602顯示數字的的電信號按0-9寫進去了
作者: Oabc    時間: 2023-7-27 01:00
你好,請問解決了嗎?




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1