您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页温度计的设计报告

温度计的设计报告

来源:爱玩科技网
温度计的设计

一、设计内容和要求

本设计主要介绍了用单片机和数字温度传感器DS18B20相结合的方法来实现温度的采集,以单片机ATC51芯片为核心,辅以温度传感器DS18B20和LED数码管及必要的外围电路,构成了一个单片机数字温度计。其主要研究内容包括两方面,一是对系统硬件部分的设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用C语言实现温度的采集与显示。通过利用数字温度传感器DS18B20进行设计,能够满足实时检测温度的要求,同时通过LED数码管的显示功能,可以实现不间断的温度显示,并带有复位功能。

本次设计的主要思路是利用51系列单片机,数字温度传感器DS18B20和LED数码显示器,构成实现温度检测与显示的单片机控制系统,即数字温度计。通过对单片机编写相应的程序,达到能够实时检测周围温度的目的。

通过对本课题的设计能够熟悉数字温度计的工作原理及过程,了解各功能器件(单片机、DS18B20、LED)的基本原理与应用,掌握各部分电路的硬件连线与程序编写,最终完成对数字温度计的总体设计。根据实验要求实现测温范围在-55~128C的LED数码管显示。

本次设计的主要要求:

(1)根据设计需要,选用ATC51单片机为核心器件;

(2)温度检测器件采用DS18B20数字式温度传感器,利用单总线式连接方式与单片机的串行接口引脚相连;

(3)显示电路采用8个LED数码管显示器接P1口并行显示温度值,数码管由P2口~选通,动态显示。

(4)给出全部电路和源程序。

o

二、课程设计的目的和意义

数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。

温度计是常用的热工仪表,常用于工业现场作为过程的温度测量。在工业生产过程中,不仅需要了解当前温度读数,而且还希望能了解过程中的温度变化情况。随着工业现代化的

发展,对温度测量仪表的要求越来越高,而数字温度表具有结构简单,抗干扰能力强,功耗小,可靠性高,速度快等特点,更加适合于工业过程中以及科学试验中对温度进行在线测量的要求。近年来,数字温度表广泛应用在各个领域,它与模拟式温度表相比较,归纳起来有如下特点。⑴准确度高,⑵测量范围宽、灵敏度高,⑶测量速度快,⑷使用方便、操作简单,⑸抗干扰能力强,⑹自动化程度高,⑺读数清晰、直观方便。

数字温度计的高速发展,使它已成为实现测量自动化、提高工作效率不可缺少的仪表。数字化是当前计量仪器仪表发展的主要方向之一。而高准确度数字温度计的出现,又使温度计进入了精密标准测量领域。与此相适应,测量的可靠性、准确性显得越来越重要。

三、课程设计的总体方案和思路

根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机ATC51为测控系统的核心来完成数据采集、处理、显示、报警等功能。选用数字温度传感DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。

该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到ATC51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用8位共阴LED数码管以动态扫描法实现。检测范围-55摄氏度到128摄氏度。

按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。 数字温度计总体电路结构框图如图1所示。

电源 主 控 制 器 复位电路 8位LED数码显示 蜂鸣器 DS18B20温度采集

图1 数字温度计总体电路结构框图

四、各模块元件功能 1、ATC51介绍

单片机ATC51是一种带4K字节可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,如图2所示。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和存储器组合在单个芯片中,ATMEL的ATC51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。ATC51的主要特性介绍: ①与MCS-51 兼容; ②4K字节可编程存储器; ③寿命:1000写/擦循环; ④数据保留时间:10年; ⑤全静态工作:0Hz-24MHz; ⑥三级程序存储器锁定;

⑦128×8位内部RAM;32可编程I/O线; ⑧两个16位定时器/计数器;有5个中断源; ⑨可编程串行通道;具有低功耗的闲置和掉电模式; ⑩具有片内振荡器和时钟电路;

1234567829303119U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161718XTAL29RSTPSENALEEAP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51 图2 ATC51

2 、单片机最小系统

