延时函数的问题 |
void delay_ms(int shuzhi)//ms延时函数 void delay_us(int num)//us延时函数 可能是这两个延时函数的问题,导致不精准,优化下! |
P0口需要上拉电阻 |
[/align][align=left]这些是什么鬼看得眼花 ![]() 建议将 void main()//主函数 { while(1) { delay_ms(1500); //DHT11上电后等待超过1s以越过不稳定状态 DHT_receive(); } } 调整成 void main()//主函数 { delay_ms(1500); //DHT11上电后等待超过1s以越过不稳定状态 while(1) { DHT_receive(); } } 试试。还有就是感觉在delay()里用while(1)也极罕见。 |
你说是共阴数码管,但你这仿真图是共阳接法。 |
DHT11、 18B20这类接口,出问题,有三个方面,第一时序,第二时间,第三口线的设置,第一个一般不出问,因为大家用的程序都是参考了调试通过的了例程,第二个是出问题最多的是时间,因为延时都是用程序循环实现的,而我们用的单片机,时钟频率分频系数和例程可能差别很大,比如用的例程是标准的51(89CAT52),而实际用的是STC12C5A60S2单片机,那延时的时间就差很多了,只要报延时的时间弄对了就ok了,低三就是口线的设置,如方向驱动能力等。 |
P0口需要外部上拉。 |
不要再while(1)里面延时,你的数码管刷不起来的。建议如果确实需要延时用定时器加标志做成时间片。 |