欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 求助各位大佬 51單片機oled和ds18b20顯示實時溫度不論怎么復位,溫度一直不變 [打印本頁]

作者: 小白大佬輕點噴    時間: 2023-1-29 19:50
標題: 求助各位大佬 51單片機oled和ds18b20顯示實時溫度不論怎么復位,溫度一直不變
51單片機oled和ds18b20顯示實時溫度不論怎么復位,溫度一直不變,這是為什么?求各位大佬留下意見,以下是主函數。跪謝

#include "REG51.h"
#include "oled.h"
#include "bmp.h"
#include "DS18B20.h"

int main(void)
{
        OLED_Init();                        //初始化OLED ,oled代碼來源于中景園
        while(1)
        {               
                float T;//用于后續存儲讀取的溫度
                OLED_Clear();
                OLED_ShowString(0,4,"Temperature:",16);//顯示temperature,顯示在4列0行,占倆行
               
                 DS18B20_CONVERT_T();//開始,ds18b20代碼來源于江科大,此函數中包含,初始化->skip ROM->convert t
                T=DS18B20_READT();//提取溫度,存入T
                if(T<0){OLED_ShowString(0,6,"-",16);}//判斷正負顯示符號,顯示在6列0行
               
                 OLED_ShowNum(1,6,T,3,16);//三位整數部分
                OLED_ShowString(4,6,".");//顯示小數點
                OLED_ShowNum(5,6,(unsigned long)(T*10000)%10000,4,16);//顯示小數部分
                //延時函數
                delay_ms(8000);
                delay_ms(8000);
        }         
        
}






作者: coody_sz    時間: 2023-1-29 23:17
時序!時序!時序!
作者: man1234567    時間: 2023-1-30 08:16
很好的編程手法,只需主程序就可以通曉全部。
個人感覺只要有點耐心,溫度會變面包也會有的。順祝新年快樂
作者: wulin    時間: 2023-1-30 08:42
int main(void)
{
        OLED_Init();                        //初始化OLED ,oled代碼來源于中景園
        while(1)
        {               
                float T;//用于后續存儲讀取的溫度
                OLED_Clear();
                OLED_ShowString(0,4,"Temperature:",16);//顯示temperature,顯示在4列0行,占倆行       
                DS18B20_CONVERT_T();//開始,ds18b20代碼來源于江科大,此函數中包含,初始化->skip ROM->convert t
                T=DS18B20_READT();//提取溫度,存入T

                //加一條驗證語句,以區分問題在取樣部分還是顯示部分
                T=0x0190;//25度


                if(T<0){OLED_ShowString(0,6,"-",16);}//判斷正負顯示符號,顯示在6列0行
                OLED_ShowNum(1,6,T,3,16);//三位整數部分
                OLED_ShowString(4,6,".");//顯示小數點
                OLED_ShowNum(5,6,(unsigned long)(T*10000)%10000,4,16);//顯示小數部分
                //延時函數
                delay_ms(8000);
                delay_ms(8000);
        }                 
}
作者: munuc_w    時間: 2023-1-30 09:24
主要問題是18B20的數據讀取上,18B20是單總線器件,對時序的要求很嚴格,不是隨意搬個代碼就可用的。
作者: mtt661    時間: 2023-1-30 10:32
把后面delay16秒去掉試試,如果你趴在屏幕前盯著屏幕,16秒是很漫長的
作者: 小白大佬輕點噴    時間: 2023-1-31 13:47
munuc_w 發表于 2023-1-30 09:24
主要問題是18B20的數據讀取上,18B20是單總線器件,對時序的要求很嚴格,不是隨意搬個代碼就可用的。

好的,感謝這位大佬的建議,
作者: 小白大佬輕點噴    時間: 2023-1-31 13:48
coody_sz 發表于 2023-1-29 23:17
時序!時序!時序!

我再去檢查一遍吧
作者: 小白大佬輕點噴    時間: 2023-1-31 13:48
mtt661 發表于 2023-1-30 10:32
把后面delay16秒去掉試試,如果你趴在屏幕前盯著屏幕,16秒是很漫長的

復位應該會變吧
作者: 小白大佬輕點噴    時間: 2023-1-31 13:49
man1234567 發表于 2023-1-30 08:16
很好的編程手法,只需主程序就可以通曉全部。
個人感覺只要有點耐心,溫度會變面包也會有的。順祝新年快樂 ...

對于新手來說,查bug簡直無從下手
作者: angmall    時間: 2023-1-31 18:53



你的行數不對


  1. int main(void)
  2. {
  3.             float T;//用于后續存儲讀取的溫度
  4.         OLED_Init();                        //初始化OLED ,oled代碼來源于中景園
  5.         while(1)
  6.         {               

  7.                 OLED_Clear();
  8.                 OLED_ShowString(0,4,"Temperature:",16);//顯示temperature,顯示在4列0行,占倆行
  9.                
  10.                  DS18B20_CONVERT_T();//開始,ds18b20代碼來源于江科大,此函數中包含,初始化->skip ROM->convert t
  11.                 T=DS18B20_READT();//提取溫度,存入T

  12.                 if(T<0){OLED_ShowString(0,6,"-",16);}//判斷正負顯示符號,顯示在6列0行
  13.                  OLED_ShowNum(1,6,(unsigned int)T,3,16);//三位整數部分
  14.                 OLED_ShowString(25,6,".",16);//顯示小數點
  15.                 OLED_ShowNum(29,6,(unsigned long)(T*10000)%10000,4,16);//顯示小數部分
  16.                 //延時函數
  17.                 //delay_ms(8000);
  18.                 delay_ms(1000);
  19.         }         
  20.         
  21. }
復制代碼







作者: 小白大佬輕點噴    時間: 2023-1-31 23:55
angmall 發表于 2023-1-31 18:53
你的行數不對

感謝你,說實話,我沒看太懂中景園oled的代碼,
作者: yxtao    時間: 2023-2-1 08:31
debug看看提取的溫度值T變不變吧,不變的話查一查DS18B20的相關程序,問題很可能在時序上




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