单片机最小系统是内部时钟接引脚XTAL1和XTAL2,采用18KHz的晶振CRYSTAL,用两个30pF的电容进行稳压,如图3所示:

图3 内部时钟电路

3、 LED显示电路

显示电路采用8位共阴LED数码管,从P0口输出段码,列扫描用~口连接两个锁存器来实现,如图4所示。

B0B1B2B3B4B5B6B7U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENALEEAP2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15393837363534333221222324252627281011121314151617P20A0A1A2A3A4A5A6A7234567U2D0D1D2D3D4D5D6D7LEOE74HC573P2^4P2^5P2^6Q0Q1Q2Q3Q4Q5Q6Q71918XTAL29RST19B018B117B216B315B414B513B612B7111293031U3A0A1A2A3A4A5A6A7234567D0D1D2D3D4D5D6D7LEOE74HC573Q0Q1Q2Q3Q4Q5Q6Q719C018C117C216C315C414C513C612C7A0A1A2A3A4A5A6A712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD111

图4 LED显示电路 4、(1)DS18B20温度传感器介绍

C0C1C2C3C4C5C6C7 DS18B20温度传感器是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供处理器处理。

DS18B20 的性能特点如下:

●独特的单线接口方式仅需要一个端口引脚进行通信;

●多个DS18B20可以并联在唯一的三线上,实现多点组网功能; ●无需外部器件;

●可通过数据线供电,电压范围:~; ●测温范围-55℃~+128℃; ●零待机功耗;

●温度以9或12位数字量读出; ●用户可定义的非易失性温度报警设置;

●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; ●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作 DS18B20结构特点。

它采用3脚PR-35 封装或8脚SOIC封装,其内部结构框图如图5所示:

DQ ROM 和 单 线接口8位CRC发生器 位 高 速 缓 存 高温触发器TH 低温触发器TL 配置存储器 温度传感器 存储器与控制逻辑 C VCC 图5 DS18B20内部结构框图

(2)DS18B20测温原理:

DS18B20的测温原理如图6所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。

减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图6中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。

预置 斜率累加器 比较 低温度系数振荡器 Tx 高温度系数振荡器 计数器2 计数器1 预置=0 温度寄存器 =0 图6 DS18B20测温原理图

5 、温度传感器DS18B20与单片机的连接

