DSB数字温度计方案设计书实验报告_第1页
DSB数字温度计方案设计书实验报告_第2页
免费预览已结束,剩余18页可下载查看

下载本文档

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

文档简介

1、封面作者: PanHongliang仅供个人学习学 号: 093521029指导老师:李东京老师设计时间: 2012 年 4 月 9 日 4 月 22 日电子与信息工程学院目录1.引言31.1.设计意义31.2.系统功能要求42.方案设计43.硬件设计24.软件设计55.系统调试76.设计总结87.附录98.作品展示159.参考文献17DS18B20 数字温度计设计1.引 言1.1.设计意义在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温 元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,再转换成对 应的温度,需要比较多的外部硬件支持。其缺点如下:硬件电路复杂;软件调试

2、复杂;制作成本高。本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种 改进型智能温度传感器DS18B20作为检测元件, 测温范围为-55125C, 最高 分辨率可达0.0625C。DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少 了外部的硬件电路,具有低成本和易使用的热点。1.2.系统功能要求设计出的DS18B20数字温度计测温范围在-55125C,误差在土0.5C以 内,采用LED数码管直接读显示。2.方案设计按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电 路和显示电路。数字温度计总体电路结构框图如4.1图所示:图4.13.硬件

3、设计温度计电路设计原理图如下图所示,控制器使用单片机AT89C2051温度传感器使用DS18B20使用四位共阳LED数码管以动态扫描法实现温度显示 主控制器单片机AT89C2051具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需 要,很适合便携手持式产品的设计使用。系统可用两节电池供电。AT89C2051的引脚图如右图所示:1、VCC电源电压。2、GND地。3、P1口:P1口是一个8位双向I/O口。口引脚P1.2P1.7提供内部上拉 电阻,P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟 比较器的同相输入(ANIO)和反相输入(AIN1)。P1口输出缓

4、冲器可吸收20mA电流并能直接驱动LED显示。当P1口引脚写入“1”时,其可用作输入 端,当引脚P1.2P1.7用作输入并被外部拉低时,它们将因内部的写入“1” 时,其可用作输入端。当引脚P1.2P1.7用作输入并被外部拉低时,它们将因 内部的上拉电阻而流出电流。4、P3口:P3口的P3.0P3.5、P3.7是带有内部上拉电阻 的七个双向I/O口引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚 而不可访问。P3口缓冲器可吸收20mA电流。当P3口写入“1”时,它们被内 部上拉电阻拉高并可用作输入端。用作输入时,被外部拉低的P3口脚将用上拉 电阻而流出电流。5、RST复位

5、输入。RST旦变成高电平所有的I/O引脚就复位到“1”。当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。6 XTAL1作为振荡器反相器的输入和内部时钟发生器的输入。7、XTAL2作为振荡器反相放大器的输出。总线驱动器74LS24474LS244为3态8位缓冲器,一般用作总线驱动器。引脚图见上图。 显示电路显示电路采用4位共阳极LED数码管,从P1口输出段码,列扫描用P3.0P3.3口来实现,列驱动用8055三极管。温度传感器DS18B20DS18B20勺性能特点:1、 适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可

6、由数 据线供电。2、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即 可实现微处理器与DS18B20勺双向通讯。3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线 上,实现组网多点测温。4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集 成在形如一只三极管勺集成电路内。5、温范围55E+125C,在-10+85C时精度为土0.5C。6、 可编程 的分辨率为912位,对应的可分辨温度分别为0.5C、0.25C、0.125C和0.0625C,可实现高精度测温。7、 在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时

7、 最多在750ms内把温度值转换为数字,速度更快。8、测量结果直接输出数字温度信号,以一线总线串行传送给CPU同时 可传送CRC校验码,具有极强的抗干扰纠错能力。9、 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工 作。DS18B2C与单片机的接口电路(引脚图见右图)DS18B20可以采用电源供电方式,此时DS18B20的第1脚接地,第2脚 作为信号线,第3脚接电源。4.软件设计系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算 温度子程序和显示数据刷新子程序等。4.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B2 0的测量温度值。温度测量每1s

