专业课程设计报告基于DS18B20的温度测量系统_第1页
专业课程设计报告基于DS18B20的温度测量系统_第2页
专业课程设计报告基于DS18B20的温度测量系统_第3页
专业课程设计报告基于DS18B20的温度测量系统_第4页
专业课程设计报告基于DS18B20的温度测量系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、中原工学院信息商务学院信息工程系专业课程设计报告1 专业课程设计报告专业课程设计报告 题目:基于 ds18b20 的温度测量系统 系系 别别 信息工程系信息工程系 专业班级专业班级 电气电气 091 学学 号号 学生姓名学生姓名 指导教师指导教师 提交日期提交日期 2012 年年 6 月月 8 日日中原工学院信息商务学院信息工程系专业课程设计报告2一、课程设计目的一、课程设计目的 .4二、课程设计的题目、主要内容和基本要求二、课程设计的题目、主要内容和基本要求 .42、1 题目.42、2 主要内容.42、3 基本要求 .4三、设计过程三、设计过程 .53.1 系统硬件设计原理.5311 at8

2、9c52单片机.53.1.2 四位共阳数码管.63.2 ds18b20 介绍.73.2.1 dsi8b20具有以下主要特性.73.2.2ds18b20内部结构.83.2.3 dsi8b20的硬件连接方式.103.3 dsi8b20 的工作过程 .103.4 ds18b20 的测温原理.11四、硬件设计四、硬件设计 .124、1 各模块的硬件电路.12五、软件设计五、软件设计 .145、1 流程图.145、2 完整程序.15六心得体会六心得体会 .21七七.参考文献参考文献 .23八八 附录(实物图)附录(实物图) .23一、课程设计目的一、课程设计目的通过该课程设计使学生进一步了解和加深智能化

3、仪器设计的一般原则;熟练掌握智能化仪器与装置的软、硬件设计方法;掌握仪器的软件调试及软硬件联合统调方法与技能。掌握仪器的接口技术;熟练掌握仪表总线的工作原理、设计步骤、编程及调试;掌握 vb(或 vc)设计软件的编程与调试方法。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,中原工学院信息商务学院信息工程系专业课程设计报告3该设计控制器使用单片机 at89s51,测温传感器使用 ds18b20,用 4 位共阳极 led 数码管以串口传送数据,实现温度显示,能准确达到以上要求。二、课程设计的题

4、目、主要内容和基本要求二、课程设计的题目、主要内容和基本要求2、1 题目题目基于 ds18b20 的温度测量系统2、2 主要内容主要内容1.阅读相关科技文献。2.学习 proteus 软件,keil uvision 软件的应用。3.学会整理和总结设计文档报告。4.学习如何查找相关手册及相关参数。2、3 基本要求基本要求(1)可以对温度进行自由设定,但是必须在 0100 摄氏度单位内,设定时可以适时的显示设定的温度值,温度是可以自由设置的,传感器的测量值可以显示在七段发光二极管上。(2)如果温度不在 2035 度之间,则在 led 上显示“8888”,表示错误并报警。(3)能够保持不间断显示温度

5、,显示位数 4 位,分别为百位,十位,个位和小数位。三、设计过程三、设计过程 3.1 系统硬件设计原理系统硬件设计原理 中原工学院信息商务学院信息工程系专业课程设计报告4311 at89c52 单片机单片机 at89c52 引脚图本设计中所用的单片机型号为at89c52 ,其主要特性为: 1)有 chmos 工艺的节能运行方式 2)兼容 mcs51 指令系统 3)3 个 16 位可编程定时/计数器中断 4)2 个串行中断5)2 个外部中断源6)2 个读写中断口线7)低功耗空闲和掉电模式8)8k 可反复擦写(1000 次)flash rom9)256x8 bit 内部 ram10)时钟频率 0-

6、24mhz11)可编程 uart 串行通道12)共 6 个中断源,3 级加密13)软件设置睡眠和唤醒功能中原工学院信息商务学院信息工程系专业课程设计报告53.1.23.1.2 四位共阳数码管四位共阳数码管引脚图显示电路采用 4 位共阳 led 数码管,从 p0 口输出段码3.2 ds18b20 介绍介绍 典型的温度测控系统是由模拟温度传感器、ad转换电路和单片机组成。但是由于模拟温度传感器输出为模拟信号,必须经过ad转换环节获得数字信号后才能与单片机等微处理器接口,使得硬件电路结构复杂,成本较高。近年来,由于以ds18b20为代表的新型单总线数字式温度传感器的突出优点,使得它得到充分利。ds1

