基于51单片机的温度测量系统doc.docx

上传人:b****5 文档编号:2932693 上传时间:2022-11-16 格式:DOCX 页数:16 大小:253.21KB
下载 相关 举报
基于51单片机的温度测量系统doc.docx_第1页
第1页 / 共16页
基于51单片机的温度测量系统doc.docx_第2页
第2页 / 共16页
基于51单片机的温度测量系统doc.docx_第3页
第3页 / 共16页
基于51单片机的温度测量系统doc.docx_第4页
第4页 / 共16页
基于51单片机的温度测量系统doc.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于51单片机的温度测量系统doc.docx

《基于51单片机的温度测量系统doc.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度测量系统doc.docx(16页珍藏版)》请在冰豆网上搜索。

基于51单片机的温度测量系统doc.docx

基于51单片机的温度测量系统doc

基于51单片机的温度测量系统

原作者:

飓风 添加时间:

2008-04-03 原文发表:

2008-04-03 人气:

128 来源:

赵娜赵刚于珍珠郭守清

本文章共3366字,分3页,当前第1页,快速翻页:

 

 

摘 要:

单片机在检测和控制系统中得到广泛应用,温度则是系统常需要测量、控制和保持一个量。

本文从硬件和软件两方面介绍了AT89C2051单片机温度控制系统设计,对硬件原理图和程序框图作了简洁描述。

关键词:

单片机AT89C2051;温度传感器DS18B20;温度;测量

引言

单片机在电子产品中应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。

为此在本文中作者设计了基于atmel公司AT89C2051温度测量系统。

这是一种低成本利用单片机多余I/O口实现温度检测电路,该电路非常简单,易于实现,并且适用于几乎所有类型单片机。

一.系统硬件设计

系统硬件结构如图1所示。

PC提示请看下图:

1.1数据采集

数据采集电路如图2所示,由温度传感器DS18B20采集被控对象实时温度,提供给AT89C2051P3.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所示DS18B202脚DQ为数字信号输入/输出端;1脚GND为电源地;3脚VDD为外接供电电源输入端。

AT89C2051(以下简称2051)是一枚8051兼容单片机微控器,与IntelMCS-51完全兼容,内藏2K可程序化Flash存储体,内部有128B字节数据存储器空间,可直接推动LED,与8051完全相同,有15个可程序化I/O点,分别是P1端口与P3端口(少了P3.6)。

1.2接口电路

PC提示请看下图:

图2单片机2051与温度传感器DS18B20连接图

接口电路由ATMEL公司2051单片机、ULN2003达林顿芯片、4511BCD译码器、串行EEPROM24C16(保存系统参数)、MAX232、数码管及外围电路构成,单片机以并行通信方式从P1.0~P1.7口输出控制信号,通过4511BCD译码器译码,用2个共阴极LED静态显示温度十位、个位。

串行EEPROM24C16是标准I2C规格且只要两根引脚就能读写。

由于单片机2051P1是一个双向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上作为数码管显示。

此外,由于单片机2051P3端口有特殊功能,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串行通信接口;P3.2和P3.3作为中断信号接口;P3.4和P3.5作为外部定时/记数输入点。

P3.7作为一个脉冲输出,控制发光二极管亮灭。

由于在电路中采用共阴极LED数码管,所以在设计电路时加了一个达林顿电路ULN2003对信号进行放大,产生足够大电流驱动数码管显示。

由于4511只能进行BCD十进制译码,只能译到0至9,所以在这里我们利用4511译码输出我们所需要温度。

1.3报警电路简介

PC提示请看下图:

图3温度在七段数码管上显示连接图

本文中所设计报警电路较为简单,由一个自我震荡型蜂鸣器(只要在蜂鸣器两端加上超过3V电压,蜂鸣器就会叫个不停)和一个发光二极管组成(如图3所示)。

在这次设计中蜂鸣器是通过ULN2003电流放大IC来控制。

