单片机开发与应用
文章编号:1008-0570(2007)01-2-0146-03
中文核心期刊《微计算机信息》(嵌入式与SOC)2007年第23卷第1-2期
基于51单片机的温度测量系统
TemperatureMeasureSystemBaseon51Singlechip
(西南石油大学)赵
娜赵刚于珍珠郭守清
ZHAONAZHAOGANGYUZHENZHUGUOSHOUQING
摘要:单片机在检测和控制系统中得到广泛的应用,温度则是系统常需要测量、控制和保持的一个量。本文从硬件和软件两
方面介绍了AT89C2051单片机温度控制系统的设计,对硬件原理图和程序框图作了简洁的描述。关键词:单片机AT89C2051;温度传感器DS18B20;温度;测量中图分类号:TP277文献标识码:B
技术创新
Abstract:Thesinglechipmicrocomputerberequiredextensivelyinmeasurementandcontrolsystems,andthetemperatureneedtobesurveyed,controlledandmaintainedbyasystemfrequently.Thedesignofsinglechip'stemperaturecontrolsystemisintroducedfromhardwareandsoftware.Thehardwareprincipleandsoftwarecasefigaredescribed.
Keywords:singlechipmicrocomputerAT89C2051,temperaturesensorDS18B20,temperature,examined
引言
单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于atmel公司的AT89C2051的温度测量系统。这是一种低成本的利用单片机多余I/O口实现的温度检测电路,该电路非常简单,易于实现,并且适用于几乎所有类型的单片机。
既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多
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的电压范围,使系统设计更灵活、
赵娜:硕士研究生
国家十五科技攻关项目(编号:2004BA616A-1-01)
-
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达林顿芯片、串行EEPROM24C16(保存系统参数)、4511BCD译码器、
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串行通信的接口;
现场总线技术应用200例》
-元/:
您的论文得到两院院士关注单片机开发与应用
段数码管赋值
P3.2和P3.3作为中断信号接口;P3.4和P3.5作为外部定时/记数输入点。P3.7作为一个脉冲输出,控制发光二极管的亮灭。
图2单片机2051与温度传感器DS18B20的连接图由于在电路中采用的共阴极的LED数码管,所以在设计电路时加了一个达林顿电路ULN2003对信号进行放大,产生足够大的电流驱动数码管显示。由于4511只能进行BCD十进制译码,只能译到0至9,所以在这里我们利用4511译码输出我们所需要的温度。
{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度,则蜂鸣器叫,发光二极管闪烁
{inta,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所示。
技术创新
图3温度在七段数码管上显示连接图
1.3报警电路简介
本文中所设计的报警电路较为简单,由一个自我震荡型的蜂鸣器(只要在蜂鸣器两端加上超过3V的电压,蜂鸣器就会叫个不停)和一个发光二极管组成(如图3所示)。在这次设计中蜂鸣器是通过ULN2003电流放大IC来控制。在我们所要求的温度达到一定的上界或者下界时(在文中我们设置的上界温度是45℃,下界温度是5℃),报警电路开始工作,主要程序设计如下:
图4系统程序流程图
2.2温度部分软件设计
DS18B20的一线工作协议流程是:初始化→ROM操作指
令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序。故主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。程序主要函数部分如下:
(1)初始化函数
main()//主函数
{unsignedchari=0;unsignedintm,n;while(1)
{i=ReadTemperature();//读温度}if(i>0&&i<=10)//如果温度在0到10度之间直接给七
C技术应用200例》PL:360元/年-
147-
单片机开发与应用
//读一个字节函数ReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--)
{DQ=0;//给脉冲信号dat>>=1;
DQ=1;//给脉冲信号if(DQ)
dat|=0x80;delay(4);}return(dat);}
//写一个字节函数
WriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;
DQ=dat&0x01;delay(5);DQ=1;dat>>=1;}}
(2)读取温度并计算函数ReadTemperature(void){unsignedchara=0;
unsignedcharb=0;unsignedintt=0;floattt=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
中文核心期刊《微计算机信息》(嵌入式与SOC)2007年第23卷第1-2期
功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义。目前此设计已成功应用于钻井模拟器实验室室温控制。
本文作者创新观点:采用的单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度的方法非常简洁且精度高、测试范围较广。参考文献:
人民邮电出版社[1]林伸茂.8051单片机彻底研究基础篇北京:
2004
电子工业出[2]范风强等.单片机语言C51应用实战集锦北京:
版社2005
(第二版)北京:清华大学出版社1999[3]谭浩强.C语言程序设计
北京希望电[4]夏路易等.电路原理图与电路板设计教程北京:
子出版社2002
人民邮电出版社2000[5]赵晶.Protel99高级应用北京:
[6]聂毅.单片机定时器中断时间误差的分析及补偿[J].微计算机信息,2002,4:37-38
作者简介:赵娜,女,1982年10月生,汉族,西南石油大学计算机应用研究室硕士研究生.研究方向:嵌入式系统.E-mail:xi-
技术创新
aoyu1982100141@shou.com;作者简介:赵刚,男,1966年生,汉族,西南石油大学计算机科学学院副教授.研究方向:嵌入式系统;于珍珠,男,西南石油大学计算机应用研究室硕士研究生.研究方向:
嵌入式系统;郭守清,男,西南石油大学计算机实验室高级实验员.研究方向:嵌入式系统。
Biography:ZhaoNa,female,borninDec.1982,theHannationali-ty,graduatestudentofSWPIcomputerapplicationlaboratory.Majorinembedsystem.
(610500四川成都西南石油大学)赵娜赵刚于珍珠郭守清(SouthwestPetroleumUniversity,Chengdu,610500,China)ZhaoNaZhaogangYuZhenzhuGuoShouqing
通讯地址:(610500西南石油大学新都校区硕04级5班)赵刚
(收稿日期:2006.6.27)(修稿日期:2006.7.25)
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);}
(上接第172页)
[3]深圳亿道电子有限公司.XSBase255WINCE使用手册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-),男,助理工程师,主要研究方向:雷达探测。
3结束语
重量轻、抗干扰能力强、对环境AT89C2051单片机体积小、
要求不高、价格低廉、可靠性高、灵活性好。即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量来开发所希望的单片机应用系统。本文的温度控制系统只是单片机广泛应用于各行各业中的一例,相信读者会依靠自己的聪明才智使单片机的应用更加广泛化。另外对本例子可以作一些扩展,单片机的应用越来越广泛,由于单片机的运算
-
Biography:ZhengBing,male,assistantprofessor,masterteacher,
signalprocessanddetectsystemunderwater.
(266071山东青岛中国海洋大学信息学院电子系)郑冰王艳娜(116018辽宁大连大连舰艇学院作战指控系)程占昕
(266071山东青岛中国石油化工股份有限公司山东青岛石油分公司)赵立木
通讯地址:(266071山东青岛中国海洋大学香港东路23号2004级电子系研究生)王艳娜
(收稿日期:2006.9.26)(修稿日期:2006.10.23)
-元/:现场总线技术应用200例》
单片机开发与应用
文章编号:1008-0570(2007)01-2-0146-03
中文核心期刊《微计算机信息》(嵌入式与SOC)2007年第23卷第1-2期
基于51单片机的温度测量系统
TemperatureMeasureSystemBaseon51Singlechip
(西南石油大学)赵
娜赵刚于珍珠郭守清
ZHAONAZHAOGANGYUZHENZHUGUOSHOUQING
摘要:单片机在检测和控制系统中得到广泛的应用,温度则是系统常需要测量、控制和保持的一个量。本文从硬件和软件两
方面介绍了AT89C2051单片机温度控制系统的设计,对硬件原理图和程序框图作了简洁的描述。关键词:单片机AT89C2051;温度传感器DS18B20;温度;测量中图分类号:TP277文献标识码:B
技术创新
Abstract:Thesinglechipmicrocomputerberequiredextensivelyinmeasurementandcontrolsystems,andthetemperatureneedtobesurveyed,controlledandmaintainedbyasystemfrequently.Thedesignofsinglechip'stemperaturecontrolsystemisintroducedfromhardwareandsoftware.Thehardwareprincipleandsoftwarecasefigaredescribed.
Keywords:singlechipmicrocomputerAT89C2051,temperaturesensorDS18B20,temperature,examined
引言
单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于atmel公司的AT89C2051的温度测量系统。这是一种低成本的利用单片机多余I/O口实现的温度检测电路,该电路非常简单,易于实现,并且适用于几乎所有类型的单片机。
既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多
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的电压范围,使系统设计更灵活、
赵娜:硕士研究生
国家十五科技攻关项目(编号:2004BA616A-1-01)
-
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达林顿芯片、串行EEPROM24C16(保存系统参数)、4511BCD译码器、
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串行通信的接口;
现场总线技术应用200例》
-元/:
您的论文得到两院院士关注单片机开发与应用
段数码管赋值
P3.2和P3.3作为中断信号接口;P3.4和P3.5作为外部定时/记数输入点。P3.7作为一个脉冲输出,控制发光二极管的亮灭。
图2单片机2051与温度传感器DS18B20的连接图由于在电路中采用的共阴极的LED数码管,所以在设计电路时加了一个达林顿电路ULN2003对信号进行放大,产生足够大的电流驱动数码管显示。由于4511只能进行BCD十进制译码,只能译到0至9,所以在这里我们利用4511译码输出我们所需要的温度。
{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度,则蜂鸣器叫,发光二极管闪烁
{inta,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所示。
技术创新
图3温度在七段数码管上显示连接图
1.3报警电路简介
本文中所设计的报警电路较为简单,由一个自我震荡型的蜂鸣器(只要在蜂鸣器两端加上超过3V的电压,蜂鸣器就会叫个不停)和一个发光二极管组成(如图3所示)。在这次设计中蜂鸣器是通过ULN2003电流放大IC来控制。在我们所要求的温度达到一定的上界或者下界时(在文中我们设置的上界温度是45℃,下界温度是5℃),报警电路开始工作,主要程序设计如下:
图4系统程序流程图
2.2温度部分软件设计
DS18B20的一线工作协议流程是:初始化→ROM操作指
令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序。故主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。程序主要函数部分如下:
(1)初始化函数
main()//主函数
{unsignedchari=0;unsignedintm,n;while(1)
{i=ReadTemperature();//读温度}if(i>0&&i<=10)//如果温度在0到10度之间直接给七
C技术应用200例》PL:360元/年-
147-
单片机开发与应用
//读一个字节函数ReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--)
{DQ=0;//给脉冲信号dat>>=1;
DQ=1;//给脉冲信号if(DQ)
dat|=0x80;delay(4);}return(dat);}
//写一个字节函数
WriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;
DQ=dat&0x01;delay(5);DQ=1;dat>>=1;}}
(2)读取温度并计算函数ReadTemperature(void){unsignedchara=0;
unsignedcharb=0;unsignedintt=0;floattt=0;
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
中文核心期刊《微计算机信息》(嵌入式与SOC)2007年第23卷第1-2期
功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义。目前此设计已成功应用于钻井模拟器实验室室温控制。
本文作者创新观点:采用的单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度的方法非常简洁且精度高、测试范围较广。参考文献:
人民邮电出版社[1]林伸茂.8051单片机彻底研究基础篇北京:
2004
电子工业出[2]范风强等.单片机语言C51应用实战集锦北京:
版社2005
(第二版)北京:清华大学出版社1999[3]谭浩强.C语言程序设计
北京希望电[4]夏路易等.电路原理图与电路板设计教程北京:
子出版社2002
人民邮电出版社2000[5]赵晶.Protel99高级应用北京:
[6]聂毅.单片机定时器中断时间误差的分析及补偿[J].微计算机信息,2002,4:37-38
作者简介:赵娜,女,1982年10月生,汉族,西南石油大学计算机应用研究室硕士研究生.研究方向:嵌入式系统.E-mail:xi-
技术创新
aoyu1982100141@shou.com;作者简介:赵刚,男,1966年生,汉族,西南石油大学计算机科学学院副教授.研究方向:嵌入式系统;于珍珠,男,西南石油大学计算机应用研究室硕士研究生.研究方向:
嵌入式系统;郭守清,男,西南石油大学计算机实验室高级实验员.研究方向:嵌入式系统。
Biography:ZhaoNa,female,borninDec.1982,theHannationali-ty,graduatestudentofSWPIcomputerapplicationlaboratory.Majorinembedsystem.
(610500四川成都西南石油大学)赵娜赵刚于珍珠郭守清(SouthwestPetroleumUniversity,Chengdu,610500,China)ZhaoNaZhaogangYuZhenzhuGuoShouqing
通讯地址:(610500西南石油大学新都校区硕04级5班)赵刚
(收稿日期:2006.6.27)(修稿日期:2006.7.25)
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);}
(上接第172页)
[3]深圳亿道电子有限公司.XSBase255WINCE使用手册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-),男,助理工程师,主要研究方向:雷达探测。
3结束语
重量轻、抗干扰能力强、对环境AT89C2051单片机体积小、
要求不高、价格低廉、可靠性高、灵活性好。即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己的技术力量来开发所希望的单片机应用系统。本文的温度控制系统只是单片机广泛应用于各行各业中的一例,相信读者会依靠自己的聪明才智使单片机的应用更加广泛化。另外对本例子可以作一些扩展,单片机的应用越来越广泛,由于单片机的运算
-
Biography:ZhengBing,male,assistantprofessor,masterteacher,
signalprocessanddetectsystemunderwater.
(266071山东青岛中国海洋大学信息学院电子系)郑冰王艳娜(116018辽宁大连大连舰艇学院作战指控系)程占昕
(266071山东青岛中国石油化工股份有限公司山东青岛石油分公司)赵立木
通讯地址:(266071山东青岛中国海洋大学香港东路23号2004级电子系研究生)王艳娜
(收稿日期:2006.9.26)(修稿日期:2006.10.23)
-元/:现场总线技术应用200例》