ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:351.86KB ,
资源ID:1457268      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1457268.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DS18B20温度测试设计Word下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于DS18B20温度测试设计Word下载.docx

1、单片机 AT89S52 温度 DS18B20 1 总体设计方案 1.1 设计背景随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测与显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,需要外加信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这次设计的是基于DS18B20的数字温度计,它具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。1.2 设计目标在本设计中选用AT89S52型单片机作为主控制器件,采用DS18B20数字温度传感器作为测温元件,通过8位共阴极LED数码显示管并行传送

2、数据,实现温度显示。本设计的内容主要分为两个部分,一是系统硬件设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用C语言实现温度的采集与显示;通过DS18B20直接读取被测温度值,送入单片机进行数据处理,之后进行输出显示,最终完成了数字温度计的总体设计。其系统构成简单,信号采集效果好,数据处理速度快,便于实际检测使用2 硬件特征2.1 AT89S52单片机的特征2.1.1 AT89S52单片机介绍AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼

3、容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。2.1.2 AT89S52单片机的主要性能(1)与MCS-51单片机产品兼容。 (2)8K字节在线系统可编程Flash存储器。(3)1000次擦写周期。(4)4.0V-5.5V工作电压。(5)全静态操作:0Hz33Hz。(6)三级加密程序存储器。(7)256*8字节的内部数据存储器。(8)32个可编程I/O口线。(9)三个16位定时器/计数器。(10) 八个中断源。(11) 全双工UART串行通道。(12) 低功

4、耗空闲和掉电模式。(13) 掉电后中断可唤醒。(14) 看门狗定时器。(15) 双数据指针。(16) 掉电标识符。(17) 快速编程周期。(18) 灵活ISP编程(字节和模式)。(19) 绿色(-免费)工作包操作。2.1.3 AT89S52单片机的引脚功能介绍AT89S52单片机引脚如图2.1所示。图2.1 AT89S52单片机引脚图VCC:AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端。RESET:AT89S52的重置引脚,高电平动作。EA/Vpp:此引脚接低电平后,系统会取用外部的程序代码来执行程

5、序。ALE/PROG:表示地址锁存器启用信号。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极双向输出入端口,共有8个位,配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口。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:外部数据

6、存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST:复位输入。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。PSEN:外部程序存储器的选通信号。EA/VPP:当/EA保持低电平时,在此期间外部程序存储器,不管是否有内部程序存储器。反向振荡放大器的输入及内部时钟工作电路的输入。来自反向振荡器的输出。2.2 DS18B20温度传感器的特征2.2.1 DS18B20温度传感器介绍美国Dallas 半导体公司的数字化温度传感器DS1820 是世界上第一片支持 一线总线接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一

