电子温度计的设计

学士学位论文 题 目: 电子温度计的设计 姓 名: 学 号: 专业/届别: 指导教师: 职 称:

电子温度计的设计

摘要:随着电子电路的发展,我们生活中越来越多的用品已经慢慢被电子产品所代替,温度计就是一个十分典型的例子,以往的温度计往往是用水银与玻璃制成,这种温度计有一个大大的缺点就是十分容易破碎,而众所周知的是,水银是一种剧毒的重金属物质,对人体能够产生极大地危害。所以,一旦温度计遭到毁坏,水银就很容易泄露,给人们造成很大的危害。但是电子温度计的这些情况基本上不会发生,而且使用十分方便快捷,是替代普通温度计的很好的选择。本论文设计的温度计主要用来完成对体温的测量,采用一种新型的可编程温度传感(DS18B20),不需复杂的信号调理电路和A /D 转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,性能稳定。传感器DS18B20接触被测物体,感应温度后,模数转化后的电信号送入STC89C52单片机,并将其送入LCD1602数码管显示。它能快速准确地测量人体体温,与传统的水银玻璃温度计相比,具有读数方便,测量时间短,测量精度高,能记忆并有蜂鸣提示的优点。并且超过预定的温度,回有报警提示。

关键词: 电子温度计; DS18B20;STC89C52单片机; LCD1602显示屏

Design of electronic thermometer

Abstract :With the development of electronic circuits, more and more supplies in our lives have been slowly replaced by electronic products, the thermometer is a very typical example, the previous thermometer is often made of mercury and glass, this thermometer has a big The shortcomings are very easy to break, and it is well known that mercury is a highly toxic heavy metal material, the human body can produce great harm. So, once the thermometer has been destroyed, mercury is very easy to leak, causing great harm to people. But the electronic thermometer of these conditions is basically not happen, and the use of very convenient and quick, is a good alternative to ordinary thermometer choice.This design uses the hardware design of the electronic thermometer system, a new type of programmable temperature sensor (DS18B20), data acquisition and processing does not require complicated signal conditioning circuitry and the A / D conversion circuit with a microcontroller, easy to achieve accuracy high and stable performance. Sensor DS18B20 contact with the human body, the sensor temperature, the electrical signals into the analog-to-digital conversion STC89C52 microcontroller and into the LCD1602 digital display. It can quickly and accurately measure the body temperature, compared with traditional mercury glass thermometer, with the easy reading, short measurement time, high measurement accuracy, memory and Beeper advantages. And exceeds a predetermined temperature, back to the alarm. Electronic thermometer mercury-free, on the human body and ambient sound, especially suitable for families, hospitals and other occasions.

Key words:Digital Thermometer ;DS18B20;STC89C52; Microcontroller LCD1602 Display

目 录

摘要 ................................................................ 1

关键词 .............................................................. 1

Abstract ............................................................ 2

Key words ........................................................... 2

绪论 ................................................................ 4

1 任务要求 .......................................................... 5

2 设计思路 .......................................................... 5

3 系统设计 .......................................................... 6

4 方案设计与论证 .................................................... 6

5 系统框图 .......................................................... 8

6 硬件电路设计 ...................................................... 8

6.1 传感器电路 .................................................. 8

6.1.1 DS18B20四个比较重要的主要的数据部件 ................... 9

6.1.2 数字温度传感器DS18B20介绍 ............................ 9

6.2 单片机电路 ................................................. 11

6.3 LCD1602显示屏电路 .......................................... 14

6.4 电源模块 ................................................... 16

7 PCB电路板的制作 .................................................. 18

8 系统调试与测量 ................................................... 19

8.1 系统调试 ................................................... 19

8.2 误差分析 ................................................... 20

总结 ............................................................... 20

参考文献 ........................................................... 21

附录 ............................................................... 22

致 谢 .............................................................. 28

绪论

随着电子电路的发展,我们生活中越来越多的用品已经慢慢被电子产品所代替,温度计就是一个十分典型的例子,以往的温度计往往是用水银与玻璃制成,这种温度计有一个大大的缺点就是十分容易破碎,而众所周知的是,水银是一种剧毒的重金属物质,对人体能够产生极大地危害。所以,一旦温度计遭到毁坏,水银就很容易泄露,给人们造成很大的危害。但是电子温度计的这些情况基本上不会发生,而且使用十分方便快捷,是替代普通温度计的很好的选择。体温测量的历史,最早出现在16世纪。当时空气热膨胀是Saatorio 主要根据的原理,制出了第一支体温计,用于测量口腔温度体。到20世纪初,才开始设计采用水银来制作体温计,至今水银体温计在家庭等处,得到了广泛的应用。埃布斯坦在1928年发表的报告中指出,水银温度计当时除测量口腔及腋下的温度外,还可以用来测量颈部、外耳,大腿根部及尿温。水银体温计的原理就是玻璃球内积存的水银温度和被测量皮肤的温度相等[1]。

由于水银体温计精度很高、使用方便、并且易于携带,因而很多人喜欢采用水银体温计。再加上体温计测温方法及其结构都已完全成熟,并没太多的改进余地,人们对水银体温计的研究热情逐渐降低,到现在水银体温计几乎已经没有什么发展的余地。再加上由于测量体温用水银体温计很不方便,如果打破摔坏体温计,水银的污染也很严重等,为了准确测量人体的局部温度,促使人们不得不开发了多种多样的测温方式和测温器件设备。现在其它不同种类的电子仪器测量体温也日益普及,已有许多医院采用了电子体温计来测量体温。这一事实至少说明了,电子测温仪器的性能与水银温度计的性能已经很接近了。因此,鉴于传统的水银体温计多种因素,诸如汞的污染及其携带不方便易破碎,尤其是测量时间过长等缺点,本课题为解决此问题设计出一种数字式电子体温计。它在稳定性及响应时间上比传统的水银体温计有着显著的优势,精度要求也能和传统的水银体温计相媲美。

单片机智能化仪表在测量仪表的方面,有着很大的发展趋势。它给日常生活带来多方面的进步,其中数字温度计就是一个典型的例子,家庭、医院等随处可见,为了能更加满足人们的需要,数字体温计正在不断的进行更新换代。

现在所使用的温度计还有很多是水银、酒精或煤油。温度计的分辨力都是为

1~0.1℃。这些普通水银温度计的刻度间隔通常都很密集,读数比较困难,分辨的不准确,而且他们有着比较大的热容量,需要很长时间达到热平衡,因此温度数值很难读准,使用非常不方便。本设计所介绍的电子体温计,主要用于家庭等普通环境。与传统的水银温度计相比,电子体温计易于读数,广泛的测温范围,测温精度比较高等优点,其输出温度采用数字显示。

现在温度计发展非常迅速,从最原始的玻璃管温度计发展到了现在的热电偶温度计、热电阻温度计、集成的半导体数字温度计等。在电子式温度计中,最重要组成部分就是传感器。温度计的测量范围、精度、控制范围和用途取决于传感器的精度、灵敏度等等。现在的温度传感器被广泛的应用,目前已经研制出各种各样的新型温度传感器,从而现在温度监控系统的功能日趋强大。

1 任务要求

本系统设计的温度计主要是用来完成对体温的检测,能准确快速地测量人体体温,并且需要实时的显示当前的温度。与传统的水银玻璃温度计相比,电子温度计具有方便的读数,高精度的测量,测量时间比较短,能记忆并有与其它体温计不同的蜂鸣提示的优点。测温范围35°C ~42°C ,误差在±0.2°C 以内,当温度超过38°C 时,可以报警,采用LED 数码管直读显示。并且能够实时的进行温度检测,能清楚的显示与读出数据。

2 设计思路

本研究旨在设计一个电子温度计完成对体温检测,主要控制器采用单片机STC89C52,传感器采用美国DALLAS 半导体公司生产的DS18B20智能型传感器。该传感器检查的温度是35°C ~42°C 之间,检查的分辨率为±0.2°C 。当温度出现不同寻常的时候,不在设置范围内时,可以报警,且是通过蜂鸣器。研究工作总体包括以下多个方面:了解电子温度计的工作原理,典型结构,发展历史及国内外的研究和发展的现状;研究电子温度计的两个最主要的核心模块:DS18B20传感器控制和STC89C52单片机主控制器。

3 系统设计

为满足系统的三个需求:

(1)实时的温度检测。

(2)数据能清楚的显示与读出。

(3)温度变化的曲线能够实时的描绘出来。整个电子温度计系统应该设计必须含有以下几个模块:

a.温度采集模块。

b.显示模块。

c.串口通信接口。

d.核心系统模块。

4 方案设计与论证

方案一:

