基于AT89C51单片机的数字温度计.docx

上传人:b****5 文档编号:4708915 上传时间:2022-12-07 格式:DOCX 页数:13 大小:495.11KB
下载 相关 举报
基于AT89C51单片机的数字温度计.docx_第1页
第1页 / 共13页
基于AT89C51单片机的数字温度计.docx_第2页
第2页 / 共13页
基于AT89C51单片机的数字温度计.docx_第3页
第3页 / 共13页
基于AT89C51单片机的数字温度计.docx_第4页
第4页 / 共13页
基于AT89C51单片机的数字温度计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于AT89C51单片机的数字温度计.docx

《基于AT89C51单片机的数字温度计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的数字温度计.docx(13页珍藏版)》请在冰豆网上搜索。

基于AT89C51单片机的数字温度计.docx

基于AT89C51单片机的数字温度计

摘要:

随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。

本文将介绍一种基于AT89C51单片机的数字温度计,本温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,用4位共阳极LED数码管采用动态扫描方式,实现温度显示。

关键词:

AT89C51数字温度计DS18B20

AT89C51基本结构和原理

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图所示

1.1主要特性:

(1)与MCS-51兼容

(2)4K字节可编程闪烁存储器

(3)寿命:

1000写/擦循环

(4)数据保留时间:

10年

(5)全静态工作:

0Hz-24MHz

(6)三级程序存储器锁定

(7)128×8位内部RAM

(8)32可编程I/O线

(9)两个16位定时器/计数器

(10)5个中断源

(11)可编程串行通道

(12)低功耗的闲置和掉电模式

(13)·片内振荡器和时钟电路

1.2管脚说明:

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

1.3振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

1.4复位电路:

单片机复位的条件是:

必须使RST/VPD或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。

例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。

单片机常见的复位如图所示。

电路为上电复位电路,它是利用电容充电来实现的。

在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。

只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。

该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。

 

温度传感器DS18B20测温原理

DS18B20的性能特点

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。

DS18B20的性能特点如下:

(1)独特的单线接口仅需要一个端口引脚进行通信,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(2)DS18B20支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点组网测温;

(3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;

(4)可通过数据线供电,电压范围为3.0-5.5V;

(5)零待机功耗;

(6)温度以9或12位数字,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;

(7)用户可定义报警设置;

(8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;

(9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;

(10)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力

DS18B20组成及结构

DS18B20采用3脚PR35封装或8脚SOIC封装,其引脚排列及内部结构框图如图2及图3以及图4的测温原理图如下所示:

图2引脚排列

 

图3内部结构框图

 

图4DS18B20测温原理图

64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。

温度报警触发器TH和TL,可通过软件写入户报警上下限。

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。

高速暂存RAM的结构为8字节的存储器,结构如图4所示。

头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。

第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。

DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。

该字节各位的定义如图5所示。

低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。

温度LSB

温度MSB

TH用户字节1

TL用户字节2

配置寄存器

保留

保留

保留

CRC

TM

R1

R0

1

1

1

1

1

图5DS18B20的字节定义

DS18B20的分辨率定义如表2-1所示

表2-1分辨率设置表

R0

R1

分辨率

最大温度转移时间

0

0

9位

96.75ms

0

1

10位

187.5ms

1

0

11位

375ms

1

1

12位

750ms

由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。

因此,在实际应用中要将分辨率和转换时间权衡考虑。

主机控制DS18B20完成温度转换过程是:

每一次读写之前都要对DS18B20进行复位,即将数据总线下拉500us,然后释放,DS18B20收到信号后等待16-60us左右,之后发出60-240us的存在低脉冲,主CPU收到此此信号表示复位成功;复位成功后发送一条ROM指令,然后发送RAM指令,这样才能对DS18B20进行预订的读写操作。

表2-2ROM指令集

指令

约定代码

功能

读ROM

33H

读DS18B20中的编码

符合ROM

55H

发出此命令后,接着发出64位ROM编码,访问单线总线上与该编辑相对应的DS18B20使之做出响应,为下一步对该DS18B20的读写作准备

搜索ROM

0F0H

用于确定挂接在同一总线上的DS18B20个数和识别64位ROM地址,为操作各器件作准备

跳过ROM

0CCH

忽略64位ROM地址,直接向DS18B20发送温度变换指令

告警搜索命令

0ECH

执行后,只有温度跳过设定值上限或下限的片子才能做出反应

表2-3RAM指令集

指令

约定代码

功能

温度转换

44H

启动DS18B20进行温度转换

读暂存器

0BEH

读暂存器9个字节内容

写暂存器

4EH

将数据写入暂存器的TH、TL字节

复制暂存器

48H

把暂存器的TH、TL字节写到E2RAM中

重调E2RAM

0B8H

把E2RAM中的TH、TL字节写到暂存器TH、TL字节

读供电方式

0B4H

启动DS18B20发送电源供电方式的信号给主CPU

DS18B20的测温原理

DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。

器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。

计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将最低温所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所对应的一个基数值。

减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。

其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。

第4章系统软件设计

5.1主程序设计

整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。

从软件的功能不同可分为两大类:

一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。

二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。

每一个执行软件也就是一个小的功能执行模块。

这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。

各执行模块规划好后,就可以规划监控程序了。

首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。

主程序流程见图5-1。

 

 

图5-1主程序流程图

5.2DS18B20温度测量

DS18B20温度测量流程图见图5-2。

 

 

图5-2DS18B20温度测量流程图

5.4仿真结果

1.设置温度上限为42度,温度下限为15度。

上限温度

下限温度

2.如图所示。

此时温度为38度,温度在规定范围内,绿灯指示,不报警。

 

3.如图所示。

此时温度为45度,超过上限温度,红灯指示并报警。

4如图所示。

此时温度为10度,低于下限温度,红灯指示并报警。

 

5.5本章小结

本章对基于单片机的数字温度控制系统的软件程序进行了简要介绍,介绍了主程序设计及DS18B20的初始化,并给出设计流程图,更直观的把软件设计呈现出来作出了设计的仿真,设置上线限温度,并作3种情况分析。

验证了设计的正确性。

通过本章的介绍了解软件设计流程,熟悉51单片机的编程。

参考文献:

[1]黄维翼,单片机应用与项目实践,清华大学出版社,2010年4月

[2]郭志辉,DS18B20在数字温度计系统设计的理论分析与探究,2011年4月

[3]黄文力,邓小磊,DS18B20数字温度传感器接口程序的时序,2011年6月

[4]丁磊,佟彤,长春职业技术学院,基于AT89C51单片机的数字温度计的设计与研究

[5]张立,重庆三峡学院,基于单片机的数字温度计设计

[6]朱清慧,等,Proteus教程-电子线路设计、制版与仿真,清华大学出版社,2008年9月

[7]张迎新,等,单片机原理及应用(第二版),电子工业出版社,2010年7月

[8]刘森,西安外事学院,基于DS18B20的温度控制器设计,2008年12月

文档来源网络,版权归原作者。

如有侵权,请告知,我看到会立刻处理。

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

当前位置:首页 > 高中教育 > 理化生

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

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