久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2257|回復(fù): 12
收起左側(cè)

求助各位大佬 51單片機oled和ds18b20顯示實時溫度不論怎么復(fù)位,溫度一直不變

[復(fù)制鏈接]
ID:1055423 發(fā)表于 2023-1-29 19:50 | 顯示全部樓層 |閱讀模式
51單片機oled和ds18b20顯示實時溫度不論怎么復(fù)位,溫度一直不變,這是為什么?求各位大佬留下意見,以下是主函數(shù)。跪謝

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

int main(void)
{
        OLED_Init();                        //初始化OLED ,oled代碼來源于中景園
        while(1)
        {               
                float T;//用于后續(xù)存儲讀取的溫度
                OLED_Clear();
                OLED_ShowString(0,4,"Temperature:",16);//顯示temperature,顯示在4列0行,占倆行
               
                 DS18B20_CONVERT_T();//開始,ds18b20代碼來源于江科大,此函數(shù)中包含,初始化->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);//三位整數(shù)部分
                OLED_ShowString(4,6,".");//顯示小數(shù)點
                OLED_ShowNum(5,6,(unsigned long)(T*10000)%10000,4,16);//顯示小數(shù)部分
                //延時函數(shù)
                delay_ms(8000);
                delay_ms(8000);
        }         
        
}





回復(fù)

使用道具 舉報

ID:1034262 發(fā)表于 2023-1-29 23:17 | 顯示全部樓層
時序!時序!時序!
回復(fù)

使用道具 舉報

ID:584814 發(fā)表于 2023-1-30 08:16 | 顯示全部樓層
很好的編程手法,只需主程序就可以通曉全部。
個人感覺只要有點耐心,溫度會變面包也會有的。順祝新年快樂
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2023-1-30 08:42 | 顯示全部樓層
int main(void)
{
        OLED_Init();                        //初始化OLED ,oled代碼來源于中景園
        while(1)
        {               
                float T;//用于后續(xù)存儲讀取的溫度
                OLED_Clear();
                OLED_ShowString(0,4,"Temperature:",16);//顯示temperature,顯示在4列0行,占倆行       
                DS18B20_CONVERT_T();//開始,ds18b20代碼來源于江科大,此函數(shù)中包含,初始化->skip ROM->convert t
                T=DS18B20_READT();//提取溫度,存入T

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


                if(T<0){OLED_ShowString(0,6,"-",16);}//判斷正負顯示符號,顯示在6列0行
                OLED_ShowNum(1,6,T,3,16);//三位整數(shù)部分
                OLED_ShowString(4,6,".");//顯示小數(shù)點
                OLED_ShowNum(5,6,(unsigned long)(T*10000)%10000,4,16);//顯示小數(shù)部分
                //延時函數(shù)
                delay_ms(8000);
                delay_ms(8000);
        }                 
}
回復(fù)

使用道具 舉報

ID:752974 發(fā)表于 2023-1-30 09:24 | 顯示全部樓層
主要問題是18B20的數(shù)據(jù)讀取上,18B20是單總線器件,對時序的要求很嚴格,不是隨意搬個代碼就可用的。
回復(fù)

使用道具 舉報

ID:1010435 發(fā)表于 2023-1-30 10:32 | 顯示全部樓層
把后面delay16秒去掉試試,如果你趴在屏幕前盯著屏幕,16秒是很漫長的
回復(fù)

使用道具 舉報

ID:1055423 發(fā)表于 2023-1-31 13:47 | 顯示全部樓層
munuc_w 發(fā)表于 2023-1-30 09:24
主要問題是18B20的數(shù)據(jù)讀取上,18B20是單總線器件,對時序的要求很嚴格,不是隨意搬個代碼就可用的。

好的,感謝這位大佬的建議,
回復(fù)

使用道具 舉報

ID:1055423 發(fā)表于 2023-1-31 13:48 | 顯示全部樓層
coody_sz 發(fā)表于 2023-1-29 23:17
時序!時序!時序!

我再去檢查一遍吧
回復(fù)

使用道具 舉報

ID:1055423 發(fā)表于 2023-1-31 13:48 | 顯示全部樓層
mtt661 發(fā)表于 2023-1-30 10:32
把后面delay16秒去掉試試,如果你趴在屏幕前盯著屏幕,16秒是很漫長的

復(fù)位應(yīng)該會變吧
回復(fù)

使用道具 舉報

ID:1055423 發(fā)表于 2023-1-31 13:49 | 顯示全部樓層
man1234567 發(fā)表于 2023-1-30 08:16
很好的編程手法,只需主程序就可以通曉全部。
個人感覺只要有點耐心,溫度會變面包也會有的。順祝新年快樂 ...

對于新手來說,查bug簡直無從下手
回復(fù)

使用道具 舉報

ID:155507 發(fā)表于 2023-1-31 18:53 | 顯示全部樓層

OLED_18B20.jpg

你的行數(shù)不對


  1. int main(void)
  2. {
  3.             float T;//用于后續(xù)存儲讀取的溫度
  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代碼來源于江科大,此函數(shù)中包含,初始化->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);//三位整數(shù)部分
  14.                 OLED_ShowString(25,6,".",16);//顯示小數(shù)點
  15.                 OLED_ShowNum(29,6,(unsigned long)(T*10000)%10000,4,16);//顯示小數(shù)部分
  16.                 //延時函數(shù)
  17.                 //delay_ms(8000);
  18.                 delay_ms(1000);
  19.         }         
  20.         
  21. }
復(fù)制代碼






回復(fù)

使用道具 舉報

ID:1055423 發(fā)表于 2023-1-31 23:55 | 顯示全部樓層

感謝你,說實話,我沒看太懂中景園oled的代碼,
回復(fù)

使用道具 舉報

ID:596109 發(fā)表于 2023-2-1 08:31 | 顯示全部樓層
debug看看提取的溫度值T變不變吧,不變的話查一查DS18B20的相關(guān)程序,問題很可能在時序上
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av在线一区二区 | 欧美日本免费 | 国产精品亚洲成在人线 | 高清黄色| 亚洲成人免费 | 国产日韩欧美在线观看 | 亚洲三区在线观看 | h片在线免费看 | 91精品国产91久久久久久吃药 | 免费亚洲一区二区 | 欧美激情久久久 | 永久av| 中文字幕精品一区二区三区精品 | 91久久伊人 | 国产精品久久精品 | 国产成人网 | 成人在线免费视频观看 | 久久精品小视频 | 欧美一区二区三区视频在线播放 | 成人欧美日韩一区二区三区 | 黄色一级大片在线免费看产 | 国产精品免费小视频 | 欧美日本韩国一区二区 | 二区国产 | 午夜精品一区二区三区免费视频 | 久久网日本 | 日韩影院在线 | 亚洲91视频 | 天堂中文在线播放 | 久久亚洲精品视频 | 亚洲精品一区二三区不卡 | 久久精品亚洲一区 | 成人欧美一区二区三区 | 欧美精品福利 | 国产视频1 | 国产精品3区 | 欧美在线一区二区三区 | 国产精品视频导航 | 国产成人精品福利 | 久久精品视频在线观看 | 狠狠干av |