DS18B20的DQ引脚与单片机的口连接,采用外部电源供电方式,如图7所示。P3口是一个带内部上拉电阻的8位双向I/O口,其输出缓冲器可驱动(吸收或输出电流4个TTL逻辑门电路。对该端口写“1”即在指令中安排一条SETB 指令,可通过内部上拉电阻将该端口拉至高电平,此时该端口可做输入口使用。

R110kU4321VCCDQGNDDS18B2022.0

图7 测温电路

6、 过温报警电路

用2N2222三极管做位驱动,喇叭和红色LED灯作报警提示,如图8。

Q1(C)P20Q12N2222D1LED-REDLS1R2100SPEAKER

图8 过温报警电路

五、软件程序设计

1 、温度采集DS18B20部分程序设计分析

由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的一般操作过程为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

①初始化:单片机将数据线拉低480-960us后释放,等待15-60us,单总线器件即可输出一个持续时间为60-240us的低电平(应答信号),单片机收到此应答后即可进行后续操作;

②写时序:当主机将数据线的电平从高拉到低时,形成写时序,有写0和写1两种时序。写时序开始后,DS18B20在15-60us期间从数据线上采样,如果采样到低电平,则向DS18B20写0,否则写1,两个的时序之间至少需要1us的回复时间按(拉高总线电平);

③读时序:当主机从DS18B20读取数据时,产生读时序,此时,主机将数据线的电平从高拉到低使读时序被初始化。如果此后15us内,主机在总线上采样到低电平,则从DS18B20读0,否则读1。

2 、各部分程序设计及其程序流程图

系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,报警子程序和显示数据刷新子程序等。

(1)主程序:主程序的主要功能是负责温度的实时显示,读出并处理DS18B20的测量温度值。温度测量每1s进行一次。主程序流程图如图9所示。

(2)读出温度子程序:读出温度子程的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不能进行温度数据的改写。读出温度子程序流程图如图10所示。

(3)温度转换命令子程序:温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750 ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图11所示。

(4)计算温度子程序:计算温度子程序将RAM中读取的值进行十进制的转换运算,并进行温度值正负的判断。其流程图如图12所示。

(5)显示数据刷新子程序:显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。显示数据刷新子程序流程 图如图13所示。

图10 读温度子程序

图9 主程序流程图

图11 温度转换命令子程序流程图 图12 计算温度子程序

温度数据移入显示寄存器 N 十位数0? Y 百位数0? Y十位数显示符号 百位数不显示 百位数显示数据(不显示符号)N结束 图13 显示数据刷新子程序流程图

3、源程序设计:

#include<> #include \"\"

#define DataPort P1 sbit LATCH1=P2^2;

sbit LATCH2=P2^3; sbit LABA=P2^0; bit ReadTempFlag; unsigned char code

dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char code

dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsigned char TempData[8]; void Display(unsigned char FirstBit,unsigned char Num);

void Init_Timer0(void); void lab() { }

unsigned char i = 100; unsigned char j = 100; while(j--)

while(i--)

LABA = ~LABA;

TempH=temp>>4; TempL=temp&0x0F; TempL=TempL*6/10; if(TempH/100==0)

TempData[1]=0; else

TempData[1]=dofly_DuanMa[TempH/100];

if((TempH/100==0)&&((TempH%100)/10==0))

TempData[2]=0; else

TempData[2]=dofly_DuanMa [(TempH%100)/10];

TempData[3]=dofly_DuanMa[(TempH%100)%10]|0x80;

TempData[4]=dofly_DuanMa[TempL];

TempData[5]=0; TempData[6]=0x63; TempData[7]=0x39; if(TempH>32||TempH<15)

{ }

lab();

void main (void) {

unsigned int TempH,TempL,temp; else {

LABA=0;

LABA=0; Init_Timer0(); while (1) { if(ReadTempFlag==1) {

ReadTempFlag=0;

temp=ReadTemperature()

{

TempData[0]=0x40; temp=~temp; temp +=1;

}

else TempData[0]=0;

mpData[i];

LATCH1=1; LATCH1=0;

i++; if(i==Num) i=0;

}

}

} } } void

Display(unsigned

char

FirstBit,unsigned char Num)

{

static unsigned char i=0;

DataPort=0;

LATCH1=1;

LATCH1=0;

DataPort=dofly_WeiMa[i+FirstBit];

LATCH2=1;

LATCH2=0;

DataPort=Te

;if(temp&0x8000)

void Init_Timer0(void) {

TMOD |= 0x01;

B0B1B2B3B4B5B6B7C119U1X1CRYSTAL18XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617P20A0A1A2A3A4A5A6A7234567C230pF30pFXTAL29VCC293031RST111R110kPSENALEEAP2^4P2^5P2^6U4321VCCDQGND22.0DS18B20Q1(C)A0A1A2A3A4A5A6A712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7ATC51A0A1A2A3A4A5A6A7234567111Q12N2222P20D1LED-REDLS1SPEAKERR2100C0C1C2C3C4C5C6C7U2D0D1D2D3D4D5D6D7LEOE74HC573Q0Q1Q2Q3Q4Q5Q6Q719B018B117B216B315B414B513B612B7U3D0D1D2D3D4D5D6D7LEOE74HC573Q0Q1Q2Q3Q4Q5Q6Q719C018C117C216C315C414C513C612C7

C时请教子线路设计.实验.测试[M].武汉:华中科技大学出版,2000.

[2]郁有文等.传感器原理及工程应用[M].西安:西安电子科技大学出版社,2003. [3]何立民等.单片机实验与实践教程[M]. 北京:北京航空航天大学出版社,2004. [4]松井邦彦.传感器实用电路设计与制作[M].北京:科学出版社,2005. [5]彭介华.电子技术课程设计指导[M].北京:高等教育出版社,2005.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务