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

发布者:雅致书香最新更新时间:2012-01-03 关键字:51单片机  温度测量系统 手机看文章 扫描二维码
随时随地手机看文章
引言
    单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于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<=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;}}}


二.系统软件设计

图4 系统程序流程图

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

2.2 温度部分软件设计                                      

    DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。其工作时序包括初始化时序、写时序和读时序。故主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。程序主要函数部分如下:

(1)初始化函数
//读一个字节函数
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);}

三. 结束语
    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

关键字:51单片机  温度测量系统 引用地址:基于51单片机的温度测量系统

上一篇:DSP与51单片机通信的多种方案设计
下一篇:基于51单片机超声波测距器设计

推荐阅读最新更新时间:2024-03-16 12:50

AT89S51单片机报警器的设计
1.实验任务 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。 2.电路原理图 图4.6.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2).在“音频放大模块”区域中的SPK OUT端口上接上一个8欧的或者是16欧的喇叭; (3).把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开关”区域中的K1端口上; 4.程序设计内容 (1).信号产生的方法 500
[单片机]
AT89S<font color='red'>51单片机</font>报警器的设计
51单片机利用IAP技术对EEPROM的实现方法解析
STC89C51、52内部都自带有2K字节的EEPROM,54、55和58都自带有16K字节的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100,000 次以上,先来介绍下ISP与IAP的区别和特点。 ISP:In System Programable 是指在系统编程,通俗的讲,就是片子已经焊板子上,不用取下,就可以简单而方便地对其进行编程。比如我们通过电脑给STC单片机下载程序,或给AT89S51单片机下载程序,这就是利用了ISP技术。 IAP:In Application Programable 是指在应用编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候
[单片机]
8051单片机的存储器组织采用何种结构
问题: 8051单片机的存储器组织采用何种结构?存储器地址空间如何划分围和容量如何?使用上和容量如何?使用上有何特点? 解答:(1)80C51在结构上的特点 80C51采用将程序存储器和数据存储器截然分开,分别寻址的结构,称为Harvard结构。 (2)在物理和逻辑上的地址空间 存储器上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。 在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。 (3)访问格式 访问片内RAM采用MOV格式 访问片外RAM采用MOVX格式
[单片机]
玩转51单片机(1):点亮led灯
01 新建工程与点亮LED小灯,LED小灯即发光二极管,它具有单向导电性,对于发光二极管而言,需要根据它的压降与额定电流来选择合适的限流电阻,打开Keil4软件,选择Project,New uVision Project 选定工程的保存路径,并给工程命名,保存类型默认.uvproj,点击保存 出现如下对话框,点击下拉按钮,选择STC MCU Database,点击OK 选择STC89C52RC,点击OK 选择否 点击New,生成一个Text1文件 点击 File, Save, 出现如下对话框,将文件命名为后缀为.c的文件,默认保存类型,点击保存 点击Target 1前面的加号,在Source Group
[单片机]
玩转<font color='red'>51单片机</font>(1):点亮led灯
51单片机485通讯讲解 通俗易懂
第九节:串口通讯之485通讯 (1)开场白: 串口通讯有三种常用的硬件方式。 第一种是TTL方式。比如两个单片机的RX,TX引脚直接连接上(甲的RX连接乙的TX, 甲的TX连接乙的RX),这种通讯距离最短,局限于两三米长的距离。 第二种是232方式。两个CPU之间都经过了两个MAX232等电平转换芯片,比如单片机跟电脑的串口通讯。这种最大传输距离大概十米左右。 第三种是485方式。两个CPU之间都经过了两个MAX485等电平转换芯片,此种方式在工控上应用最多,尤其是距离长,要求一台主机控制多台设备的情况下。从地址呼叫原理上看,一台主机应该可以控制N多台从机,但是书上说一台主机最多可以控制32个从机,可能主要是从电阻匹配的角度来考虑
[单片机]
AT89C51单片机1602液晶显示时钟程序
这是一款AT89C51单片机1602液晶显示时钟程序,功能主要有:温度、时间、日期、星期显示以及调节。有多级菜单显示。第一级菜单调节时间、日期。第二级菜单显示自定义信息。 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit DQ=P2^1; sbit light=P2^7; sbit k1=P1^0; sbit k2=P1^1; sbit k3=P1^2; sbit k4=P1^3; sbit k5=P1^4; sbit LED1=P1^3; sbit LED2=P1^4; sbit
[单片机]
AT89C<font color='red'>51单片机</font>1602液晶显示时钟程序
基于C51单片机的通信测试仪器设计
随着现代通信技术的发展,通信测试仪器不断推陈出新。各种新型设备对系统的实时响应能力的要求越来越高,一种通信测试仪器的实时响应性能,就成为系统设计能否成功的关键因素之一。笔者曾在多个通信测试仪器项目中,成功地应用ARM处理器、C51单片机等为主控芯片的嵌入式系统,实现了对仪器相关模块的实时控制功能。因此提出一种在某通信测试仪器中使用C51单片机来实现实时控制的设计方案。 1 硬件设计与实现 1.1 总体方案设计 在该通信测试仪器中,实时控制模块主要实现对射频接收频综、射频发生频综、滤波器组件、射频输入模块、射频输出模块等实时控制作用。对射频检波信号进行A/D转换以获取数据。与上位计算机进行通信等功能。 根据待实现的系统功能要
[单片机]
基于C<font color='red'>51单片机</font>的通信测试仪器设计
用PC104控制模块和C51单片机实现AD检测板
由PC104控制模块和Cgnal C8051F06x单片机组成的控制检测板可用于高端检测设备中,充分利用PC104控制模块和单片机丰富的软硬件资源,可用于各种检测应用中 在开发检测设备的过程中,可采用核心板加底板的设计方法来降低技术难度,实现可编程、高性能、开发简单、扩展性强的设计方案,并且稍加改动就可以很容易地应用到其他领域。 核心板采用PC104控制模块,利用其强大的处理能力来处理数据,如数据存储、数据分析、数据评估,尤其是友好的GUI简化了用户的使用难度。底板采用Cgnal8051F06x、双口RAM和缓冲寄存器,利用C8051F06X单片机丰富的软硬件资源来实现可编程,可设置的各种复杂功能。核心板与底板之间
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved