课程设计(论文)基于DS18B20设计的数字温度计.doc

上传人:文库蛋蛋多 文档编号:4150620 上传时间:2023-04-07 格式:DOC 页数:25 大小:166.50KB
返回 下载 相关 举报
课程设计(论文)基于DS18B20设计的数字温度计.doc_第1页
第1页 / 共25页
课程设计(论文)基于DS18B20设计的数字温度计.doc_第2页
第2页 / 共25页
课程设计(论文)基于DS18B20设计的数字温度计.doc_第3页
第3页 / 共25页
课程设计(论文)基于DS18B20设计的数字温度计.doc_第4页
第4页 / 共25页
课程设计(论文)基于DS18B20设计的数字温度计.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《课程设计(论文)基于DS18B20设计的数字温度计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于DS18B20设计的数字温度计.doc(25页珍藏版)》请在三一办公上搜索。

1、目录摘要第一章 引言1第二章 设计22.1设计方案22.2 设计框图22.3主控制器22.4显示电路22.5温度传感器设计2第三章 系统整体硬件电路63.1主板电路63.2显示电路6第四章 系统软件算法分析74.1主程序84.2读出温度子程序84.3温度转换命令子程序84.4计算数据刷新子程序94.5显示数据刷新子程序10第五章 系统仿真10第六章 课程设计总结与体会11参考文献12致谢13附录14第1章引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提

2、供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。在这个信息技术的飞速发展和传统工业改造的逐步实现的时代。能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用AT89C51型单片机作为主控制器件,DSl8B20作为测温传感器通过4位共阳极LED数码管串口传送数据,实现温度显示。通过DSl8B20直接读取被测温度值,进行数

3、据转换,该器件的物理化学性能稳定,线性度较好,在0100最大线性偏差小于0.1。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用8086系统AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。第2章设计2.1设计方案在单片机电路设计中,大多都是使用传感器,所以可以采用一只温度传感器D

4、S18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 2.2设计框图温度计电路设计总体设计方框图如图2.1所示,控制器采用单片机AT89S51,温度传感DS18B20,用3位LED数码管以串口传送数据实现温度显示。主 控 制 器LED显 示温 度 传 感 器单片机复位时钟振荡报警点按键调整图2.1总体设计方框图2.3主控制器8086系统AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。2.4 显示电路显示电路采用3位共阳LED数码管,从P3口RXD,TXD串口输出段码。2

5、.5 温度传感器设计DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 D

6、S18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如图2.2所示。C64位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器VddI/O图2.2 DS18B20内部结构64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图

7、2.3所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图2.3所示。低5位一直为,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图2.3 DS18B20字节定义由表2.1可见,DS18B20温度转换的时间比

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

9、时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2.2是一部分温度值对应的二进制温度数据。表2.2一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111

10、 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90HDS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正

11、确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加,减法计数器

12、的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3

13、脚接电源。另一种是寄生电源供电方式,如图2.4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。图2.4 DS18B20与单片机的接口电路第3章 系统整体硬件电路3.1 主板电路系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等,如图3.1 所示。图3.1中有三个独立式按键可以分别调整温度计的

14、上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。图3.1中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。3.2 显示电路显示电路是使用的串口显示,这种显示最大的优点就是使用口资源比较少,只用p3口的RXD,和TXD,串口的发送和接收,四只数码管采用74LS164右移寄存器驱动,显示比较清晰。如图3.2所示,为温度显示电路。 图3.1 单片机主板电路图3.2 温度显示电路第4章 系统软件算法分析系统程序主要包

15、括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。4.1 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图4.1所示。Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY初始化调用显示子程序1S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令NYNY图4.1 主程序流程图图4.2 读温度流程图4.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字

16、节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图4.2示4.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图4.3所示。发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图4.3 温度转换流程图4.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4.4所示。温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显

17、示符号) 结束NNYY 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY图4.4计算温度流程图 图4.5显示数据刷新流程图4.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图4.5。第5章 系统仿真仿真软件proteus简介Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。该软件的特点: 全部满足我们提出的单片机软件仿真

18、系统的标准,并在同类产品中具有明显的优势。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 支持大量的存储器和外围芯片。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真51、AVR、PIC。图5.1 系统仿真图第6章总结与体会经过将近两个星期的单片机课程设计,

