《基于DS18B20的多点温度测量系统的设计与制作(共65页).doc》由会员分享,可在线阅读,更多相关《基于DS18B20的多点温度测量系统的设计与制作(共65页).doc(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上基于DS18B20的多点温度测量系统的设计与制作学 院:专 业:姓 名:指导老师:信息学院测控技术与仪器刘慧灵学 号:职 称:9安玉磊助教中国珠海二一二年五月专心-专注-专业诚信承诺书本人郑重承诺:本人承诺呈交的毕业设计基于DS18B20的多点温度测量系统的设计与制作是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。本人签名: 日期: 年 月 日基于DS18B20的多点温度测量系统的设计与制作摘 要本文介绍了基于DS18B20和STC89C52RC的多点温度测量的方法和原理,利用DSI8B20
2、单总线温度传感器和单片机与其它外围设备结合在一起实现温度的测量和显示。该设计主要分为以下三大部分:硬件设计、软件设计和整个系统的调试与实现。其中硬件设计主要是由Protel99SE软件进行电路的设计和PCB板的绘制;软件设计采用C语言编写实现。采用该解决方案,实现了基于DS18B20进行的各项软硬件的设计、调试和处理,实现了多点温度测量和显示。关键词:温度测量;硬件;软件;温度传感器DS18B20Design and Fabrication of Multi-point Temperature Measuring System Based on DS18B20AbstractThis arti
3、cle describes the multi-point temperature measurement method and principle based on DS18B20 and STC89C52RC,the measurement and display of the temperatures are achieved by making use of the combination of the 1-wire temperature sensor DS18B20 and the MCU and other peripheralsThe design is mainly divi
4、ded into the three parts as follows:the hardware design,the software design and the debugging and implementation of the entire systemAmong the design,the hardware design mainly is of circuits designing and PCB drawing by means of Protel99SE software and the software design is realized by using C lan
5、guage programmingThe DS18B20 based design,debugging and dispose of the all software and hardware items and even the multi-point temperature measuring and displaying have been realized by adopting the solutionKeywords: Temperature Measurement; Hardware; Software; Temperature sensor DS18B20目 录1绪论 本章主要
6、讨论本课题研究的现状及意义,设计选用的主要元器件简介及系统的设计及实现方案。1.1概述 简述温度测量选用的传感器、单片机、显示元件及仿真软件。1.1.1课题研究的现状及意义在实际工业生产及日常生活中,为了避免局部的温度过高或过低,需要对某个空间内多个点的温度进行监测,如在粮库测温系统、智能建筑自控系统、冷库测温系统、中央空调系统等多种系统中都需要多点温度测量。为了改善监测人员的工作条件,监测人员一般需要远离监测对象。因此,多点温度远程监测在实际生产中具有重要的应用价值。1.1.2 DS18B20温度传感器简介DS18B20是Dallas半导体公司的数字化温度传感器,DS18B20通过一个单线接
7、口发送或接受信息,因此在中央处理器和DS18B20之间仅需一条连接线(加上地线)。它的测温范围为-55125,并且在-1085精度为0.5。除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求。每个DS18B20都有一个独特的64 位序列号,从而允许多只DS18B20同时连在一根单线总线上;因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的DS18B20。这一特性在HVAC环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。图1.1是DS18B20的引脚排列,表1.1是DS18B20的引脚说明,图 1.2是DS18B20 的方框图。64 位
8、只读存储器储存器件的唯一片序列号。高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输出的数据。除此之外,高速暂存器提供一个直接的温度报警值寄存器(TH和TL),和一个字节的的配置寄存器。配置寄存器允许用户将温度的精度设定为9,10,11 或12 位。TH,TL 和配置寄存器是非易失性的可擦除程序寄存器(EEPROM),所以存储的数据在器件掉电时不会消失。因为DALLAS公司生产的温度传感器DS18B20具有单总线传输、接线简单、精度高、价格低等优点,所以本设计决定选用数支温度传感器DS18B20实现多点温度的测量。图1.1 温度传感器DS18B20引脚排列表1.1 温度传感器
9、DS18B20引脚说明表DS18B20引脚详细说明8引脚SOIC封装*T0-92封装符号说明51GND接地。42DQ数据输入/输出引脚。对于单线操作:漏极开路。当工作在寄生电源模式时用来提供电源。33VDD可选的VDD 引脚。工作于寄生电源模式时VDD必须接地。*所有表中未提及的脚均都无连接。图1.2 温度传感器DS18B20方框图1.1.3 STC89C52RC单片机简介STC公司生产的RC/RD+系列单片机内部Flash 擦写次数为100,000 次以上,STC89C51RC/RD+ 系列单片机出厂时就已完全加密,无法解密。用户程序是用ISP/IAP 机制写入,一边校验一边写,无读出命令,
10、彻底无法解密。有DIP-40,PLCC-44,PQFP-44 三种封装(PLCC、QFP 有P4 口)。STC89C52RC/RD+ 系列单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz
11、 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。因此本设计选用STC公司的DIP-40封装的89C52单片机,它最大的优点是焊接方便、价格便宜,同时也有足够的存储空间。图1.2 本设计选用的STC89C52单片机管脚图1.1.4 LCD1602液晶显示屏简介工业字符型液晶LCD1602,能够同时显示1602即32个字符(16列2行)。1602液晶也叫1602字符型液晶,它是一种专门用
12、来显示字母、数字、符号等的点阵型液晶模块它有若干个57或者511等点阵字符位组成,每个点阵字符位都可以显示一个字符。LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),两者的控制原理完全一样,其接口及引脚说明请看附录3。因此,本设计决定采用16脚的LCD1602作为温度显示的显示装置,它相对LED数码管来说,接线不算太复杂,多点温度显示时还能显示每个点的英文名称,而且它的显示程序相对数码管来说并不复杂,能让系统的显示模块有很大的发展空间。1.1.5 KEIL编程软件简介Keil Vison系列是美国Keil Soft
13、ware公司推出的51系列兼容单片机软件开发系统。Vison3是集成的可视化Windows操作界面,其提供了丰富的库函数和各种编译工具,能够对51系列单片机以及和51系列兼容的绝大部分类型的单片机进行设计。Keil Vison系列可以支持单片机C51程序设计语言,也可以直接进行汇编语言的设计与编译。Keil Vison系列是一个非常优秀的编译器,受到广大单片机设计者的广泛使用。其主要特点如下:(1)支持汇编语言、C51语言等多种单片机设计语言;(2)可视化的文件管理,界面友好;(3)支持丰富的产品线,除了51及其兼容内核的单片机外,还新增加了对ARM内核产品的支持;(4)具有完善的编译连接工具
14、;(5)具备丰富的仿真调试功能,可以仿真串口、并口、A/D、D/A、定时器/计数器以及中断等资源,同时也可以和外部仿真器联合进行在线调试;(6)内嵌RTX-51实时多任务操作系统;(7)支持在一个工作空间中进行多项目的程序设计。(8)支持多级代码优化。因此,本设计决定利用Keil Vison2编写软件程序,采用C语言编写。1.2系统方案设计以单片机接口原理, DS18B20芯片功能与接口设计,LCD1602液晶屏接口设计等理论知识为基础,设计出完整的系统原理图。根据原理图,将硬件系统资源焊接成PCB板。根据系统功能,设计编写固件程序,下载后进行调试,通过DS18B20及LCD1602正常工作实
15、现系统的多点温度测量。本课题涉及的理论知识主要是DS18B20多点温度测量原理及LCD1602显示原理,重点在于硬件设计,难点在于编程和整机的调试。经过论证,在实现设计要求的前提下,控制器选取STC89C52RC;而且这款单片机支持在线编程,通过串口下载程序,这给程序的下载和使用带来方便。电路设计采用Protel99SE,程序设计采用C语言进行编程,软件仿真采用Keil Vison2。系统的组成框图如下图所示。它主要由四部分组成:多点温度测量温度显示单片机驱动温度报警图1.3 系统的组成框图1.3预期结果通过硬件电路的设计和软件程序的编写实现以下功能:1、完成硬件电路的设计,让整个系统供电正常
16、;2、完成软件程序的编写,单片机能独立控制电路板上元件工作;3、通过系统硬件与软件的调试,所有DS18B20能正常测量环境温度,LCD1602能正确显示各点温度,温度报警功能正常运作;4、利用C语言编程实现对单片机硬件的操作,培养在此方面工程开发的能力。2 DS18B20温度传感器概述 主要讨论温度传感器DS18B20的接口电路、工作原理及工作时序。2.1 DS18B20接口电路DS18B20通过独有的单总线协议依靠一个单线端口通讯。当全部器件经由一个3态端口或者漏极开路端口(DQ引脚在DS18B20上的情况下)与总线连接的时候,控制线需要连接一个弱上拉电阻。在这个总线系统中,微控制器(主器件
17、)依靠每个器件独有的64位片序列号辨认总线上的器件和记录总线上的器件地址。由于每个装置有一个独特的片序列码,总线可以连接的器件数目事实上是无限的。DS18B20可以通过从VDD引脚接入一个外部电源供电,或者可以工作于寄生电源模式,该模式允许DS18B20工作于无外部电源需求状态。对DS18B20供电的一种典型接法是从VDD引脚接入一个外部电源,见图2.1。这样做的好处是单总线上不需要强上拉。而且总线不用在温度转换期间总保持高电平。图2.1 DS18B20典型接口电路 本设计的温度测量模块决定根据DS18B20的典型接口电路,选择外部电源作为它的供电方式。详细电路图将在第3章硬件电路设计中讨论。
18、2.2 DS18B20工作原理DS18B20的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5,0.25,0.125和0.0625增量递增。在上电状态下默认的精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和AD转换时,总线控制器必须发出44h命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,DS18B20正在温度转换中返回0,转换结束返回1。单总线系统包括一个总线控制器和一个
19、或多个从机。DS18B20总是充当从机。当只有一只从机挂在总线上时,系统被称为“单点”系统;如果由多只从机挂在总线上,系统被称为“多点”。所有的数据和指令的传递都是从最低有效位开始通过单总线。通过单线总线端口访问DS18B20的协议如下:步骤1. 初始化。通过单总线的所有执行操作处理都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和其后由从机发出的存在脉冲。存在脉冲让总线控制器知道DS18B20在总线上且已准备好操作。步骤2. ROM操作指令。一旦总线控制器探测到一个存在脉冲,它就发出一条ROM指令。如果总线上挂有多只DS18B20,这些指令将基于器件独有的64 位ROM片
20、序列码使得总线控制器选出特定要进行操作的器件。这些指令同样也可以使总线控制器识别有多少只,什么型号的器件挂在总线上,同样,它们也可以识别哪些器件已经符合报警条件。ROM指令有5条,都是8 位长度。总线控制器在发起一条DS18B20功能指令之前必须先发出一条ROM指令。控制DS18B20的5条ROM指令如下:Search ROM F0h (搜索ROM指令)。当系统上电初始化的时候,总线控制器必须通过识别总线上所有ROM片序列码去得到从机的数目和型号。总线控制器通过搜索ROM指令多次循环搜索ROM编码,以确认所有从机器件。如果总线上只有一只从机,那么可以用较为简单的读取ROM指令代替搜索ROM指令
21、。在每次搜索ROM指令之后,总线控制器必须返回步骤1。READ ROM 33h(读取ROM指令)。只有在总线上存在单只DS18B20的时候才能使用这条命令。该命令允许总线控制器在不使用搜索ROM指令的情况下读取从机的64 位片序列码。如果总线上有不止一只从机,当所有从机试图同时传送信号时就会发生数据冲突。MATH ROM 55h(匹配ROM指令)。匹配ROM指令,后跟64位ROM编码序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64 位ROM片序列码完全匹配的DS18B20才能响应随后的存储器操作指令;所有和64位ROM片序列码不匹配的从机都将等待复位脉冲。SKIP ROM
22、 CCh (忽略ROM指令)。这条指令允许总线控制器不用提供64 位ROM编码就使用功能指令。例如,总线控制器可以先发出一条忽略ROM指令,然后发出温度转换指令44h,从而完成温度转换操作。注意:当只有一只从机在总线上时,无论如何,忽略ROM指令之后只能跟着发出一条读取暂存器指令BEh。在单点总线情况下使用该命令,器件无需发回64 位ROM 编码,从而节省了时间。如果总线上有不止一只从机,若发出忽略ROM指令,由于多只从机同时传送信号,总线上就会发生数据冲突。ALARM SEARCH ECH (报警搜索指令)。这条命令的流程和搜索ROM指令相同,然而,只有满足报警条件的从机才对该命令作出响应。
23、只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。在每次报警搜索指令周期之后,总线控制器必须返回步骤1。步骤3. DS18B20功能指令。在总线控制器发给欲连接的DS18B20一条ROM命令后,跟着可以发送一条DS18B20功能指令。这些命令允许总线控制器读写DS18B20的暂存器,发起温度转换和识别电源模式。DS18B20的功能指令详见下文,同时被概括于表2.1。表2.1 DS18B20功能指令表DS18B20功能指令表指令说明协议单总线发出协议后备注温度转换指令Convert T (温度转换指令)开始温度转换44h读温度忙状态1存储器指令Write Scratch
24、pad (写暂存器指令)读取暂存器和CRC字节4Eh读数据直到第9字节2Read Scratchpad (读暂存器指令)把字节写入暂存器的2,3和4(TH,TL和配置寄存器)BEh写入3个字节到DS18B203Copy Scratchpad (拷贝暂存器指令)把TH,TL和配置寄存器拷贝到EEPROM中48h无1Recall E2 (召回EEPROM指令)把非易失性存储器中的值召回存储器(TH,TL和配置寄存器)B8H传送拷贝标识给总线控制器Read Power Supply (读电源模式指令)标识DS18B20的供电模式B4h返回供电状态备注:(1)对于寄生电源模式下的DS18B20,在温度
25、转换和拷贝数据到EEPROM期间,必须给单总线一个强上拉。总线上在这段时间内不能有其它活动。(2)总线控制器在任何时刻都可以通过发出复位信号中止数据传输。(3)TH,TL和配置寄存器这3个字节的写入必须在复位信号发起之前。温度传感器DS18B20的功能指令具体说明如下:CONVERT T 44h (温度转换指令)。这条命令用以启动一次温度转换。温度转换指令被执行,产生的温度转换结果数据以2个字节的形式被存储在高速暂存器中,而后DS18B20保持等待状态。如果DS18B20以外部电源供电,总线控制器在发出该命令后跟着发出读时序,DS18B20如处于转换中,将在总线上返回0,若温度转换完成,则返回
26、1。WRITE SCRATCHPAD 4Eh(写暂存器指令)。这条命令向DS18B20的暂存器写入数据,开始位置在TH 寄存器(暂存器的第2个字节),接下来写入TL 寄存器(暂存器的第3 个字节),最后写入配置寄存器(暂存器的第4 个字节)。数据以最低有效位开始传送。上述三个字节的写入必须发生在总线控制器发出复位命令前,否则会中止写入。READ SCRATCHPAD BEh(读暂存器指令)。这条命令读取暂存器的内容。读取将从字节0 开始,一只进行下去,直到第9字节(字节8,CRC)读完,如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。COPY SCRATCHPAD 48h(拷
27、贝暂存器指令)这条命令把TH,TL和配置寄存器(第2、3、4 字节)的内容拷贝到EEPROM 中。RECALL E2 B8H(召回EEPROM指令)。这条命令把报警触发器的值(TH和TL)以及配置数据从EEPROM拷回暂存器。总线控制器在发出该命令后读时序,DS18B20会输出拷回标识:0标识正在拷回,1标识拷回结束。这种拷回操作在DS18B20上电时自动执行,这样,器件一上电暂存器里马上就存在有效的数据了。READ POWER SUPPLY B4h(读电源模式指令)。总线控制器在这条命令发给DS18B20后发出读时序,若是外部电源模式,DS18B20将会把总线拉高。每一次DS18B20的操作
28、都必须满足以上3个步骤,若是缺少步骤或是顺序混乱,器件将不会返回值。例如这样的顺序:发起ROM搜索指令F0h和报警搜索指令ECh之后,总线控制器必须返回步骤1。根据以上温度传感器DS18B20的工作原理及指令,编写本设计的软件程序,具体的程序设计将在第4章软件程序设计及调试中详细讨论。2.3 DS18B20工作时序DS18B20需要严格的单总线协议以确保数据的完整性。协议包括集中单总线信号类型:复位脉冲、存在脉冲、写0、写1、读0 和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。和DS18B20间的任何通讯都需要以初始化序列开始,初始化序列见图2.2。一个复位脉冲跟着一个存在脉冲表
29、明DS18B20已经准备好发送和接收数据。在初始化序列期间,总线控制器拉低总线并保持480us以发出(TX)一个复位脉冲,然后释放总线,进入接收状态(RX)。单总线由5K上拉电阻拉到高电平。当DS18B20探测到I/O引脚上的上升沿后,等待15-60us,然后发出一个由60-240us低电平信号构成的存在脉冲。图2.2 DS18B20初始化时序图DS18B20的数据读写是通过时序处理位来确认信息交换的。有两种写时序:写1时序和写0时序。总线控制器通过写1时序写逻辑1到DS18B20,写0时序写逻辑0到DS18B20。所有写时序必须最少持续60us,包括两个写周期之间至少1us的恢复时间。当总线
30、控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始(见图2.3)。总线控制器要生产一个写时序,必须把数据线拉到低电平然后释放,在写时序开始后的15us释放总线。当总线被释放的时候,5K的上拉电阻将拉高总线。总控制器要生成一个写0时序,必须把数据线拉到低电平并持续保持(至少60us)。总线控制器初始化写时序后,DS18B20在一个15us到60us的窗口内对I/O线采样。如果线上是高电平,就是写1。如果线上是低电平,就是写0。总线控制器发起读时序时,DS18B20仅被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令BEh或读电源模式指令B4H后必须立刻开始读时序,DS18B20可以提
31、供请求信息。除此之外,总线控制器在发出发送温度转换指令44h或召回EEPROM指令B8h之后读时序。所有读时序必须最少60us,包括两个读周期间至少1us的恢复时间。当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持1us,然后总线被释放(见图2.3)。在总线控制器发出读时序后,DS18B20 通过拉高或拉低总线上来传输1或0。当传输逻辑0结束后,总线将被释放,通过上拉电阻回到上升沿状态。从DS18B20输出的数据在读时序的下降沿出现后15us 内有效。因此,总线控制器在读时序开始后必须停止把I/O脚驱动为低电平15us,以读取I/O脚状态。图2.4标识TINIT,TRC
32、 和TSAMPLE 之和必须小于15us。图2.5指出,系统时间可以用下面办法达到最大:TINIT和TRC保持时间尽可能校;把控制器采样时间放到15us周期的最后。图2.3 读/写时序图图2.4 控制器读1的详细时序图图2.5 推荐控制器读1时序图3硬件电路设计本设计的硬件电路设计分为单片机驱动电路设计、温度显示模块电路设计、温度测量模块电路设计及温度报警电路设计。单片机驱动电路是单片机正常运作的条件,即单片机最小系统。温度显示模块是本系统设计的显示装置,可以选择数码管或者液晶显示屏作为显示装置,本设计采用的是液晶显示屏LCD1602作为显示装置。温度测量模块是本系统的重点设计,采用温度传感器
33、DS18B20来实现。温度传感器DS18B20与单片机的通信可以是单总线通信,也可以是并口通信,本设计采用数支温度传感器DS18B20与单片机并口连接的通信方式。温度报警电路是用于提醒用户温度是否超出设定范围的装置,本设计采用蜂鸣器的声响信号及LED灯的闪烁信号来实现此功能。各模块的具体电路设计请看下文。3.1单片机驱动电路设计单片机能正常工作,必须要有它的驱动电路,即单片机最小系统。单片机最小系统主要包括其供电系统,时钟电路和复位电路。本系统单片机的复位电路采用手动复位。单片机驱动电路设计如图3.1所示。对本设计的单片机驱动电路说明如下:1、单片机的供电系统采用USB接口供电电路;2、单片机
34、采用外接晶振的方法,晶振频率为11.0592MHz; 3、复位电路采用按键复位。图3.1 单片机驱动电路设计3.2温度显示模块电路设计本设计使用的LCD1602的主要技术参数及接口信号说明请看附录3。根据LCD1602的引脚接口说明与单片机连接,设计本系统的显示模块接口电路设计如图3.2所示,电路图的详细说明如下:液晶显示屏LCD1602的第1脚及第16脚接地;液晶显示屏LCD1602的第2脚接电源;液晶显示屏LCD1602的第3脚串联一个10k的可调电阻器接地;液晶显示屏LCD1602的第4、5、6脚分别接单片机的P3.5、P3.6及P3.4口液晶显示屏LCD1602的第714脚分别接单片机
35、的P0.0P0.7口;液晶显示屏LCD1602的第15脚串联一个10k的电阻接地。图3.2 系统显示模块电路设计3.3温度测量模块电路设计前面介绍到,温度传感器DS18B20的供电电路有两种接法,一种是DS18B20通过从VDD引脚接入一个外部电源供电,另一种是VDD引脚接地,工作于寄生电源模式,该模式允许DS18B20工作于无外部电源需求状态。寄生电源在进行远距离测温时是非常有用的。然而,当DS18B20正在执行温度转换或从高速暂存器向EPPROM传送数据时,工作电流可能高达1.5mA。这个电流可能会引起连接单总线的弱上拉电阻的不可接受的压降,这需要更大的电流,而此时Cpp无法提供。为了保证
36、DS18B20由充足的供电,当进行温度转换或拷贝数据到EEPROM操作时,必须给单总线提供一个强上拉。在发出温度转换指令44h或拷贝暂存器指令48h之后,必须在至多10us之内把单总线转换到强上拉,并且在温度转换时序(tconv)或拷贝数据时序(ter=10 ms)必须一直保持为强上拉状态。当强上拉状态保持时,不允许有其它的动作。当温度高于100时,DS18B20在这种温度下表现出的漏电流比较大,使用寄生电源,通讯可能无法进行。因此,本设计选择DS18B20传统供电模式的电路接法,从VDD引脚接入一个外部电源,这样做的好处是单总线上不需要强上拉,而且总线不用在温度转换期间总保持高电平。温度传感
37、器DS18B20内部均有一个独立的64位序列号,单片机通过序列号可以对一条总线上的多支DS18B20进行控制,读取它们的温度。但要完成这个操作,软件设计比较复杂,同时存在一个缺点就是速度太慢。无法适用于一些实时性要求高的测温场合。所以本设计采取一种利用单片机的并口,同步快速读取4支DS18B20的方法。本系统的温度测量模块电路设计如图3.3所示,接线电路具体说明如下:四支温度传感器DS18B20的第1脚接地;四支温度传感器DS18B20的第2脚分别串联一个10k的电阻;四支温度传感器DS18B20的第2脚分别接单片机的P2.0P2.3口;四支温度传感器DS18B20的第2脚及第3脚接电源。图3
38、.3 系统温度测量模块电路设计3.4温度报警电路设计实现报警功能的电路设计方法有很多种,可以采用视觉信号LED灯的闪烁作为报警信号,也可以采用蜂鸣器的声响效果作为报警信号。为方便实现及实现良好的报警效果,本设计的温度报警电路设计,决定采用蜂鸣器的声响效果及LED灯的闪烁效果作为报警信号。本设计中,通过单片机与蜂鸣器连接,当温度超出设定值范围时,单片机通过置位P2.5口使得蜂鸣器发出声音,同时通过置位P1.0P1.3口使得LED灯闪烁,从而达到声音及视觉信号的报警效果。本系统的温度报警电路设计如图3.4所示,详细的元件接线说明如下:(1)本设计中,PNP三极管采用的型号是S8550;(2) PN
39、P三极管的e极管脚连接电源;(3) PNP三极管的b极管脚串联一个1k的电阻连接单片机的P2.5口;(4) PNP三极管的c极管脚连接蜂鸣器的第1管脚;(5)蜂鸣器的第2管脚接地;(6)四盏LED灯分别串联一个1k的电阻,接到单片机的P1.0P1.3口。图3.4 系统温度报警电路设计3.5系统硬件电路设计由DS18B20和STC公司推出的单片机STC89C52RC以及相关外围电路组成的高精度、多点温度测量系统的电路设计如图3.5所示。系统采用4支DS18B20构成小型温度传感器网络,通过并行连接方式连接至单片机的通用IO端口。单片机获得温度信息后,通过特定的算法,将处理后的温度信息通过LCD1
40、602显示出来,如果温度超过设定值范围,蜂鸣器则会发出声响报警信号,相应的LED灯也会闪烁起来。图3.5 系统的硬件电路设计3.6小结本章介绍了系统硬件电路设计的方法,根据课题需求,重点讨论了DS18B20芯片在多点测量温度时与单片机的接法。外围硬件资源根据框图设计出实验电路图,这些电路是做出系统电路板及软件能够正确运行的基础。4软件程序设计及调试4.1系统软件程序设计读取温度数据设置读数据命令BEH调用写命令子程序开始调用初始化子程序设置跳过ROM命令CCH调用写命令子程序设置启动温度转换令44H调用写命令子程序延时调用初始化子程序设置跳过ROM命令CCH调用写命令子程序调温度数据处理子程序
41、是否超出温度设定值?NY调用报警信号子程序调LCD显示子程序图4.1 系统主程序执行流程图主程序执行流程如图4.1所示,主程序先对各DS18B2O及LCD1602进行初始化,然后重复调用DS18B20的写命令和读数据模块,最后将数据处理后送LCD1602显示,若温度超出设定值范围,则调用报警程序,蜂鸣器发出声响报警信号,相应的LED灯闪烁。4.2系统软件程序调试 主要讨论温度显示、测量、及报警子程序的调试及结果。4.2.1 LCD1602的显示程序调试根据LCD1602的工作时序、指令说明及其DDRAM地址和屏幕的对应关系(请看附录4),编写本设计的软件程序。下面首先讨论LCD1602的初始化
42、(复位)过程:用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,LCD1602的常用初始化方法是利用内部复位电路进行初始化。下面指令是在初始化进程中执行的。(1)清屏(DISPLAY CLEAR);(2)功能设置(FUNCTION SET)DL=1:8Bin 接口数据N=0:1 行显示;F=0:57dot 字形;(3)显示开/关控制(Display ON/OFF Conrtol)D=0:显示关;C=0:光标关;B=0:消隐关(4)输入方式设置(ENTRY MODE SET)I/D=1:(增量);S=0:无移位。根据以上的介绍,本设计编写的LCD1602的显示程序如下:(1)LCD1
43、602初始化程序:void init_lcd()/液晶初始化write_com(0x01);/清屏write_com(0x38);/设置16*2显示,5*7点阵write_com(0x0c);/开显示,不显示光标write_com(0x06);/光标左移(2)LCD1602写命令子程序:void write_com(unsigned char com)/写命令rs=0;wr=0;P0=com;lcden=0;delayms(10);lcden=1;delayms(10);/合适的延时高脉冲才可以完成稳定的操作1ms不稳定lcden=0;(3)LCD1602的写数据子程序:void write_data(unsigned char dat)/写数据rs=1;wr=0;P0=dat;lcden=0;delayms(10);lcden=1;delayms(10);lcden=0;(4)有了上面的子程序,就可以编写本设计的显示主程序,根据LCD1602的工作时序调用相应的读、写子程序,本设计的LCD1602的显示子程序如下:void display(uint temp) /显示程序uchar A1,A2,A2t,A3,ser;init_lcd();ser=temp/10; /分离出三位要显示的数字SBUF=ser;A1=temp/100;/十位数字