在我们所要求温度达到一定上界或者下界时(在文中我们设置上界温度是45℃,下界温度是5℃),报警电路开始工作,主要程序设计如下:

main()//主函数

{unsignedchari=0;

unsignedintm,n;

while

(1)

{i=ReadTemperature();//读温度}

if(i>0&&i<=10)//如果温度在0到10度之间直接给七段数码管赋值

{P1=designP1[i];}

else//如果温度大于10度

{m=i_;//先给第一个七段数码管赋值

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;}}}

二.系统软件设计

PC提示请看下图:

图4系统程序流程图

2.1系统程序流程图

系统程序流程图如图4所示。

2.2温度部分软件设计

DS18B20一线工作协议流程是:

初始化→ROM操作指令→存储器操作指令→数据传输。

其工作时序包括初始化时序、写时序和读时序。

故主机控制DS18B20完成温度转换必须经过三个步骤:

每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定操作。

复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒存在低脉冲,主CPU收到此信号表示复位成功。

程序主要函数部分如下:

(1)初始化函数

//读一个字节函数

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);//跳过读序号列号操作

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

a=ReadOneChar();

b=ReadOneChar();

t=b;

t<<=8;

t=t|a;

tt=t*0.0625;

t=tt*100.5;//放大10倍输出并四舍五入---此行没用

(3)主程序部分见前

return(t);}

三.结束语

AT89C2051单片机体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好。

即使是非电子计算机专业人员,通过学习一些专业基础知识以后也能依靠自己技术力量来开发所希望单片机应用系统。

本文温度控制系统只是单片机广泛应用于各行各业中一例,相信读者会依靠自己聪明才智使单片机应用更加广泛化。

另外对本例子可以作一些扩展,单片机应用越来越广泛,由于单片机运算功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义。

目前此设计已成功应用于钻井模拟器实验室室温控制。

 本文作者创新观点:

采用单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度方法非常简洁且精度高、测试范围较广。

参考文献

[1]林伸茂.8051单片机彻底研究基础篇北京:

人民邮电出版社2004

[2]范风强等.单片机语言C51应用实战集锦北京:

电子工业出版社2005

[3]谭浩强.C语言程序设计(第二版)北京:

清华大学出版社1999

[4]夏路易等.电路原理图与电路板设计教程北京:

北京希望电子出版社2002

[5]赵晶.Protel99高级应用北京:

人民邮电出版社2000

[6]聂毅.单片机定时器中断时间误差分析及补偿[J]微计算机信息2002,18(4):

37~38

简易数字温度计的设计与制作

原作者:

三毛 添加时间:

2008-04-03 原文发表:

2008-04-03 人气:

360 来源:

郇玉龙赵宁

本文章共3096字,分2页,当前第1页,快速翻页:

 

 

摘 要:

单片机在日用电子产品中应用越来越广泛,温度则是人们日常生活中常常需要测量和控制一个量。

本文作者采用AT89C51单片机和温度传感器AD590从硬件和软件两方面介绍了一款简易数字温度计设计过程,并对硬件原理图和程序流程图作了简洁描述。

关键词:

单片机AT89C51;温度传感器AD590;数字温度计;模数转换;数码显示

1.前言

随着单片机技术不断发展,单片机在日用电子产品中应用越来越广泛,温度传感器AD590具有线性优良、性能稳定、灵敏度高、抗干扰能力强、使用方便等优点,广泛应用于冰箱、空调器、粮仓等日常生活中温度测量和控制。

传统温度计有反应速度慢、读数麻烦、测量精度不高、误差大等缺点,本文作者利用集成温度传感器AD590设计并制作了一款基于AT89C514位数码管显示数字温度计,其电路简单,软硬件结构模块化,易于实现。

2.系统功能原理及硬件组成

该数字温度计利用AD590集成温度传感器及其接口电路完成温度测量并转换成模拟电压信号,经由模数转换器ADC0804转换成单片机能够处理数字信号,然后送到单片机AT89C51中进行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1