19、终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计终于完成了,高兴之余不得不深思呀。在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。从这次的课程

20、设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。参考文献1李朝青单片机原理及接口技术(简明修订版)杭州:北京航空航天大学出版社,19982李广弟单片机基础M北京:北京航空航天大学出版社,19943阎石数字电子技术基础(第三版)北京:高等教育出版社,19894廖常初现场总线概述J电工技术,1999.5 新颖电子模块应用手册. 北京:机械工业出版社,2005. 致 谢这次能比较顺利的完成课程设计的任务,首先要特别感谢胡老师从百忙之中抽出时间的耐心指导,详细

21、的讲解程序。最后还专门针对论文写作为我们详细的演示和讲解。她的讲解使我从迷茫中豁然开朗,了解实验的基本流程并能自己开始着手设计。能顺利的画出原理图以及PCB图都得感谢寝室同学的帮助,还要感谢系里其他辅导老师的帮助和指导。感谢信息工程系的各个领导和胡老师为我们提供这样一次锻炼自己的机会!附录数字温度计程序清单S1OK EQU 5FHTEMPUTER EQU 39H TEMPH EQU 5EH TEMPLEQU 5DH MS50 EQU 5CHSIGN EQU 5BH S1 BIT P1.0 S2 BIT P1.1 S3 BIT P1.2 S4 BIT P1.3 ORG 0000H LJMP MA

22、IN ORG 000BH LJMP TOIT ORG 0030HMAIN: MOV SP, #60H MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H SETB ET0 SETB TR0 SETB EA MOV TEMPH, #30 MOV TEMPL, #9 MOV TEMPUTER, #15 MOV S1OK, #00H MOV SIGN, #00H MOV 38H, #0BH MOV 37H, #0CH MOV 36H, #0BH ACALL DISP ACALL T1SSTART: JB S1, NET1 ACALL T12MS JB S1, NE

23、T1 JNB S1, $ INC SIGN MOV A, SIGN CJNE A, #1, TIAO ACALL TIAOTL TIAO:CJNE A, #2, NET1 MOV SIGN, #0 ACALL TIAOTH NET1: MOV A, S1OK CJNE A, #1, START MOV A, TEMPUTER SUBB A, TEMPH JNB ACC.7, ALEM MOV A, TEMPUTER SUBB A, TEMPL JB ACC.7, ALEM SETB P2.1 ACALL WENDU ACALL DISP MOV S1OK, #00H AJMP START AL

24、EM: MOV 36H, #0CH MOV 37H, #0CH MOV 38H, #0CH CLR P2.1 ACALL DISP ACALL T1S LCALL WENDU LCALL DISP MOV S1OK, #00H SJMP START; TIAOTL:MOV 50H, TEMPUTER MOV 37H, TEMPL ACALL BIN_BCD ACALL DISP ACALL T12MS ACALL T12MS ACALL T12MS ACALL T12MS MOV 36H, #0AH MOV 37H, #0AH MOV 38H, #0AH ACALL DISP ACALL T1

25、2MS ACALL T12MS ACALL T12MS ACALL T12MS JB S2, ADD1 ACALL T12MS JB S2, ADD1 JNB S2, $ INC TEMPL MOV A, TEMPL CJNE A, #100, ADD1 MOV TEMPL, #0 ADD1: JB S3, ADD2 ACALL T12MS JB S3, ADD2 JNB S3, $ DEC TEMPL MOV A, TEMPL CJNE A, #00 , ADD2 MOV TEMPL,#100 ADD2: JB S4, TIAOTL ACALL T12MS JB S4, TIAOTL JNB

26、 S4, $ MOV TEMPUTER, 50H LJMP START TIAOTH:MOV 50H, TEMPUTER MOV 37H, TEMPH ACALL BIN_BCD ACALL DISP ACALL T12MS ACALL T12MS ACALL T12MS ACALL T12MS MOV 36H, #0AH MOV 37H, #0AH MOV 38H, #0AH ACALL DISP ACALL T12MS ACALL T12MS ACALL T12MS ACALL T12MS JB S2, ADD11 ACALL T12MS JB S2, ADD11 JNB S2, $ IN

