DS18B20数字温度计.doc_第1页
DS18B20数字温度计.doc_第2页
DS18B20数字温度计.doc_第3页
DS18B20数字温度计.doc_第4页
DS18B20数字温度计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

目录一、摘 要3 关键词3二、设计内容3(一)要求3(二)设计3 1、硬件设计 32、总电路图8(三)软件初步操作8三、关于PCB的制作 9(一)元件的封装 9(二)PCB板的设计步骤 9 四、电路安装与调试101、安装 102、调试 10五、心得体会14参考文献14附件15六、程序代码16DS18B20数字温度计一、摘要在一些温控系统电路中,广泛采用的是通过热电偶、热电阻或PN结测温电路经过相应的信号调理电路,转换成AD转换器能接收的模拟量,再经过采样保持电路进行AD转换,最终送入单片机及其相应的外围电路,完成监控。但是由于传统的信号调理电路实现复杂、易受干扰、不易控制且精度不高。本文介绍单片机结合DS18B20温度控制系统设计,因此,本系统用一种新型的可编程温度传感器(DS18B20),不需复杂的信号调理电路和AD转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合。温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生活中的更加广泛的应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于单片机STC11F02E的温度检测系统。该系统可以方便的实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。该系统设计和布线简单,结构紧凑,抗干扰能力强,在大型仓库、工厂、智能化建筑等领域的温度检测中有广泛的应用前景。软件系统采用C语言编写程序,包括显示程序,复位程序,温度转换程序,定时中断服务,程序,延时程序,串行通信程序等,并在Keil uVision4中调试运行。关键词: 单片机(STC11F02E);共阳极LED数码管显示器;DS18B20;stc-isp-15xx-v6.72;Keil uVision4 二、内容要求与设计(一)要求数字温度计测量环境温度,根据环境温度变化而发生变化;测量范围:-55+125;误差在0.5以内;拥有复位功能,并且采用LED共阳极数码管直接读显示;采用串口通信,将采集到的温度显示在上位机。(二)设计单片机概述:单片机的结构特征是将组成计算机的基本部件集成在一块晶体芯片上,构成一台功能独特的单片微型计算机。一台典型的单片机的基本组成结构包括中央处理器(CPU),存储器(ROM和RAM),并行I/O口,串行I/O口,定时器/计数器,定时电路及元件。由此可见,单片机在结构上突破了常规的按逻辑功能划分芯片。由多片构成了微型计算机的设计思想,将构成计算机的许多功能集成在一块晶体芯片上。1、硬件设计由STC11F02E构成的温度计主要由三部分组成:DS18B20温度传感器、单片机STC11F02E、由LED数码管构成的显示模块。其系统原理框图如图1所示。DS18B20作为单片机STC11F02E的外部信号源,把所采集到的温度转换为数字信号,通过I/O接口传给单片机,单片机启动ROM内的控制程序驱动LED数码管,通过I/O接口和数据线(单片机和数码管的接口)把数据传送给数码管,将采集到的温度显示出来。单片机STC11F02E温度传感器DS18B20LED数码管图1 温度及原理框图(1)温度传感器单线温度传感器DS18B20完成温度采集。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如左图所示,DQ为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字量读出;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。DS18B20内部结构 :C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器 温度采集电路:(2)、单片机STC11F02E概述:STC11F02E是20引脚的单片机,具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。其引脚图如下:(2)管脚说明VCC:供电电压。 GND:接地。 P1口: P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P3口: P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为STC11F02E的一些特殊功能口,管脚备选功能。P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 (3)主处理模块主处理模块主要是将各个模块进行协调处理以实现数据交互。主处理模块首先完成初始化工作,初始化后进入循环处理,在循环过程中获得采集模块的数据,并将数据进行处理,根据处理后的结果进行显示。主处理的流程图如下图所示:程序初始化判断DS18B20是否存在数据处理数据显示YN(4) 显示模块在这里我们使用的是四段数码管显示(包含小数点),通常在显示上我们采用的方法一般包括两种:一种是静态显示,另一种是动态显示。其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多,所耗得电能较大;动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中,为了减少端口资源,降低电能消耗,采用的是动态显示方法。采用动态扫描的方法,其中P3.0,P3.1,P3.2,P3.3控制位选,P1控制段选。由P3.0,P3.1,P3.2,P3.3向各位轮流输出扫描信号,使每一瞬间只有一个数码管被选通,然后由P1送入该位所要显示的字形码,点亮该位字形段显示的字形。在P1送出的码段和P3.0,P3.1,P3.2,P3.3送出的位段的配合控制下,使各个数码管轮流点亮显示各自的字形。数码管显示电路:(5)复位电路 复位电路:复位电路产生复位信号,复位信号送入 RST 后还要送至片内的施密特触发器,由片内复位电路在每个机器周器的 S5P2 时刻对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号。复位电路分为上电自动复位和按键复位。2、总电路图基于STC11F02E的温度测量系统电路图把温度转化成带符号的数字信号(以十六位补码形式,占两个字节),输出脚I/O直接与单片机的P3.7相连,R9为4.7K上拉电阻,传感器采用外部电源供电。STC11F02E是整个系统的核心部分,用户程序存放在这里。显示器模块由四个共阳数码管和四个三极管组成。系统程序分传感器控制程序和显示器程序以及串口通信程序三部分,传感器控制程序是按照DS18B20的通信协议编制。系统的工作是在程序控制下,完成对传感器的读写、对温度的显示以及串口通信。 元器件清单:(三)软件初步操作1、建立工程文件启动软件后,在主菜单上单击“文件”/“新建”/“工程”/“PCB工程”命令;新建工程后,在左侧的工程面板中即可生成一个名为“PCB-Project1.PrjPCB”的工程文件。2、建立原理图文件在主菜单上单击“文件”/“新的”/“原理图”命令,即可在工程面板的工程文件中增加一个默认的原理图文件。3、建立PCB文件在主菜单上单击“文件”/“新建”/PCB命令,即可在工程文件中增加一个新的默认的PCB文件。数字温度计原理图如下:三、PCB的制作(一)封装1、封装库文件原理图绘制完成后,要对各个器件的封装进行检查,若封装不符合要求或没有封装的,要创建封装库并且自行绘制原件封装。在打开的“工程”文件上单击鼠标右键,然后选择“给工程添加新的”/PCB Library选项,即可在当前工程中创建一个封装库文件。2、新建原件封装(1)新建原件封装在PCB Library面板中的“元件”列表栏内单击鼠标右键,在弹出的快捷菜单中选择“新建空元件”选项即可创建一个新的元件封装。(2)放置焊盘在绘图区依次放置元件的焊盘。可以设置焊盘孔径、中心位置形状等等。(3)放置文字单击主菜单中的“放置”/“字符串”命令在Top Overlay层给焊盘添加文字。(4)绘制图形在Top Overlay层绘制元件的图形,绘制的图形需要参照元件的实际尺寸和外形。单击“放置”/“走线”菜单命令绘制焊盘的外形走线。(二)PCB设计步骤 1、 画好原理图后,新建PCB电路板,给电路板绘制一个100mm*75mm的边界;载入网络表。2、设置布线规则。单击“设计”/“规则”命令设置电路板的布线规则。3、元件布局。载入网络表后对所有元件进行重新布局,采用手动方式布局。四、电路安装与调试1、安装本系统连线较复杂,采用覆铜板打印电路来焊接。方便简洁。在安置元器件前先认真观察印制电路板,是否有短路现象。再用万用表测试电路的连线情况,以保证印制板的电气连接完全正确。在安装元器件时,认真对照PCB,元器件一一按图中的位置放置。引脚不能放反,否则硬件电路将不会出结果。2、调试;我们要通过调试电路来发现设计电路的相关内容。(1)按照电路图对相关元件进行连接,其中注意芯片各管脚的作用以及该如何进行接线。(2)当上步骤完成后,接通电源,观察数码管和二极管是否亮,若不亮时,要对电路电源进行检测,看是否线路接触不良或者电路短路。(3)完成之后,观察数码管是否显示数值,然后用手触摸温度传感器,观察数码管是否随着温度变化而变化。(4)若数码管数值与温度值相差太大,则要检查信号采集电路中各元件值是否对。软件调试:整个系统是由硬件配合软件来实现的,在硬件确定后,编写的软件的功能也就基本定型了。所以软件的功能大致可分为两个部分:一是监控,这也是系统的核心部分,二是执行部分,完成各个具体的功能。系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。用到了Keil C软件,Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。功能很强大,用于对程序的调试和编辑。本系统的程序的编写就是在Keil C软件中完成的。 软件流程图主程序:读温度子程序:计算温度子程序:上电显示“8888”2s:2s到显示温度值:用手触摸温度传感器,温度改变:4. 串行通信 将计算机与硬件用数据线连接起来,打开串口,就可以在接收缓冲区中看到接收的数据。五、心得体会经过几周的忙碌和工作,本次的设计已经结束,作为一个课程设计者,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有老师的督促指导,以及一起实习的同学们的支持,想要完成这个设计还是有困难的。通过本次课程设计,使我对电子设计及制作产生了较为浓厚的兴趣,这不仅加强了自己对理论知识的理解和巩固,还能提高自己的动手能力,可以说受益匪浅。从这一次制作过程的心得体会当中,我意识到在以后的设计中我还需要做到再细心、再耐心、再专心。此次课程设计必将让自己的理论水平和实践能力上升到一个新的台阶,同时也让自己认识到实践的重要性。六、程序代码:#include reg51.h#include intrins.h /_nop_();延时函数用#define Disdata P1 /段码输出口#define discan P3 /扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P37; /温度输入口sbit DIN=P10; / LED小数点控制uint h;uint a,sending;/*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;uchar code dis_712=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff,0xfd;uchar code wendu12=0,1,2,3,4,5,6,7,8,9,+,-;/* 共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 - */ uchar code scan_con4=0xfe,0xfd,0xfb,0xf7; / 列扫描控制字uchar data temp_data2=0x00,0x00; / 读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00;/显示单元数据,共4个数据,一个运算暂存用uchar mm4=1,2,3,4;void sendchar(char ch) SBUF=ch;/发送数据 while(TI=0);/等待发送完毕,标志置1 TI=0; /标志清零/*11us延时函数*/void delay(uint t)for(;t0;t-);/*显示扫描函数*/scan()char k; for(k=0;k4;k+) /四位LED扫描控制 Disdata=dis_7displayk; /Disdata P1,段码输出口 if(k=1)DIN=0; discan=scan_conk; /discan P3扫描口 delay(900); discan=0xff; for(a=0;a0; i-) /DQ=1;_nop_();_nop_(); /从高拉到低DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ = val&0x01; /最低位移出delay(60); /660usval=val/2; /右移一位DQ = 1;delay(1); /*18B20读1个字节函数*/从总线上读取一个字节uchar read_byte(void)uchar i;uchar value = 0;for (i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ = 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80;delay(60); /660usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset(); /总线复位write_byte(0xCC); / 发Skip ROM命令write_byte(0xBE); / 发读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位ow_reset();write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令/*温度数据处理函数*/work_temp()uchar n=0; /if(temp_data1127) temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);n=1;/负温度求补码,标志位置1display4=temp_data0&0x0f;/取小数部分的值display0=ditabdisplay4;/存入小数部分显示值display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4);/取中间八位,即整数部分的值display3=display4/100;/取百位数据暂存display1=displ

温馨提示

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

评论

0/150

提交评论