7、8b20集温度测量和ad转换于一体,直接输出数字量,接口几乎不需要外围元件,硬件电路结构简单,传输距离远,可以很方便的实现多点测量;与单片机接口几乎不需要外围元件,使得硬件电路结构简单,广泛使用于距离远,节点分布多的场合。ds18b20是dallas(达拉斯)公司生产的一款超小体积、超低硬件开销,抗干扰能力强、精度高、附加功能强的温度传感器。下面就为大家介绍一些详细中原工学院信息商务学院信息工程系专业课程设计报告6的ds18b20中文资料。3.2.1 dsi8b20 具有以下主要特性具有以下主要特性一、采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 ds18b20 的双向

8、通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。二、测量温度范围宽,测量精度高。ds18b20 的测量范围为-55-125,在-10-85范围内,精度为0.5。三、使用中无需外部器件,可以利用数据线或外部电源提供电能,供电电压范围 3.3v-5.5v;四、持多点组网功能。多个 ds18b20 可以并联在唯一的单线上,实现多点测温。直接读出数字量,工作可靠,精度高,且通过编程可实现 912 位分辨率读出温度数据,转换 12 位的温度数据最大仅需要 750ms五、供电方式灵活。ds18b20 可以通过

9、内部寄生电路从数据线上获取电源,因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更简单,可靠性更高。六、测量参数可配置。ds18b20 的测量分辨率可通过程序设定为 9-12 位。七、负压特性。电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。八、掉电保护功能。ds18b20 内部含有 eeprom,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。九每片ds18b20上有唯一的64bit识别码,可轻松组建分布式温度测量测量网络。十、(5)可设定非易失的报警上下限值,一旦测量温度超过此设定值,即可给出报警标志;中原工学院信息商务学院信息工程系专业课程设计报告73

10、.2.2ds18b20 内部结构内部结构ds18b20主要由4部分组成:64位rom、温度传感器、非挥发的温度报警除法器th和tl、配置寄存器。rom中的64位序列号是出厂前被光刻好的,它可以看做是ds18b20的地址序列码,每个ds18b20的64位序列号均不相同。rom的作用是使每一个ds18b20都各不相同,这样就可以实现一根总线上挂接多个ds18b20的目的、温度传感器、非易失性温度报警触发器th和tl,可通过软件写入用户报警上下限值。高速暂存器内有八个字节,从低到高分别是温度低字节、温度高字节、上限报警温度th、下限报警温度tl、结构寄存器、三个保留字节。 ds18b20 管脚排列:

11、中原工学院信息商务学院信息工程系专业课程设计报告8gnd 为电源地,dq 为数字信号输入/输出端,vdd 为外接供电电源输入端。ds18b20 寄生电源工作方式(电源从 io 口上获得)注意:当温度高于 100时,不能使用寄生电源,因为此时器件中较大的漏电流会使总线不能可靠检测高低电平,从而导致数据传输误码率的增大。ds18b20 外接电源工作方式3.2.3 dsi8b20 的硬件连接方式的硬件连接方式ds18b20与主机的连接非常简单,主要是指数据线和电源的连接,将dsi8b20的数据信号线(dq)与主机的一位具有三态功能的双向口相连接,就可实现数据的传输。dsi8b20采用两种供电方式,外

12、部电源供电(v。n接电源)和数据中原工学院信息商务学院信息工程系专业课程设计报告9线供电(vdd和gnd接地)方式。为保证在有效的dsi8b20时钟周期内提供足够的电流,采用外部电源单独供电时,要在数据线上加i个47kq上拉电阻即可;若采用数据线供电,除了加一个47kq上拉电阻外还要加一个mosfet管来完成对总线的上拉,这种方式主要用于外部电源供电不方便的场合,而且测温网络中传感器的数量有限制。3.3 dsi8b20 的工作过程的工作过程由于dsi8b20单总线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。主机对dsi8b20的各种操作必须按协议进行。由于dsi8b20是一个

