基于51单片机的温度测量系统
技
术
创
新
中 文 核 心 期 刊《微 计 算 机 信 息 》(嵌 入 式 与 SOC)2007 年 第 23 卷 第 1-2 期
360元 / 年 邮局订阅号: 82-946 《 现场总线技术应用 200 例》
单 片 机 开 发 与 应 用
基于 51 单片机的温度测量系统
Tem perature Measure System Base on 51 Single chip
(西南石油大学)赵 娜 赵 刚 于珍珠 郭守清
ZHAO NA ZHAO GANG YU ZHENZHU GUO SHOUQING
摘要:单片 机 在 检 测 和 控 制 系 统 中 得 到 广 泛 的 应 用, 温 度 则 是 系 统 常 需 要 测 量 、控 制 和 保 持 的 一 个 量 。本 文 从 硬 件 和 软 件 两
方面 介 绍 了 AT89C2051 单 片 机 温 度 控 制 系 统 的 设 计 , 对 硬 件 原 理 图 和 程 序 框 图 作 了 简 洁 的 描 述 。
关键词:单片机 AT89C2051;温度传感器 DS18B20;温度;测量
中图分类号:TP277 文献标识码:B
Abstract:The single chip microcomputer be required extensively in measurement and control systems, and the temperature need to be
surveyed, controlled and maintained by a system frequently. The design of singlechip' s temperature control system is introduced
from hardware and software. The hardware principle and software case fig are described.
Keywords:single chip microcomputerAT89C2051,temperature sensor DS18B20,temperature,examined
文章编号:1008- 0570(2007)01- 2- 0146- 03
引言
单片机在电子产品中的应用已经越来越广泛, 并且在很多
电子产品中也将其用到温度检测和温度控制。为此在本文中作
者设计了基于 atmel 公司的 AT89C2051 的温度测量系统。这是
一种低成本的利用单片机多余 I/O 口实现的温度检测电路, 该
电路非常简单, 易于实现, 并且适用于几乎所有类型的单片机。
1 系统硬件设计
系统的硬件结构如图 1 所示。
图 1 系统硬盘件结构图
1.1 数据采集
数据采集电路如图 2 所示, 由温度传感器 DS18B20 采集被
控对象的实时温度, 提供给 AT89C2051 的 P3.2 口作为数据输
入。在本次设计中我们所控的对象为所处室温。当然作为改进
我们可以把传感器与电路板分离, 由数据线相连进行通讯, 便于
测量多种对象。
DS18B20 是 DALLAS 公司生产的一线式数字温度传感器,
具有 3 引脚 TO- 92 小体积封装形式; 温度测量范围为- 55℃~+
125℃, 可编程为 9 位~12 位 A/D 转换精度, 测温分辨率可达
0.0625℃, 被测温度用符号扩展的 16 位数字量方式串行输出, 支
持 3V~5.5V 的电压范围, 使系统设计更灵活、方便; 其工作电源
既可在远端引入, 也可采用寄生电源方式产生; 多个 DS18B20 可
以并联到 3 根 或 2 根 线 上 , CPU 只 需 一 根 端 口 线 就 能 与 诸 多
DS18B20 通信, 占用微处理器的端口较少, 可节省大量的引线和
逻辑电路。以上特点使 DS18B20 非常适用于远距离多点温度检
测系统。分辨率设定, 及用户设定的报警温度存储在 EEPROM
中, 掉电后依然保存。DS18B20 使电压、特性有更多的选择, 让我
们可以构建适合自己的经济的测温系统。如图 2 所示 DS18B20
的 2 脚 DQ 为数字信号输入/输出端; 1 脚 GND 为电源地; 3 脚
VDD 为外接供电电源输入端。
AT89C2051( 以下简称 2051) 是一枚 8051 兼容的单片机微控
器, 与 Intel 的 MCS- 51 完全兼容, 内藏 2K 的可程序化 Flash 存储
体, 内部有 128B 字节的数据存储器空间, 可直接推动 LED, 与
8051 完全相同, 有 15 个可程序化的 I/O 点, 分别是 P1 端口与 P3
端口(少了 P3.6)。
1.2 接口电路
接口电路由 ATMEL 公司的 2051 单片机、ULN2003 达林顿
芯片、4511BCD 译码器、串行 EEPROM24C16( 保存系统参数) 、
MAX232、数码管及外围电路构成, 单片机以并行通信方式从
P1.0~P1.7 口输出控制信号,通过 4511BCD 译码器译码, 用 2 个
共阴极 LED 静态显示温度的十位、个位。
串行 EEPROM24C16 是标准 I2C 规格且只要两根引脚就能
读写。由于单片机 2051 的 P1 是一个双向的 I/O 端口, 所以在我
们在设计中将 P1 端口当成输出端口用。由图 2 可知, P1.7 作为
串性的时钟输出信号与 24C16 的第 6 脚相接, P1.6 则作为串行
数据输出接到 24C16 的第 5 脚。P1. 4 和 P1.5 则作为两个数码
管的位选信号控制, 在 P1.4=1 时, 选中第一个数码管( 个位) ;
P1.5=1 时, 选中第二个数码管( 十位) 。P1.0~P1.3 的输出信号接
到译码器 4511 上作为数码管的显示。此外, 由于单片机 2051 的
P3 端口有特殊的功能, P3.0( RXD) 串行输入端口, P3.1( TXD) 串
行输出端口, P3.2 ( INTO) 外部中断 0, P3.3 ( INT1) 外部中断
1P3.4, ( T0) 外部定时/计数输入点, P3.5( T1) 外部定时/计数输入
点。由图 2 可知, P3.0 和 P3.1 作为与 MAX232 串行通信的接口;
赵娜: 硕士研究生
国家十五科技攻关项目(编号:2004BA616A- 1- 01)
146- -
邮局订阅号: 82-946 360 元 / 年
技
术
创
新
单 片 机 开 发 与 应 用
《 PLC 技术应用 200 例》
您 的 论 文 得 到 两 院 院 士 关 注
P3.2 和 P3.3 作为中断信号接口; P3.4 和 P3.5 作为外部定时/记
数输入点。P3.7 作为一个脉冲输出, 控制发光二极管的亮灭。
图 2 单片机 2051 与温度传感器 DS18B20 的连接图
由于在电路中采用的共阴极的 LED 数码管, 所以在设计电
路时加了一个达林顿电路 ULN2003 对信号进行放大, 产生足够
大的电流驱动数码管显示。由于 4511 只能进行 BCD 十进制译
码, 只能译到 0 至 9, 所以在这里我们利用 4511 译码输出我们所
需要的温度。
图 3 温度在七段数码管上显示连接图
1.3 报警电路简介
本文中所设计的报警电路较为简单, 由一个自我震荡型的蜂
鸣器( 只要在蜂鸣器两端加上超过 3V 的电压, 蜂鸣器就会叫个不
停)和一个发光二极管组成(如图 3 所示)。在这次设计中蜂鸣器是
通过 ULN2003 电流放大 IC 来控制。在我们所要求的温度达到一
定的上界或者下界时( 在文中我们设置的上界温度是 45℃, 下界温
度是 5℃), 报警电路开始工作, 主要程序设计如下:
main()//主函数
{unsigned char i=0;
unsigned int m,n;
while(1)
{i=ReadTemperature();//读温度}
if(i>0 && i<=10) //如果温度在 0 到 10 度之间直接给七
段数码管赋值
{P1=designP1[i];}
else//如果温度大于 10 度
{m=i%10;//先给第一个七段数码管赋值
D1=1;
D2=0;
P1=designP1[m];
n=i/10;//再给第二个七段数码管赋值
D1=0;
D2=1;
P1=designP1[n];
if(n>=4&&m>=5)%%(m<=5)//判断温度的取值范围, 如果大
于 45 或小于 5 度, 则蜂鸣器叫, 发光二极管闪烁
{ int a,b;
Q1=1;//蜂鸣器叫
for(a=0;a<1000;a++)//发光二极管闪烁
for(b=0;b<1000;b++)
Q2=1;
for(a=0;a<1000;a++)
for(b=0;b<1000;b++)
Q2=0;}}}
2 系统软件设计
2.1 系统程序流程图
系统程序流程图如图 4 所示。
图 4 系统程序流程图
2.2 温度部分软件设计
DS18B20 的一线工作协议流程是: 初始化→ROM 操作指
令→存储器操作指令→数据传输。其工作时序包括初始化时序、
写时序和读时序。故主机控制 DS18B20 完成温度转换必须经过三
个步骤: 每一次读写之前都要对 DS18B20 进行复位, 复位成功后
发送一条 ROM 指令, 最后发送 RAM 指令, 这样才能对 DS18B20
进行预定的操作。复位要求主 CPU 将数据线下拉 500 微秒, 然后
释放, DS18B20 收到信号后等待 16~60 微秒左右, 后发出 60~240
微秒的存在低脉冲, 主 CPU 收到此信号表示复位成功。程序主要
函数部分如下:
( 1) 初始化函数
147- -
技
术
创
新
中 文 核 心 期 刊《微 计 算 机 信 息 》(嵌 入 式 与 SOC)2007 年 第 23 卷 第 1-2 期
360元 / 年 邮局订阅号: 82-946 《 现场总线技术应用 200 例》
单 片 机 开 发 与 应 用
//读一个字节函数
ReadOneChar(void)
{unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i- - )
{ DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay(4);}
return(dat);}
//写一个字节函数
WriteOneChar(unsigned char dat)
{unsigned char i=0;
for (i=8; i>0; i- - )
{DQ = 0;
DQ = dat&0x01;
delay(5);
DQ = 1;
dat>>=1;}}
( 2) 读取温度并计算函数
ReadTemperature(void)
{unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等( 共 可 读 9 个 寄
存器) 前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t= tt*10+0.5; //放大 10 倍输出并四舍五入- - - 此行没用
( 3) 主程序部分见前
return(t);}
3 结束语
AT89C2051 单片机体积小、重量轻、抗干扰能力强、对环境
要求不高、价格低廉、可靠性高、灵活性好。即使是非电子计算
机专业人员, 通过学习一些专业基础知识以后也能依靠自己的
技术力量来开发所希望的单片机应用系统。 本文的温度控制
系统只是单片机广泛应用于各行各业中的一例, 相信读者会依
靠自己的聪明才智使单片机的应用更加广泛化。另外对本例子
可以作一些扩展, 单片机的应用越来越广泛,由于单片机的运算
功能较差,往往需要借助计算机系统,因此单片机和 PC 机进行
远程通信更具有实际意义。目前此设计已成功应用于钻井模拟
器实验室室温控制。
本文作者创新观点: 采用的单片机 AT89C2051 性价比高,
而且温度传感器 DS18B20 转化温度的方法非常简洁且精度高、
测试范围较广。
参考文献:
[1]林伸茂.8051 单片机彻底研究基础篇 北京:人民邮电出版社
2004
[2]范风强等.单片机语言 C51 应用实战集锦 北京:电子工业出
版社 2005
[3]谭浩强.C 语言程序设计(第二版)北京:清华大学出版社 1999
[4]夏路易等.电路原理图与电路板设计教程 北京:北京希望电
子出版社 2002
[5]赵晶.Protel99 高级应用 北京:人民邮电出版社 2000
[6]聂毅.单片机定时器中断时间误差的分析及补偿[J].微计算机
信息,2002,4:37- 38
作者简介:赵娜,女,1982 年 10 月生,汉族,西南石油大学计算机
应 用 研 究 室 硕 士 研 究 生. 研 究 方 向 : 嵌 入 式 系 统.E- mail:xi-
aoyu1982100141@shou.com;作者简介:赵刚,男,1966 年 生,汉 族,
西南石油大学计算机科学学院副教授.研究方向: 嵌入式系统;于
珍珠,男,西南石油大学计算机应用研究室硕士研究生.研究方向:
嵌入式系统;郭守清,男,西南石油大学计算机实验室高级实验员.
研究方向:嵌入式系统。
Biography:Zhao Na,female,born in Dec.1982,the Han nationali-
ty, graduate student of SWPI computer application laboratory.
Major in embed system.
(610500 四川成都 西南石油大学)赵娜 赵刚 于珍珠 郭守清
(Southwest Petroleum University,Chengdu,610500,China)Zhao
Na Zhaogang Yu Zhenzhu Guo Shouqing
通讯地址:(610500 西南石油大学新都校区硕 04 级 5 班)赵刚
(收稿日期:2006.6.27)(修稿日期:2006.7.25)
(上接第 172 页)
[3]深圳亿道电子有限公司.XSBase255 WINCE 使用手册 V2.1
[4]Intel.http://www.intel.com/design/pca/prodbref/252780.htm
[EB/OL]
[5]邓成中,黄维公,万松峰.基于嵌入式 ARM & WinCE 的小型监
控系统的设计[J].微计算机信息,2005,8- 2:47- 49
作者简介:郑冰( 1968- ) 男,副教授,硕士生导师,主要研究方向:
信号处理及水下探测系统;王艳娜( 1981- ) 女,硕士研究生,主要
研究方向:嵌入式系统;程占昕( 1981- ) ,男,助理工程师,主要研究
方向:雷达探测。
Biography:Zheng Bing,male,assistant professor,master teacher,
signal process and detect system under water.
(266071 山东青岛 中国海洋大学信息学院电子系)郑冰 王艳娜
(116018 辽宁大连 大连舰艇学院作战指控系)程占昕
(266071 山东青岛 中国石油化工股份有限公司山东青岛石油
分公司)赵立木
通 讯 地 址:(266071 山 东 青 岛 中 国 海 洋 大 学 香 港 东 路 23 号
2004 级电子系研究生)王艳娜
(收稿日期:2006.9.26)(修稿日期:2006.10.23)
148- -
基于51单片机的温度测量系统.pdf