標題: 請教STC8單片機讀取18B20數(shù)值錯誤 [打印本頁]

作者: 13872888583    時間: 2024-4-25 10:05
標題: 請教STC8單片機讀取18B20數(shù)值錯誤
各位師傅好,最近想用STC8H8K64U單片機讀18b20溫度,在數(shù)碼管上顯示,顯示溫度20,實際溫度25左右,不過,用手捏著18B20,幾秒之后,就會顯示0,之前用89C51,STM32寫過,都能顯示,以為時序錯誤,同時用邏輯分析儀讀取STC8和STM32的時序,發(fā)現(xiàn)有偏差,根據(jù)邏輯分析儀的時間更改了STC8讀取寫入的時序,目前,時序基本一致,可惜,還是老問題,用串口讀取也是一樣的錯誤,發(fā)現(xiàn)把18B20的初始化和寫都注釋掉,也能讀取數(shù)值,這就奇怪了,先說明一下,18B20加有上拉電阻,和貼片濾波電容,接的P13腳。在網(wǎng)上查了一下,都沒有我的這種奇怪問題,真是奇哉怪哉

作者: yzwzfyz    時間: 2024-4-25 15:45
1、設置一個變UU。
2、編程顯示UU中的內(nèi)容,改變UU數(shù)據(jù),就可能驗證顯示程序是否正確。
3、設置一個變MM
4、將讀取的18B20數(shù)據(jù),放入MM中。并評估MM是否正確。有懷疑時再讀讀18B20手冊。
5、將MM中和數(shù)據(jù),轉(zhuǎn)存到UU顯示,就OK了。

作者: xiaobendan001    時間: 2024-4-25 16:32
竊電方式嗎?
作者: cocolala    時間: 2024-4-25 17:03
    1、DS18B20是單總線通信,確實問題最有可能出在時序上。手頭正好有艾克姆的STC8H8K64U開發(fā)板,帶了這個DS18B20的例程。例程見附件。    2、當然你還要考慮硬件原因,上拉電阻是一方面,DS18B20相對比較脆弱,一旦有接錯線的情況都可能導致傳感器不正常的,所以必要時可以更換下這個傳感器。











DS18B20.rar

38.43 KB, 下載次數(shù): 5


作者: 13872888583    時間: 2024-4-25 21:02
yzwzfyz 發(fā)表于 2024-4-25 15:45
1、設置一個變UU。
2、編程顯示UU中的內(nèi)容,改變UU數(shù)據(jù),就可能驗證顯示程序是否正確。
3、設置一個變MM
...

抱歉,技術有限,你的方法操作起來有點困難。
作者: 13872888583    時間: 2024-4-25 21:03
xiaobendan001 發(fā)表于 2024-4-25 16:32
電方式嗎?

5伏供電
作者: 13872888583    時間: 2024-4-25 21:06
cocolala 發(fā)表于 2024-4-25 17:03
1、DS18B20是單總線通信,確實問題最有可能出在時序上。手頭正好有艾克姆的STC8H8K64U開發(fā)板,帶了這個 ...

感謝,直接寫入你的程序,第一個晶振選擇24M,讀取為零,至少比我寫的強,我的不為零,第二次選擇11.052,正常顯示溫度,手摸,溫度會上升。再次感謝
作者: cy009    時間: 2024-4-26 11:30
18B20顯示不正常,多數(shù)為時序不對,對照時序,檢查延時程序。
作者: 13872888583    時間: 2024-4-27 18:01
cy009 發(fā)表于 2024-4-26 11:30
18B20顯示不正常,多數(shù)為時序不對,對照時序,檢查延時程序。

感謝,的確是時序問題,按照樓上的師傅的程序,寫入可以顯示實時溫度,我的就不行,




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