本帖最后由 yuse 于 2009-10-24 22:12 编辑
曾经在论坛发过这个项目的帖子,关于DS18B20多点测量上百台冷柜的项目。最后参照朋友们的意见做的如下方案:
我是先转换所有的DS18B20,然后延迟2s,再分别读取所有的DS18B20。这样可以快一些。如果哪个温度过高就报警。比如设置>-10度为报警值,程序中因为放大倍数了,比如-11.06放大为-1106,那么程序中设计时应该>-1000就报警,当然液晶显示还是-11.06。
现出现了这样的问题:我用keil和proteus联调,程序刚开始运行时正常,我在仿真时设置了4个不同温度值-10,-15,-20,-25的DS18B20,也就是说都不应该报警,当然keil调试程序内部显示-1000,-1500,-2000,-2500。但运行一段时间后莫名其妙的出现个-6,然后报警。起初我以为是proteus不稳定的原因,后来我觉的是18B20程序设计有问题,是不是应该按照一般的步骤转换一个,延时1s,再读取1个;再下一个...,而不能先全部转换延迟2s后再分别读取? 希望朋友们给与意见,谢谢! |