基于8051单片机温度采集及无线发送

时间:2022-09-30 02:33:09

基于8051单片机温度采集及无线发送

摘 要:为了远程监控实时温度数据,利用温度传感器DS18B20的特点,与AT89C51单片机构成实时温度检测系统,并通过LED数码管显示。利用无线传输模块SRWF-1的特点,与单片机构成数据传输部分,将所测量的温度无线传输发送给上位机。给出了DS18B20,SRWF-1分别和AT89C51所构成系统的应用电路和部分程序。通过无线模块的引入,能较好地实现远程温度检测系统。

关键词:8051单片机; DS18B20; 温度采集; SRWF-1无线模块

中图分类号:TN87-34文献标识码:A

文章编号:1004-373X(2011)01-0146-04

Temperature Collection and Wireless Transmission Based on 8051 MCU

WANG Wei, LI Shu-rong

(Department of Information & Control Engineering, China University of Petroleum, Dongying 257061, China)

Abstract: In order to remotely monitor the real-time temperature data, a real-time temperature detection system composed by the temperature sensor DS18B20 and AT89C51 microcomputer is introduced, which is displayed through LED nixie tube. The wireless transmission system sent the measured temperature to the host computer, which was formed by using wireless transmission module SRWF-1 features and MCU. The circuit and part of program of the whole system composed by DS18B20, SRWF-1and AT89C51 are provided. The introduction of a wireless transmission module can be better applied to remote temperature detection system.

Keywords: 8051 MCU; DS18B20; temperature collection; SRWF-1wireless module

0 引 言

随着数字化脚步的加快,越来越多的数字化产品取代了原有的机械式仪表,从而大大提高了数据的准确率。然而,多数情况下,温度的采集过程只在现场实时显示,在增加了工作量的同时,也可能会造成很多不便,如进入危险区域。因此,将无线网络应用在工业生产中,不仅能大大提高工作效率,同时也在一定程度上降低了劳动强度。

本设计基于以上两点,将工业生产中常用到的温度进行数字化,并通过无线模块将数据发送出去,在接收方利用无线接收设备接收实时的数据,从而大大降低劳动强度。

1 系统组成

系统由单片机、温度传感器、串口通信模块和无线传输模块等几部分组成。测温系统将测得的温度通过单片机在数码管上实时显示,同时,通过串口通信部分和无线模块将数据发送给上位机。系统结构如图1所示。

该设计以Atmel公司生产的单片机AT89C51为核心,以数字温度传感器DS18B20作为温度采集,以SRWF-1无线模块作为无线数据传输,从而构成整体系统。

图1 系统结构图

1.1 单片机系统

系统采用AT89C51作为核心控制,配备4位共阴极数码管显示电路。AT89C51是Atmel公司推出的┮恢知低功耗、高性能CMOS 8位微处理器,具有8 KB系统可编程FLASH存储器;256 B RAM;32个I/O引脚,分为4个8位控制端口;看门狗定时器;2个数据指针;3个16位定时器/计数器;两级中断优先等级;可编程全双工串行传输端口;片内晶振及时钟电路;8个中断源[1]。其性能完全能够满足系统要求。数码显示采用Ytt410391K四位7段8线数码管,作为温度显示部分,并用最末一位显示小数。

1.2 数字温度传感器DS18B20

DS18B20是美国Dallas公司生产的一款可编程1-Wire数字温度计。具有精度高,全数字化,连线少等诸多优点。其可直接将采集到的温度转换成数字信号,通过单条数据线串行发送出去,只要严格遵循规定时序逻辑和脉冲间隔,就能舍去同步时钟信号线,做到通信期间引脚最少化,达到温度采集目的。

1.2.1 内部结构及外部管脚

数字式温度传感器DS18B20的内部结构如图2所示,其主要由四部分组成:64位ROM和单总线接口、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器[2]。

图2 DS18B20内部结构图

DS18B20 64位闪存ROM的开始8位是产品类型的编号,接着的48位为每个器件的惟一序号,最后8位是CRC校验码。用于存储用户设定温度上下限值的非易失性温度报警触发器TH和TL,使用时可通过软件写入、设定报警上下限值。DS18B20内部配有一个电可擦除的E2PROM,用于存储TH、TL值,数据先写入内部的高速暂存RAM,经校验后在传给E2PROM。RAM中的第5个字节为配置寄存器,用于确定温度值的数字转化分辨率。工作时按此寄存器中的分辨率将温度转化为相应精度的温度值[3]。

DS18B20具有三引脚To-92小体积封装形式,如图3所示; 温度测量范围为-55~+125 ℃,其工作电源既可在远端引入,也可使用寄生电源方式产生;CPU只需┮桓端口线就能与诸多DS18B20通信,由于其占用微处理器的端口较少,因此可节省大量的引线和逻辑电路。

