熱門: 51單片機(jī) | 24小時必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
沒有看到你單片機(jī)的型號描述,也沒有指出所用晶振是內(nèi)部晶振還是外部晶振。下面從幾點(diǎn)常見問題分析下: 1、除了樓上所說的IO口有沒有被其他電路占用外,還要知道該IO口總線上必須外接上拉電阻。這是單總線通信要求。上拉電阻4.7K~10K范圍。 2、單總線通信需要嚴(yán)格的時序,這樣一定檢查下程序的延時函數(shù)是否準(zhǔn)確,尤其us級延時對51單片機(jī)來說是個考驗(yàn),但這也是很多初學(xué)者調(diào)試出錯的問題點(diǎn)。 |
小臭臭廢 發(fā)表于 2024-1-13 16:37 d18b20復(fù)位成功當(dāng)然接收到1,收到0反而怪了。如果一定想以收到0判斷復(fù)位失敗可以改寫: bit DS18B20_Reset() { DQ=0; //送出低電平復(fù)位信號 delay_us(240); //延時至少480us delay_us(240); DQ=1; //釋放數(shù)據(jù)線 delay_us(60); //等待60us if(!DQ) //如果DQ低電平 { delay_us(240); //等待設(shè)備釋放數(shù)據(jù)線 delay_us(180); return 1; //返回1 } else //DQ低電平 { delay_us(240); //等待設(shè)備釋放數(shù)據(jù)線 delay_us(180); return 0; //返回0 } } |
小臭臭廢 發(fā)表于 2024-1-13 16:37 30塊包郵的邏輯分析儀,你值得擁有 |
網(wǎng)上很多ds18b20的通信程序啊,用網(wǎng)上的程序試試唄,首先排除硬件問題 |
lkc8210 發(fā)表于 2024-1-12 21:34 哈哈,傻了。改了但還是接受不到0 |
第8行沒報(bào)錯嗎? |
沒有看到你單片機(jī)的型號描述,也沒有指出所用晶振是內(nèi)部晶振還是外部晶振。下面從幾點(diǎn)常見問題分析下: 1、除了樓上所說的IO口有沒有被其他電路占用外,還要知道該IO口總線上必須外接上拉電阻。這是單總線通信要求。上拉電阻4.7K~10K范圍。 2、單總線通信需要嚴(yán)格的時序,這樣一定檢查下程序的延時函數(shù)是否準(zhǔn)確,尤其us級延時對51單片機(jī)來說是個考驗(yàn),但這也是很多初學(xué)者調(diào)試出錯的問題點(diǎn)。 ![]() ![]() ![]() ![]() ![]() 3、當(dāng)然還有一個重要原因要注意DS18B20元件的方向,一旦方向接反芯片燒壞的可能性極大。那么就不要再次使用了。附件給基于單片機(jī)STC8A8K64D4的DS18B20程序源碼,個人認(rèn)為這一家寫的程序源碼很規(guī)范,參考性很強(qiáng)。 |
29.58 KB, 下載次數(shù): 3
joyb 發(fā)表于 2024-1-12 11:21 應(yīng)該沒有,這個I/o就做這一個活 |
IO口是否有沖突 |
Powered by 單片機(jī)教程網(wǎng)