关于STC89C52驱动DS18B20

来源:互联网 发布:基址发布器源码 编辑:程序博客网 时间:2024/05/02 01:00

今天主要还是在颓废地弄着课程设计,昨天把板焊好,然后把程序烧进去52里面,发现1602显示为"E4.5" 开始以为是程序问题


接线

第二天开始检查时,发现探头时间一长会自行发热,明显接线有问题。之前是按照网上说的:红色(VCC) 蓝色(DS) 黄色(GND),然后再看看其他组的接线,发现我的果然接反了,应该是:红色(VCC)黄色(DS) 蓝色(GND) 。换好接线后,探头就没事了

PS:其实一开始没发现是接线问题,还以为是程序出错了,通过一步步调试发现,初始化没问题,问题出在温度转换那一步(DS18B20需要返回1表示转换完成),DS18B20没有返回转换完成的信号,因为初始化正常了,所以没怀疑是接线问题,现在想想看,应该是因为接错线,DS恒为0,所以在初始化函数中,认为是DS18B20响应了,所以才通过初始化函数。


上拉电阻

开始显示的数据依旧出错,开始苦逼调试了..........

开始以为是数据采集位数的问题,以为自己的不支持9bit采集(后来查商品,发现大家都是DS18B20,都是支持的.......),换了12bit采集问题依旧;

还以为是数据传输问题(看到有说加了屏蔽线的DS18B20卖的),后来发现这个太不实际了。

然后回想了自己之前总结
调试心得——软硬兼施 - 以技术自娱的Geeker - 博客频道 - CSDN.NET


从软件角度来说,在开发版运行的程序跟新焊的板子上是一样的,这样就排除了软件问题。

从硬件角度来说,所有配件都是正常的,没有损坏。接着就对比新板子跟开发版的相关电路部分,终于发现一处不同:

开发板上的IO都是带上拉的,而新板子上DS是没有上拉的。

随后查资料发现,stc89C52是可以配置为强上拉,但是复位默认为弱上拉,就是说跟普通51一样,没有上拉。

最后按照Datasheet,加上一个4.7K的上拉电阻,问题得到解决~~~~


现在看来,自己之前总结的方法其实能很快发现问题,但是很多时候是自己先入为主,将问题一开始就局限在某个点上。如果在每次调试前都把方法过一下脑子,基本上就能定位问题。

如果是按照方法来:

第一,我开始就应该在开发板上试下程序,因为程序昨天已经证明是可用的,所以问题在硬件部分(而反观显示,我自以为是软件)

第二,发现是硬件问题,分模块排查:最小系统能工作,1602能工作,不过能否发现探头发烫,这个是偶然性事件。

第三,怀疑是电气连接和接线,这个会查看探头的Datasheet,发现有上拉,随后查资料,发现需要上拉。有一定可能会去怀疑探头接线问题。


这样看,排插的过程很清晰,有条理,不会像今天那样盲目低效。

发现了规律,却不懂得运用,悲哀  T.T


0 0