基于单片机的温度自动检测系统设计课程设计 联系客服

发布时间 : 星期一 文章基于单片机的温度自动检测系统设计课程设计更新完毕开始阅读077ff5b6db38376baf1ffc4ffe4733687e21fcc8

图5-1 主程序流程图

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每250ms进行一次。主程序的第二个功能是查询SET键是否被按下,以实现设置温度上下限的功能。其程序流程见图5-1所示。由总的流程图可以分析出,在整个程序中应该包括如下几个部分:读写DS18B20子程序,温度转换子程序,处理温度数据子程序,动态数据显示子程序等

5.2 读出温度子程序

读出温度子程序的主要功能是读出RAM中的数据,在读出时需进行CRC校验,校验有错时不进行温度数据的读取。其程序流程图如图5-2所示。

开始

11

初始化DS18B20 图5-2 程序流程图

CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令, 这样才能对DS18B20进行预定的操作。

void Init_DS18B20(void) { unsigned char x=0; DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ; delay_18B20(20);

}

上述程序中将DQ拉低,精确延时,再将DQ拉高,通过判断x的值来确定是否已经初始化完成。

5.3 温度数据显示子程序

显示温度数据子程序主要是对显示缓冲数组中的显示数据进行刷新操作,查表送段码至LCD,点亮数码管,显示数字。一个字节不能直接在显示屏上显示,这就需要将字节通过处理

12

转化成能在LCD上显示的数。

该段程序的作用在于,在接收到温度信息后,通过转化,变成能在LCD上显示的字符。再通过LCD显示出来。

5.4 设置报警温度

该系统可以设置报警温度,当K1=1,开启中断,可以设置温度上限,如果K3=1时,减一;如果K4=1时,加一。

if(K3==0) {

delay(10); while(K3==0); if(BJG=='9') { BJG='0'; BJS++; } else BJG++; } if(K4==0) {

delay(10); while(K4==0); if(BJG=='0') { BJG='9'; BJS--; } else BJG--;

}

这段程序的作用在于,设置报警温度的大小值 。

6 软件仿真

13

6.1 软件介绍

Proteus是英国Labcenter公司开发的电路分析与实物仿真及印制电路板设计软件,它可以仿真、分析各种模拟电路与集成电路,软件提供了大量模拟与数字元器件及外部设备,各种虚拟仪器,特别是它具有对单片机及其外围电路组成的综合系统的交互仿真功能。

Proteus主要由ISIS和ARES两部分组成,ISIS的主要功能是原理图设计及与电路原理图的交互仿真,ARES主要用于印制电路板的设计。

6.2 仿真过程

在Proteus中仿真如下图所示,在仿真过程中,主要检测DS18B20是否能快捷的检测出室温,能否随着温度的变化而变化。这是检验是否能检验温度的重要标准。

设置报警温度为50摄氏度,仿真结果如图6-2-1:

图6-2-1 报警温度设置显示

当温度(55C)超过报警温度时红灯点亮,仿真结果如图6-2-2。

图6-2-2

当温度(40C)超过报警温度时红灯熄灭绿灯点亮,仿真结果如图6-2-1。

图6-2-1

7 实物的焊接与调试

由于本次设计使用的是Altium designer软件绘图制版,Proteus软件仿真,因此很容易

14