![]() |
發(fā)布時間: 2019-12-26 11:30
正文摘要:本帖最后由 151huh 于 2019-12-26 11:41 編輯 使用的元件有stc89c52,npn三極管,四位一體共陰數(shù)碼管,DHT11. 代碼文件#include <reg52.h> #define duanxuan P0 #define weixuan P2 sbit Data = P1^0; ... |
延時函數(shù)的問題 |
void delay_ms(int shuzhi)//ms延時函數(shù) void delay_us(int num)//us延時函數(shù) 可能是這兩個延時函數(shù)的問題,導(dǎo)致不精準(zhǔn),優(yōu)化下! |
P0口需要上拉電阻 |
[/align][align=left]這些是什么鬼看得眼花 ![]() 建議將 void main()//主函數(shù) { while(1) { delay_ms(1500); //DHT11上電后等待超過1s以越過不穩(wěn)定狀態(tài) DHT_receive(); } } 調(diào)整成 void main()//主函數(shù) { delay_ms(1500); //DHT11上電后等待超過1s以越過不穩(wěn)定狀態(tài) while(1) { DHT_receive(); } } 試試。還有就是感覺在delay()里用while(1)也極罕見。 |
你說是共陰數(shù)碼管,但你這仿真圖是共陽接法。 |
DHT11、 18B20這類接口,出問題,有三個方面,第一時序,第二時間,第三口線的設(shè)置,第一個一般不出問,因為大家用的程序都是參考了調(diào)試通過的了例程,第二個是出問題最多的是時間,因為延時都是用程序循環(huán)實現(xiàn)的,而我們用的單片機(jī),時鐘頻率分頻系數(shù)和例程可能差別很大,比如用的例程是標(biāo)準(zhǔn)的51(89CAT52),而實際用的是STC12C5A60S2單片機(jī),那延時的時間就差很多了,只要報延時的時間弄對了就ok了,低三就是口線的設(shè)置,如方向驅(qū)動能力等。 |
P0口需要外部上拉。 |
不要再while(1)里面延時,你的數(shù)碼管刷不起來的。建議如果確實需要延時用定時器加標(biāo)志做成時間片。 |
Powered by 單片機(jī)教程網(wǎng)