基于51单片机与DS18B20的数字温度计设计 - 副本

发布时间 : 星期二 文章基于51单片机与DS18B20的数字温度计设计 - 副本更新完毕开始阅读

4.2.5 数据处理

高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。

图7 字节分配

下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125℃的数字输出为07D0H,

实际温度=07D0H*0.0625=2000*0.0625=125℃。 例如-55℃的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算), 实际温度=370H*0.0625=880*0.0625=55℃。 可见其中低四位为小数位。

图8 DS18B20温度数据表

4.3 显示电路

LED数码管显示采用动态扫描方式,能简化电路布线,节约单片机I/O端口。 段码和位码由单片机P0送出,分别用74HC673N锁存。

图9 数码管驱动显示电路

4.4 声光报警电路

当温度超过设定温度值时,实现声光报警,蜂鸣器鸣叫、8个发光二极管点亮。蜂鸣器由单片机P2^3口控制,用三极管驱动,发光二极管接单片机P1口,由74HC673N锁存。

图10 声光报警电路

4.5 键盘输入电路

四个键分别连接单片机P3^4、P3^5、P3^6、P3^7构成独立式键盘,分别实现加、减、报警温度设定功能键和温度查询功能键。

图11 键盘输入电路

5 软件设计

5.1 主程序模块

主程序需要调用3个子程序,分别为:

? 实时温度显示子程序:驱动数码管把实时温度值送出在LED数码管显示 ? 查询记录温度值子程序:查询过去存储的温度值,最多可查询10个值 ? 温度设定、报警子程序:设定报警温度值,当温度超过该值时产生报警,

即驱动蜂鸣器鸣叫、8个发光二极管发光 主程序流程图:

开始

定时器初始化、启动 显示实时温度 温度设定、报警

查询记录温度值

图12 主程序流程图

5.2 读温度值模块

读温度值模块需要调用4个子程序,分别为:

? DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操

? DS18B20写字节子程序:对DS18B20发出命令

? DS18B20读字节子程序:读取DS18B20存储器的数据 ? 延时子程序:对DS18B20操作时的时序控制 1. 读温度值模块流程图:

入口

DS18B20初始化 跳过读序列号 启动温度转换 延时 DS18B20初始化 跳过读序列号 读取温度值高低位

数据转换处理 返回

图13 读温度值子程序流程图

联系合同范文客服:xxxxx#qq.com(#替换为@)