数字体温计的设计毕业设计(论文).doc_第1页
数字体温计的设计毕业设计(论文).doc_第2页
数字体温计的设计毕业设计(论文).doc_第3页
数字体温计的设计毕业设计(论文).doc_第4页
数字体温计的设计毕业设计(论文).doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

数字体温计的设计大连理工大学城市学院 本科生毕业设计(论文) 学 院: 电子与自动化学院 专 业: 电子信息工程 学 生: 李 斌 指导教师: 李美花 完成日期: 2015年5月20号 大连理工大学城市学院本科生毕业设计(论文)数字体温计的设计总计 毕业论文(论文) 54 页插图 34 幅表格 0 个摘 要随着人们物质生活水平的提高和科学技术的快速发展,采用微型控制器单片机控制是一个好的方向,它所带来的便利是我们大家有目共睹的,在此数字体温计就是一个非常典型的例子,但人们对它的要求越来越高,要做到为工作,科研,生活,提供更便捷的服务,就需要从单片机技术开始,向着数字化控制,智能化控制方向发展。本设计主要研究了基于单片机的原理而实现的数字体温计。设计分为硬件与软件两部分,其中硬件设计部分由数据采集模块,数据处理模块,体温显示模块,按键及报警模块,电源模块组成。采用c51语言进行编程,设计软件流程,通过调用各个子程序来实现体温计的功能。该设计应用单片机技术,实现了整体电路的设计及数据采集模块,数据处理模块,显示模块的整合,该设计可以实时监测体温,减少医务人员的工作负担。数字体温计在设计上主要体现方便实用的特点,操作起来简单,在很大程度上减少因测体温带来的一些不必要的麻烦,可以提高医护人员 的工作效率,从而减少因测温不准确带来一系列问题。该数字体温计与平时我们使用的体温计相比,具有测温范围广,读数准确方便,并且携带方便,不易破碎,精度高,最重要的是节能环保。 关键词:单片机;数字体温计;温度传感器 abstractwith the development of the peoples livelihood and the science technology, to use the single chip microcomputer control is one of the goals that most people pursue. it is no doubt that the mcu contributes a lot to peoples life of which the digital thermometer is the most typical example. with the increasing demand for digital thermometer, people need to start by the single-chip microcomputer technology to provide more convenient facilities for peoples work, science technology, as well as their life and to develop the technology in the direction of digital control and the intelligent control.the design of this paper focus on the digital thermometer based on the fundamentals of 51-mono-chip computers. with the two parts of hardware and software, the former part was made up by data acquisition module, data processing module, temperature display module, key and alert module as well as the power module. on the other hand, the whole process of designing the software is to implement the thermometer function by calling each subroutine in light of the c51 programming language. data acquisition module, data processing module and the display module in application of the single-chip microcomputer technology which can also monitor the body temperature all the time and reduce the burden of the medical staff.on the whole, the digital thermometer mentioned above combines all the merits of easy reading, wide measure range, accuracy, unbreakable and high precision compared to the traditional thermometers. key words: mono-chip computers;digital thermometer;ds18b20 目 录摘 要i目 录iii第1章 绪论11.1设计的目的及意义11.1.1设计论文的目的11.1.2设计论文的意义11.2课题研究任务及工作内容21.2.1设计论文的任务21.2.2重点研究内容21.3 国内外应用现状3第二章 数字体温计总体设计方案42.1数字温度计的设计方案42.2方案分析与论证:52.3方案的选择52.4 设计系统的组成6第三章 数字体温计的硬件组成73.1 数字体温计设计电路组成73.2 主控制芯片stc89c5273.2.1 stc89c52芯片的介绍:73.2.2 stc89c52的管脚配置和内部结构83.3单片机最小系统的设计103.4体温数据采集模块133.4.1ds18b20的性能特点143.5温度显示模块lcd1602153.5.1主要技术参数163.5.2引脚功能说明163.6报警电路的实现173.7电源模块17第四章 系统软件设计194.1 keil-c51语言介绍194.2 keil c51的优势194.3程序流程图204.4测温模块程序214.4.1读温度子程序214.4.2温度转换命令子程序244.4.3计算温度子程序264.5温度显示子程序294.6报警器程序设计32第五章 整体电路的设计以及仿真调试335.1 硬件电路仿真软件335.2整体硬件电路图的设计345.3 电路的仿真调试355.3.1仿真效果图365.4 印刷电路板pcb的设计405.4.1 pcb设计的方案405.4.2 电路板的调试405.5 数字体温计的实物制作以及调试415.5.1 制作流程415.5.2 实物调试42结 论43致 谢44iii第1章 绪论1.1设计的目的及意义1.1.1设计论文的目的 21世纪是数字化的社会,一切向着智能化发展,产品的更新换代的速度也是非常快,为了更好地体现科技带给我们的方便。为了提高医护人员的工作效率,减少患者的痛苦及其时间,而针对市面上及部分医院所使用的普通数显体温计,准确度不是很高,从而影响误差比较大,基于这一现状的,该数字体温计由单片机芯片stc89c52,液晶屏lcd1602,ds18b20温度传感器,+5v电源直流,以及常见的电子元器件组成,其优势是其测量精度较高,成本比较低廉,而且有按键设置功能,同时可以根据医护人员对体温的监测测定一个温度区间,当温度超出温度区间,报警器发出报警声音,更加能监护病情能快速准确地测量人体体温,与日常我们接触到的水银体温计相比,具有测量时间短,读数方便且精准,开发成本低廉,有记忆功能,超出温限蜂鸣提示等优点,特别是智能型的数字体温计不含化学物质水银,属于环境友好型材料,特别适合于日常家庭,办公场所,医院,机场火车站等人流较多的场合使用。1.1.2设计论文的意义智能型数字温度计与平时生活中所使用的体温计相比,具有读数便捷并且精准,同时可以通过按键设置温度区间,当低于或者高于人体正常温度,蜂鸣器发出报警,便于监测体温变化,其输出温度采用数字液晶屏lcd显示,主要用于对人体体温的监测,便于及时做出措施。该设计主要介绍了温度信号的采集然后传送给单片机进行处理,主要是温度的监测技术和单片机对信号的控制,以及对温度信号的处理,然后做出判断,单片机处理温度以后进行温度的转换,显示在lcd1602上,实时监测体温变化。监测技术和科学技术的发展是离不开的,现代化的监测是往智能化,数字化发展,监测是控制的基础,新型的传感器的发展是解决检测技术的根本,技术不断的更新,一切向着精准化,便捷化发展,给我们带来的好处但是不可否认的。从目前我国来看,温度控制方面发展的很快,以前的水银体温计,到热电阻体温计,电子体温计,到现在的数字体温计,主要的因素是精确度的限制,目前体温计中最重要是是它的灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。1.2课题研究任务及工作内容1.2.1设计论文的任务 熟练掌握单片机stc89c52的功能,掌握电子电路的一般设计方法和设计流程,学习简模拟单电路系统设计,熟练掌握微型控制器stc89c52,温度传感器ds18b20的使用方法,以及液晶显示屏lcd1602的驱动程序和显示方法,仿真软件protel和仿真软件proteus和keil的使用方法,以及程序设计的流程,编程以后进行仿真,硬件电路的焊接以及调试,完成数字体温计电路的功能。1.2.2重点研究内容 电子产品的设计,电路的整体设计,微型控制器单片机的设计以及功能实现,温度传感器ds18b20的使用,与单片机建立通信,将物理信号转化成数字信号,传输给单片机进行处理,然后再驱动液晶显示屏lcd1602,并把实时温度显示在液晶屏上,程序的设计以及编写、程序的仿真以及调试时重点研究内容。1.3 国内外应用现状最近随着科技的发展,传感器的使用越来越广泛。国外传感器技术起步比较早,发展的比较成熟,传感器类型也比较多。最近几十年,中国在传感器这方面发展的比较快,温度传感器种类繁多,产品技术更新很快,向着智能化和科技化方向发展。现如今物联网时代的到来,在各类电子产品上传感器的使用是越来越广泛,未来的发展趋势是物物相连,而传感器也向着科技化,智能化发展,未来的时代各类新型传感器将成为电子产品的主要组成部分。本论文主要介绍的是温度传感器,温度传感器的技术发展的越来越成熟,技术的不断更新,向着更便捷,更实用方向发展。温度传感器在各种场合使用范围广,数量种类比较多,居各类传感器之首。温度传感器的发展大致经历了以下3个阶段: 第一阶段:传统的分立式温度传感器(含敏感元件)热电偶传感器,主要是能够进行非电量和电量之间转换。 第二阶段:模拟集成温度传感器/控制器。集成传感器是采用硅半导体集成工艺制成的,因此亦称硅传感器或单片集成温度传感器。 第三阶段:智能温度传感器。它是微电子技术、计算机技术和自动测试技术(ate_)的结晶。智能温度传感器内部包含温度传感器、a/d传感器、信号处理器、存储器(或寄存器)和接口电路1。 第二章 数字体温计总体设计方案2.1数字温度计的设计方案 方案一:由于是测温度电路,很容易想到热敏电阻之类的热电元器件和其他类似的温度感测装置测量温度,所测量的温度将随电压或电流变化而变化,把变化的信号采集过来,在进行a / d转换,就可以使用微控制器单片机,用于处理数据,如温度传感器ad590,它是一种线性电流传感器,温度范围为55-150,在电路显示部分虽然可以清楚地显示温度,但是这样的设计需要a / d转换电路,这样的话增加了电路的设计的复杂度。 方案二:考虑使用非接触式的体温计,例如红外测温仪,利用分子之间红外光谱原理,为了获得精确的温度读数,测温仪与测试目标之间的距离必须在合适的范围之内,但这种体温计容易受到皮肤的干燥清洁度,空气温度,污染,电磁场等干扰因素的影响,造成误差比较大,而且成本比较高,不太适合家庭和医院使用。 方案三: 考虑到使用温度传感器ad590来进行测温电路的设计,在一般电子电路设计中都容易用到,ad590不带a/d转换,它是输出随温度而变化的电流信号,每变化一度电流变化1微安,用ad590测温,肯定要另加a/d转换器电路,这样的话就加大了硬件电路的设计。 方案四:再考虑到温度传感器ds18b20,结合电子电路设计和电子产品开发,在大多数电子产品设计中,应用单片机设计是很广泛的,是我们大家很容易想到的。很温度传感器有很多,比如大家都常用的ds18b20,但是它是三管脚器件,直接输出串行数字信号,且测温范围广,精度比较高,将物理信号转换成数字信号,传递给单片机进行处理,然后在液晶显示屏1602上显示,就可以满足设计要求。2.2方案分析与论证: 现实生活中大多数体温计多由水银制成,使用水银体温计不但测温时间长,还存在很多不便之处,比如读数不便,测温精确度不高,而且水银温度计一旦破碎了对环境污染非常大。随着科技的发展和社会的进步,人们更加喜欢往智能化,物联网时代发展,逐渐采用微型控制器来代替原来的水银体温计,使用单片机更加便捷而且易于控制,获得人们的喜欢和青睐,单片机的接口一般都是数字信号,使用单片机处理体温这类非电信号就需要通过温度传感器ds18b20采集信号以后将温度信号转换成电流或者电压信号,由于ds18b20直接输出数字信号不要ad转换,很方便并且ds18b20功耗低,抗干扰能力强,更好地适应电路设计的需要。 从以上四种方案论证分析得到采用方案四,从传感器角度来说ds18b20不需要ad转换,ad590需要转换,使用ds18b20传感器电路设计简单并且比ad590温度测量范围广,误差比较小,硬件电路简单,开销比较小,主要研究在于软件的设计,做到了开发软件从而节约硬件,灵活性比较高,所以综合以上四种方案选择第四种。2.3方案的选择经过以上几种方案分析,最终确定选择方案四。采用方案四设计的数字体温计和日常生活中所见到的体温计比较,具有功耗低,读数方便快捷,测温范围广且精准,最重要的优势是使用ds18b20传感器输出的信号是数字信号,不需要进行ad转换,把数字信号传送给单片机89c52进行数字信号处理与转换,将实时温度显示在lcd1602液晶屏上,其输出也是采用数字显示,可以及时作出调整。该数字体温计还可以通过外部独立按键设置体温区间,设置三个独立按键,一个是选择复位按键,另外两个是温度上调和下调。当体温不在设置范围内时,可以发出报警信号,方便实时测量监控体温变化。2.4 设计系统的组成 从以上四种方案分析来看,采用方案四设计的数字体温计无论从硬件的使用上来说,还是从软件的设计来看都比其他几种方案略胜一筹。采用温度传感器ds18b20,不需要进行ad转换,单总线通信进行数据交换,在硬件电路设计上做到了传感模块的灵活应用。在软件编程设计上也是做到了编程的灵活性,实现了模块的对接与整合。下图是该设计的总体设计方框示意图,如下图2-1所示,图2-1温度计电路设计总体设计方框示意图 第三章 数字体温计的硬件组成3.1 数字体温计设计电路组成硬件电路包括六个模块(1) 主控制芯片:stc89c52;(2) 温度采集模块:ds18b20温度传感器;(3) 外围接口电路:stc89c52的电路系统设计;(4) 温度显示模块:液晶显示屏lcd1602;(5) 温度超出范围的报警模块:蜂鸣器报警模块;(6) 电源模块:usb接口,+5v电源接入; 该设计由以上六个模块组成,在硬件设计上整合各个模块,比如传感器模块,信号采集模块,通过调用各个模块实现设计的功能,在外围电路设计上做到了简约,减少硬件电路设计的复杂度,方便后期程序的调整与移植。下面是数字体温计硬件电路图,如下图 图3-1所示:图3-1硬件电路图3.2 主控制芯片stc89c523.2.1 stc89c52芯片的介绍: stc89c52芯片是stc公司生产的一种高性能,低耗能的微控制器,属于标准的mcs-51的hcmos产品,也叫单片微型计算机单片机。是一种集成电路芯片,将cpu、存储器、定时计数器、i/o接口电路等集成在一个芯片。是stc公司推出的新一代高速、使用、低功耗、超强抗干扰的单片机,在系统内部具有8k的可编程flash存储器。stc89c52使用经典的mcs-51内核,mcs-51内核与传统51单片机有很大区别,其增进了51单片机没有的功能,使应用的范围更广2。在其内部的芯片上,拥有便于操作的8 位cpu和 可编程flash存储器,512字节ram, 32 位i/o 口线,看门狗定时器,内置4kb eeprom,max810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 stc89c52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35mhz,6t/12t可选。显然在众多单片机控制系统中stc89c52rc具有很高的灵活性、使编程更加方便,更有利于实际操作并运行3。3.2.2 stc89c52的管脚配置和内部结构stc89c52单片机片内除了包含中央处理单元(cpu)、程序处理器(flash)、数据存储器(sram)、定时/计数器、uart串口、i/o接口、eeprom、看门狗等重要模块外,还包含了指针、累加器、锁存器、驱动器、地址生成器、以及控制单元等,它差不多涵盖了数据采集和控制中所需要的各种单元模块,可称得上一个片上系统。四个端口中两个端口就能够满足设计需要电路系统,设计为使用该系统非常适合用于便携式手持产品。总之,stc89c52的内部比较复杂,但是在进行过程控制或数据处理时却有条不紊,而且非常高效快速,性能优越。stc89c52的管脚比较多,各个管脚的功能也不相同。除此之外单片机stc89c52有两种模式,空闲模式和掉电模式。在空闲模式下,cpu停止,但ram,定时器,计数器,串行口和中断系统仍在工作。在掉电模式,保存ram的内容,并冻结振荡器,禁止使用其他芯片功能,直到下一个硬件复位。它们共同作用,相互协同,一起实现单片机的功能。图3-2 stc89c52芯片的引脚图 单片机stc89c52具有40个引脚,这40个引脚按其功能可以分为3类:(1)电源及时钟引脚vcc、gnd,xtal1、xtal2;(2)控制引脚psen、ale、ea、rst;(3)i/o接口引脚p0、p1、p2、p3,为4个8位i/o口的外部引脚。 在这40个引脚中,有的引脚功能较为单一,有的引脚却具有双重功能,如p3这8个引脚。对于具有双重功能的引脚,它们分别在高、低电平的作用下具有不同的功能。stc89c52单片机的管脚图如图3-2所示。p3口也可作为stc89c52的一些特殊功能口,如下表3-1所示:表3-1 p3口特殊引脚功能介绍端口引脚 第二功能 说明 p3.0 rxd 串行数据输入口 p3.1 txd 串行数据输出口 p3.2 int0 外部中断0输入 p3.3 int1 外部中断1输入 p3.4 t0 定时器0外部计数输入 p3.5 t1定时器1外部计数输入 p3.6 wr 外部数据存储器写选通输出 p3.7 rd 外部数据存储器读选通输3.3单片机最小系统的设计 单片机最小系统在电子电路设计中应用的最为广泛,是实现单片机设计的基础。单片机最小系统是能使单片机正常工作的最小硬件单元电路,单片机最小系统电路是以单片机stc89c52作为mcu。系统包括时钟电路,复位电路和下载电路,单片机最小系统复位电路的极性电容c1的大小直接影响单片机的复位时间,一般采用1030uf,51单片机最小系统容值越大需要的复位时间越短。单片机最小系统起振电容c2、c3一般采用1533pf,并且电容离晶振越近越好,晶振离单片机越近越好4。如图3-3所示图3-3 单片机最小系统设计图3.3.1时钟电路 单片机可以看成是在时钟驱动下的时序逻辑电路。单片机片内有一个高增益的反相放大器。当外接晶振后,就构行一条指令,必须要用12个时钟周期。没有这个时钟,单片机就跑不起来。单片机内部有一个振荡器,有两个引脚,输入引脚xtal1和输出引脚xtal2,这两个引脚通过跨接石英振荡器和微调电容,以形成稳定的自激振荡,使该设备可以作为时钟控制信号工作的有序开展,有条不紊的进行工作5。 下图3-4是时钟电路图电路图。图3-4时钟电路3.3.2 复位电路单片机复位电路分为两种方式,一个是自动复位还有一个手动复位。第一种是自动复位方式,只要在复位引脚rst端加多于两个机器周期的高电平就可以,因此在复位端加上一个电容器和电阻器用于充电和放电就可以实现。如图3-5所示。图3-5上电自动复位电路 图3-6 手动复位电路单片机电路还有另一种复位方式,即使用手动复位方式。当按键sw-pb按下时,rst端连接电阻接地为显示为低电平,此时单片机正常工作,若按键sw-pb按下时,rst端接5v高电平就实现手动复位,复位实现起来更加方便,如上图3-6所示。3.4体温数据采集模块美国dallas半导体公司推出的智能型温度传感器ds18b20,具有三个引脚,该传感器与其他热敏电阻温度测量设备相比,它具有的优点很多,比方说接线方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域,封装成后可应用于多种场合比如说可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,现代农业大棚测温,洁净室测温,弹药库测温等多种非极限温度场合。并且其耐磨耐碰,体积小,使用起来很方便,其次它还可以直接与单片机进行相连,可以便捷的读出被测温度。ds18b20是一个可编程的,通过单总线方式进行通信的数字温度传感器,它有一个存储在内部存储器唯一的64位的序列号,温度分辨率可以选择912(二进制)的数字,而无需外部设备直接指示6。其发送端和接收端通过一个只有一个电缆(加线)测得的温度值单线接口接收信号,经过ds18b20传感器处理的信号是数字信号,所以不需a/ d转换,在电路设计上是一个不错的选择。同时单片机进行读写数据指令以及进行温度转换指令,都是通过数据总线这种方式传入ds18b20,无需外部电源供电,温度传感器能测量的温度范围是在-55至125的。温度传感器ds18b20有三个引脚,分别为gnd,dq,vcc,封装体积小,下图3-7是to92封装的ds18b20的引脚图,见下图3-7,其引脚功能描述见表3-2图3-7 ds18b20的引脚表3-2ds18b20详细引脚功能描述序号名称引脚功能描述1gnd接地信号2dq温度信号输入/输出引脚。3vdd可选择的vdd引脚。当工作于寄生电源时,此引脚必须接地。3.4.1ds18b20的性能特点温度传感器ds18b20,体现了温度传感器的模块化,因此在测量温度过程中不需要借助任何外围元件,传感器内部封装了传感元件,及温度采集电路,温度转换电路,温度处理电路集成在一个类似三极管的器件内,数字型温度传感器具有很多特点:(1)数据通信使用独特的单总线接口,只需要一个引脚就能实现;(2)可以实现多点组网功能,支持多个ds18b20信号采集;(3)零待机功耗,并且可通过数据线供电,电压范围为3.05.5;(4)温度分辨率可以选择912位(二进制)的数字;(5)用户可根据设计需要定义报警设置;(6)保护功能,接反时不会因发热而烧毁,但不能正常工作; 温度传感器ds18b20其内部结构框图如下图,如图3-8所示。图3-8温度传感器ds18b20其内部结构框图ds18b20有64位rom结构,前8位是产品类型的编号,接着的48位是每个器件的惟一的序号,最后8位是前面序号的crc检验码,正因为crc效验码才可以让多个ds18b20可以在一个总线线进行通信的原因。可通过软件写入th和tl,设置温度区间,超出设置温度区间打出报警信号。此外ds18b20通信功能有严格的时隙的概念,因此读取和写入数据时序是很重要的。根据ds18b20协议各种操作系统协议:初始化ds18b20(发送复位脉冲)发rom功能命令发送操作命令内存中的数据处理3.5温度显示模块lcd1602液晶显示屏lcd1602模块是工业字符型液晶,1602液晶模块内部的字符发生存储器可以存储了160个不同的点阵字符图形,像阿拉伯数字、英文字母、常用的符号、和日文假名等。目前有多种显示字符模式使用16*1,16*2,20*2和40*2等。lcd1602按显示亮度分为两种,一种是带背光,另外一种是不带背光,大多是基于控制器hd44780,背光的比较偏厚,在应用中被没有太大差别7。3.5.1主要技术参数主要技术参数如下表3-3所示:表3-3 主要技术参数显示容量162个字符芯片工作电压4.55.5v工作电流2.0ma(5.0v)模块最佳工作电压5.0v字符尺寸2.954.35(wh)mm3.5.2引脚功能说明一般1602lcd采用标准的14脚(无背光)或16脚(带背光)接口lcd1602的引脚分为如下几类:(1) 电源及接地引脚:vss,vdd;(2) 使能以及读写引脚:e,rs,r/w;(3) 背光源正负极引脚:bla,blk;(4) 数据传输引脚:d0,d1,d2,d3,d4,d5,d6,d7; 1602液晶模块的显示以及操作都需要指令代码的,比如读写操作、屏幕和光标的操作都是通过指令编程来实现的。指令有很多, 分为几类:分别是指令1光标显示,指令2光标复位,指令3光标移动,高电平右移,低电平左移,指令4显示开关控制,指令5光标或显示移位 ,高电平时移动显示的文字,低电平时移动光标,指令6功能设置命令,指令7字符发生器ram地址设置,指令8ddram地址设置,指令9读忙信号和光标地址 bf,指令10写数据,指令11读数据。 lcd1602和单片机的接口是不需要转换电路的,可以直接实现模块的对接,1602液晶显示模块可以和单片机stc89c52直接接口,下面是连接的电路图,如图3-9所示,从下图能看到单片机的io口可以直接和液晶显示器的数据传输接口对接,在硬件电路上可以很好设计。图3-9 1602液晶模块和单片机连接3.6报警电路的实现 当温度传感器检测到的体温不在可检测的范围之内,也就是说超出设定范围了,这时单片机处理这个信号,单片机外围接有源蜂鸣器,出现这种情况单片机给接有蜂鸣器那个引脚一个高电平脉冲信号,蜂鸣器接通发出报警信号,起到实时监测控制功能。数字体温计上有三个独立按键,可以通过按键设置需要的体温权限。一共设置了三个按键,一个是复位选择按键,另外两个是温度上调和温度下调按键。其次是复位电路上电复位和手动复位。当程序运行外出现意外时,可以手动复位,所以不要重新启动电源的微控制器,也可以是复位。3.7电源模块 电源模块采用直流+5v电源输入,符合单片机正常工作电压范围,为了考虑到使用便捷,采用usb方式供电,电流输出稳定,波动小,同时使用usb供电使得数字体温计有了很好的便携性,有更好的应用型还可以随时方便测体温,便于监测。第四章 系统软件设计软件设计部分采用keil-c51单片机c语言来进行设计,使用这种语言在一定程度上可以更好地和单片机进行兼容,简化软件开发。而且逻辑性更强,减小操作过程中发生死循环的和失控的可能性。系统软件程序包括主程序,温度读取程序,温度转换程序,温度处理计算程序,显示温度程序,超出温度报警程序。4.1 keil-c51语言介绍keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,由两家私营公司,分别为美国的keil软件公司和德国的keil elektronik公司。是支持8051微控制器体系结构的开发工具,在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部分组合在一起。,包括ansi c编译器,宏汇编器,调试器联合行动,链接器,库管理器,固件和实时操作系统内核(实时内核)8。4.2 keil c51的优势与汇编语言相比,keil c51语言在功能和结构性上有明显的优势,并且具有可读性和可维护性。keil提供了很多功能,包括c语言,编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发系统,通过一个集成开发环境将这些部分整合在一起。用c语言编程,那么使用keil在软件设计也有很多优势。即使不使用c语言而仅用汇编语言编程,它具有的集成环境、强大的软件仿真调试工具也会让你在设计中得心应手,在开发大型软件时更能体现高级语言的优势9。keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,在调用函数过程中很方便。使用keil c51生成的目标代码效率和质量非常高,语句生成的汇编代码结构很紧凑,容易理解。4.3程序流程图主程序的主要功能是负责温度信号的采集和温度的实时显示、读出并处理ds18b20测量的当前温度值,温度测量是实时进行的,每经过1s采集一次。这样可以在一秒之内迅速测量一次被测温度,通过把采集到的信号传输给单片机进行分析和处理,单片机进行处理进行温度转换,进行温度处理后然后在lcd1602上显示,读有出实时温度,通过按键可以设置温度区间,温度超过设置的区间,启动蜂鸣器报警,便于及时监测病人体温变化。如下图4-1为主程序流程图:图4-1主程序流程图主函数如下,通过主函数调用各个子函数,来实现体温计功能void main()init_lcd();/初始化lcdtmod=0x01;/定时器0,方式1th0=0x3c;/50ms溢出一次tl0=0xb0;tr0=1;/启动定时器0et0=1;/开定时器0ea=1;/开总中断while(1)key();/调用按键函数baojing();/调用报警函数4.4测温模块程序ds18b20是在一根线上实现数据的双向传输,并且需要严格的通信协议来保证每位数据传输的准确性和完整性,首先将ds18b20进行初始化,复位ds18b20,然后单片机进行等待ds18b20的应答脉冲信号,单片机检测到应答脉冲,便发起跳过rom匹配操作命令,成功执行rom操作命令后,就可以使用内存操作命令启动温度转换,延时一段时间后等待温度转换。然后再发起跳过rom匹配操作命令,最后读暂存器将转换结果读出,并转换为显示码传送给液晶显示。4.4.1读温度子程序 当ds18b20采集到温度信号以后,传送给单片机进行处理,单片机处理以后进行温度信号的转换。执行读温度子程序,其主要功能是负责读出ram中的9字节,在读取过程需进行crc校验,当检测到校验有错时不进行温度数据的改写。其程序流程图如图4-2所示4-2读温度子程序图void reset()/ds18b20的复位函数uchar x=0;dq=1;/使总线为高电平delay1(8);/延时dq=0;/使总线为低电平delay1(80);/延时,大于480usdq=1;/使总线为高电平delay1(14);/延时,等待ds18b20回应低电平x=dq;/将ds18b20的回应读到变量x,用于判断复位delay1(20);/延时一段时间结束void writecmd(uchar cmd)/ds18b20的写字节函数uchar i=0;/定义位循环变量for(i=8;i0;i-)/循环8次dq=0;/总线拉低dq=cmd&0x01;/将发送字节的最低位送到总线delay1(5);/延时(30us),等待ds18b20取走总线数据dq=1;/总线拉高cmd=1;/将待发送的字节右移后,继续发送uchar readdat()/ds18b20的读字节函数uchar i=0;/定义位循环变量uchar temp=0;/定义暂存变量for(i=8;i0;i-)/循环8次dq=0;/总线为低电平temp=1;/暂存变量右移dq=1;/总线拉高,执行如下的读操作if(dq)/如果ds18b20输出高电平temp|=0x80;/将暂存变量的最高位置1delay1(4);/延时一段时间return temp;/程序结束后,将暂存变量返回调用程序4.4.2温度转换命令子程序 该设计通过按键设定体温区间,设定三个按键,一个是选择按键兼复位按键,另外的一个是温度向上调节,另外一个是温度下调,通过三个按键设置报警温度区间。所以在程序编写上也是体现了按键的功能,在软件设计中,按键按一次,进行延时,lcd光标闪烁进行选择,再按一次按键, 因为温度转换命令子程序主要是指温度转换开始命令,所以当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如下图4-3所示,图4-3温度转换命令子程序key() if(xuanze=0)/如果选择键按下delay(50);/延时消抖if(xuanze=0)/如果按键还处于按下状态 num+;/次数加1 while(!xuanze);/等待按键抬起;if(num=1)/如果按下选择键的次数为1 tr0=0;/关闭中断 write_com(0x80+0x00+5);/光标移到第一行第七个位置 write_com(0x0f);/设置为显示开,开光标,闪烁 if(num=2)/ 如果按下选择键的次数为2 write_com(0x80+0x00+13);/光标移到第一行第十五个位置if(num=3)/如果按下选择键的次数为3 num=0;/次数清零 write_com(0x0c);/设置为显示开,关光标,不闪烁 tr0=1;/开中断 if(num!=0)/在选择键按下时 if(up=0)if(num=1)/如果按下选择键的次数为1tr0=0;/关闭中断write_com(0x80+0x00+5);/光标移到第一行第七个位置write_com(0x0f);/设置为显示开,开光标,闪烁if(num=2)/如果按下选择键的次数为2write_com(0x80+0x00+13);/光标移到第一行第十五个位置if(num=3)/如果按下选择键的次数为3num=0;/次数清零write_com(0x0c);/设置为显示开,关光标,不闪烁tr0=1;/开中断 4.4.3计算温度子程序 计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图4-4所示图4-4计算温度子程序程序如下:void timer0() interrupt 1/定时器0中断,中断标号为1uint result;th0=0x3c;tl0=0xb0;timecount+;/每中断一次,time count加1if(time count=20)/中断定时达到1s,50ms*20=1stime count=0;/ time count清零reset();/复位ds18b20write cmd(0xcc);/向ds18b20发送跳过rom搜索命令write cmd(0x44);/启动一次温度转换reset();/复位ds18b20write cmd(0xcc);/向ds18b20发送跳过rom搜索命令write cmd(0xbe);/发送读温度的命令read date0=readdat();/读温度的低8位read date1=readdat();/读温度的高8位 sflag=0;/置负号标志为0 if( read date1&0xf8)!=0x00)/如果是负温度值,执行如下取补码语句 sflag=1; read date1= readdate1;/高位取反码 read date0=readdate0;/低位取反码 result=read date0+1;/反码加1 read date0=result;/将取补的高温度值,送回数组 if(result255)/如果低8位有进位,则高8位加1 read date1+; test0=read date0;/低8位值赋予test0 test1=read date1;/高8位值赋予test1 test=(read date1*256)+read date0)/16;/取出整数部分温度值 test0=(test0|0x0f)/16;/取出小数部分温度值reset();/复位ds18b20write cmd(0xcc);/向ds18b20发送跳过rom搜索命令 write cmd(0x44);/启动下次温度测量/以下是温度值处理部分 write_com(0x80+0x40+0x05); if(sflag=1) write_data(-);/如果测得的温度为负值,显示负号 else write_data(+);/如果测得的温度为正值,显示正号 a1=(test/10)|0x30;/温度整数部分的十位 a2=(test%10)|0x30;/温度整数部分的个位 write_com(0x80+0x40+0x06); write_data(a1);/显示温度整数部分的十位 write_data(a2);/显示温度整数部分的个位 write_data(.);/显示小数点a3=(test0/10)|0x30;/温度小数部分的十分位 write_data(a3); /显示温度小数部分的十分位 4.5温度显示子程序首先初始化液晶显示器lcd1602 ,然后通过ds18b20采集到的温度信号经过单片机处理以后,传送给1602进行显示,不断刷新来检测实时温度。流程图如下图4-5所示,图4-5温度显示子程序首先是初始化sbit rs=p30;sbit rw=p31;sbit e=p32;uchar tmp5=temp:;uchar tmp6=。c;uchar code tab1=t

温馨提示

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

评论

0/150

提交评论