图3 DS18B20管脚图

DSB18B20各引脚介绍如下:GND为地;DQ为数据输入/输出端;VDD为外接供电电源输入端(在寄生电源接线方式时接地);NC为SOIC封装的,NC为空引脚。

1.2.2 工作原理

DS18B20内部的低温度系数振荡器能产生稳定的频率信号f0,而高温度系数振荡器则将被测温度转化成频率信号f。当计数器打开时,DS18B20则对f0计数,计数器开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性给予补偿。其测量的结果将暂存在温度寄存器中,可使单片机方便的将温度读出[4]。

DS18B20的核心是一个直接的数字化温度传感器,可将温度值按9 b,10 b,11 b,12 b分辨率进行量化,默认分辨率为12 b,对应的温度最小增量分别为05 ℃,025 ℃,0125 ℃和0062 5 ℃。当主机向DS18B20发出温度转化命令后,开始温度转换,检测的温度结果将存放在两个字节中,最低位LSB在前,最高位MSB为符号位[5]。其数据格式如下:

232221202-12-22-32-4LSB

MSB(unit=℃) LSB

SSSSS262524MSB

其中,高位字节MSB的高5位为温度的符号位,当温度为正时,该5位为0,温度为负时,统一为1。高位字节MSB的低3位和低位字节LSB的高4位共同组成温度值的整数部分,低位字节LSB的低4位为小数位,采用二进制补码方式存储温度数据。例如,当温度为+125 ℃时,输出温度为07D0h;当温度为+85 ℃时,输出温度为0550h;当温度为+25.062 5 ℃时,输出温度为0191h;当温度为-10.125 ℃时,输出温度为FF5Eh;当温度为-55 ℃时,输出温度为FC90h。

1.2.3 硬件设计

将DS18B20的数据输入/输出端与单片机AT89C51的P3.7端口相连,并将温度值通过P1端口显示出来。硬件原理图如图4所示。

图4 硬件原理图

1.3 SRWF-1型无线数据模块

SRWF-1型微功率无线数传模块是上海桑锐电子科技有限公司自主开发的智能型产品,该产品支持1 200 b/s,2 400 b/s,4 800 b/s,9 600 b/s,19 200 b/s等多种接口波特率,也可根据需要提供其他非标准接口波特率。

SRWF-1型微功率无线数传模块具有最大10 dBm(10 mW)的微发射功率;可提供多种载频频率;高抗干扰能力和低误码率,可得到实际误码率为10-5~10-6;传输距离远,在视距下,可靠传输距离大于300 m;支持多信道,多速率,可根据需要扩展到16/32信道;双串口,三种接口方式;智能数据控制,无需编制多余程序,较大的数据缓冲区,可一次传输无限长度的数据;低功耗,接收电流小于20 mA,发射电流小于40 mA,休眠时电流仅为20 μA;高可靠性,体积小,重量轻;两种接口收发等待时间,既能用于高速设备(如DSP系统)也可适用低速系统(如51系统);看门狗实时监控,使设备永不死机。

1.3.1 外形尺寸结构图

SRWF-1的外形结构如图5所示。

图5 SRWF-1外形结构图

1.3.2 接口定义

SRWF-1提供1个9针的连接器(CON1),其定义基于终端的连接方法如表1所示。

表1 连接器CON1的定义及连接方法

序号SRWF-1端说明电平连接到终端备注

1GND电源地电源地

2VCC电源DC+3.6~5.0 V

3RXD/TTL串行数据接收端TTLTXD

4TXD/TTL串行数据发射端TTLRXD

5SGND信号地模拟地可与电源地相连

6A(TX)RS 485的ARS 232的TXA(RX)

7B(RX)RS 485的BRS 232的RXB(TX)

8SLEEP休眠控制(输入)TTL休眠信号低有效t>15 ms

9RESET复位控制(输入)TTL复位信号负脉冲1 ms

1.3.3 接口参数

SRWF-1的左下角有一组5位的短路跳线(J1),分别定义为ABCDE,设跳线开路(不插短路器)为状态0,跳线短路(插入短路器)为状态1。其配置方法为:

(1) 信道频率

J1的ABC三位跳线提供8种选择,可通过设置ABC的短接状态确定使用0~7号信道,只要在通信网中,ABC的跳线方式相同,就可以相互通信,其对应的频道如表2所示。

表2 0~7信道所对应的频点及跳线状态

跳线CBA信道号频率 /MHz

0000(ABC不插)433.302 0

0011433.687 6

0102432.073 2

0113431.458 8

1004430.844 4

1015430.230 0

1106429.615 6

1117(ABC插上)429.001 2

(2) 接口方式选择