8、进行一次。主程序流程图如图4.1所示。4.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时必须进行CRC校验,校验有错时不能进行温度数据的改写。读出温度子程序流程图如下图所示:读出时须进行CRC校验,校验有错时不进行温度数据的改写。得出温度子程序温度转换_命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms在本程序设计中,采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如下图所示读出温度子程序RAM中的9字节。在流程图如下图所示读出温度值温度计酸发温度转据刷始命令读出温度子程序的主要功能是读出算,并进行温度值正负的判定。计算温度

9、子程序流程图如下左图所示现实数据刷新子程序现实数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。现 实数据刷新子程序流程图如下右图所示系统的调试以程序调试为主。硬件调试比较简单, 首先检查电感的焊接是否正确, 然后可用万用表测试 或通电检测。软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主 程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷 新子程序等的编程及调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B2C进行读/写编 程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用

10、单片机 汇编或C语言编写用Wave3.2或Keil C51编译器编程调试。软件调试到能显示温度值,并且在有温度变化时显示温度能改变,救基本 完成。RAM中读取值进行BCD码的转换运计算温度子程序计算小数位温号)结束十位数 0 ?百位数 0 ?结束十位数显示符号百位数不显百位数显示数据(不显示符温度数据移入显示寄存器度 BCD 值计算整数位温度 BCD 值性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。由于DS18B20勺精度很高,所以误差指标可以限制在0.5C以内另外,-55+125C的测温范围使得该温度计完全适合一般的应用场合,其 低电压供电特性可做成用电池供电的手持温度计。DS

11、18B20温度计还可以在高低温报警、远距离多点测温控制等方面进行应 用开发,但在实际设计中应注意以下问题;1、DS18B20工作时电流高大1.5mA总线上挂接点数较多且同时进行转换时要考虑增加总线驱动,可用单片机端口在温度转换时导通一个MOSFE供电。2、连接DS18B20的总线电缆是有长度限制的,因此在用DS18B2C进行长距 离测温系统设计时要充分考虑总线分布电容和阻抗匹配等问题。3、在DS18B20测温程序设计中,向DS18B2C发出温度转换命令后,程序总要等待DS18B20的返回信号。一旦某个DS18B20接触不好或断线,当程序读DS18B20时,将没有返回信号,程序进入死循环。这一点

12、在进行DS18B20硬件连接和软件设计时要给予一定的重视。6.设计总结历时2个星期的单片机课程设计已经结束了,在这两个星期的时间里,我 们在老师的指导下完成了基于DS18B2 0的数字温度计的设计和制作。在进行实 验的过程中,我们了解并熟悉DS18B20 AT89C2051以及74LS244的工作原理和 性能。并且通过温度计的制作,我们将电子技能实训课堂上学到的知识进行运 用,并在实际操作中发现问题,解决问题,更加增加对知识的认识和理解。在课程设计的过程中,也遇到了一些问题。比如最开始根据课本上的电路 图进行合理的设计布局和布线。有些同学的布局不合理,导致焊接的过程中任 务相当繁重,并且不美观

13、。在之后的烧程序调试的时候,出现问题之后,没有 合理布线的同学在查找问题的过程中相当棘手。在焊接过程中,出现最多的就是虚焊问题。对于这个问题,在焊接的过程 中,我尽量依照书中的指导,尽量将焊点焊成水滴状,最后接电后再根据数码 管的显示情况进行逐个排查。在将程序烧到单片机之 后, 接上电源, 发现 数码管没有出 现正常的 “000.0”,而是出现了“666.6”,在检查线路无误之后,和其他的同学讨论之后得出结论:书中程序是对于单片机、电阻及数码管是直接连接而设计的,而 在加入了74LS244之后,要将8个输入输出端口进行掉序。于是,我便将8个 端口进行调换,之后再次接通电源,数码管显示“000.

14、0”,调试成功。在自己的温度计制作完成之后,我还帮助其他没有完成的同学进行检修,并且成功帮助2位同学找到问题进行解决,最后都调试成功。总之,在这2个星期中,通过自己在实验室动手制作数字温度计,不仅将 课本的知识与实践相结合,而且在实践中更加深入了解书中原本抽象的知识。 这也是整个课程设计中最有收获的地方。7.附 录源程序代码*/*/使用AT89C2051单片机,12MHZ晶振,用共阳LED数码管/P1口输出段码,P3口扫描/#pragma src(d:aa.asm)#include reg51.h#include intrins.h /_nop_()#define uchar unsigned

15、 char#define uint unsigned int/DS18B20温度计C程序/2005.2.28通过调试。延时函数用#define Disdata P1 /段码输出口#define discan P3 /扫描口sbit DQ=P3A7。/温度输入口sbit DIN=P1A0。/LED小数点控制uint hUcharcodeditab16=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 x08,0 x08,0 x09,0 x09uchar codedis_712=0 xC0,0 xF9

16、,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 xff,0 xbf。9 不亮 - */uchar data display5=0 x00,0 x00,0 x00,0 x00,0 x00 4个数据,一个运算暂存用/*11微秒延时函数*/void delay(uint t)for(。t0。t-)。/*显示扫描函数*/scan()char k。uchar code scan_con4=0 xfe,0 xfd,0 xfb,0 xf7/列扫描控制字uchar data temp_data2=0 x00,0 x00。/读出温度暂放/温度小数部分用查表法

17、*/*共阳LED段码表0 1 2 3 4 5IIIIII7II8II/显示单元数据,共for(k=0。k0。i-) /DQ=1 _nop_()。_nop_()。DQ = 0。_nop_()。_nop_()。_nop_()。_nop_()。_nop_()。DQ = val&0 x01 delay(6)。val=val/2。DQ = 1。delay(1)。/ /从总线上读取一个字节uchar read_byte(void)uchar i。uchar value = 0。for (i=8。i0。i-)DQ=1。_nop_()。_nop_()。value=1。/18B20写命令函数/5us/最

18、低位移出/66us/右移一位18B20读1个字节函数*/DQ = 0。/_nop_()。_nop_()。_nop_()。_nop_()。4usDQ = 1。_nop_()。_nop_()。_nop_()。_nop_()。if(DQ)value|=0 x80。delay(6)。/66usDQ=1。return(value)。/read_temp()ow_reset()。write_byte(0 xCC)。/ Skip ROMwrite_byte(0 x44)。/发转换命令work_temp()uchar n=0。/if(temp_data1127)/读出温度函数*/温度数据处理函数*/4usow

19、_reset()。/总线复位write_byte(0 xCC)/发Skip ROM命令write_byte(0 xBE)/发读命令temp_data0=read_byte()。/温度低8位temp_data1=read_byte()。/温度高8位temp_data1=(256-temp_data1)。temp_data0=(256- temp_dataO)。n=1。/负温度求补码display4=temp_data0&0 x0f。display0=ditabdisplay4。display4=(temp_dataO&OxfO)4)|(temp_data1&OxOf)4)