13、典型的单总线传感器,其命令序列如下:第一步:初始化;第二步:rom 命令(跟随需要交换的数据);第三步:功能命令(跟随需要交换的数据)。初始化时首先控制器发出一个复位脉冲,使dsi8b20复位:先将数据线拉低并保持480960us,再释放数据线,由上拉电阻拉高15 60us后由dsi8b20发出60240us的低电平作为应答信号。在主机检测到应答脉冲后,就可以发出rom命令。当主机在单总线上连接多个从机设备时,可指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备,以及其设备类型或者有没有设备处于报警状态。主机在发出功能命令之前,必须发送适当的rom 命令。 当主机发出ro

14、m 命令以访问某个指定的dsi8b20,接着就可以发出某个功能命令。这些命令允许主机写人或读出dsi8b20暂存器,启动温度转换以及判断其供电方式等。对dsi8b20访问是由主机发出特定的读写时间片来完成。写时间片时主机将数据线从高电平拉低1 us以上,紧接送出写数据(“0”或” “1”)保持60us,dsi8b20在数据线拉低i5us后对数据线采样。在两次写时间片中必须有一个最小1us的恢复时间(高电平),并且一个写时间片的周期不能小于60us。读时间片时主机将数据线从高电平拉低1 us以上,dsi8b20在拉低信号线15us后送出有效数据,为了读取正确数据,主机必须停止将数据线拉低,然后在

15、15us的时刻内将数据读走。两次读时间片的恢复时间和写时间片要求一致。中原工学院信息商务学院信息工程系专业课程设计报告103.4 ds18b20 的测温原理的测温原理当 ds18b20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1,2 字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5 /lsb 形式表示。温度值格式如图 3.4 所示。 msb lsb msb lsb 图 3.4 温度值格式 这是 12 位转化后得到的 12 位数据,存储在 18b20 的两个 8 比特的 ram

16、 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数值乘于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加 1 再乘于 0.0625 即可得到实际温度。图中,s 表示位。对应的温度计算:当符号位 s=0 时,表示测得的温度植为正值,直接将二进制位转换为十进制;当 s=1 时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。例如+125的数字输出为 07d0h,+25.0625的数字输出为0191h,25.0625的数字输出为 ff6fh,55的数字输出为 fc90h 。 ds18b20 温度传感器主

17、要用于对温度进行测量,数据可用 16 位符号扩展的二进制补码读数形式提供,并以 0.0625lsb 形式表示。表 3.1 是部分温度值对应的二进制温度表示数据。 2121212120212121ssssssss中原工学院信息商务学院信息工程系专业课程设计报告11四、硬件设计四、硬件设计4、1 各模块的硬件电路各模块的硬件电路 4-1-1 蜂鸣器报警电路4-1-2 ds18b20 电路4-1-3 最小系统电路图中原工学院信息商务学院信息工程系专业课程设计报告12 4-1-4 数码管显示电路 五、软件设计五、软件设计5、1 流程图流程图 中原工学院信息商务学院信息工程系专业课程设计报告13开始初始

18、化 ds18b20设定温度上限显示当前温度判断当前温度值超过设定温度上限蜂鸣器响显示四个 8否是 5、2 完整程序完整程序#include /宏定义 #define uchar unsigned char /对 char 做全局变量 #define uint unsigned int / 对对 int 做宏定义 sbit dq=p32; / ds18b20 定义到 p3.2 端口 sbit we1=p20;/ 位选分别在 p2.0 到 p2.3 端口中原工学院信息商务学院信息工程系专业课程设计报告14 sbit we2=p21; sbit we3=p22; sbit we4=p23; sbit

19、 key1=p27; sbit key2=p26; sbit key3=p25; sbit beep=p37; /按键的端口定义 uchar flag=0,flag1=0;/ sign of the result positive or negative uchar sd; / 上线 温度进行宏定义 unsigned char code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;/ 共阳极数码管代码 uchar code table1

20、= 0 x40,0 x79,0 x24,0 x30,0 x19,0 x12,0 x02,0 x78,0 x00,0 x10;共阳数码管端口 void delay1(uint count) /delay 延时函数 uint i; while(count) i=200; while(i0) i-; count-; void delay(uint i)/小型延时函数 while(i-); /初始化函数 void init_ds18b20()中原工学院信息商务学院信息工程系专业课程设计报告15 unsigned char x=0;/内部变量赋值 dq = 1; /dq 复位 delay(8); /稍做

