基于单片机的数字温度计_第1页
基于单片机的数字温度计_第2页
基于单片机的数字温度计_第3页
基于单片机的数字温度计_第4页
基于单片机的数字温度计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字温度计设计一、设计任务与要求1.1设计内容:数字温度计的设计要能实现温度的实时采集与显示,以AT89S51单片机为核心芯片,使用DS18B20数字温度传感器或使用热敏电阻之类的器件,利用其感温效应采集环境温度,并通过一组4位共阴极数码管将温度显示出来,也可用LM1602液晶显示屏。1.2设计基本要求:(1)温度设定范围:温度为00℃—99℃(2)温度精度为0.1(3)可以设置报警温度,发出报警信息,可以用声或光表示。二、方案设计与论证本设计以检测温度并显示温度,以及提供上下限报警和设定某一个报警温度为目的。按照系统设计功能的要求,对于温度的采集可以使用温度传感器、热敏电阻或热电偶等等;将采集到的温度传到单片机,利用软件编程对温度进行处理;温度范围和精度由软硬件决定;报警采用声音和灯光相结合,由蜂鸣器和LED灯组成;报警温度的设置由键盘的up和down来设定。方案一由于本设计实现的是测温电路,首先我们可以使用热敏电阻之类的器件,利用其感温效应,将其随被测温度变化的电压或电流值采集过来,进行A/D转换后,就可以用单片机进行数据的处理,通过显示电路就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。因此,我们引出第二种方案。方案二我们可以采用技术成熟、操作简单、精确度高的温度传感器,在此,可以选用数字温度传感器DS18B20,根据它的特点和测温原理,很容易就能直接读取被测温度值并进行转换,这样就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故在本设计中采用了方案二。以下为利用DS18B20温度传感器的硬件构成图:单片机AT89C52RC主控部分四位数码管显示温度DS18B20单片机AT89C52RC主控部分四位数码管显示温度DS18B20温度采集按键输入按键输入复位电路复位电路声光报警电路声光报警电路外部晶振电路外部晶振电路图2.1数字温度计设计总体硬件构成图三、硬件电路设计3.1、硬件设计总图见图3.1图3.1硬件设计仿真总图3.2最小系统的电路设计单片机晶振电路、外部按键电路和复位电路的设计如图3.2所示。XTAL1(X1)为反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2(X2)是来自反向振荡器的输出。在此使用的是12MHz的晶振;复位电路采用手动复位与上电复位相结合的方式。当按下按键S1时,VCC通过R1电阻给复位输入端口一个高电平,实现复位功能,即手动复位。上电复位就是VCC通过电阻R2和电容C3构成回路,该回路是一个对电容C充电和放电的电路,所以复位端口得到一个周期性变化的电压值,并且有一定时间的电压值高于CPU复位电压,实现上电复位功能;以及外部按键电路通过UP和DOWN按键将I/O口直接与地相连,当按键按下时I/O口将检测到低电平。图3.2最小系统的设计电路3.3温度采集电路的设计(1)、数字温度传感器DS18B20它是一种新型的”一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持”一线总线”接口的温度传感器。温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20的性能特点如下:▲独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条总线即可实现微处理器与DS18B20的双向通讯;▲DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;▲DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;▲适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电;▲测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;▲零待机功耗;▲可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;▲在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度较慢;▲用户可定义报警设置;▲测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;▲负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。(2)、工作原理如下器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。它有严格的时序概念,初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→(3)、内部构造和硬件仿真图如下CC64位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器VddI/OI/O图3.3DS18B20温度采集仿真图3.4数码管温度显示电路设计LED数码管,也叫LED数码显示器,由于它具有很高的性能价格比、显示清晰、亮度高、使用方便、电路简单、寿命长等诸多优点,长期以来一直在各类电子产品和工程控制中得到非常广泛的应用。在单片机控制系统中,因为单片机的硬件简单、灵活等特点,非常适合使用LED数码管作为其输出设备,这样既满足了控制系统硬件简单,又能如实地显示被控系统的温度、压力、流量、高度等一些单片机的处理结果。本设计的显示电路采用4个共阴极LED数码管,从P0口并行输出温度段码,用P2.0~P2.3四个端口输出位选,控制数码管的点亮。其工作过程如下:1、并行数据由P1口送至4个数码管。2、这时P3.0、P3.1、P3.2、P3.3轮流输出低电平,LED数码管依次被点亮,显示P1传送来的数据。由于数码管余辉效应和人眼的视觉延迟,当数码管每秒点亮50次时,就会出现静止显示的温度值。硬件图如图3.4所示:图3.4数码管温度显示电路3.5声光报警电路设计报警电路采用蜂鸣器和LED灯相结合的办法,通过两个NPN三极管来驱动,如图3.5所示。当三极管基极为低电平时,蜂鸣器和LED灯都关闭;当基极由低电平变为高电平时,三极管导通,这时蜂鸣器响,LED灯亮,达到声光报警的目的。图3.5声光报警电路四、温度传感器程序设计开始设定温度报警初值开始设定温度报警初值温度转化子程序温度报警判断键盘扫描初始化DS18B20应答脉冲?发起跳读Rom命令CCH发起转化温度命令44H延时1s,等待温度转换完成初始化DS18B20应答脉冲?发起读暂存器命令BEH读取内部RAM中第1,2字节即为温度数值NoNo将数字温度变成真实温度并输出显示4.2主要程序代码与说明/****延时函数****//****DS18B20初始化以及对它读写的程序****/voiddsreset(void){uinti; ds=0;i=100; while(i>0)i--; ds=1;i=4; while(i>0)i--;}bittempreadbit(void)//读1位数据函数{uinti=0; bitdat; ds=0;i++;//i++起延时作用 ds=1;i++;i++; dat=ds; i=8;while(i>0)i--; return(dat);}uchartempread(void)//读1个字节的数据{uchari,j,dat; dat=0; for(i=1;i<=8;i++) {j=tempreadbit(); dat=(j<<7)|(dat>>1); } return(dat);}voidtempwritebyte(uchardat)//向DS18B20写一个字节数据{uinti,j;bittestb;for(j=1;j<=8;j++){ testb=dat&0x01;dat=dat>>1; if(testb)//写1 { ds=0; i++;i++; ds=1; i=8;while(i>0)i--;} else//写0 {ds=0; i=8;while(i>0)i--; ds=1; i++;i++; }}}/***向DS18B20发送转换指令*****//***将转换后的数字温度转换为模拟温度*****//***将模拟温度通过数码管显示*****//***按键输入部分用来改变报警温度初值*****//****对报警温度进行判断并声光提示****//****主函数体****/五、仿真过程与仿真结果将硬件设计原理图和程序相结合进行软件仿真,首先,将设计好的数字温度传感器程序输入到Proteus中保存、编译生成HEX文件,将该HEX文件下载到仿真原理图,其仿真结果如下图5.1。程序默认报警温度为25℃,DS18B20的模拟温度可以任意设置如图中设置为26.31度,通过DOWN键可以减小报警温度初值,UP键可以增大报警温度初值,并且当有按键按下时,有声光提示,数码管回显报警值。现在通过按UP键使报警初值加1变为26℃,由于26约等于DS18B20的当前温度26.31(报警误差最大为0.5℃),所以蜂鸣器响起,LED灯闪烁。再次按下UP后报警初值变为27℃,声光报警也都关闭。图5.1仿真结果六、安装与调试6.1、电路的安装在制作好电路板以后,就进入了电路的安装过程。安装中要严格按照原理图和PCB图中元件的位置与参数来焊接,焊接时要注意不能让焊锡短路电路,注意元件的正负极,同时还要把握好对温度敏感元件的焊接时间。防止元器件和线路因为高温而烧毁。依据仿真图画出原理图和PCB图如下图6.1所示6.2、电路的调试焊接好电路以后,对电路的调试是一步很重要的过程,关系到各功能的实现问题与最终的成败问题。系统板上硬件连线

(1).把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。

(2).把“单片机系统”区域中的P2.0-P2.3用8芯排线连接到“动态数码显示”区域中的Y0Y1Y2Y3端子上。

(3).把DS18B20芯片插入“三路单总线”区域中的一个插座中,注意电源与地信号不要接反。

(4).把“三路单总线”区域中的对应的DQ端子连接到“单片机系统”区域中的P3.7/RD端子上。(5).蜂鸣器接“单片机系统”区域中的P1.5端子上。严格按照仿真原理图正确连接各线路,检查无误后上电,然后看看各功能模块是否正常。七、结论与心得温度的检测和控制是一个经典的课题,生活中的各个领域里经常需要检测和控制某一特定环境的温度,使之能够稳定在一定的温度范围之内。这就要求系统对温度的检测具有足够的精度和实时性,控制要有足够的精度,并且尽可能具有较低的成本,这样的产品才具有实用价值。DS18B20恰好具有这样的优势,由于其可直接输出数字量,不需要AD转换,测温范围大,与单片机容易接口,成为原来广为使用的热电阻、热电偶的理想替代品。因此本设计可以应用于多种温度控制场合。本设计叙述了数字温度计的设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论