本电路设计的电子温度计,如图4-1,热敏电阻器件在测温电路中的感温效应。随被测温变化,采集的电压或电流,进行模数转换后,再用单片机进行加工处理采样的数据,就可以通过显示电路显示出来。但是热敏电阻测量体温有许多问题,存在测量时间较长等问题[2]。

图4-1 基于热敏电阻的电子温度计系统框图

Figure 4-1 Block diagram of electronic thermometer based on thermistor

方案二:

红外体外温度计是非接触式的,算是高端的技术,最近几年才发展起来的。主要是靠红外传感器感应接收人体辐射的红外线,通过模数转换后,用单片机处理采样的数据,显示电路就可以显示出来数据。但是这个方案制作成本费用高,耗时比较长,主要是体现在硬件电路与软件程序复杂[3]。

方案三:

数字温度计采用单片机的温度传感器设计,各种各样的精度高的温度计不断出现,不断发展。数字温度检测要求必须满足的条件是检测的精度高于控制的精确度,否则无法控制的体温计测量精度的要求。所以电子体温检测的一项重要的性能参数其中有一项就是测量精度。因此数字温度计检测追求的一个目标就是高精度。检测手段不断的现代化,现在检测能达到的很高的灵敏度、精度及测量范围等。同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的技术支持。目前市场上出现了很多传感器,很多高精度的传感器已经出现,而且精度越来越高。DS18B20将会不断的完善,从而测量的更加精确、更加简单,更加人性化,更满足系统设计的需求[4]。

传统的传感器热电阻、热电偶等,只有通过外部硬件的支持,测出的电压,才会转换成对应的温度值。比如说模数转换是不可少的,还有其他的等等一些硬件电路,比较复杂。有如下缺点:软件调试复杂;硬件电路复杂;制作成本高。

这个温度计采用DS18B20作为检测元件,DS18B20

是一种改进型智能温度传

感器,最高分辨率可达0.0625°C ,测温范围为-55~125°C 。其中在35 ºC ~45 ºC 的范围内的测量精度为±0.2ºC ,此传感器可适用于体温检测。它具有小型化、性能高、耗能低、抗干扰能力强、易配微处理器等。并且DS18B20采用单片机与三线制相连,可以直接读出被测的温度值,而且减少了外部的硬件电路设计,具有低成本和易使用的特点。综上所述,决定采取DS18B20作电子温度计为选择方案。

根据以上需求分析,本次设计采用方案三来设计电子体温计。

5 系统框图

系统框图如图5-1所示:

图5-1 电子温度计系统框图 Figure 5-1 Electronic thermometer system block diagram

6 硬件电路设计

6.1 传感器电路

美国DALLAS 半导体公司设计生产一种DS18B20温度传感器,并且DS18B20是一种智能化的温度传感器。新出来的,比较流行的温度传感器,是与平常传统的热敏电阻等测量温度的元件相比较,它提供9位(二进制) 温度读数,并且可以指示器件的温度,而且能够直接读出被测的温度数值[5]。

DS18B20的性能和特点主要有以下几点,都是很好的优点:其一是多个

DS18B20可以并联在唯一一个单独的三线上,并且能够实现多点组网功能;其二是独特单独的单线接口仅仅需要一个端口引脚就可以进行通信;其三是用户可以自己定义的非易失性温度报警的设置;不需要外部的外围器件;其余的是可以通过数据线供电,电压范围为是在3.0~5.5V;当待机的时候,功耗为零;温度以9~12位的数字两读出;负电压特性,当电源极性接反的时候,温度计不会因发热而烧毁,只是不能正常工作。报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。

6.1.1 DS18B20四个比较重要的主要的数据部件

(1)ROM 能够用64位进行光刻,并且出厂前已经光刻好了光刻ROM 中的64位序列码,因此它可以看作是该DS18B20的地址序列码。64位光刻ROM 的排列是:产品类型标号是在开始8位(28H ),接着的DS18B20自身的序列码是48位的,56位校验码是在最后8位[6]。

(2)DS18B20中有个温度传感器,并且该传感器是用来测量人体体温的。每一个DSl820中,包括独一无二的序列码,序列码是64位长的。DSl820内部的ROM(只读存贮器) 就是用来装填该序号值的。产品类型编码是在前面的8位 (DSl820编码均为10H) 。接着是每个器件唯一的序列码,在中间的48位,最后面的8位是前面56位的CRC(循环冗余校验) 码,而循环冗余校验码的公式是(CRC=X8+X5+X4+1)。每一个DS18B20都各不相同,主要体现是在光刻ROM 的作用,这样就可以实现多个DS18B20挂接在一根总线上。

6.1.2 数字温度传感器DS18B20介绍

DS18B20的主要特性:

(1)适应更加宽广的电压范围,电压范围:3.0~5.5V ,并且采用数据线供电,与此同时也可以采用寄生电源方式[7];

(2)DS18B20还具有的很多强大的功能,其中一项就是支持多点的组网功能,在唯一单独的三线上,就可以让多个DS18B20功能并联,实现组网多点测量体温;

(3)具有很独特的单线接口方式,需要一条口线即可让DS18B20在与微处理器连接,并且能够实现微处理器与DS18B20的双向通讯;

(4)不需要用其他的任何外围的元器件DS18B20就可以使用,一只三极管

的集成电路包含了全部传感元件及转换电路;

(5)温范围-55℃~+125℃,在-10~+85℃的时侯精度是±0.5℃左右;

(6)有9~12位的分辨率是可以用来编写程序的,对应的可分辨温度依次分别为0.0625℃、0.125℃、0.25℃和0.5℃,测量温度可实现精度高;

(7)温度转换为数字,且条件是在9位分辨率时,最多花费 93.75ms,而在12位分辨率时,把温度值转换为数字,速度更快,最多在750ms 内;

(8)测量结果可以输出直接明确的数字的温度信号,通过串行,CPU 接受" 一线总线" ,同时可以传送CRC 校验码,拥有极强的抗干扰纠错能力;

(9)负压特性:当接反电源极性的时候,芯片不会发热,因而更加不会被烧毁, 但之后不能正常工作[8]。

DS18B20的电路图如图6-1所示:

图6-1 DS18B20电路图

Figure 6-1 DS18B20 circuit diagram

DS18B20封装管脚图如图6-2所示:

图6-2 DS18B20封装管脚图

Figure 6-2 DS18B20 package pin diagram

6.2 单片机电路

STC89C52是一种CMOS8位微小型控制器,其性能高、功耗低,并且具有可编程Flash 存储器,数据容量是8K 。在单芯片上,STC89C52为众多嵌入式控制系统应用提供有效、灵活的解决方案主要其原因就是拥有可编程Flash 和灵活的8 位CPU 。 具有以下标准功能:512bitRAM ,8kbitFlash , 32 位I/O 口线,看门狗的定时器,内置4KB EEPROM,MAX810复位电路,单个6向量2级中断结构,三个16 位计数器/ 定时器,全双工串口。另外静态逻辑操作是STC89X52 降至0Hz ,并且支持2种软件,与此同时,还可选择节电模式。当CPU 停止工作,就是属于空闲模式。此时允许RAM 、串口、计数器/定时器、中断时候继续工作。保存RAM 内容,可以在掉电保护方式下,并且可以把振荡器冻结了,单片机停止一切工作,直到下一个硬件复位或中断为止。最高运作频率35Mhz ,6T/12T可选[9]。STC89C52的主要引脚功能如下所示:

(1)GND :接地

(2)VCC :电源电压

(3)RST :重新设置。当振荡器复位器件时,要保证持续RST 脚两个机器周期的高电平时间。

(4)/EA/VPP:在此时间段外部程序的存储器(0000H-FFFFH )

,就必须是在

/EA保持持续电平低时,不管是否有内部的程序存储器。/EA将内部锁定为恢复设置,此时应当注意加密方式1;当/EA端保持电平高的时候,在FLASH 可以编写程序的期间。此间的内部的程序存储器,施加12V 编程电源在这个引脚上,也可以用于(VPP )。

(5)XTAL1:输入内部时钟的工作电路以及输入反向振荡的放大器。

(6)XTAL2:为反向振荡器的输出[10]。

(7)P0口:总线复用口是P0口,而且是数据/地址合起来的,也即是一个8位开路漏级双向I/O口。作为输出口用时,每管脚可吸收8TTL 门电流。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。当P0口的管脚第一次写1时,被定义为高阻态输入。当FIASH 进行校验时,P0外部必须被拉高,是由于P0输出原码,在FIASH 编程时,P0 口作为原码输入口。

(8)P1口:把1写在P1口管脚之后,高电平就会在内部产生,并且可以用作输入。4TTL 的门电流能够被P1口缓冲器可以能够吸收或输出,主要原因是P1口内部带一个可以提供上拉电阻的8位双向I/O口。电流在内部被上拉,当下拉为低电平在P1口被外部产生的时候,电流将会被输出。地址接收是当P1口作为第八位,并且在FLASH 编程和校验的时侯。