SRWF-1提供两个串口,COM1(CON1的Pin3,Pin4)固定为TTL电平的UART串行口;COM2(CON1的Pin6,Pin7)可通过J1的D位来选择接口方式:

D=1(不接短路器)

COM2=RS 485, RS 485的A/B口

D=0(接短路器)

COM2=RS 232, RS 232的TXD/RXD

J1的E位是用来选择校验方式的:

E=0(不插短路器) 8E1/801 带一位校验位

E=1(插短路器) 8N1不带校验位

(3) 波特率设定

SRWF-1模块提供1 200/2 400/4 800/9 600 b/s等接口波特率,波特率的设定可通过改变模块反面的焊盘跳线(J2~J4)的状态来确定。假设焊盘断开为0,短路为1,焊盘跳线J4~J2的状态和波特率对应关系如┍3所示。

表3 焊盘跳线J4~J2的状态和波特率的对应关系

序号J4 J3 J2波特率 /(b/s)

10 0 01 200

20 0 12 400

30 1 04 800

40 1 19 600

(4) 接口方式选择

本设计与单片机串口相连,采用标准RS 232接口方式连接,将短路跳线D短接,其示意图如图6所示。其他引脚可悬空不接,以免引入干扰。

选取3号信道,将短路跳线B,C短接,信号发送和接收频率为431.458 8 MHz,将两个SRWF-1模块均选取此设置,则两个无线模块即可相互通信。

图6 RS 232与SRWF-1连线示意图

根据本设计的需要,将SRWF-1的焊盘跳线J3,J2短接,从而得到波特率为9 600 b/s。

2 软件设计

2.1 程序流程图

系统的程序流程图如图7所示[2]。

图7 系统程序流程图

2.2 部分程序

DS18B20初始化程序[6-7]:

void Init18B20(void)

{ unsigned int i;

DQ =1; //DQ先至高

delay(10);

DQ=0;//产生上升沿

delay(85); //延时约480 ms

DQ=1; //拉高数据线

delay(14);//等待约15~60 ms

}

读一个字节:

bit ReadOneBit(void)

{ unsigned int i;

bit dat1;

DQ=0;i++;//拉低总线1 μs以上,产生读时间隙

DQ=1;i++;i++;//主机在15 μs内释放总线,并开始采样

dat1=DQ;//在45 μs内完成对数据线采样

i=8; while(i>0)i--;

return(dat1);//返回采样值

}

读一个字:

uchar ReadOneChar(void)

{ unsigned char i,j;

unsigned char dat=0;

for(i=1;i

{ dat=ReadOneBit();

delay (10);

dat=(j1);

}

return(dat);

}

读取温度值[8]:

void ReadTemp(void)

{ unsigned char Data_L=0;

unsigned char Data_H=0;

unsigned char t=0;

Init_DS18B20(); //初始化DS18B20

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0x44);//启动温度转换

delay(80);

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度

Data_L=ReadOneChar(); //读取温度值低位

Data_H=ReadOneChar(); //读取温度值高位

temperature=(Data_H

temperature+=Data_L;//获取16位温度数据

}

3 结 语

DS18B20以其简单、精度高、测温范围广而被广泛应用;8051单片机以其抗干扰强、可靠性强、容易上手等优点而广泛使用;加上SRWF-1的使用,使在温度采集过程中,可通过无线发送数据,方便使用,减少工作量。

参 考 文 献

[1]林伸茂.8051单片机彻底研究:基础篇[M].北京:人民邮电出版社,2004.

[2]赵永杰,徐源.基于DS18B20的温度测量系统[J].现代电子技术,2008,31(10):157-159.

[3]马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2002,10(4):278-280.

[4]黄河.基于DS18B20的单总线数字温度计[J].湘潭师范学院学报:自然科学报,2008,30(4):60-63.

[5]马云峰,陈子夫,李培全.数字温度传感器DS18B20的原理与应用[J].电子元器件应用,2002,4(1):23-25.

[6]龚运新.单片机C语言开发技术[M].北京:清华大学出版社,2006.

[7]马忠梅,籍顺心,张凯,等.单片机的C语言应用程序设计[M].3版.北京:北京航空航天大学出版社,2003.

[8]徐玮.51单片机综合学习系统:DS18B20温度试验篇[J].电子制作,2008(5):28-30.

[9]杨金岩,郑应强,张振仁.8051单片机数据传输接口扩展技术及应用实例[M].北京:人民邮电出版社,2005.

[10]冯先成,常翠芝,苏文静,等.单片机应用系统设计[M].北京:北京航空航天大学出版社,2009.

作者简介: 王 伟 男,1981年出生,山东莱芜人,在读硕士研究生。研究方向为控制理论与控制工程。

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:基于Web服务的嵌入式视频服务器 下一篇:电路系统中的闩锁效应及其预防设计