7、只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20 体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。目前DS18B20 批量采购价格仅10 元左右。2.2.2 DS18B20传感器的主要特征(1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数 据线供电。 (2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 。(3) DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。(4

8、)DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内。(5)温范围55+125,在-10+85时精度为0.5。(6)可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。(7)在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。(8)测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。(9)负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。2.2.3

9、DS18B20芯片封装结构。(1)DS18B20的外形和内部结构。DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如图2.2所示。图2.2 DS18B20的外形及管脚排列(2) DS18B20 引脚功能。GND: 电压地。DQ:单数据总线。VDD:电源电压。(3) DS18B20工作原理图如图2.3所示。图2.3 DS18B20 测温原理框图DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B2

10、0测温原理如图2.3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。图2.3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1

11、的预置值。3 硬件设计3.1 电源电路AT89S52单片机电源电路如图3.1所示。图3.1 单片机电源电路图中IN5408为稳压二极管,最大反向电流为40mA,电路中C7为整流电容,C6、C8为滤波电容,放光二极管是电源工作指示灯。对于发光二极管串联电阻的选取,我们可以这样计算:R=(VCC-Vd)/Id。其中Vd为发光二极管的压降,Id为发光二极管正常发光时的额定电流。一般红色发光二极管的压降为2.0-2.2V,黄色发光二极管的压降为1.82.0V,绿色发光二极管的压降为3.03.2V,正常发光时的额定电流约为20mA。3.2 晶振电路AT89S52单片机晶振电路如图3.2所示。图3.2 单

12、片机晶振电路单片机晶振两个电容的作用:这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发。它会影响到晶振的谐振频率和输出幅度,一般订购晶振时候供货方会问你负载电容是多少。 晶振的负载电容=(Cd*Cg)/(Cd+Cg)+Cic+C式中Cd,Cg为分别接在晶振的两个脚上和对地的电容,Cic(集成电路内部电容)+C(PCB上电容)经验值为3至5pf。3.3 复位电路AT89S52单片机复位电路如图3.3所示。图3.3 单片机复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经过一定的延时才撤销复位信号,以防

13、电源开关或电源插头分-合过程中引起的抖动而影响复位。单片机复位电路参数的选定须在振荡稳定后保证复位高电平持续时间大于2个机器周期。3.4 数码显示电路系统数码显示电路如图3.4所示。图3.4 数码管显示电路数码管显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。数码显示电路主要作用是用来显示实际的环境温度值。通过单片机控制实现数码管动态显示,即温度值实时刷新。实际的电路中我们采用静态驱动,这样程序电路都比较简单,显示亮度也高,但占用的I/O口比较多。动态驱动需要增加译码驱动,增加了硬件的复杂性。P2.0,P2.1,P2.2,P2.3口驱动连接数码管的位码,即选通4个数码管;P

14、0口驱动连接数码管的段码,即输出要显示的温度值。选通数码管是通过P0口接上拉电阻再接三极管9012。由于9012是PNP型三极管,所以单片机选通某个片选时就给对应的三极管一个低电平,此时三极管处于饱和区,饱和导通就相当于开关开路;反之高电平处于截止区,截止可以当作开关断开。在数码管动态显示中,只要扫描的时间足够快,虽然在一个时刻只有一位数码管发光,但却可以看到8 位数码管“同时”显示的效果。3.5 系统设计所需元器件设计所需元器件如表3.1所示表3.1 设计元器件列表4 软件设计本系统主程序的设计流程如图4.1所示。图4.1 程序流程图软件设计关键在于DS18B20的使用。DS18B20属于单

15、线式器件,它在一根数据线上实现数据的双向传输,这就需要一定的协议,来对读写数据提出严格的时序要求,而STC89C52单片机并不支持单线传输,因此必须采用软件的方法来模拟单线的协议时序。DS18B20有严格的通信协议来保证各为数据传输的正确性和完整性。主机操作单线器件DS18B20必须遵循一定的顺序。系统的主程序主要通过初始化,获取温度,显示温度等子程序实现。通过一个循环设置,使系统不断地进行对温度的检测。4.1 数据采集温度采集流程如图4.2所示。图4.2 温度采集流程图温度采集包括初始化DS18B20子程序;读DS18B20子程序;写DS18B20子程序;获得温度子程序。DS18B20初始化

16、需要这几个过程先将数据线置高电平“1”,稍做延时;再将数据线拉到低电平“0” 延时480 us;然后再数据线拉到高电平“1”,稍做延时,判断DS18B20是否发出低电平信号,跟据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制;若CPU读到了数据线上的低电平“0”后,根据时序要求还要做延时,其延时的时间从发出的高电平算起最少要480 us时间;最后将数据线再次拉高到高电平“1”后结束。需要注意的是每次采集温度的时候都需要初始化。如果X=0则表示DS18B20初始化成功,X=1表示DS18B20初始化失败。读DS18B20也需要几个流程:先将数据

17、线拉高“1” 延时2us时间;再将数据线拉低“0” 延时10 us;然后将数据线拉高“1” 延时8us读取1位数据,读取1位数据后延时50us时间;最后通过读取1位右移1位循环进行分别读出4位即半个字节的数据。程序中我们把读取的温度值高位存a中,读取的温度值低位存b中。如果需要读出设定的a和b值用于报警,这时也需将数据读出。我们得到温度值高位即a的值和读取的温度值低位即b的值。由于读出的数据时二进制数显示的时候是十进制。所以必须将读出的数据进行处理。先判断符号位将a的第三位与0xf8相与就可以知道正负。若为负值f=1,将a和b取反。转换的时候我们将小数部分和整数部分分别转换,小数部分b与0x0

18、f相与后的值乘以625就是小数部分的值,需要注意的是小数部分的值是用整数形式表示的;整数部分a左移和 b右合并为四位即半个就是读取的值。获得温度就是在前面操作的基础上调用。先初始化DS18B20,发出跳过ROM匹配命令;再向DS18B20发温度转换命令显示温度,等待AD转换,发跳过ROM匹配命令;最后发出读温度命令将读出的温度数据保存为显示做准备。4.2 温度显示温度显示模块主要包括显示温度子程序和延迟子程序。显示温度即把读出的温度传递过来分别显示。我们是将数码分为各个位动态扫描显示。读温度程序中将小数部分和整数部分的值分别存放在b和a中,符号位存放在a的第三位中。由于是分各个位显示,所以必须

19、对数进行取模运算,C语言提供了整除和求余数运算,两者相结合就可以取出各个位的模。由于我们是用数码管显示,第一位显示符号位,f=0表示正温度用“0”表示,f=1表示负温度用“-”表示,“-”值可以用0xbf送到数码管显示。第四个数码管需要显示小数位,我们采用查表的方法将要显示的带小数的数模放在TAB1中,需要显示的时候再调用;一般整数模放在TAB中。显示的时候采用循环的方式进行,先判断符号位显示在第一个数码管,之后分别为十位、个位、小数位。先送位码再送段码,每一位显示完后延迟2us时间。在数码管动态显示中,由于扫描的时间足够快,虽然在一个时刻只有一位数码管发光,却可以看到4位数码管“同时”显示的

20、效果。温度显示流程如图4.3所示图4.3 温度显示流程框图4.3 系统程序#includeabsacc.H#include stdio.h#define uchar unsigned char#define uint unsigned intuchar code TAB=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; uchar code TAB1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;sbit DQ=P33; /定义通信端口void delay(uint i) whi

21、le(i-);void DelayMS(uint ms) uchar i; while(ms-) for(i=0;i0;i-) DQ=0; /高电平拉低成低电平时读周期开始 value=1; DQ=1; /给脉冲信号 if(DQ) value|=0x80;/读出数据放入高位,最后右移到低位 delay(4); return(value); /*DS18B20写一个字节*/write(uchar dat) /从高电平拉至低电平时,写周期开始 DQ=dat&0x01; /数据的最低位先写入 delay(5); /做60到120us的延时 DQ=1; dat /从最低位到最高位传入 delay(4)

22、;/*读取DS18B20当前温度子程序*/Readtem(void) uchar a=0; uchar b=0; uchar t=0,t1,f; init_DS18B20(); write(0xcc); /跳过读序号列号的操作 write(0x44); /启动温度转换 delay(125); /延时 write(0xbe); /读温度寄存器 delay(100); a=Read(); /读取温度值低位 b=Read(); /读取温度值高位 t1=(a&0x0f)*0.0625*10; /取小数部分 t=(b4); if(t128) t=t+1; t=t+t1;if(b&0xf8)!=0x00)

23、 /取整数部分 f=1; f=0;return(t);/*主函数*/void main() float fg; while(1) fg=Readtem(); /DS18B20读取当前温度值 display(fg); /显示当前DS18B20读取后的温度值 5 系统整体调试调试方法:写好一段程序后不能急于上机调试,而是先进行逻辑分析、可行性分析。用KeilVision 2软件进行调试,不能出现错误,警告可以有,只要不影响生成HEX文件即可。理解其实现的功能,预想程序应该出现的结果。先进行软件仿真,出现错误马上修改,不断进行。先一个模块一个模块的仿真,准确后再连线总体仿真。仿真完后出现预期的效果后

24、再下载程序到硬件进行验证,往往还有问题,还得反复修改,编译,调试,下载,验证。可以一个模块一个模块的下载调试这样就可以知道问题的所在。采用Keil结合仿真的可以大大简化软、硬件电路的设计过程5.1 硬件调试设计采用了ZY12805B智能实验仪器综合实验平台的显示与键盘模块和ZYMCU02主机模块,保证AT89S52单片机和DS18B20传感器未受损坏,保证模块间的连线紧密,接触良好,硬件连线无误,测量环境无温度突变,电源电压稳定下载线未受损坏。5.2 软件调试KeilVision 2是Keil公司关于8051系列MCU的开发工具,可以用来编译C源码、汇编源程序、连接和重定位目标文件和库文件、创

25、建HEX文件、调试目标程序等,是一种集成化的文件管理编译环境。它集成了文件编辑处理、编译连接、项目管理、窗口、工具引用和软件仿真调试等多种功能,是相当强大的开发工具。实验中我们采用KeilVision 2来对我们编写的程序进行编译、链接和生成HEX文件。在下载程序出错时进行必要的调试,再下载验证。同时采用Proteus和Keil结合仿真的方法对设计的单片机测温系统进行了虚拟仿真和性能检测,得到了比较好的仿真结果和分析结果。结果证明采用Proteus和Keil结合仿真的可以大大简化硬件电路的设计过程,可以降低单片机系统的开发成本、提高效率和开发速度,具有很好的实际应用和指导意义。软件仿真的优势在于

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2