20、。/display3=display4/1OO。display1=display4%1OO。display2=display1/1O。display1=display1%1O。if(!display3)display3=OxOAif(!display2)display2=OxOA。/最高位为O时都不显示if(n)display3=OxOB。/负温度时最高位显示-/main()Disdata=Oxff。/初始化端口discan=Oxff。for(h=O。h4。h+)displayh=8。/开机显示8888 ow_reset()。/开机先转换一次write_byte(OxCC)。/ Skip RO

21、M主函数*/write_byte(Ox44)。/for(h=O。h5OO。h+)scan()。/while(1)read_temp()。/work_temp()。/发转换命令开机显示88882秒读出18B20温度数据处理温度数据for(h=0。h500。h+)sean()。/显示温度值2秒/作品展示8.参考文献1 楼然苗,李光飞单片机课程设计指导北京航天航空大学出版社,2007.7.2 陈杰,黄鸿.传感器与检测技术.高等教育出版社,2002.8.3 康华光.电子技术基础(模拟部分).高等教育出版社,2006.1.4 李忠明.微机原理与接口技术.华中科技大学出版社,2011.6.张毅刚.单片机原

22、理及应用.高等教育出版社,2010.5.1版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整 理。版权为潘宏亮个人所有This article in eludes some parts, in cludi ng text,pictures, and desig n. Copyright is Pan Hon glia ngs pers onal ownership.用户可将本文的内容或服务用于个人学习、研究或欣赏,以及 其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关 法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以 外,将本文任何内容或服务用于其他用途时,须征得本人及相关权 利人的书面许可,并支付报酬。结束Users may use the contents or services of this article for personal study, research or appreciati on, and other non-commercial ornon-profit purposes, but at the

温馨提示

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

评论

0/150

提交评论