课程设计基于数字温度传感器数字温度计的设计档P17_第1页
课程设计基于数字温度传感器数字温度计的设计档P17_第2页
课程设计基于数字温度传感器数字温度计的设计档P17_第3页
课程设计基于数字温度传感器数字温度计的设计档P17_第4页
课程设计基于数字温度传感器数字温度计的设计档P17_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、专业方向课程设计报告基于数字温度传感器数字温度计的设计一 设计要求利用数字温度传感器DS18B20与单片机结合来测量温度。利用数字温度传感器DS18B20测量温度信号,计算后在LCD上显示相应的温度值。其温度测量范围为55125,精确到0.0625。The design of Digital Thermometer Based on the Digital temperature pickupAbstract :the temperature can be measured by combining with the Digital temperature pickup and singlec

2、hip, the Digital temperature pickup DS18B02 measure the signer of temperature ,then temperature valuecan be calculated,which can be displayed on LCD二 方案论证1方案一使用热敏电阻利用其感温效应,其电阻值在将随被测温度变化而变化,这样其两端的电压也将随之改变,经过放大,AD转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。但是放大电路受温度的影响比较大,而且转换精度受到AD转换器位数的限制。 2 方案二 利用温度传感器D

3、S18B2,它具有微型化,低功耗,高性能,抗干扰能力强等优点,可直接将温度转化成串行数字信号,这样单片机可以直接处理后送到显示电路显示。方案二电路比较简单,费用较低,可靠性高,软件设计也比较简单,鉴于以上原因,选择方案二三 理论设计1 硬件设计总体方框图如下硬件电路如下所示:图一(其中附加一个时钟芯片DS1302,可以写入时钟程序,完成在LCD上显示时间定时等功能)1.1温度采集处理模块DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B2

4、0的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以或位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如图2所示。64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。

5、温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分率。由表1可见

6、,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补

7、码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。1.2 LCD显示模块1602采用标准的16脚接口,其中: 第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度

8、第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第1516脚:空脚1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此

9、指令失效。要显示字符时要先输入显示字符地址,下表是DM-162的内部显示地址.3 软件设计软件设计的主要任务是完成从DS18B20中读出温度值,并在LCD上显示。四 电路仿真及仿真结果分析:将设计的电路图用proteus仿真,等到仿真结果如下:由仿真结果可以看出,本设计的功能可以得到满足,软件硬件设计基本没问题。五 设计方案和测试结果将此电路接上电源,LCD显示当前室温,当用手按住温度传感器时,可以看到温度逐渐上升,将手放开,温度逐渐下降。将此电路放在室温中一段时间,其温度基本保持不变,电路工作稳定,符合本次设计的目的。六 作品功能和使用说明此温度传感器的测试范围是55125,考虑到通用单片机

10、和通用LCD的工作温度的范围大致为055,但是若将此温度传感器单独放到被测物体中,仍可以满足测试要求。考虑到此作品是为满足一般日常生活要求而设计,为了充分利用单片机和LCD资源,接入一个时钟芯片,可以显示时间,还可完成定时闹钟的功能。七 心得体会通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最

11、适合的设计方法。通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。在焊接过程中我曾将温度传感器的电源、地焊反啦,导致温度传感器急剧发热,后经观察和查询资料才得以改正。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。八 参考文献【1】郭天祥 51单片机C语言教程 【M】 北京 电子工业出版社 2009【2】毛谦敏 单片机原理及应用系统设计 【M】国防工业出版社 2008

12、附件完整源程序#includereg51.h#include1602.h#include18b20.h#define uchar unsigned char#define uint unsigned intuchar table=temperature:;void main() uchar ee,*p=table; intril();/1602初始化函数 pos(0,0);/将数据指针定位到第一行第一列处 while(*p)/显示 temperature: senddata(*p); p+; while(1) pos(1,0);/将数据指针定位到第二行第一列 read();/读转换的温度数据

13、if(flag=1)senddata(+);/温度大于0 显示“+” if(flag=0)senddata(-);/温度小于0 显示“-” for(ee=0;ee0;t-);uchar init18b20() /初始化函数DQ=1; /DQ先置高 delay(8); /稍延时DQ=0; /发送复位脉冲 delay(80); /延时(480us) DQ=1; /拉高数据线 delay(5); /等待(1560us) x=DQ; /用X的值来判断初始化有没有成功,18B20存在的话X=0,否则X=1 delay(20); if(x=1) return 1;else return 0;void wr

14、ite18b20(uchar aa)/写字节uchar i=0; /数据线从高电平拉至低电平,15us之内将所需写的位送到数据线上,for(i=8;i0;i-) /在1560us之间对数据线进行采样,如果是高电平就写1,低写0发生。 DQ=0; /在开始另一个写周期前必须有1us以上的高电平恢复期。 DQ=aa&0x01; delay(5); DQ=1; aa=1; delay(4); uchar read18b20() /读字节 uchar i=0; / 每个读周期最短的持续时间为60us,各个读周期之间必须有1us以上的高电平恢复期uchar d=0; for (i=8;i0;i-) /一

15、个字节有8位 DQ=1; delay(1); DQ=0; d=1; DQ=1; if(DQ) d|=0x80; delay(4); return d;void read() /读温度 unsigned int hh;while(init18b20(); /初始化write18b20(0xcc); /跳过读序列号的操作write18b20(0x44); /启动温度转换delay(125); /转换需要一点时间,延时 while(init18b20(); /初始化write18b20(0xcc); /跳过读序列号的操作 write18b20(0xbe); /读温度寄存器(头两个值分别为温度的低位和

16、高位) l=read18b20(); /读出温度的低位LSBh=read18b20(); /读出温度的高位MSBhh=l; if(h0x7f) flag=0; /温度小于0h=h;l=l+1; else flag=1;h=h4;zhen=h|l;hh&=0x0f;hh*=625; disbuf0=zhen/100+0;/将温度值转换,存储以便显示if(zhen/100=0)disbuf0= ;disbuf1=zhen%100/10+0;disbuf2=zhen%10+0;disbuf3=.;disbuf4=hh/1000+0; /小数部分disbuf5=hh/100%10+0;disbuf6=

17、0xdf;disbuf7=c; #endif/防止被重定义#ifndef _l602_h#define _1602_h#define uchar unsigned char#define uint unsigned int/函数声明void delay(uchar a);void senddata(uchar m);void sendcmd(uchar n);void pos(uchar i,uchar j); /i=0表示在第一行,i=1表示在第二行void intril(); /定义通道sbit en=P26;sbit rw=P25;sbit rs=P24;void delayss(uchar a)/延时 1602显示时必须延时uchar i,j; for(i=a;i0;i-) for(j=0;j248;j+);void senddata(uchar m)/送数据rw=0; rs=1;en=1; P0=m; delayss(5); en=0; delayss(5

温馨提示

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

评论

0/150

提交评论