图16 系统主程序流程图
5.3 传感器程序设计
DS18b20的读时序,DS18b20的读时序图如图17所示。
图17 DS18b20的读时序
从DS18B20读取一个字节的程序片段,读出温度子程序的主要功能是读出RAM的9字节,在读出时需要进行CRC校验。其程序如下。
sbit DQ=P3^3;
void Delay(uint x)
{
while(--x);
}
uchar Read_One_Byte( )
{
uchar i,dat=0;
DQ=1;_nop_( );
for(i=0;i<8;i++)
{
DQ=0; dat>>=1;
DQ=1;
_nop_( );_nop_( );
if(DQ)
dat|=0x80;
Delay(30);
DQ=1;
}
return dat;
}
5.4 显示程序设计
根据系统的要求,单片机不仅要能接收到温度信号,还要将温度信号显示出来,使系统一目了然。对于输入的温度信号的显示是利用8个数码管进行显示的。先取缓冲区的首地址,然后去各位对应的字位码,完了送到74HC573锁存器中,再重复刚才的过程,最后显示字码。LED显示流程图如图18所示。
图18 LED显示流程图
5.5 报警程序设计
本设计采用高温或者低温报警,如果某个传感器的温度超过或者低于了设定温度,将发出报警。其程序如下。
warning()
{int i,j; for(j=0;j<400;j++)
{
{sound=1;
for(i=0;i<100;i++)
sound=0;
}
}
}
5.6 通信模块程序设计
通过串行口与计算机和通信系统,可以发送到上位机温度。通过RS232总线与计算机连接。当运行Proteus软件,你可以从数码管上看到4个通道的温度循环显示。其程序如下。
void SendStr(char *str)
{ TI = 0;
while(*str != 0x00)
{ SBUF = *str++;
while(TI == 0);
TI = 0;
}
}
6. 结束语
本设计选用DS18b20这种单种线数字温度传感器的通信方式。用其构建的系统有很多优点:硬件连线简单,省去了使用模拟传感器要进行放大、A/D转换等工作。由于它的级联功能,一条总线可以挂接多个传感器测量不同位置的温度,根据DS18b20唯一的序列号识别不同传感器在各自位置的温度。
该设计以C51单片机为核心,以DS18b20温度传感器为温度采集装置。着重介绍了温度采集模块、键盘模块、显示模块、报警模块还有串口通信模块等各模块电路的设计,以及个电路与单片机的接口技术。最后还给出系统的软件设计过程,使用C语言进行程序设计。在论文的最后给出了仿真结果图,包括正常情况下的仿真图和报警状态下的仿真图。该设计适用于环境温度监控,对温度小变化较敏感。缺点是不适合应用于温度跨度大的温度采集处理方式。
该设计能对多通道的温度进行采集处理,具有的功能是:(1) 温度测量范围是0℃——99℃;(2) 能循环显示温度值;(3) 通过键盘可以设置温度报警的上下限,具有报警功能;(4) 采用LED显示。 51单片机的多通道温度采集处理系统设计+仿真图+源码(7):http://www.youerw.com/zidonghua/lunwen_1336.html