(9)P2口:4个TTL 的门电流可以在P2口的缓冲器可吸收或输出,P2口内部带一个8位双向I/O口,并且是可以上拉电阻的。并因当P2口的管脚被外部拉低,这个是作为输入的时侯来的,将输出电流。这是由于内部上拉的缘故。P2口在FLASH 编程和校验时接收控制信号和高八位地址信号。P2口当用在16位地址外部数据存储器,并且进行存取或外部程序存储器的时候,P2口输出地址的高八位。管脚内部有上拉电阻拉高,主要是当P2口被写“1”时,并且把P2口当作为输入。它优势有利用内部上拉,并且在给出地址“1”的时侯,当进行读写外部八位地址数据存储器的时候,P2口输出其特殊功能寄存器的内容[11]。

(10)P3口:P3口内部的管脚是8个带上拉电阻的双向I/O口,可吸收或输出4个TTL 门电流。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL )这是由于上拉的缘故。当P3口写入“1”后,用作输入,与此同时,并且内部电平上拉为高电平。

AT89C51的某些特殊功能口可以采用P3口来实现,如下表1所示:

表1 AT89C51 P3口功能

P3口同时为闪烁编程和编程校验,且可以接收一部分控制信号。

(11)/PSEN:外部程序存储器之中有选通信号在。在由外部程序存储器工作时候,取指期间,两次/PSEN有效,且在每个机器周期中。但两次有效的/PSEN信号将不出现在访问外部数据存储器时。

(12)ALE//PROG:通常情况下,ALE 端输出正脉冲信号,并且以不变的频率周期,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。当外部存储器准备被访问的时候,锁存地址的地位字节可以让地址锁存允许的输出电平。此引脚用于输入编程脉冲,主要是用在FLASH 编程期间。此时, ALE 只有在执行MOVX ,只有在ALE 情况下,MOVC 指令是才起作用的。然而要注意的是:跳过一个ALE 脉冲,就会用作外部数据存储器时。如想禁止ALE 的输出可在SFR8EH 地址上置0。另外,该引脚被略微拉高。如果是无效的置位,很可能主要原因是禁止了微处理器在外部执行状态ALE [12]。

本次设计中使用的引脚为RXD,TXD,P2,P3口。单片机电路图如图6-3所示:

图6-3单片机电路原理图

Figure 6-3 Single chip circuit schematic

6.3 LCD1602显示屏电路

1602液晶也叫1602字符型液晶,字母、数字、符号等的点阵型液晶模块将可以显示在1602上的,可以显示一个字符,是通过每个点阵字符位来实现的,并且组成部分是若干个5X7或者5X11

等点阵字符位。每位之间有一个点距的间

隔,每行之间也有间隔,起到了字符间距和行间距的作用。1602LCD 是指显示的内容可以显示每行16个字符液晶模块,并且可以显示两行,1602代表的就是这个意思[13]。

LCD1602液晶显示内容丰富、小巧的体积、功耗低、超薄且轻巧,常用在微型仪表和低功耗应用系统中。

1602的16脚接口是采用标准规范的,其中:

(1)第1脚:接地电源是VSS ;

(2)第2脚:正电源是VDD 接+5V ;

(3)第3脚:液晶显示器调整对比度的端口是V0,接正电源的时候对比度是最弱的,接地电源的时候对比度是最高的,对比度太高时会出现不一样的“鬼影”,使用时,对比度的调整,可以通过一个10K 的电位器来进行;

(4)第4脚:RS 为选择寄存器,指令寄存器用于低电平的时候、数据寄存器用于高电平的时候;

(5)第5脚:信号线RW 是代表读写的,写操作通常都是在低电平的时候进行,读操作通常都是在高电平的时候进行,显示地址或者写入指令就要当RS 和RW 均是为低电平的时候。低电平的时候可以写入数据,必须要是当RS 是高电平RW 时候,高电平的时候可以读忙信号,必须要是当RS 是低电平RW 时候;

(6)第6脚:E 端是使能端,其作用就是当E 端从高电平跳转成为低电平的时候,液晶模块会按照流程执行命令;

(7)第7~14脚:8位双向数据线是从D0到D7;

(8)第15~16脚:这些都是空脚;

从以上可以知道,LCD1602有16只管脚,每只都有不同的作用。设计好电路,再通过软件编程。当通电时候,就会启动显示屏,显示屏就会工作,就会显示外面所需要的[15]。LCD1602的显示电路如图6-4所示:

图6-4 LCD1602电路原理图

Figure 6-4 LCD1602 circuit schematic

6.4 电源模块

如图6-5所示,该电路图是电源模块,主要负责整个电路系统的电源供应。整个电子温度计采用的是稳压5V 恒流电源。

由于这个电子温度计的电路系统的外部电源,不一定全都是系统所要求的而5V 稳压电源,故需要对输入的电压进行稳压处理才行,通过处理电压,才会产生5V 的电压。并且稳压是时候,所采用的稳压的芯片是最常用的78xx 系列的7805稳压芯片。为了系统运行的稳定性,而且由于稳压芯片有波动的波形。所以应该要对稳压之前和之后的电压进行滤波处理,处理之后的波形,才会增加电形的平滑,这时候,电子温度计整个电路系统才运行的更加稳定,可靠,不会出问题[16]。

图6-5 电源模块电路原理图

Figure 6-5 Power module circuit schematic

以下是整个电子温度计的系统电路原理图,

图6-6 电子温度计原理图

Figure 6-6 Electronic thermometer schematic

如图6-6所示,整个电路原理图,分有几个模块,其中主要就是有单片机模块,DS18B20温度传感器模块,显示模块和电源模块。而其中也有些小模块,如晶振模块,报警器模块等等。这四个大模块,不同功能,有机的结合起来,成为一个完整的整体。

7 PCB电路板的制作

在制作PCB 板的过程中,由于设计以及成本的限制,故采用的是热转印法来制作的PCB 板,制作的详细步骤如下所示。

第一步:电路设计。在Multisim 11.0软件中正确的画出各模块的原理图,对电路进行仿真测试,并且对对该原理图进行电气规则检查

.

第二步:在Protell se99软件,画出对应的电子温度计电路图,并且生成相应的网络表和元件清单,随后再利用网络表生成PCB 图。 第三步:设计布线规则。在这个步骤中只要是对线宽,线距以及焊盘的详细参数的设置,是画出的PCB 板能够符合现实元器件封装大小。如图7-1,就是一个已经设计好了的PCB 板图。

第四步:交付生产,把设计的电路图,生产出来。

图7-1 PCB制作效果图

Figure 7.1 PCB production renderings

8 系统调试与测量

8.1 系统调试

电子温度计系统的硬件调试一般分下面几个步骤。

第一步:检查外部的各种元器件,看元器件是否完好无损,并且观察电路板上的电路是否有断点。是否有漏焊,虚焊等等。

第二步:用仪器仪表进行检测,这里主要采用万用表进行检测,先用万用表

复核目测中有疑问的连接点,拐点等等,再次检测各种地线与电源线之间是否有

短路、断路等不良现象。

第三步:通电检测。给电路PCB 板通上电,检测所有器件的电源是否符合要

求的值。并且检测整个电路的功能是否能够正常运行。

第四步:在通电工作中,观察电子温度计能否正常的测量体温,并且检查显

示屏能否正常显示数据。

8.2 误差分析

通过用普通水银温度计与电子温度计分别测量人体体温,仍然有细微的误差,

通过分析,可以得出以下几点原因。

(1)硬件电路设计的细小误差。由于是在制作电路板时候的微小误差,与

做工精细有关。

(2)软件程序的误差。在编程时候,一些数据,延时,有些细微的差异。

总结

本次用单片机设计电子温度计系统终于完成了,在本次设计中, 我不仅把知

识融会贯通,而且丰富了大脑,同时在外观到论文的编写都是先查阅了大量资料

过程中也了解了许多课外知识后确定, 再经老师指导,开拓了视野。在这次毕业

论文设计中,我切身感受到了使自己在专业知识方面和动手能力方面有了质的飞

跃。

在此次毕业设计过程中,我也曾遇到过困难,如软件不知如何编程、论文不

知从何下手等种种困难。刚开始面对课题感到迷茫,不知该从何下手,但经过老

师的辅导、与自己在图书馆和网上查阅的相关资料,不断学习,并开始论文的编

写。但是再编程调试过程中又遇到问题,总是出现问题,在自己耐心的调试下终

于把软件这个问题解决了,最终完成了论文。从中我体会到了人是越挫越勇的,

只有战胜自己,才会取得成功。

通过本次毕业课题设计,我了解到电子温度计的主要设计思路,巩固了自己

