记号贴:89C52+1602+DS18B20实现的实时温度显示系统。带C和PROTEUS仿真。 【恢复】

2020-01-27 11:51发布

此贴为转载。但是内容是经过验证的。51+18B20实时测温通过。以下为作者的笔记。仿真在PROTEUS7.2版通过了。

(不过此程序只能正确显示0~99度之内的温度。支持最高精度的显示。高于100和小于0度的温度会出错。注释很详细,如果需要很自行更改。)

调试笔记:



1、DS18B20重新启动单总线,然后使用0xbe读取转换的温度值,不能写入0x44(启动转换)命令之后延时750ms接着就读取scratchpad,这样是没有意义的,参见DS18b20 Datasheet中的访问流程图;



 



2、用单片机模拟单总线需要精确的微秒级延时,因此,延时程序的编制太重要不过了;本例程编制中参考了网络原创贴:51单片机 Keil C 延时程序的简单研究(by: InfiniteSpace Studio),具体如下:



/*延时计算式:2 × x+5;Step:2us;*/

extern void Delay_Xus(int8u x)  //x取值1~255;

{ while(--x); }





3、Read time slot中必须对DQ写1后再读,否则,读出来的温度转换值将是不预期的垃圾;





DNS文件+说明+Keil文件ourdev_614607.rar(文件大小:339K) (原文件名:DS18B20.rar) 
0条回答

一周热门 更多>