关于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
- 关于STC89C52驱动DS18B20
- 51单片机(STC89C52)DS18B20温度传感器驱动程序
- DS18B20驱动
- DS18B20 驱动
- DS18B20驱动
- DS18B20驱动
- 关于ds18b20
- 急求STC89C52和DS18B20温控系统的程序
- STC89C52单片机内部EEPROM驱动
- STC89C52单片机内部EEPROM驱动
- DS18B20的驱动过程
- 单片机驱动DS18B20
- mini2440 驱动ds18b20
- ds18b20 驱动测试程序
- OK6410 Linux DS18B20驱动
- mini2440 驱动ds18b20
- linux ds18b20 温度传感器驱动
- 驱动——DS18B20
- Oracle数据库常见问题
- Android 几个ApplicationInfo Info系列类的总结
- Eclipse反编译工具JAD.exe使用
- 指向对象的指针
- 15道简单算法题
- 关于STC89C52驱动DS18B20
- Android蓝牙串口连接总结
- HEVC——码率控制提案总结
- Linux内核中内存相关的操作函数
- 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型
- Eclipse使用技巧:web项目构建时如何不删除WEB-INF/classes下的文件
- ASP.NET自定义控件开发示例(二)
- Satellite Photographs
- 对覆盖和隐藏较好的解释