所学电子科技方面的大量学科知识,也加深了诸如PROTEL99等软件的熟练程度。

同时,也了解到电子温度计具体步骤措施、主要是对DS18B20的了解更加深入。

与此同时,更加熟悉了单片机的内部结构,对我将来的工作也有很大的作用。

参考文献

[1] 金毅. 温度的测量史[M].教学仪器与实验,2011年27卷8期

[2] 冯璐. 免疫金渗滤法定量检测研究[M].河北工业大学,2008

[3] 高晓蓉. 传感器技术[M].西南交通大学出版社,2003

[4] 黄继昌. 传感器工作原理及应用实例[M].人民邮电出版社,1998

[5] 陈杰. 传感器与检测技术[M].高等教育出版社,2002

[6] 金发庆. 传感器技术与应用(第二版)[M].北京:机械工业出版社,2006

[7] 沙占友,马洪涛,安国臣,孟志永. 新型智能温度传感器的与原理及应用,

电子测量与仪器学报第16卷增刊.2002.10:144-146

[8] 沙占友. 智能化温度测试系统的优化设计. 电子测量与仪器学报第16卷增

刊.2002.10:125-127

[9] 高吉祥. 数字电子技术[M].电子工业出版社,2003

[10] 沈任元 ,吴勇. 数字电子技术[M].北京:机械工业出版社,2005 [11] 康

华光. 电子技术基础模拟部分[M].高等教育出版社,1988

[12] 卜益民. 模拟电子技术[M].北京:邮电大学出版社,2005

[13] 王港元. 电工电子实践指导[M].南昌:江西科学技术出版社,2005

[14] 谢自美. 电子线路设计[M].武汉:华中科技大学出版社,2000

附录

程序代码:

/*-----------------------------------------------

名称:数码管动态扫描

日期:2017.3

------------------------------------------------*/

#include //包含头文件,一般情况不需要改动,头文件包含特殊

功能寄存器的定义

#include

unsigned char flag_get=0;

sbit DQ=P3^3;//ds18b20 端口

unsigned char TemperatureFlag=0;

/******************************************************************/

/* 函数声明 */

/******************************************************************/

unsigned int ReadTemperature(void);

void Init_DS18B20(void);

unsigned char ReadOneChar(void);

void WriteOneChar(unsigned char dat);

void delay(unsigned int i);

void ReadToData();

void putchar(unsigned char buff); void Display();

/******************************************************************/

/* 延时子程序 */

/******************************************************************/

void delay(unsigned int cnt)

{

EA=0; //总中断打开

cnt=cnt*2;

while(--cnt);

EA=1;

}

/******************************************************************/

/* 串口初始化 */

/******************************************************************/

void UARTinit(void)

{

SCON = 0x50;

TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */

TH1 = 0xFD; /* TH1: reload value for 9600 baud @

11.0592MHz */

TR1 = 1; /* TR1: timer 1 run */

}

/******************************************************************/

/* 主函数 */

/******************************************************************/

main()