21、延时 dq = 0; /单片机将 dq 拉低 delay(80); /精确延时 大于 480us dq = 1; /拉高总线 delay(14); x=dq; /稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败 delay(20); /读一个字节 uchar readonechar() uchar dat = 0; for (i=8;i0;i-) dq = 0; / 给脉冲信号 dat=1; dq = 1; / 给脉冲信号 if(dq) dat|=0 x80; delay(4); return(dat); /带返回值的 返回 dat 数据 /写一个字节 void writeonec

22、har(unsigned char dat) uchar i=0;中原工学院信息商务学院信息工程系专业课程设计报告16 for (i=8; i0; i-)/八次的 for 循环 dq = 0;赋值 dq = dat&0 x01; delay(5); dq = 1; dat=1;与完之后 右移保证数据的有效传送 uint readtemperature() uchar b=0; uint t=0; float tt=0;/对几个变量的赋初值 init_ds18b20(); writeonechar(0 xcc); / 跳过读序号列号的操作 writeonechar(0 x44); / 启动温度转

23、换 init_ds18b20(); writeonechar(0 xcc); /跳过读序号列号的操作 writeonechar(0 xbe); /读取温度寄存器等(共可读 9 个寄存器) 前两个就是温度 a=readonechar(); b=readonechar();/ 进行读取 t=b; /b 付给 t t=8; /左移 t=t|a; tt=t*0.0625; /将温度的高位与低位合并 t= tt*10+0.5; /对结果进行 4 舍 5 入 return(t); 中原工学院信息商务学院信息工程系专业课程设计报告17 void display() /显示程序 uchar tempp; te

24、mp=readtemperature(); tempp=(temp/100)*10+(temp%100/10); if(sd=tempp) /与初值的判断 beep=0; /报警电路 本实验采用的发光二极管 发光报警 else beep=1; /大于初值报警电路 反操作 we4=0; we1=0; we2=0; we3=0; /位选 p0=tabletemp/1000; /显示百位 we1=1; delay1(3); we1=0; p0=tabletemp/100; /显示十位? we2=1; delay1(3); we2=0;中原工学院信息商务学院信息工程系专业课程设计报告18 p0=tab

25、le1temp%100/10; /显示个位 we3=1; delay1(3); we3=0; p0=tabletemp%10; /显示小数位 we4=1; delay1(3); we4=0; void display_sheding() /显示程序 we4=0; we1=0; we2=0; /注意,这个显示值的是设 we3=0; /定值的示数的显示 if(key2=0) /可由按键控制 /判断按键是否按下 while(!key2); if(key3=0) sd-; while(!key3); /消抖 p0=tablesd/100; /显示百位 we1=1; delay1(3);中原工学院信息商

26、务学院信息工程系专业课程设计报告19 we1=0; p0=tablesd%100/10; /显示十位 we2=1; delay1(3); we2=0; p0=table1sd%10; /显示个位 we3=1; delay1(3); we3=0; p0=table0; /显示小数位 we4=1; delay1(3); we4=0; void main() 定义温度上限 init_ds18b20(); while(1) if(key1=0&flag1=0) /标志位判断是否 1 按键按下来决定现实的是 b20de 温度 值还是 设定的上下线 flag=1; flag1=1; while(!key1

27、); if(key1=0&flag1=1) flag=0;中原工学院信息商务学院信息工程系专业课程设计报告20 flag1=0; while(!key1); if(flag=0) readtemperature(); /读温度 display(); /b20 显示 else /一按键 按下 标志位 flag=1 display_sheding();/ 数码管 现实温度的设定值 六心得体会六心得体会通过为期三周的 b20 温度传感器实习让我深深的感受到了理论与实践相结合的重要性,平日里我们狠拿书本学习,复习考研为的就是在我们以后的工作和学习中能有更突出的发挥,我想我们这次实习,也就是一次理论与实践的美好结合。这次实习,让我明白了动手操作的必要性和重要性,也让我明白了学习的目的与方法。这次需要用到的软件有 protell99se、keil、stc、proteus。这四个软件keil、stc 我一年前练了一段时间,长时间的搁置,以至于我重新翻着单片机书重新建工程;protell 我之前是学过,可是由于是自学,没有压力就没有动力,所以基本上是从零开始。原理图大概用了两整天,每天熬到一点以后,才自己建库,画出了原理图,pcb 由于一直有错误,浪费了三天时间结果只弄到了自动生成!如如果之前的原理图是自己画的话,pro

温馨提示

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

评论

0/150

提交评论