27、C TEMPH MOV A, TEMPH CJNE A, #100, ADD11 MOV TEMPH, #0 ADD11: JB S3, ADD22 ACALL T12MS JB S3, ADD22 JNB S3, $ DEC TEMPH MOV A, TEMPH CJNE A, #00 , ADD22 MOV TEMPH,#100 ADD22: JB S4, TIAOTH ACALL T12MS JB S4, TIAOTH JNB S4, $ MOV TEMPUTER, 50H LJMP STARTTOIT: PUSH PSW PUSH ACC MOV TH0, #3CH MOV TL0,

28、#0B0H INC MS50 MOV A, MS50 CJNE A, #14H, RETURN MOV S1OK, #1 MOV MS50, #00H RETURN:POP ACC POP PSW RETI wendu: ACALL INIT_1820 ACALL RE_CONFIG ACALL GET_TEMPER ACALL TEMPER_COV RET; DS18B20 INIT_1820: SETB P2.0 NOP CLR P2.0 MOV R0,#06BH MOV R1,#03HTSR1: DJNZ R0,TSR1 MOV R0,#6BH DJNZ R1,TSR1 SETB P2.

29、0 NOP NOP NOP MOV R0,#25HTSR2: JNB P2.0,TSR3 DJNZ R0,TSR2 LJMP TSR4TSR3: SETB 20H.1 LJMP TSR5TSR4: CLR 20H.1 LJMP TSR7TSR5: MOV R0,#06BH MOV R1,#03HTSR6:DJNZ R0,TSR6 MOV R0,#6BH DJNZ R1,TSR6TSR7:SETB P2.0 RET RE_CONFIG:JB 20H.1,RE_CONFIG1 RETRE_CONFIG1: MOV A,#0CCH LCALL WRITE_1820 MOV A,#4EH LCALL

30、WRITE_1820 MOV A,#00H LCALL WRITE_1820 MOV A,#00H LCALL WRITE_1820 MOV A,#1FH LCALL WRITE_1820 RET SETB P2.0 LCALL INIT_1820 JB 20H.1,TSS2 RET TSS2: MOV A,#0CCH LCALL WRITE_1820 MOV A,#44H LCALL WRITE_1820 LCALL INIT_1820 MOV A,#0CCH LCALL WRITE_1820 MOV A,#0BEH LCALL WRITE_1820 LCALL READ_18200 MOV

31、 37H,A RET WRITE_1820: MOV R2,#8 CLR CWR1:CLR P2.0 NOP NOP NOP NOP RRC A MOV P2.0,C MOV R3,#35 DJNZ R3,$ SETB P2.0 NOP DJNZ R2,WR1 SETB P2.0 RET READ_18200: MOV R4,#2 RE00:MOV R2,#8RE01:CLR C SETB P2.0 NOP NOP CLR P2.0 NOP NOP NOP SETB P2.0 NOP NOP MOV C,P2.0 MOV R3,#35RE20: DJNZ R3,RE20 RRC A DJNZ

32、R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET TEMPER_COV: MOV A,#0F0H ANL A,36H SWAP A MOV 37H,A MOV A,36H JNB ACC.3,TEMPER_COV1 INC 37HTEMPER_COV1:MOV A,35H ANL A,#07H SWAP A ADD A,37H MOV 37H,A LCALL BIN_BCD RET BIN_BCD:MOV 39H,37H MOV A,37H MOV B,#100 DIV AB MOV 38H,A MOV 37H,B XCH A,B MOV B,#10 DIV A

33、B MOV 37H,A MOV 36H,B RETDISP: SETB RS0 MOV R0, #36H MOV R7, #3LOOPP:MOV A, R0 MOV DPTR, #TAB MOVC A, A+DPTR MOV SBUF, A JNB TI, $ CLR TI INC R0 DJNZ R7, LOOPP CLR RS0 RETTAB: DB 11H, 0D7H, 32H, 92H, 0D4H, 98H, 18H, 0D1H, 10H, 90H ,0FFH, 070H, 0FEH T12MS: SETB RS1 MOV R7, #18H TM: MOV R6, #0FFH TM6: DJNZ R6, TM6 DJNZ R7, TM CLR RS1 RET T1S: SETB RS1 MOV R6, #3 LSP:ACALL T12MS DJNZ R6, LSP CLR RS1 RET END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号