{

P3=0XFF;

UARTinit();

InitLcd(); //初始化LCD

DelayMs(15); //延时保证信号稳定

while(1)

{

/* SCON: 模式 1, 8-bit UART, 使能接收TI = 1;

ReadToData();

Display();

}

/******************************************************************/ /* 初始化 */

/******************************************************************/

void Init_DS18B20(void)

{

unsigned char x=0;

DQ = 1; //DQ复位 delay(8); //稍做延时

DQ = 0; //单片机将DQ 拉低

delay(80); //精确延时 大于 480us

DQ = 1; //拉高总线 delay(10);

x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5); }

/******************************************************************/ /* 读一个字节 */

/******************************************************************/ unsigned char ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

for (i=8;i>0;i--)

{

DQ = 0; // 给脉冲信号

dat>>=1;

DQ = 1; // 给脉冲信号

if(DQ)

dat|=0x80;

delay(5);

return(dat);

}

/******************************************************************/ /* 写一个字节 */

/******************************************************************/ void WriteOneChar(unsigned char dat)

{

unsigned char i=0;

for (i=8; i>0; i--)

{

DQ = 0;

DQ = dat&0x01;

delay(5); DQ = 1;

dat>>=1;

}

delay(5);

}

/******************************************************************/ /* 读取温度 */

/******************************************************************/ unsigned int ReadTemperature(void)

{

unsigned char a=0;

unsigned int b=0;

unsigned int t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作

WriteOneChar(0x44); // 启动温度转换

delay(200);//用显示代替显示 Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar(); //低位

b=ReadOneChar(); //高位

b

t=a+b;

return(t);

}

/******************************************************************/ /* 读取到显存 */

/******************************************************************/ void ReadToData() {

unsigned char TempH,TempL;

unsigned int temp;

static int preTemp=0,num=0;

temp=ReadTemperature();

if(temp&0x8000)//读出来温度,预处理

{

TemperatureFlag=0x40;//负号标志

temp=~temp; // 取反加1

temp +=1;

}

else

TemperatureFlag=0;

TempH=temp>>4;

TempL=temp&0x0F;

TempL=TempL*6/10;//小数近似处理

if(preTemp-5

//如果温度在上升,并且小于45°则把数据写入显存 Data[]

//意思就是说,若温度下降,则不修改显存内容,显示内容不变

{

num=0;

preTemp=TempH*10+TempL;

preTemp = preTemp+5;

Data[0]=(char)(preTemp/100)%10; //十位温度

Data[1]=(char)(preTemp/10)%10; //个位温度

Data[2]=(char)(preTemp%10);//显示小数

}

else

{ num++; }

if(num>=100)

{TimeNum[0]='S';TimeNum[1]='T';TimeNum[2]='O';TimeNum[3]='P';TimeNum[4]=' ';TimeNum[5]='^';TimeNum[6]='_';TimeNum[7]='^';}

//如果100次温度不在上升,则证明温度稳定了,显示stop ^_^

else

{TimeNum[0]='R';TimeNum[1]='e';TimeNum[2]='a';TimeNum[3]='d';TimeNum[4]='i';TimeNum[5]='n';TimeNum[6]='g';}

//否则显示Reading

}

/******************************************************************/ /* 串口输出 */

/******************************************************************/ void putchar(char buff)

{

EA=0;

}

SBUF=buff;

while(!TI);

TI=0;

EA=1;

致 谢

经过几个月忙碌的学习和工作,本次毕业设计论文已经基本完成,作为一个大学本科毕业生的毕业设计,由于本身经验的匮乏,再加上工作实习,时间紧迫,难免有许多考虑不周全,不完善的地方,如果没有指导老师的督促指导,以及在一起工作和学习的同学们的支持,想要按时完成这个设计是难以想象的。在老师的指导下,同学帮助下,相互奋勉,最终圆满的完成了设计任务。在整个过程当中,有许多人给了我启发和帮助,在毕业论文完成之际,我要在此表达对他们最诚挚的感谢。

首先,最需要感谢的人是我的指导老师以及大学四年来所有的老师,为我们打下专业知识的基础。老师平日里工作繁多,但在我做毕业设计的每个阶段,从选题到查阅资料,方案可行的确定和论文纲领细节的修改,中期检查,后期详细设计等整个过程中都给予了我悉心的指导。每一次的批评和教育,使我受益非浅,值此论文完成之际, 谨向老师再一次向他致以衷心的谢意,感谢他为学生营造的浓郁学术氛围, 以及学习上的耐心的帮助!

其次,还要感谢和我一起作毕业设计的同学,他在本次设计中勤奋工作,克服了许多困难来完成此次毕业设计,并承担了大部分的工作量。如果没有他的努力工作,此次设计的完成将变得非常困难。

然后,我还要感谢我的同学与朋友,他们也给我很大的帮助,给我提供了不少的建议,让我少走了许多的弯路。通过这次实验,我更加深刻的了解了STC89C52单片机的内部结构,和 DS18B20温度传感器的工作原理,增强了处理混乱逻辑关系的能力。

学士学位论文 题 目: 电子温度计的设计 姓 名: 学 号: 专业/届别: 指导教师: 职 称:

电子温度计的设计

摘要:随着电子电路的发展,我们生活中越来越多的用品已经慢慢被电子产品所代替,温度计就是一个十分典型的例子,以往的温度计往往是用水银与玻璃制成,这种温度计有一个大大的缺点就是十分容易破碎,而众所周知的是,水银是一种剧毒的重金属物质,对人体能够产生极大地危害。所以,一旦温度计遭到毁坏,水银就很容易泄露,给人们造成很大的危害。但是电子温度计的这些情况基本上不会发生,而且使用十分方便快捷,是替代普通温度计的很好的选择。本论文设计的温度计主要用来完成对体温的测量,采用一种新型的可编程温度传感(DS18B20),不需复杂的信号调理电路和A /D 转换电路能直接与单片机完成数据采集和处理,实现方便、精度高,性能稳定。传感器DS18B20接触被测物体,感应温度后,模数转化后的电信号送入STC89C52单片机,并将其送入LCD1602数码管显示。它能快速准确地测量人体体温,与传统的水银玻璃温度计相比,具有读数方便,测量时间短,测量精度高,能记忆并有蜂鸣提示的优点。并且超过预定的温度,回有报警提示。

关键词: 电子温度计; DS18B20;STC89C52单片机; LCD1602显示屏

Design of electronic thermometer

Abstract :With the development of electronic circuits, more and more supplies in our lives have been slowly replaced by electronic products, the thermometer is a very typical example, the previous thermometer is often made of mercury and glass, this thermometer has a big The shortcomings are very easy to break, and it is well known that mercury is a highly toxic heavy metal material, the human body can produce great harm. So, once the thermometer has been destroyed, mercury is very easy to leak, causing great harm to people. But the electronic thermometer of these conditions is basically not happen, and the use of very convenient and quick, is a good alternative to ordinary thermometer choice.This design uses the hardware design of the electronic thermometer system, a new type of programmable temperature sensor (DS18B20), data acquisition and processing does not require complicated signal conditioning circuitry and the A / D conversion circuit with a microcontroller, easy to achieve accuracy high and stable performance. Sensor DS18B20 contact with the human body, the sensor temperature, the electrical signals into the analog-to-digital conversion STC89C52 microcontroller and into the LCD1602 digital display. It can quickly and accurately measure the body temperature, compared with traditional mercury glass thermometer, with the easy reading, short measurement time, high measurement accuracy, memory and Beeper advantages. And exceeds a predetermined temperature, back to the alarm. Electronic thermometer mercury-free, on the human body and ambient sound, especially suitable for families, hospitals and other occasions.

Key words:Digital Thermometer ;DS18B20;STC89C52; Microcontroller LCD1602 Display

目 录

摘要 ................................................................ 1

关键词 .............................................................. 1

Abstract ............................................................ 2

Key words ........................................................... 2

绪论 ................................................................ 4

1 任务要求 .......................................................... 5

2 设计思路 .......................................................... 5

3 系统设计 .......................................................... 6

4 方案设计与论证 .................................................... 6

5 系统框图 .......................................................... 8

6 硬件电路设计 ...................................................... 8

6.1 传感器电路 .................................................. 8

6.1.1 DS18B20四个比较重要的主要的数据部件 ................... 9

6.1.2 数字温度传感器DS18B20介绍 ............................ 9

6.2 单片机电路 ................................................. 11

6.3 LCD1602显示屏电路 .......................................... 14

6.4 电源模块 ................................................... 16

7 PCB电路板的制作 .................................................. 18

8 系统调试与测量 ................................................... 19

8.1 系统调试 ................................................... 19

8.2 误差分析 ................................................... 20

总结 ............................................................... 20

参考文献 ........................................................... 21

附录 ............................................................... 22

致 谢 .............................................................. 28

绪论

随着电子电路的发展,我们生活中越来越多的用品已经慢慢被电子产品所代替,温度计就是一个十分典型的例子,以往的温度计往往是用水银与玻璃制成,这种温度计有一个大大的缺点就是十分容易破碎,而众所周知的是,水银是一种剧毒的重金属物质,对人体能够产生极大地危害。所以,一旦温度计遭到毁坏,水银就很容易泄露,给人们造成很大的危害。但是电子温度计的这些情况基本上不会发生,而且使用十分方便快捷,是替代普通温度计的很好的选择。体温测量的历史,最早出现在16世纪。当时空气热膨胀是Saatorio 主要根据的原理,制出了第一支体温计,用于测量口腔温度体。到20世纪初,才开始设计采用水银来制作体温计,至今水银体温计在家庭等处,得到了广泛的应用。埃布斯坦在1928年发表的报告中指出,水银温度计当时除测量口腔及腋下的温度外,还可以用来测量颈部、外耳,大腿根部及尿温。水银体温计的原理就是玻璃球内积存的水银温度和被测量皮肤的温度相等[1]。

由于水银体温计精度很高、使用方便、并且易于携带,因而很多人喜欢采用水银体温计。再加上体温计测温方法及其结构都已完全成熟,并没太多的改进余地,人们对水银体温计的研究热情逐渐降低,到现在水银体温计几乎已经没有什么发展的余地。再加上由于测量体温用水银体温计很不方便,如果打破摔坏体温计,水银的污染也很严重等,为了准确测量人体的局部温度,促使人们不得不开发了多种多样的测温方式和测温器件设备。现在其它不同种类的电子仪器测量体温也日益普及,已有许多医院采用了电子体温计来测量体温。这一事实至少说明了,电子测温仪器的性能与水银温度计的性能已经很接近了。因此,鉴于传统的水银体温计多种因素,诸如汞的污染及其携带不方便易破碎,尤其是测量时间过长等缺点,本课题为解决此问题设计出一种数字式电子体温计。它在稳定性及响应时间上比传统的水银体温计有着显著的优势,精度要求也能和传统的水银体温计相媲美。

单片机智能化仪表在测量仪表的方面,有着很大的发展趋势。它给日常生活带来多方面的进步,其中数字温度计就是一个典型的例子,家庭、医院等随处可见,为了能更加满足人们的需要,数字体温计正在不断的进行更新换代。

现在所使用的温度计还有很多是水银、酒精或煤油。温度计的分辨力都是为

1~0.1℃。这些普通水银温度计的刻度间隔通常都很密集,读数比较困难,分辨的不准确,而且他们有着比较大的热容量,需要很长时间达到热平衡,因此温度数值很难读准,使用非常不方便。本设计所介绍的电子体温计,主要用于家庭等普通环境。与传统的水银温度计相比,电子体温计易于读数,广泛的测温范围,测温精度比较高等优点,其输出温度采用数字显示。

现在温度计发展非常迅速,从最原始的玻璃管温度计发展到了现在的热电偶温度计、热电阻温度计、集成的半导体数字温度计等。在电子式温度计中,最重要组成部分就是传感器。温度计的测量范围、精度、控制范围和用途取决于传感器的精度、灵敏度等等。现在的温度传感器被广泛的应用,目前已经研制出各种各样的新型温度传感器,从而现在温度监控系统的功能日趋强大。

1 任务要求

本系统设计的温度计主要是用来完成对体温的检测,能准确快速地测量人体体温,并且需要实时的显示当前的温度。与传统的水银玻璃温度计相比,电子温度计具有方便的读数,高精度的测量,测量时间比较短,能记忆并有与其它体温计不同的蜂鸣提示的优点。测温范围35°C ~42°C ,误差在±0.2°C 以内,当温度超过38°C 时,可以报警,采用LED 数码管直读显示。并且能够实时的进行温度检测,能清楚的显示与读出数据。

2 设计思路

本研究旨在设计一个电子温度计完成对体温检测,主要控制器采用单片机STC89C52,传感器采用美国DALLAS 半导体公司生产的DS18B20智能型传感器。该传感器检查的温度是35°C ~42°C 之间,检查的分辨率为±0.2°C 。当温度出现不同寻常的时候,不在设置范围内时,可以报警,且是通过蜂鸣器。研究工作总体包括以下多个方面:了解电子温度计的工作原理,典型结构,发展历史及国内外的研究和发展的现状;研究电子温度计的两个最主要的核心模块:DS18B20传感器控制和STC89C52单片机主控制器。

3 系统设计

为满足系统的三个需求:

(1)实时的温度检测。

(2)数据能清楚的显示与读出。

(3)温度变化的曲线能够实时的描绘出来。整个电子温度计系统应该设计必须含有以下几个模块:

a.温度采集模块。

b.显示模块。

c.串口通信接口。

d.核心系统模块。

4 方案设计与论证

方案一:

本电路设计的电子温度计,如图4-1,热敏电阻器件在测温电路中的感温效应。随被测温变化,采集的电压或电流,进行模数转换后,再用单片机进行加工处理采样的数据,就可以通过显示电路显示出来。但是热敏电阻测量体温有许多问题,存在测量时间较长等问题[2]。

图4-1 基于热敏电阻的电子温度计系统框图

Figure 4-1 Block diagram of electronic thermometer based on thermistor

方案二:

红外体外温度计是非接触式的,算是高端的技术,最近几年才发展起来的。主要是靠红外传感器感应接收人体辐射的红外线,通过模数转换后,用单片机处理采样的数据,显示电路就可以显示出来数据。但是这个方案制作成本费用高,耗时比较长,主要是体现在硬件电路与软件程序复杂[3]。

方案三:

数字温度计采用单片机的温度传感器设计,各种各样的精度高的温度计不断出现,不断发展。数字温度检测要求必须满足的条件是检测的精度高于控制的精确度,否则无法控制的体温计测量精度的要求。所以电子体温检测的一项重要的性能参数其中有一项就是测量精度。因此数字温度计检测追求的一个目标就是高精度。检测手段不断的现代化,现在检测能达到的很高的灵敏度、精度及测量范围等。同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的技术支持。目前市场上出现了很多传感器,很多高精度的传感器已经出现,而且精度越来越高。DS18B20将会不断的完善,从而测量的更加精确、更加简单,更加人性化,更满足系统设计的需求[4]。

传统的传感器热电阻、热电偶等,只有通过外部硬件的支持,测出的电压,才会转换成对应的温度值。比如说模数转换是不可少的,还有其他的等等一些硬件电路,比较复杂。有如下缺点:软件调试复杂;硬件电路复杂;制作成本高。

这个温度计采用DS18B20作为检测元件,DS18B20

是一种改进型智能温度传

感器,最高分辨率可达0.0625°C ,测温范围为-55~125°C 。其中在35 ºC ~45 ºC 的范围内的测量精度为±0.2ºC ,此传感器可适用于体温检测。它具有小型化、性能高、耗能低、抗干扰能力强、易配微处理器等。并且DS18B20采用单片机与三线制相连,可以直接读出被测的温度值,而且减少了外部的硬件电路设计,具有低成本和易使用的特点。综上所述,决定采取DS18B20作电子温度计为选择方案。

根据以上需求分析,本次设计采用方案三来设计电子体温计。

5 系统框图

系统框图如图5-1所示:

图5-1 电子温度计系统框图 Figure 5-1 Electronic thermometer system block diagram

6 硬件电路设计

6.1 传感器电路

美国DALLAS 半导体公司设计生产一种DS18B20温度传感器,并且DS18B20是一种智能化的温度传感器。新出来的,比较流行的温度传感器,是与平常传统的热敏电阻等测量温度的元件相比较,它提供9位(二进制) 温度读数,并且可以指示器件的温度,而且能够直接读出被测的温度数值[5]。

DS18B20的性能和特点主要有以下几点,都是很好的优点:其一是多个

DS18B20可以并联在唯一一个单独的三线上,并且能够实现多点组网功能;其二是独特单独的单线接口仅仅需要一个端口引脚就可以进行通信;其三是用户可以自己定义的非易失性温度报警的设置;不需要外部的外围器件;其余的是可以通过数据线供电,电压范围为是在3.0~5.5V;当待机的时候,功耗为零;温度以9~12位的数字两读出;负电压特性,当电源极性接反的时候,温度计不会因发热而烧毁,只是不能正常工作。报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。

6.1.1 DS18B20四个比较重要的主要的数据部件

(1)ROM 能够用64位进行光刻,并且出厂前已经光刻好了光刻ROM 中的64位序列码,因此它可以看作是该DS18B20的地址序列码。64位光刻ROM 的排列是:产品类型标号是在开始8位(28H ),接着的DS18B20自身的序列码是48位的,56位校验码是在最后8位[6]。

(2)DS18B20中有个温度传感器,并且该传感器是用来测量人体体温的。每一个DSl820中,包括独一无二的序列码,序列码是64位长的。DSl820内部的ROM(只读存贮器) 就是用来装填该序号值的。产品类型编码是在前面的8位 (DSl820编码均为10H) 。接着是每个器件唯一的序列码,在中间的48位,最后面的8位是前面56位的CRC(循环冗余校验) 码,而循环冗余校验码的公式是(CRC=X8+X5+X4+1)。每一个DS18B20都各不相同,主要体现是在光刻ROM 的作用,这样就可以实现多个DS18B20挂接在一根总线上。

6.1.2 数字温度传感器DS18B20介绍

DS18B20的主要特性:

(1)适应更加宽广的电压范围,电压范围:3.0~5.5V ,并且采用数据线供电,与此同时也可以采用寄生电源方式[7];

(2)DS18B20还具有的很多强大的功能,其中一项就是支持多点的组网功能,在唯一单独的三线上,就可以让多个DS18B20功能并联,实现组网多点测量体温;

(3)具有很独特的单线接口方式,需要一条口线即可让DS18B20在与微处理器连接,并且能够实现微处理器与DS18B20的双向通讯;

(4)不需要用其他的任何外围的元器件DS18B20就可以使用,一只三极管

的集成电路包含了全部传感元件及转换电路;

(5)温范围-55℃~+125℃,在-10~+85℃的时侯精度是±0.5℃左右;

(6)有9~12位的分辨率是可以用来编写程序的,对应的可分辨温度依次分别为0.0625℃、0.125℃、0.25℃和0.5℃,测量温度可实现精度高;

(7)温度转换为数字,且条件是在9位分辨率时,最多花费 93.75ms,而在12位分辨率时,把温度值转换为数字,速度更快,最多在750ms 内;

(8)测量结果可以输出直接明确的数字的温度信号,通过串行,CPU 接受" 一线总线" ,同时可以传送CRC 校验码,拥有极强的抗干扰纠错能力;

(9)负压特性:当接反电源极性的时候,芯片不会发热,因而更加不会被烧毁, 但之后不能正常工作[8]。

DS18B20的电路图如图6-1所示:

图6-1 DS18B20电路图

Figure 6-1 DS18B20 circuit diagram

DS18B20封装管脚图如图6-2所示:

图6-2 DS18B20封装管脚图

Figure 6-2 DS18B20 package pin diagram

6.2 单片机电路

STC89C52是一种CMOS8位微小型控制器,其性能高、功耗低,并且具有可编程Flash 存储器,数据容量是8K 。在单芯片上,STC89C52为众多嵌入式控制系统应用提供有效、灵活的解决方案主要其原因就是拥有可编程Flash 和灵活的8 位CPU 。 具有以下标准功能:512bitRAM ,8kbitFlash , 32 位I/O 口线,看门狗的定时器,内置4KB EEPROM,MAX810复位电路,单个6向量2级中断结构,三个16 位计数器/ 定时器,全双工串口。另外静态逻辑操作是STC89X52 降至0Hz ,并且支持2种软件,与此同时,还可选择节电模式。当CPU 停止工作,就是属于空闲模式。此时允许RAM 、串口、计数器/定时器、中断时候继续工作。保存RAM 内容,可以在掉电保护方式下,并且可以把振荡器冻结了,单片机停止一切工作,直到下一个硬件复位或中断为止。最高运作频率35Mhz ,6T/12T可选[9]。STC89C52的主要引脚功能如下所示:

(1)GND :接地

(2)VCC :电源电压

(3)RST :重新设置。当振荡器复位器件时,要保证持续RST 脚两个机器周期的高电平时间。

(4)/EA/VPP:在此时间段外部程序的存储器(0000H-FFFFH )

,就必须是在

/EA保持持续电平低时,不管是否有内部的程序存储器。/EA将内部锁定为恢复设置,此时应当注意加密方式1;当/EA端保持电平高的时候,在FLASH 可以编写程序的期间。此间的内部的程序存储器,施加12V 编程电源在这个引脚上,也可以用于(VPP )。

(5)XTAL1:输入内部时钟的工作电路以及输入反向振荡的放大器。

(6)XTAL2:为反向振荡器的输出[10]。

(7)P0口:总线复用口是P0口,而且是数据/地址合起来的,也即是一个8位开路漏级双向I/O口。作为输出口用时,每管脚可吸收8TTL 门电流。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。当P0口的管脚第一次写1时,被定义为高阻态输入。当FIASH 进行校验时,P0外部必须被拉高,是由于P0输出原码,在FIASH 编程时,P0 口作为原码输入口。

(8)P1口:把1写在P1口管脚之后,高电平就会在内部产生,并且可以用作输入。4TTL 的门电流能够被P1口缓冲器可以能够吸收或输出,主要原因是P1口内部带一个可以提供上拉电阻的8位双向I/O口。电流在内部被上拉,当下拉为低电平在P1口被外部产生的时候,电流将会被输出。地址接收是当P1口作为第八位,并且在FLASH 编程和校验的时侯。

(9)P2口:4个TTL 的门电流可以在P2口的缓冲器可吸收或输出,P2口内部带一个8位双向I/O口,并且是可以上拉电阻的。并因当P2口的管脚被外部拉低,这个是作为输入的时侯来的,将输出电流。这是由于内部上拉的缘故。P2口在FLASH 编程和校验时接收控制信号和高八位地址信号。P2口当用在16位地址外部数据存储器,并且进行存取或外部程序存储器的时候,P2口输出地址的高八位。管脚内部有上拉电阻拉高,主要是当P2口被写“1”时,并且把P2口当作为输入。它优势有利用内部上拉,并且在给出地址“1”的时侯,当进行读写外部八位地址数据存储器的时候,P2口输出其特殊功能寄存器的内容[11]。

(10)P3口:P3口内部的管脚是8个带上拉电阻的双向I/O口,可吸收或输出4个TTL 门电流。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL )这是由于上拉的缘故。当P3口写入“1”后,用作输入,与此同时,并且内部电平上拉为高电平。

AT89C51的某些特殊功能口可以采用P3口来实现,如下表1所示:

表1 AT89C51 P3口功能

P3口同时为闪烁编程和编程校验,且可以接收一部分控制信号。

(11)/PSEN:外部程序存储器之中有选通信号在。在由外部程序存储器工作时候,取指期间,两次/PSEN有效,且在每个机器周期中。但两次有效的/PSEN信号将不出现在访问外部数据存储器时。

(12)ALE//PROG:通常情况下,ALE 端输出正脉冲信号,并且以不变的频率周期,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。当外部存储器准备被访问的时候,锁存地址的地位字节可以让地址锁存允许的输出电平。此引脚用于输入编程脉冲,主要是用在FLASH 编程期间。此时, ALE 只有在执行MOVX ,只有在ALE 情况下,MOVC 指令是才起作用的。然而要注意的是:跳过一个ALE 脉冲,就会用作外部数据存储器时。如想禁止ALE 的输出可在SFR8EH 地址上置0。另外,该引脚被略微拉高。如果是无效的置位,很可能主要原因是禁止了微处理器在外部执行状态ALE [12]。

本次设计中使用的引脚为RXD,TXD,P2,P3口。单片机电路图如图6-3所示:

图6-3单片机电路原理图

Figure 6-3 Single chip circuit schematic

6.3 LCD1602显示屏电路

1602液晶也叫1602字符型液晶,字母、数字、符号等的点阵型液晶模块将可以显示在1602上的,可以显示一个字符,是通过每个点阵字符位来实现的,并且组成部分是若干个5X7或者5X11

等点阵字符位。每位之间有一个点距的间

隔,每行之间也有间隔,起到了字符间距和行间距的作用。1602LCD 是指显示的内容可以显示每行16个字符液晶模块,并且可以显示两行,1602代表的就是这个意思[13]。

LCD1602液晶显示内容丰富、小巧的体积、功耗低、超薄且轻巧,常用在微型仪表和低功耗应用系统中。

1602的16脚接口是采用标准规范的,其中:

(1)第1脚:接地电源是VSS ;

(2)第2脚:正电源是VDD 接+5V ;

(3)第3脚:液晶显示器调整对比度的端口是V0,接正电源的时候对比度是最弱的,接地电源的时候对比度是最高的,对比度太高时会出现不一样的“鬼影”,使用时,对比度的调整,可以通过一个10K 的电位器来进行;

(4)第4脚:RS 为选择寄存器,指令寄存器用于低电平的时候、数据寄存器用于高电平的时候;

(5)第5脚:信号线RW 是代表读写的,写操作通常都是在低电平的时候进行,读操作通常都是在高电平的时候进行,显示地址或者写入指令就要当RS 和RW 均是为低电平的时候。低电平的时候可以写入数据,必须要是当RS 是高电平RW 时候,高电平的时候可以读忙信号,必须要是当RS 是低电平RW 时候;

(6)第6脚:E 端是使能端,其作用就是当E 端从高电平跳转成为低电平的时候,液晶模块会按照流程执行命令;

(7)第7~14脚:8位双向数据线是从D0到D7;

(8)第15~16脚:这些都是空脚;

从以上可以知道,LCD1602有16只管脚,每只都有不同的作用。设计好电路,再通过软件编程。当通电时候,就会启动显示屏,显示屏就会工作,就会显示外面所需要的[15]。LCD1602的显示电路如图6-4所示:

图6-4 LCD1602电路原理图

Figure 6-4 LCD1602 circuit schematic

6.4 电源模块

如图6-5所示,该电路图是电源模块,主要负责整个电路系统的电源供应。整个电子温度计采用的是稳压5V 恒流电源。

由于这个电子温度计的电路系统的外部电源,不一定全都是系统所要求的而5V 稳压电源,故需要对输入的电压进行稳压处理才行,通过处理电压,才会产生5V 的电压。并且稳压是时候,所采用的稳压的芯片是最常用的78xx 系列的7805稳压芯片。为了系统运行的稳定性,而且由于稳压芯片有波动的波形。所以应该要对稳压之前和之后的电压进行滤波处理,处理之后的波形,才会增加电形的平滑,这时候,电子温度计整个电路系统才运行的更加稳定,可靠,不会出问题[16]。

图6-5 电源模块电路原理图

Figure 6-5 Power module circuit schematic

以下是整个电子温度计的系统电路原理图,

图6-6 电子温度计原理图

Figure 6-6 Electronic thermometer schematic

如图6-6所示,整个电路原理图,分有几个模块,其中主要就是有单片机模块,DS18B20温度传感器模块,显示模块和电源模块。而其中也有些小模块,如晶振模块,报警器模块等等。这四个大模块,不同功能,有机的结合起来,成为一个完整的整体。

7 PCB电路板的制作

在制作PCB 板的过程中,由于设计以及成本的限制,故采用的是热转印法来制作的PCB 板,制作的详细步骤如下所示。

第一步:电路设计。在Multisim 11.0软件中正确的画出各模块的原理图,对电路进行仿真测试,并且对对该原理图进行电气规则检查

.

第二步:在Protell se99软件,画出对应的电子温度计电路图,并且生成相应的网络表和元件清单,随后再利用网络表生成PCB 图。 第三步:设计布线规则。在这个步骤中只要是对线宽,线距以及焊盘的详细参数的设置,是画出的PCB 板能够符合现实元器件封装大小。如图7-1,就是一个已经设计好了的PCB 板图。

第四步:交付生产,把设计的电路图,生产出来。

图7-1 PCB制作效果图

Figure 7.1 PCB production renderings

8 系统调试与测量

8.1 系统调试

电子温度计系统的硬件调试一般分下面几个步骤。

第一步:检查外部的各种元器件,看元器件是否完好无损,并且观察电路板上的电路是否有断点。是否有漏焊,虚焊等等。

第二步:用仪器仪表进行检测,这里主要采用万用表进行检测,先用万用表

复核目测中有疑问的连接点,拐点等等,再次检测各种地线与电源线之间是否有

短路、断路等不良现象。

第三步:通电检测。给电路PCB 板通上电,检测所有器件的电源是否符合要

求的值。并且检测整个电路的功能是否能够正常运行。

第四步:在通电工作中,观察电子温度计能否正常的测量体温,并且检查显

示屏能否正常显示数据。

8.2 误差分析

通过用普通水银温度计与电子温度计分别测量人体体温,仍然有细微的误差,

通过分析,可以得出以下几点原因。

(1)硬件电路设计的细小误差。由于是在制作电路板时候的微小误差,与

做工精细有关。

(2)软件程序的误差。在编程时候,一些数据,延时,有些细微的差异。

总结

本次用单片机设计电子温度计系统终于完成了,在本次设计中, 我不仅把知

识融会贯通,而且丰富了大脑,同时在外观到论文的编写都是先查阅了大量资料

过程中也了解了许多课外知识后确定, 再经老师指导,开拓了视野。在这次毕业

论文设计中,我切身感受到了使自己在专业知识方面和动手能力方面有了质的飞

跃。

在此次毕业设计过程中,我也曾遇到过困难,如软件不知如何编程、论文不

知从何下手等种种困难。刚开始面对课题感到迷茫,不知该从何下手,但经过老

师的辅导、与自己在图书馆和网上查阅的相关资料,不断学习,并开始论文的编

写。但是再编程调试过程中又遇到问题,总是出现问题,在自己耐心的调试下终

于把软件这个问题解决了,最终完成了论文。从中我体会到了人是越挫越勇的,

只有战胜自己,才会取得成功。

通过本次毕业课题设计,我了解到电子温度计的主要设计思路,巩固了自己

所学电子科技方面的大量学科知识,也加深了诸如PROTEL99等软件的熟练程度。

同时,也了解到电子温度计具体步骤措施、主要是对DS18B20的了解更加深入。

与此同时,更加熟悉了单片机的内部结构,对我将来的工作也有很大的作用。

参考文献

[1] 金毅. 温度的测量史[M].教学仪器与实验,2011年27卷8期

[2] 冯璐. 免疫金渗滤法定量检测研究[M].河北工业大学,2008

[3] 高晓蓉. 传感器技术[M].西南交通大学出版社,2003

[4] 黄继昌. 传感器工作原理及应用实例[M].人民邮电出版社,1998

[5] 陈杰. 传感器与检测技术[M].高等教育出版社,2002

[6] 金发庆. 传感器技术与应用(第二版)[M].北京:机械工业出版社,2006

[7] 沙占友,马洪涛,安国臣,孟志永. 新型智能温度传感器的与原理及应用,

电子测量与仪器学报第16卷增刊.2002.10:144-146

[8] 沙占友. 智能化温度测试系统的优化设计. 电子测量与仪器学报第16卷增

刊.2002.10:125-127

[9] 高吉祥. 数字电子技术[M].电子工业出版社,2003

[10] 沈任元 ,吴勇. 数字电子技术[M].北京:机械工业出版社,2005 [11] 康

华光. 电子技术基础模拟部分[M].高等教育出版社,1988

[12] 卜益民. 模拟电子技术[M].北京:邮电大学出版社,2005

[13] 王港元. 电工电子实践指导[M].南昌:江西科学技术出版社,2005

[14] 谢自美. 电子线路设计[M].武汉:华中科技大学出版社,2000

附录

程序代码:

/*-----------------------------------------------

名称:数码管动态扫描

日期:2017.3

------------------------------------------------*/

#include //包含头文件,一般情况不需要改动,头文件包含特殊

功能寄存器的定义

#include

unsigned char flag_get=0;

sbit DQ=P3^3;//ds18b20 端口

unsigned char TemperatureFlag=0;

/******************************************************************/

/* 函数声明 */

/******************************************************************/

unsigned int ReadTemperature(void);

void Init_DS18B20(void);

unsigned char ReadOneChar(void);

void WriteOneChar(unsigned char dat);

void delay(unsigned int i);

void ReadToData();

void putchar(unsigned char buff); void Display();

/******************************************************************/

/* 延时子程序 */

/******************************************************************/

void delay(unsigned int cnt)

{

EA=0; //总中断打开

cnt=cnt*2;

while(--cnt);

EA=1;

}

/******************************************************************/

/* 串口初始化 */

/******************************************************************/

void UARTinit(void)

{

SCON = 0x50;

TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */

TH1 = 0xFD; /* TH1: reload value for 9600 baud @

11.0592MHz */

TR1 = 1; /* TR1: timer 1 run */

}

/******************************************************************/

/* 主函数 */

/******************************************************************/

main()

{

P3=0XFF;

UARTinit();

InitLcd(); //初始化LCD

DelayMs(15); //延时保证信号稳定

while(1)

{

/* SCON: 模式 1, 8-bit UART, 使能接收TI = 1;

ReadToData();

Display();

}

/******************************************************************/ /* 初始化 */

/******************************************************************/

void Init_DS18B20(void)

{

unsigned char x=0;

DQ = 1; //DQ复位 delay(8); //稍做延时

DQ = 0; //单片机将DQ 拉低

delay(80); //精确延时 大于 480us

DQ = 1; //拉高总线 delay(10);

x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5); }

/******************************************************************/ /* 读一个字节 */

/******************************************************************/ unsigned char ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

for (i=8;i>0;i--)

{

DQ = 0; // 给脉冲信号

dat>>=1;

DQ = 1; // 给脉冲信号

if(DQ)

dat|=0x80;

delay(5);

return(dat);

}

/******************************************************************/ /* 写一个字节 */

/******************************************************************/ void WriteOneChar(unsigned char dat)

{

unsigned char i=0;

for (i=8; i>0; i--)

{

DQ = 0;

DQ = dat&0x01;

delay(5); DQ = 1;

dat>>=1;

}

delay(5);

}

/******************************************************************/ /* 读取温度 */

/******************************************************************/ unsigned int ReadTemperature(void)

{

unsigned char a=0;

unsigned int b=0;

unsigned int t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作

WriteOneChar(0x44); // 启动温度转换

delay(200);//用显示代替显示 Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar(); //低位

b=ReadOneChar(); //高位

b

t=a+b;

return(t);

}

/******************************************************************/ /* 读取到显存 */

/******************************************************************/ void ReadToData() {

unsigned char TempH,TempL;

unsigned int temp;

static int preTemp=0,num=0;

temp=ReadTemperature();

if(temp&0x8000)//读出来温度,预处理

{

TemperatureFlag=0x40;//负号标志

temp=~temp; // 取反加1

temp +=1;

}

else

TemperatureFlag=0;

TempH=temp>>4;

TempL=temp&0x0F;

TempL=TempL*6/10;//小数近似处理

if(preTemp-5

//如果温度在上升,并且小于45°则把数据写入显存 Data[]

//意思就是说,若温度下降,则不修改显存内容,显示内容不变

{

num=0;

preTemp=TempH*10+TempL;

preTemp = preTemp+5;

Data[0]=(char)(preTemp/100)%10; //十位温度

Data[1]=(char)(preTemp/10)%10; //个位温度

Data[2]=(char)(preTemp%10);//显示小数

}

else

{ num++; }

if(num>=100)

{TimeNum[0]='S';TimeNum[1]='T';TimeNum[2]='O';TimeNum[3]='P';TimeNum[4]=' ';TimeNum[5]='^';TimeNum[6]='_';TimeNum[7]='^';}

//如果100次温度不在上升,则证明温度稳定了,显示stop ^_^

else

{TimeNum[0]='R';TimeNum[1]='e';TimeNum[2]='a';TimeNum[3]='d';TimeNum[4]='i';TimeNum[5]='n';TimeNum[6]='g';}

//否则显示Reading

}

/******************************************************************/ /* 串口输出 */

/******************************************************************/ void putchar(char buff)

{

EA=0;

}

SBUF=buff;

while(!TI);

TI=0;

EA=1;

致 谢

经过几个月忙碌的学习和工作,本次毕业设计论文已经基本完成,作为一个大学本科毕业生的毕业设计,由于本身经验的匮乏,再加上工作实习,时间紧迫,难免有许多考虑不周全,不完善的地方,如果没有指导老师的督促指导,以及在一起工作和学习的同学们的支持,想要按时完成这个设计是难以想象的。在老师的指导下,同学帮助下,相互奋勉,最终圆满的完成了设计任务。在整个过程当中,有许多人给了我启发和帮助,在毕业论文完成之际,我要在此表达对他们最诚挚的感谢。

首先,最需要感谢的人是我的指导老师以及大学四年来所有的老师,为我们打下专业知识的基础。老师平日里工作繁多,但在我做毕业设计的每个阶段,从选题到查阅资料,方案可行的确定和论文纲领细节的修改,中期检查,后期详细设计等整个过程中都给予了我悉心的指导。每一次的批评和教育,使我受益非浅,值此论文完成之际, 谨向老师再一次向他致以衷心的谢意,感谢他为学生营造的浓郁学术氛围, 以及学习上的耐心的帮助!

其次,还要感谢和我一起作毕业设计的同学,他在本次设计中勤奋工作,克服了许多困难来完成此次毕业设计,并承担了大部分的工作量。如果没有他的努力工作,此次设计的完成将变得非常困难。

然后,我还要感谢我的同学与朋友,他们也给我很大的帮助,给我提供了不少的建议,让我少走了许多的弯路。通过这次实验,我更加深刻的了解了STC89C52单片机的内部结构,和 DS18B20温度传感器的工作原理,增强了处理混乱逻辑关系的能力。


相关内容

  • 电子体温计的设计论文
  • 目录 一.摘要„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 1 二.任务要求 ...................................................... 3 三.设计思路 ....................................... ...

  • 电子系统综合设计报告
  • 电子系统综合设计报告 学号:专业:日期:姓名: 陈小燕 100401203 电子信息工程 2013-3-25 南京理工大学紫金学院电光系 1 引言 温控仪是调控一体化智能温度控制仪表,它采用了全数字化集成设计,具有温度曲线可编程或定点恒温控制.多重PID 调节.输出功率限幅曲线编程.手动/自动切换. ...

  • 自动化毕业设计论文题目
  • 自 动 化 毕 业 设 计 论 文 题 目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC12 ...

  • 通信工程毕业设计题目精选
  • 不管怎样,生活还是要继续向前走去.有的时候伤害和失败不见得是一件坏事,它会让你变得更好,孤单和失落亦是如此.每件事到最后一定会变成一件好事,只要你能够走到最后. 通信工程毕业设计题目精选 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激 ...

  • 智能仪器课程设计---温度测量与控制电路
  • 智能仪器课程设计 温度测试与控制电路 摘要: 温度是一个与人们生活和生产密切相关的重要物理量.温度的测量和控制技术应用十分广泛.在工农业生产和科学研究中,经常需要对某一系统的温度进行测量,并能自动的控制.调节该系统的温度.本设计采用的温度传感器是LM35温度传感器, LM35温度传感器是利用两种不同 ...

  • 单片机毕业设计题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...

  • 电气自动化设计论文题目大全
  • 机电一体化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数 ...

  • 电气自动化毕业设计论文题目
  • 电 气 自 动 化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机 ...

  • PLC毕业设计论文题目
  • P L C 第1-100个PLC毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MS ...