传感器课程设计-----DS18B20数字温度计的设计.doc_第1页
传感器课程设计-----DS18B20数字温度计的设计.doc_第2页
传感器课程设计-----DS18B20数字温度计的设计.doc_第3页
传感器课程设计-----DS18B20数字温度计的设计.doc_第4页
传感器课程设计-----DS18B20数字温度计的设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

传感器课程设计说明书 设计题目:DS18B20数字温度计的设计专业班级: 10机电一体化2班 姓 名: 组 员: 指导教师: 2012年11月20日目 录一、设计方案比较21、设计方案22、方案论证33、方案选择4二、设计原理51、硬件方面的介绍51.1AT89C51芯片介绍51.2DS18B20简介61.3LED显示模块102、软件方面的介绍112.1KeilVision 软件112.2Proteus ISIS 软件113、系统框架设计114、Proteus ISIS温度测量模拟原理图125、温度测量实物图12三、调试小结131、软件调试132、硬件调试13四、课程设计心得体会14五、参考文献14附录一:基于DS18B20数字温度计的设计C语言程序15一、设计方案比较 通过查阅大量相关技术资料,并结合自己的实际知识,我们主要提出了三种技术方案来实现系统功能,方案一基于热敏电阻的温度计设计;方案二为基于SHT71的数字温度计设计;方案三是基于DS18B20的数字温度计设计。下面我首先对这三种方案的实现原理分别进行说明,并分析比较它们的特点,然后再选择方案并阐述我选择方案的原因。1、设计方案11方案一基于热敏电阻的温度计设计方案一主要由温度传感器、A/D转换电路、单片机控制电路、数码显示电路组成。采用合肥三晶电子有限公司生产的SJMFE-347-103F型热敏电阻。采集的模拟温度值输入A/D转换电路,A/D转换采用LM331型U/f变换器来实现。U/f变换器把电压信号转换为频率信号。由热敏电阻的电阻温度特性表可以求出每个温度点所对应的UIN,再由公式FOUT=256*UIN计算出每个温度点所对应的输出频率,进而由单片机处理显示被测量的温度值。温度信号处理由于热敏电阻是非线性的器件,所以温度与频率输出成非线性,需要补偿温度。单片机利用查表法实现温度补偿。所谓查表法是把事先计算或测量的数据按一定的顺序排列成表格的形式,固化在单片机内。只要测量出LM331的频率值,就可以通过查表法准确的得出环境的温度值。再交由单片机驱动数码管显示温度。这样就实现了温度的采集与显示。12方案二基于SHT71的数字温度计设计方案二主要由数字温度传感器、单片机控制电路、数码显示电路组成。SHT71将温度传感器、信号放大调理、A/D转换、I2C总线接口全部集成于一个芯片上。SHT11先利用传感器产生温度信号;经放大送至A/D 转换器进行模数转换、校准和纠错;由2线接口将信号送至微控制器;再利用微控制器完成相对湿度的非线性补偿和温度补偿。SHT71测量过程包括4 个部分:启动传输、发送测量命令、等待测量完成和读取测量数据。在启动传输时序之后, 微控制器可以向SHT71 发送命令,SHT71则通过在数据传输的第8个SCK时钟周期下降沿之后,将DATA拉低来表示正确接收到命令,并第9个SCK时钟周期的下降沿之后释放DATA线(即恢复高电平),SHT71则通过拉低DATA表示测量结束,并且把测量结果存储在内部的存储器内,然后自动进入空闲状态,等微控制器执行完其他任务后再来读取。测量数据读取前,微控制器先重新启动SCK,接着2字节的测量数据和1字节的CRC 校验将由SHT71传送给微控制器。2字节的测量数据是从高字节的高位开始传送,并以CRC 校验字节的确认为表示通信结束。微控制器需要通过拉低DATA来确认接收的每个字节,若不使用CRC校验位则微控制器可以在接收完测量数据的最低位后保持DATA为高电平来终止通信。单片机只需将读取传输的数据通过驱动数码管显示即可。13方案三基于DS18B20的数字温度计设计方案三主要也由数字温度传感器、单片机控制电路、数码显示电路组成。DS18B20 测量温度采用了特有的温度测量技术。它是通过计数时钟周期来实现的。低温度系数振荡器输出的时钟信号通过由高温度系数振荡器产生的门周期而被计数。计数器被预置在与- 55 相对应的一个基权值。如果计数器在高温度系数振荡周期结束前计数到零,表示测量的温度值高于- 55,被预置在- 55 的温度寄存器的值就增加1,然后重复这个过程,直到高温度系数振荡周期结为止这时温度寄存器中的值就是被测温度值,这个值以16 位形式存放在便笺式存贮器中,此温度值可由主机通过发存贮器读命令而读出,读取时低位在前,高位在后。斜率累加器用于补偿温度振荡器的抛物线特性。读出的二进制数可以直接转换为十进制由单片机驱动数码管显示输出。2、方案论证 21方案一:热敏电阻温度传感器的特点是自身的电阻值随温度而变化。热敏电阻是利用半导体材料制成的敏感组件,通常所有的热敏电阻温度传感器都是具有负温度系数的热敏电阻,它的电阻率受温度的影响很大,而且随温度的升高而减小。其优点是灵敏度高,体积小,寿命长,工作稳定,易于实现远距离测量;缺点是互换性差,非线性严重。它的测量范围一般为-10+300,也可做到-200+10,甚至可用于+300+1200环境中作测温用。热敏电阻器温度计的精度可以达到0.1,感温时间可少至10s以下。 22方案二:SHT7I是瑞士Sens on公司生产的具有二线串行接口的单片全校准数字式新型相对湿度和温度传感器,可用来测量相对湿度、温度和露点等参数,具有数字式输出、免调试、免标定、免外围电路及全互换的特点该传感器将CMOS芯片技术与传感器技术结合起来,发挥出强大的优势互补作用。由于SHT71是I2C总线结构的串行数据传送,它只需要DATA和SCK两根线完成数据的传送过程。因此,我们在进行程序设计的时候,也得按着I2C协议来对SHT71芯片数据访问。对于STC89C52单片机本身没有I2C硬件资源,所以必须用软件来模拟I2C协议过程。一般使用单片机通用I/ O 口线来虚拟I2C 总线,并利用P1. 0 来虚拟数据线DATA ,利用P1. 1 口线来虚拟时钟线,并在DATA 端接入一只4. 7k 的上拉电阻,同时,在VDD及GND 端接入一只0. 1F 的去耦电容。温度测量范围:-40+123.8;温度测量精度:0.425;响应时间:0;t-); void scan() int j ; for(j=0;j0;i-) DQ=1;_nop_();_nop_(); /从高拉倒低 DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_(); /5us DQ=val&0x01; /最低位移出 delay(6); /66us val=val/2; / 1 右移 位 DQ=1; delay(1); /*DS18B20读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_(); /4us DQ=1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80; delay(6); /66us DQ=1; return(value); /*读出温度函数*/ read_temp() ow_reset(); /总线复位 delay(200); write_byte(0xcc); /发命令 write_byte(0x44); /发转换命令 ow_reset(); delay(1); write_byte(0xcc); /发命令 write_byte(0xbe); temp_data0=read_byte(); / 读温度值的第字节 temp_data1=read_byte(); /读温度值的高字节 temp=temp_data1; temp63488) / 温度值正负判断 temp=65536-temp;n=1; / 负温度求补码,标志位置1 display4=temp&0x0f; / 取小数部分的值 display0=ditabdisplay4; / 存入小数部分显示值 display4=temp4; / 取中间八位,即整数部分的值 display3=display4/100; / 取百位数据暂存 display1=display4%100; / 取后两位数据暂存 display2=display1/10; / 取十位数据暂存 display1=display1%10; /个位数据 r=display1+display2*10+display3*100; /符号位显示判断/ if(!display3) display3=0x0a; /最高位为0时不显示 if(!display2) display2=0x0a; /次高位为0时不显示 if(n)display3=0x0b; /负温度时最高位显示- /*设置温度显示转换*/ void xianshi(int horl) int n=0; if(horl128) horl=256-horl;n=1; display3=horl/100; display3=display3&0x0f; display2=horl%100/10; display1=horl%10; display0=0; if(!display3) display3=0x0a; /最高位为0时不显示 if(!display2) display2=0x0a; /次高位为0时不显示 if(n) display3=0x0b;/负温度时最高位显示- /*按键查询程序*/ /*主函数*/ void main() dm=0x00; /初始化端口 w0=0; w1=0; w2=0; w3=0; for

温馨提示

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

评论

0/150

提交评论