《2022年DSB温度传感器设计要点 2.pdf》由会员分享,可在线阅读,更多相关《2022年DSB温度传感器设计要点 2.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、智能化仪器及原理应用课程设计设计题目:DS18B20 数字温度计的设计专业班级:10自动化 1 班姓名:组员:指导老师:日期:2012-11-26 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 13 页 -1 目录一、摘要 2 二、方案论证 2 三、电路设计 2 1、设备整机结构及硬件电路框图 2 2、单片机的选择 3 3、温度显示电路 3 4、温度传感器 4 5、软件设计 6 6、系统所运用的功能介绍:8 四、系统的调试及性能分析:8 附件:DS18B20温度计 C程序 9 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 13 页 -2 一、摘要本设计的主要内容
2、是应用单片机和温度传感器设计一个数字温度表,DS18B20 是一种可组网的高精度数字温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本设计基于数字温度传感器DS18B20,以 AT89C51 片机为核心设计此测试系统,具有结构简单、测温精度高、稳定可靠的优点。可实现温度的实时检测和显示,本文给出了系统的硬件电路详细设计和软件设计方法,经过调试和实验验证,实现了预期的全部功能。二、方案论证方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片
3、机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路,感温电路比较麻烦。方案设计框图如下:方案二:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。三、电路设计1、设备整机结构及硬件电路框图根据设计要求与设计思路,设计硬件电路框图如下图所示,4位数码管显示器系统中 AT89C51成对DS18B20初始化、温度采集、温度转换
4、、温度数码显示。本装置详细组成部分如下:a.主控模块:AT89C51 片机;b.传感器电路:DS18B20温度传感器;c.电路:四位数码管显示。热 敏 电 阻组成的感温电路数码管显示电路AD 转换名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 13 页 -3 按照系统设计功能的要求,确定系统由 3 个模块组成:主控制器、测温电路和显示电路。数字温度计总体电路结构框图所示:2、单片机的选择单片机 AT89C51有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。AT89C51的管脚结构图:3、温度显示电路四
5、位共阳极数码管,能够显示小数和负温度。零下时,第一个数码管显示负号。当温度超过 99.9 时,四个数码管全部亮。列扫描用P2.0P2.3 来实现,列驱用 NOT。电路仿真图如下:DS18B20 AT89C51 主控制器显示电路扫描驱动XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT01
6、2P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U4AT89C51名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 13 页 -4 4、温度传感器DS18B20温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912 位的数字值读数方式。电路图如下:名师资料总结-精
7、品资料欢迎下载-名师精心整理-第 5 页,共 13 页 -5 系统总电路图如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 13 页 -6 5、软件设计主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等。主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1S进行一次。主流程图如下:读出温度子程序读出温度子程序的主要功能是读出RAM 中的 9 字节。在读出时须进行 CRC 校验,校验有错时不进行温度数据的改写。流程图如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 13 页 -7
8、温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。当采用 12 位分辨率时,转换时间约为750ms。在本程序设计中,采用1s 显示程序延时法等待转换的完成。流程图如下:计算温度子程序计算温度子程序将RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负的判定。显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0 时,将符号显示位移入下一位。发 DS18B20 复位命令发跳过 ROM 命令发温度转换开始命令结束开始温度零下?温度值取补码置“-”标志计算小数位温度 BCD 值计算整数位温度 BCD值结束置“+”标志N Y 名师资料总
9、结-精品资料欢迎下载-名师精心整理-第 8 页,共 13 页 -8 6、系统所运用的功能介绍:DS18B20 与单片机之间采用串行通信的方式进行数据读写四、系统的调试及性能分析:硬件调试比较简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试由于 DS18B20 与单片机采用串行数据传送,因此,对DS18B20 进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机汇编或 C语言编写用 Keil C51
10、 编译器编程调试。软件调试到能显示温度值,并且在有温度变化时显示温度能改变,就基本完成。性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。由于DS18B20 的精度很高,所以误差指标可以限制在0.5 以内。另外,-55+125的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持温度计。温度数据移入显示寄存器十位数 0?百位数 0?十位数显示符号百位数不显示百位数显示数据(不显示符号)结束名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 13 页 -9 附件:DS18B20 温度计 C程序/使用 AT89C2051单片机,用共阳四位数码管/P
11、0 口输出段码,P2口扫描#include#include /_nop_();延时函数用#define Disdata P0 /段码输出口#define discan P2 /扫描口#define uchar unsigned char#define uint unsigned int sbit DQ=P14;/温度输入口sbit DIN=P07;/LED小数点控制uint h;/*温度小数部分用查表法*/uchar code ditab16=0 x00,0 x01,0 x01,0 x02,0 x03,0 x03,0 x04,0 x04,0 x05,0 x06,0 x06,0 x07,0 x0
12、8,0 x08,0 x09,0 x09;/共阳四位数码管uchar code dis_712=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 xff,0 xbf;uchar code scan_con4=0 xfe,0 xfd,0 xfb,0 xf7;/列扫描控制字uchar data temp_data2=0 x00,0 x00;/读出温度暂放uchar data display5=0 x00,0 x00,0 x00,0 x00,0 x00;/显示单元数据,共 4个数据,一个运算暂存用/*11微秒延时函数*/void
13、 delay(uint t)for(;t0;t-);/*显示扫描函数*/scan()char k;for(k=0;k0;i-)/DQ=1;_nop_();_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();/5us DQ=val&0 x01;/最低位移出delay(6);/66us val=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_();_no
14、p_();value=1;DQ=0;/_nop_();_nop_();_nop_();_nop_();/4us DQ=1;_nop_();_nop_();_nop_();_nop_();/4us 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 13 页 -11 if(DQ)value|=0 x80;delay(6);/66us DQ=1;return(value);/*读出温度函数*/read_temp()ow_reset();/总线复位write_byte(0 xCC);/发 Skip ROM 命令write_byte(0 xBE);/发读命令temp_data0=read_
15、byte();/温度低 8 位temp_data1=read_byte();/温度高 8 位ow_reset();write_byte(0 xCC);/Skip ROM write_byte(0 x44);/发转换命令/*温度数据处理函数*/work_temp()uchar n=0;/if(temp_data1127)if(temp_data0!=0 x00)temp_data1=(255-temp_data1);temp_data0=(256-temp_data0);n=1;/负温度求补码else temp_data1=(256-temp_data1);n=1;/负温度求补码 display
16、4=temp_data0&0 x0f;display0=ditabdisplay4;display4=(temp_data0&0 xf0)4)|(temp_data1&0 x0f)4);/display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;if(!display3)display3=0 x0A;if(!display2)display2=0 x0A;/最高位为0时都不显示if(n)display3=0 x0B;/负温度时最高位显示-/*主函数*/main()Disdata=0
17、 xff;/初始化端口discan=0 xff;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 13 页 -12 for(h=0;h4;h+)displayh=8;/开机显示 8888 ow_reset();/开机先转换一次write_byte(0 xCC);/Skip ROM write_byte(0 x44);/发转换命令for(h=0;h500;h+)scan();/开机显示 88882 秒while(1)read_temp();/读出 18B20温度数据 work_temp();/处理温度数据 for(h=0;h250;h+)scan();/显示温度值1 秒 名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 13 页 -