DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 970|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:16:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘 要:?单片机在检测和控制系统中得到广泛的应用,?温度则是系统常需要测量、控制和保持的一个量。?本文从硬件和软件两方面介绍了AT89C2051单片机温度控制系统的设计,对硬件原理图和程序框图作了简洁的描述。
关键词:?单片机AT89C2051;温度传感器DS18b20;温度;测量

引言
????单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于atmel公司的AT89C2051的温度测量系统。这是一种低成本的利用单片机多余I/O口实现的温度检测电路,?该电路非常简单,?易于实现,?并且适用于几乎所有类型的单片机。

一.系统硬件设计
??? 系统的硬件结构如图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????接口电路



图2?单片机2051与温度传感器DS18b20的连接图

??? 接口电路由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串行通信的接口;P3.2和P3.3作为中断信号接口;P3.4和P3.5作为外部定时/记数输入点。P3.7作为一个脉冲输出,控制发光二极管的亮灭。

??? 由于在电路中采用的共阴极的LED数码管,所以在设计电路时加了一个达林顿电路ULN2003对信号进行放大,产生足够大的电流驱动数码管显示。由于4511只能进行bCD十进制译码,只能译到0至9,所以在这里我们利用4511译码输出我们所需要的温度。

1.3????报警电路简介



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

??? 本文中所设计的报警电路较为简单,由一个自我震荡型的蜂鸣器(只要在蜂鸣器两端加上超过3V的电压,蜂鸣器就会叫个不停)和一个发光二极管组成(如图3所示)。在这次设计中蜂鸣器是通过ULN2003电流放大IC来控制。在我们所要求的温度达到一定的上界或者下界时(在文中我们设置的上界温度是45℃,下界温度是5℃),报警电路开始工作,主要程序设计如下:
main()//主函数??????????????????????????????
{unsigned?char?i=0;
?unsigned?int?m,n;
??while(1)
??{i=ReadTemperature();//读温度}
?if(i>0?&&?i=4&&m>=5)%%(m0;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);}
三.?结束语
??? 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
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-9-20 05:46 , 耗时 0.092118 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表