温度传感器设计方案_第1页
温度传感器设计方案_第2页
温度传感器设计方案_第3页
温度传感器设计方案_第4页
温度传感器设计方案_第5页
免费预览已结束,剩余71页可下载查看

下载本文档

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

文档简介

温度传感器设计方案第一章 绪论本课题研究的背景和意义及发展趋势在人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪里,从事,无时不刻不在与温度打着交道。自 18世纪工业革命以来, 工业发展与是否能掌握温度有着密切的联系。 在冶金、钢铁、石化、水泥、玻璃、医药等行业,可以说几乎 80%的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的发展。传感器主要大体经过了三个发展阶段: 模拟集成温度传感器。 该传感器是采用硅半导体集成工艺制成, 因此亦称硅传感器或单片集成温度传感器。 此种传感器具有功能单一 (仅测量温度 )、测温误差小、 价格低、响应速度快、 传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。它是目前在国外应用最为普遍的一种集成传感器,典型产品有 AD590、AD592TMP17LM135等;模拟集成温度控制器。模拟集成温度控制器主要包括温控开关、可编程温度控制器,典型产品有 LM56AD2210用口MAX6509某些增强型集成温度控制器(例如TC652/653)中还包含了A/D转换器以及固化好的程序,这与智能温度传感器有某些相似之处。但它自成系统, 工作时并不受微处理器的控制,这是二者的主要区别;智能温度传感器。能温度传感器 (亦称数字温度传感器)是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。智能温度传感器部都包含温度传感器、 A/D转换器、信号处理器、存储器 (或寄存器 )和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM和只读存储器(ROM)智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的, 其智能化程度也取决于软件的开发水温度传感器的研究意义:本课题研究的重要意义在于生产过程中随着科技的不断发展, 现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长, 而如何准确而又迅速的获得这些参数, 就需要受制于现代信息基础的发展水平。 在三大信息信息采集(即传感器技术) 、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品, 尤其是数字温度传感器技术, 在我国各领域已经应用的非常广泛可以说是渗透到社会的每一个领域, 与人民的生活和环境的温度息息相关。温度是一个和人们生活环境有着密切关系的物理量, 也是一种在生产、 科研、生活中需要测量和控制的重要物理量, 是国际单位制七个基本量之一。 其测量控制一般产用各式各样形态的温度传感器。 [3]在传统的温度测量系统设计中,往往采用模拟技术进行设计, 这样就不可避免地遇到诸如引线误差补偿、 多点测量中的切换误差和信号调理电路的误差等问题; 而其中某一环节处理不当, 就可能造成整个系统性能的下降。 随着现代科学技术的飞速发展, 特别是大规模集成电路设计技术的发展, 微型化、集成化、数字化正成为传感器发展的一个重要方向。美国Dallas半导体公司推出的数字温度传感器DS18B20具有独特的单总线接口,仅需要占用一个通用I/O端口即可完成与微处理器的通信;在-10〜+85C温度围具有0.5c精度;用户可编程设定9〜12位的分辨率。以上特性使得DS18B20t常适用于构建高精度、多点温度测量系统。温度传感器的发展趋势:进入21世纪后,温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、 开发虚拟传感器和网络传感器、 研制单片测温系统等高科技的方向迅速发展。传感器在温度测控系统中的应用。目前市场主要存在单点和多点两种温度测量仪表。 对于单点温测仪表, 主要采用传统的模拟集成温度传感器, 其中又以热电阻、 热电偶等传感器的测量精度高,测量围大, 而得到了普遍的应用。 此种产品测温围大都在 -200℃~800℃之间,分辨率12位,最小分辨温度在0.001〜0.01之间。自带LED显示模块,显示4位到16位不等。有的仪表还具有存储功能,可存储几百到几千组数据。该类仪表可很好的满足单个用户单点测量的需要。 多点温度测量仪表, 相对与单点的测量精度有一定的差距,虽然实现了多路温度的测控,但价格昂贵。针对目前市场的现状, 本课题提出了一种可满足要求、 可扩展的并且性价比高的单片机多路测温系统。本课题的任务和系统设计目标课题的主要任务是用 80C51设计一个多温度检测系统, 整个系统由单片机控制,要能够接收传感器的数据并显示出来, 可以从软件设计输入命令, 系统根据命令,选择对应的传感器, 并由驱动电路驱动温度显示。 根据该课题首先要解决的问题是对相关软硬件的熟悉和了解, 并学习相关知识。 然后对该检测系统需要的模块(包括单片机主控制器,四点温度检测, A/D转换电路的实现,数码显示电路,蜂鸣器电路,等)进行分析,最后用Proteus与KEIL连接并仿真,最终进行调试运行。开发工具:Proteus仿真软件,KEIL编程软件。系统总体设计思想是以单片机为控制核心 ,整个系统硬件部分包括多个温度检测部分、 控制执行部分、 显示及键盘系统及最小系统基本电路。系统利用单片机获得多个温度传感器数据并与系统设计值进行比较 ,根据比较结果分别控制执行系统。然后再进行 Proteus仿真。本课题研究容(1)利用单片机,确定系统的总体设计方案,包括其功能设计;设计原则;组成与工作原理;(2)对单片机的应用作进一步的了解,对于温度控制要有更进一步的认识。进行智能传感器的硬件电路设计;包括硬件电路构成及测量原理;温度传感器的选择;单片机的选择;输入输出通道设计;(4)本系统采用层次化、模块化设计,整个系统由数据采集系统、单片机控制系统、计算机监控系统组成。进行了调试和仿真,包括硬件仿真和软件仿真,完成数据的采集和处理。

第二章方案论证比较与选择引言温度测量的方案有很多种,可以采用传统的分立式传感器、模拟集成传感器以及新兴的智能型传感器。对于控制系统可以采用单片机等。方案设计设计方案一采用模拟式分立元件,如电容、电感或晶体管等非线形元件,进行A/D转换后,就可以用单片机进行数据的处理,实现多个点温度的测量以及显示, 该方案设计电路简单易懂,操作简单,且价格便宜,但采用分立元件分散性大,不便于集成数字化,而且测量误差大。设计方案二本方案采用80C51单片机为核心,通过温度传感器AD590R集温度信号,经信号放大器放大后,送到A/D转换芯片,最终经单片机检测处理温度信号单 LED>片< >显示机图2.1方案二的框图如图2.1,采用该方案技术已经成熟, A/D转换电路设计较烦琐,而且使用AD590进行温度检测必须对冷端进行补偿,以减小误差。2.2.3设计方案三本方案采用 80C51作为该系统的单片机。 系统整体硬件电路包括 :电源电路,复位电路,晶振电路,传感器电路,温度显示电路,上下限报警电路等。报警电路可以在被测温度不在上下限围时,发出报警鸣叫声音。当 DSl8B20采集到多个温度信号后,进行电信号转换送至 80C51中处理,同时将温度送到显示数码管显示,单片机根据初始化设置的温度上下限进行判断处理, 即如果温度大于所设的最高温度和小于所设定的最低温度就启动报警装置。整个系统由单片机控制, 要能够接收传感器的数据并显示出来, 可以从键盘输入命令,系统根据命令,选择对应的传感器,并由驱动电路驱动温度显示。并与预先设定值进行比较,然后由单片机输出信号去控制报警电路DS18B20PJ用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。系统框图如下:

图2.2方案三的系统框图方案的比较与选择基于数字式温度计DS18B20勺温度测量仪的硬软件开发过程,DS18B20等温度信号直接转换为数字信号,实现了与单片机的直接接口,从而省去了信号调理电路。该仪器电路简单、功能可靠、测量效率高,很好地弥补了传统温度测量方法的不足。 相对与方案 1,在功能、性能、可操作性等方面都有较大的提升。相对与方案 2,硬件电路简单,易于操作,具有更高的性价比,更大的市场。所以我采用方案 3完成本设计。方案的阐述与论证方案三以DS18B2的传感器、80C51^片机为控制核心组成多点温度测试系统,该系统包括电源电路,复位电路,时钟电路,传感器电路,键盘与温度显示电路,上下限报警电路, 驱动电路等组成部。采用美国 Dallas半导体公司推出的数字温度传感器DS18B20属于新一代适配微处理器的智能温度传感器。它具有独特的单总线接口,仅需要占用一个通用 I/0端口即可完成与微处理器的通信。全部传感元件及转换电路集成在形如一只三极管的集要求通过简单的编程实现9〜12位的数字值读数方式。其可以分别93.75m手口750m交成9位和12位的数字量,最大分辨率为0.0625C,而且从DS18B2嵌出或写入DS18B2的信息仅需要一根口线(单线接口)读写。它有如下的性能特点:独特的单线接口, 既可通过串行口线, 也可通过其它 I/O口线与微机接口,无需变换其它电路,直接输出被测温度值;多点能力使分布式温度检测应用得以简化;不需要外部元件;既可用数据线供电,也可采用外部电源供电;不需备份电源;6)测量围为-55〜+125C,固有测温分辨率为0.5c;7)通过编程可实现9〜12位的数字读数方式;用户可定义非易失性的温度告警设置;警告搜索命令能识别和寻址温度在编定的极限之外的器件 (温度警告情况);10)应用围包括恒温控制、工业系统、消费类产品、温度计或任何热敏系统。以上特性使得DS18B20上常适用于构建高精度、多点温度测量系统根据DS18B20Z上的特点我选用方案三来实现本课题。第三章 硬件设计本课题研究的多点测温系统是以单片机和单总线数字温度传感器 DS18B20为核心,充分利用单片机优越的部和外部资源及数字温度传感器 DS18B20勺优越性能构成一个完备的测温系统, 实现对温度的多点测量。 整个系统由单片机控制,能够接收传感器的温度数据并显示出来,可以从键盘输入命令,系统根据命令,选择对应的温度传感器,并由驱动电路驱动温度显示。本课题设计了一种合理、可行的单片机监控软件, 完成测量和显示的任务。 由于单片机具有强大的运算和控制功能,使得整个系统具有模块化、硬件电路简单以及操作方便等优点。本课题的整个系统主要是由单片机、 显示电路、 键盘电路、 驱动电路等构成。温度传感器温度传感器选用细则现代传感器在原理与结构上千差万别, 如何根据具体的测量目的、 测量对象以及测量环境合理地选用传感器, 是在进行某个量的测量时首先要解决的题。 当传感器确定之后, 与之相配套的测量方法和测量设备也就可以确定了。 测量结果的成败,在很大程度上取决于传感器的选用是否合理。根据测量对象与测量环境确定传感器的类型要进行—个具体的测量工作, 首先要考虑采用何种原理的传感器, 这需要分析多方面的因素之后才能确定。 因为,即使是测量同一物理量, 也有多种原理的传感器可供选用, 哪一种原理的传感器更为合适,则需要根据被测量的特点和传感器的使用条件考虑以下一些具体问题:量程的大小; 被测位置对传感器体积的要求; 测量方式为接触式还是非接触式;信号的引出方法,有线或是非接触测量;传感器的来源,国产还是进口,价格能否承受,还是自行研制。 2)灵敏度的选择通常,在传感器的线性围,希望传感器的灵敏度越高越好。 因为只有灵敏度高时,与被测量变化对应的输出信号的值才比较大,有利于信号处理。 但要注意的是,传感器的灵敏度高, 与被测量无关的外界噪声也容易混入, 也会被放大系统放大,影响测量精度。因此,要求传感器本身应具有较高的信噪比,尽员减少从外界引入的串扰信号3)频率响应特性传感器的频率响应特性决定了被测量的频率围, 必须在允许频率围保持不失真的测量条件,实际上传感器的响应总有—定延迟,希望延迟时间越短越好。传感器的频率响应高,可测的信号频率围就宽,而由于受到结构特性的影响,机械系统的惯性较大,因有频率低的传感器可测信号的频率较低。4)线性围传感器的线形围是指输出与输入成正比的围。以理论上讲,在此围,灵敏度保持定值。传感器的线性围越宽,则其量程越大, 并且能保证一定的测量精度。在选择传感器时,当传感器的种类确定以后首先要看其量程是否满足要求。但实际上,任何传感器都不能保证绝对的线性, 其线性度也是相对的。 当所要求测量精度比较低时, 在一定的围, 可将非线性误差较小的传感器近似看作线性的,这会给测量带来极大的方便。稳定性传感器使用一段时间后, 其性能保持不变化的能力称为稳定性。 影响传感器长期稳定性的因素除传感器本身结构外,主要是传感器的使用环境。因此, 要使传感器具有良好的稳定性, 传感器必须要有较强的环境适应能力。 在选择传感器之前,应对其使用环境进行调查, 并根据具体的使用环境选择合适的传感器, 或采取适当的措施,减小环境的影响。精度精度是传感器的一个重要的性能指标, 它是关系到整个测量系统测量精度的一个重要环节。传感器的精度越高,其价格越昂贵,因此,传感器的精度只要满足整个测量系统的精度要求就可以, 不必选得过高。 这样就可以在满足同一测量目的的诸多传感器中选择比较便宜和简单的传感器。如果测量目的是定性分析的, 选用重复精度高的传感器即可, 不宜选用绝对量值精度高的;如果是为了定量分析, 必须获得精确的测量值, 就需选用精度等级能满足要求的传感器。对某些特殊使用场合, 无法选到合适的传感器, 则需自行设计制造传感器。自制传感器的性能应满足使用要求。3.1.2温度传感器 DS18B20DS18B2型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器。全部传感元件及转换电路集成在形如一只三极管的集成电路。 与传统的热敏电阻相比, 它能够直接读出被测温度, 并且可根据实际要求通过简单的编程实现9〜12位的数字值读数方式。其可以分别93.75m手口750m交成9位和12位的数字量,最大分辨率为0.0625C,而且从DS18B201出或写入DS18B2的信息仅需要一根口线 (单线接口 )读写。.DS18B2的性能特点单线数字化智能集成温度的传感器,其特点是:①DSI8B2M将被测温度直接转换成计算机能识别的数字信号输出,温度值不需要经电桥电路先获取电压模拟量,再经信号放大和A/D转换成数字信号,解决了传统温度传感器存在的因参数不一致性,在更换传感器时会因放大器零漂而必须对电路进行重新调试的问题,使用方便.②DS18B2能提供9到12位温度读数,精度高,且其信息传输只需1根信号线,与计算机接口十分简便,读写及温度变换的功率来自于数据线而不需额外的电源.

③每一个DS18B2都有一个惟一的序列号,这就允许多个DS18B2硅接到同一总线上.尤其适合于多点温度检测系统.④负压特性:当电源极性接反时,DS18B201然不能正常工作,但不会因发热而烧毁正是由于具有以上特点,DS18B20E解决各种误差、可靠性和实现系统优化等方面与传统各种温度传感器相比, 有无可比拟的优越性,因而广泛应用于过程控制、环境控制、建筑物、过程控制、环境控制、建筑物、图3.1DS18B20外部形状及管脚图⑵.DS18B201单片机的典型接口设计DS18B2测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。DS18B2叫单片机的硬件连接有两种方法:一是VC援外部电源,GN接地,I/0与单片机的I/0线相连;二是用寄生电源供电,此时,~UD甘口GN接地,I/0接单片机I/0。无论是哪种供电方式,I/0口线都要接4.7kQ左右的上拉电阻。图4给出了DSl8B2(0t微处理器的典型连接。①DS18B2CW生电源供电方式:如下面图3.2(a)所示,在寄生电源供电方式下,DS18B2弥单线信号线上汲取能量:在信号线DQt于高电平期间把能量储存在部电容里, 在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。独特的寄生电源方式有三个好处:1)进行远距离测温时,无需本地电源2)可以在没有常规电源的条件下读取 ROM3)电路更加简洁,仅用一根 I/O口实现测温要想使DS18B2进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B2猊温度转换期间工作电流达到1mA当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。因此,该电路只适应于单一温度传感器测温情况下使用, 不适宜采用电池供电系统中。并且工作电源VCC、须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。②DS18B2CW生电源强上拉供电方式:改进的寄生电源供电方式如下面图3.2(b)所示,为了使DS18B2m动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到 E2存储器操作时,用MOSFETI/O线直接拉到VCC就可提供足够的电流,在发出任何涉及到拷贝到E2存储器或启动温度转换的指令后,必须在最多 10小把I/O线转换到强上拉状态。在强上拉方式下可以解决电流供应不走的问题, 因此也适合于多点测温应用,缺点就是要多占用一根 I/O口线进行强上拉切换。④DS18B20的外部电源供电方式:如下面图3.2(c)所示,在外部电源供电方式下,DS18B2CT作电源由VDDH脚接入,其VD端用3〜5.5Vt源供电,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个 DS18B20

传感器,组成多点测温系统。注意:在外部供电的方式下, DS18B2的GNDI脚不能悬空,否则不能转换温度,读取的温度总是85cVCC4.7KDS1852C一门7(a)DS18B201生电源供电方式(c)DS18B20卜部电源供电方式11FroVCC4.7KDS1852C一门7(a)DS18B201生电源供电方式(c)DS18B20卜部电源供电方式11Fro(b)DS18B20 温度转换期间的强上拉供电(寄生电源方式)图3.2DS18B20与微处理器的典型连接图DS18B20的部结构:图3.3为DS18B20的部框图,它主要包括寄生电源、温度传感器、64位激光ROMI线接口、存放中间数据的高速暂存器(含便笺式RAM)用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。64位光刻ROM的排列是:开始8位是产品类型标号,接着的48

位是该DS18B201身的序列号,最后8位是前面56位的循环冗余校验码。光刻R0M的作用是使每一个DS18B20B各不相同,这可实现一根总线上挂接多个DS18B20的目的。暂存存储器包含了8个连续字节,前2个字节是测得的温度信息,第1个字节的容是温度的低8位,第2个字节是温度的高8位。第3个和第4个字节是THTL的易失性拷贝,第5个字节是结构寄存器的易失性拷贝,这3个字节的容在每一次上电复位时被刷新。第6、7、8个字节用于部计算。第9个字节是冗余检验字节.图3.3DS18B20的部结构DS18B20的测温原理:DS1820M温原理如下图所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。小,用于产生固定频率的脉冲信号送给计数器1。图3.4DS18B20测温原理高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55C所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,DS18B20M量温度原理停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

在正常测温情况下,DS18B20的测温分辨力为0.5C,可采用下述方法获得高分辨率的温度测量结果:首先用DS18B20提供的读暂存器指令(BEH)读出以0.5C为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分TZ,然后再用BEH指令取计数器1的计数剩余值CS和每度计数值CD考虑到DS18B2测量温度的整数部分以0.25C、0.75C为进位界限的关系,实际温度TS可用下式计算:TS=(TZ—0.25C)+(CD—CS)/CD(5)告警信号:DS18B20完成温度转换后,就把测得的温度值与THTL作比较。若T>TH或T<TL,则将该器件的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行告警搜索。一旦某测温点越限, 主机利用告警搜索命令即可识别正在告警的器件,并读出其序号,而不必考虑非告警器件。CRC的产生:在64位ROM的最高有效字节中存有循环冗余校验码(CRC)。主机根据ROM勺前56位来计算CRC值,并和存入DS18B20中的CRC值作比较,以判断主机收到的ROMR据是否正确。CRC的函数表达式为:CRC=X+X5+X4+1。止匕外,DS18B20尚需依上式为暂存器中的数据来产生一个8位CRC送给主机,以确保暂存器数据传送无误。在本课题中采用四个数字式温度传感器DS18B201单片机89C5处接如下图图3.5 DS18B2多点温度测量连接电路图图3.5 DS18B2多点温度测量连接电路图DS1820使用中注意事项DS18B2CS然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:①较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20W微处理器间采用串行数据传送,因此,在对DS18B20S行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。②在DS18B20勺有关资料中均未提及单总线上所挂DS18B2O量问题,容易使人误认为可以挂任意多个DS18B20在实际应用中并非如此。当单总线上所挂DS18B20a过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。③连接DS18B20勺总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m当采用每米绞合次数更多的双绞线带屏蔽电缆时, 正常通讯距离进一步加长。 这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B2M行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。④在DS18B20H温程序设计中,向DS18B2CK出温度转换命令后,程序总要等待DS18B20勺返回信号,一旦某个DS18B2戢触不好或断线,当程序读该DS18B20寸,将没有返回信号,程序进入死循环。这一点在进行 DS18B208件连接和软件设计时也要给予一定的重视。单片机系统设计在当今新科学技术飞速发展的年代里, 单片机的应用已越来越受到人们的重视,它被广泛的应用于家电、医疗、智能仪表、工业自动化等各个领域。单片机全称单片微型计算机, 是将计算机的基本部分微型化, 使之集成在一块芯片上的微机。目前市场上较为流行的单片机有 Intel公司和Philip公司的8051系列单片机.Motorola公司的M6800系列单片机。Intel公司的MCS9陈列单片机以及Microchip公司的PIC系列单片机。片含有CPUROMRAM并行I/O口、串行I/O口、定时/计数器、A/D、D/A、中断控制、系统时钟及系统总线等。本课题是利用Intel的80C51控制整个系统。80C51单片机包含下列几个部件:1个8位CPU1个片震荡器及时钟电路、4KBROM?序存储器、128BRAMR据存储器、可寻址64KB外部数据存储器和64KB外部程序存储器的控制电路、32条可编程的 I/O线、2个16位的定时/计数器、 1个可编程全双工串行接口、 5个中断源、2个优先级嵌套中断结构。本课题运用Intel公司的80C51进行系统控制,运用到了复位电路,时钟电路,串口, I/O口。复位电路:无论哪种单片机,都会涉及到复位电路。如果复位电路不可靠,在工作中就有可能出现“死机” ,“程序走飞”等现象。所以,一个单片机复位电路的好坏, 直接影响到整个系统工作的可靠性。 复位操作完成单片机片电路的初始化,使单片机从一种确定的状态开始运行。当80C51i1片机的复位引脚RSTB现5m劭上的高电平时,单片机就完成了复位操作,如果 RST寺续为高电平,单片机就处于循环复位状态, 而无法执行程序, 因此要求单片机复位后能脱离复位状态。复位操作通常有上电和开关复位。 上电复位要求接通电源后, 自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。常用的上电复位且开关复位电路如图 3.6所示,上电后,由于电容充电,使RST寺续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST寺续一段时间的高电平,从而实现上电且开关复位的操作。单片机的复位操作使单片机进入初始化过程,其中包括是程序计数器 PC=0000H,P0-P3=FFHSP=07H其他寄存器处于零,程序从0000Hft址单元开始执行,单片机复位后不改变片RAM:中的容。图3.6.复位电路时钟电路:80C5惮片机的时钟信号通常用部振荡和外部振荡方式。在引脚XTAL评口XTAX外接晶体振荡器,就够成了部振荡方式。由于单片机部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。 晶振通常选用6MHZ12MHz24MHz部振荡器方式如下。如图3.7,电容器C1、C2B稳定振荡频率、快速起振的作用,电容值一般为5-30PF。部振荡方式所得的时钟信号比较稳定。外部振荡方式是把已有的时钟信号引入单片机,这种方式适于用于用来使单片机的时钟与外部信号保持一致。3.7时钟电路按键及显示电路设计本课题要将传感器的温度信号和键盘输入的控制信号都显示出来, 利用单片机80C51传输控制信号。键盘在单片机应用系统中能实现向单片机输人数据、 传送命令等功能, 是人工干预单片机的主要手段 ,键盘实质上是一组按键开关集合 ,通常选用机械弹性开关,它们利用了机械触点的合、断作用。键的闭合与否,反映在输出电压上就是呈现低电平还是高电平, 通过对电平高低状态的检测, 便可确认是否有按键按下。为了确保CPU对一次按键动作只确认一次, 那就必须消除抖动的影响,这样才能使键盘在单片机系统中使用得更加稳定。 常用的键盘接口分为独立式按键接口和矩阵式键盘接口。在本系统中, 按键主要是用来设置温度的上下限, 对其上限加和下限减操作,以达到所要求的温度值。 因此采用独立式键盘来完成这一功能。该温控系统主要包括:时钟模块、复位模块、报警模块、键盘模块、温度采集模块、 液晶显示模块以及温度控制模块等。 其中时钟模块和复位模块是启动芯片80C51不可或缺的。温度采集模块只是采用DS18B20通过P1.0口对其初始化、读操作和写操作,控制DS18B2廓集数据并转换后的数据传到单片机里进行处理。液晶显示模块是选用LCM1602来显示实时温度和所设定的温度上下限值,其中数据命令选择端RS接P3.7,读写选择端R/W接P3.6,使能信号E接P3.5,而引脚VEE接在可变电阻器上,通过调整其电阻值来调节液晶显示器对比度。键盘模块是S0复位、按钮S1、S2、S3和S4组成,其中S1是设定温度上下限的确认按键,而 S2、S3分别是对温度上下限设定值进行“加一” 、“减一”操作。报警模块则是由三极管驱动蜂鸣器报警。该系统中可以用DS18B2冰存储设置温度上下限的值。该系统硬件电路的主要原理图见图 1所示:W——U1-1_33P17FlFiIP15Pi4F1J3F12Fl-1P1J0EAALEIPSEMROTP3.T/R0P3F/WRP35ZT1P3-4/DP3J/WT1Pi2*TDF3.1JT7DF三P2.7W15P?.BZA1dP2.拿A13P24Al2P2.3/A11因3的P2.1陶PQ.7-PAD7PO.B'AraPO.§'AMLCD1LmoiolRP1RFSPACKB-图3.8显示电路图及按键控制报警电路设计为了实现四点温度检测报警系统,本课题采用80C5惮片机作为主控制器,采用扫描的方式对四点DS18B2媪度传感器获取对应该位置的温度值,经处理后可以立即发送到单片机,如只要四点温度有一个不在设定的围,给出报警信号。系统总体硬件电路如图3.11所示。

图3.9 图3.9 温度报警电路/□SOUNDER<TEXT>第四章 软件设计软件开发工具的选择要使单片机系统按照人的意图办事, 需设法让人与计算机对话, 并听从人的指挥。程序设计语言是实现人机交换信息的最基本工具,可分为机器语言、 汇编语言和高级语言。机器语言用二进制编码表示每一条指令,是计算机能直接识别和执行的语言。用机器语言编写的程序成为机器语言程序或者指令程序(机器码程序) 。因为机器只能识别和执行这种机器码程序, 所以又称它为目标程序。 用机器语言编写程序不易记忆、不易查错、不易修改。为了克服机器语言的上述缺点, 可采用有一定含义的符号, 即指令助记符来表示,一般都采用某些有关的英文单词的缩写。 这样就出现了另一种程序语言—汇编语言。汇编语言是用助记符、 符号和数字等来表示指令的程序语言, 容易理解和记忆,它与机器语言指令是一一对应的。汇编语言不像高级语言(如 BASIC)那样通用型强,而是属于某种计算机所独有, 与计算机的部硬件结构密切相关。 用汇编语言编写的程序称为汇编语言程序。以上两种语言都是低级语言。 尽管汇编语言有不少优点, 但它仍存在着机器语言的某些缺陷:与CPU勺硬件结构密切相关,不同的CPE汇编语言是不同的。这使得汇编语言程序不能移植, 使用不便;其次,要使用汇编语言进行程序设计必须了解所使用CP映件的结构与性能,对程序设计人员有较高的要求。为此,又出现了对单片机进行编程的高级语言,如PL\M,C等。KEILC51是美国KEILSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KEILC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Window界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KEILC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。经以上分析综合得知,本课题采用CS言进行编程。系统软件设计的一般原则在单片机应用开发中代码使用效率、 单片机的抗干扰性以及软件可靠性是实际工程设计的重点。单片机应用软件系统设计包括功能模块划分、 程序流程确立、 模块接口设计以及程序代码编写。 我们依据系统的功能要求, 将整体软件系统分割成若干个独立的程序模块。 这些程序模块可以是几条语句的集合、功能函数或程序文件。随后,根据个程序模块的实现功能写出流程,一般需要写出具体的实现功能描述。程序代码通常采用汇编语言或高级语言( C语言)编写。本课题采用C语言编程,在此必须注意以下问题:1)提高程序代码效率必须熟悉当前使用的C语言编译器,试验每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道代码效率。2)减少程序错误我们在编写程序时,要注重考虑如下方面。[1]物理参数 [2]资源参数 [3]应用参数 [4]过程参数(3)单片机的抗干扰性防止干扰最有效的方法是去除干扰源、 隔离干扰路径。 单片机干扰最常见的现象就是复位,导致程序运行异常。设计系统是一般需要添加一个“看门狗”监控模块,在系统出现不可逆转的干扰时, 监控模块将重启系统, 并从断点处继续执行。(4)系统的可靠性要测试单片机软件功能的完善性。上电、掉电测试。系统耗损测试。系统软件设计的一般步骤系统进行软件设计时, 先要对本课题硬件有一个熟练的掌握, 知道系统的组成,数据的传输, 信号是如何被控制的, 以及信号的显示。 然后进行软件设计时,先搞清楚各个部分的子程序及他们的流程图,然后进行C语言编程,最后将它们系统的编程软件实现系统软件设计主要包括系统程序和流程图, 根据整个系统的要求, 完成温度的测量与控制必须经过以下几个步骤:单片机接受传感器的温度信号,并通过LCD液晶显示器显示出来,单片机扫描按键,接受控制信号,并将温度上下限设定值显示出来,若温度不在围则发出报警。系统主程序流程图首先要对系统的各个模块初始化,先执行测温子程序,获取外界的温度值送单片机进行处理,调用相应的显示子程序, 对获取的温度显示。 然后单片机对按键所连接的引脚进行巡回检测,若果为低电平,说明有键被按下, 执行相应的按键功能,对温度上下限的设定值进行调整并显示在 LCD夜晶显示器。若检测到返回键为低电平,则回到原来的测温状态,此时的报警上下限的设定值已经修改,系统根据此设定值和主程序,判断是否需要调用报警子程序和蜂鸣器响起子程序。开始测温子程序系统初始化温度显示子程序显示调整温度报警子程序显示温度上下限蜂鸣器响起子程序图4.1系统主程序流程图传感器程序设计DS18B20®程简介每一片单总线芯片部都有一个全球惟一的 64位编码,在多路测温时就是通过匹配每个芯片的ROMS码(ID),来搜寻该路的温度。DS18B20r9个可擦写的部寄存器,称为便笺式RAM所有的串行通讯,读写每一个bit位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的 DS18B20芯片来说,访问每个器件都要遵守下列命令序列:首先是初始化;其次执行ROM^T令;最后就是执行功能命令(ROMfiT令和功能命令后面以表格形式给出 )。如果出现序列混乱,则单总线器件不会响应主机。当然,搜索ROM命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。基于单总线上的所有传输过程都是以初始化开始的, 初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。 应答脉冲使主机知道, 总线上有从机设备,且准备就绪。每次访问任何单总线器件, 必须严格遵守这个命令序列 ;如果出现序列混乱,则单总线器件不会响应主机。但是这个准则对于搜索ROMT令和报警搜索命令例外,在执行两者中任何一条命令之后, 主机不能执行其后的功能命令, 必须返回至第一步。在主机发出ROMT令,以访问某个指定的DS18B20接着就可以发出DS18B20£持的某个功能命令。这些命令允许主机写人或读出DS18B20W存器,启动温度转换以及判断从机的供电方式。(2)软件实现前面提及单总线器件的ROMT令,在主机检测到应答脉冲后,就可以发出ROM命令。这些命令与各个从机设备的唯一64位ROMfc码相关。允许主机在单总线上连接多个从机设备时, 指定操作某个从机设备。 这些命令还允许主机能够检测到总线上有多少个从机设备, 以及其设备类型或者有没有设备处于报警状态。 从机设备可能支持5种ROMT令(实际情况与具体型号有关),每种命令长度为8位。主机在发出功能命令之前,必须发送合适的ROMr令。①搜索ROM[F0h]当系统初始上电时,主机必须找出总线上所有从机设备的RO脓码,这样主机就能够判断出从机的数目和类型。主机通过重复执行搜索ROMf环(搜索ROMr令跟随着位数据交换 )以找出总线上所有的从机设备。如果总线只有一个从机设备,则可以采用读ROMr令来替代搜索ROMr令。在每次执行完搜索ROMf环后,主机必须返回至命令序列的第一步 (初始化 )。②读ROM[33h](仅适合于单节点)该命令仅适用于总线上只有一个从机设备。它允许主机直接读出从机的 64位RO优码,而无须执行搜索ROMt程。如果该命令用于多节点,系统则必然发生数据冲突,因为每个从机设备都会响应该命令。③匹配ROM[55h]匹配ROMr令跟随64位ROM;码,从而允许主机访问多节点系统中某个指定的从机设备。仅当从机完全匹配64位ROM;码时,才会响应主机随后发出的功能命令。其它设备将处于等待复位脉冲状态。④跳越ROM[CCh]仅适合于单节点)主机能够采用该命令同时访问总线上的所有从机设备,而无须发出任何 ROM代码信息。例如,主机通过在发出跳越ROMT令后跟随转换温度命令[44h],就可以同时命令总线上所有的DS18B2肝始转换温度,这样大大节省了主机的时间。值得注意的是,如果跳越ROMT令跟随的是读暂存器[BEh]的命令(包括其它读操作命令),则该命令只能应用于单节点系统,否则将由于多个节点都响应该命令而引起数据冲突。⑤报警搜索「ECh](仅少数1一Wire器件支持)除那些设置了报警标志的从机响应外,该命令的工作方式完全等同于搜索ROMT令。该命令允许主机设备判断那些从机设备发生了报警(如最近的测量温度过高或过低等)。同搜索ROMr令一样,在完成报警搜索循环后,主机必须返回至命令序列的第一步。DS18B2施一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求,只有严格遵守通讯协议才能保证数据传输的正确性和完整性。 所有时序均以主机为Master,单总线器件为Slave,每次数据的传输均从主机启动写时序开始,如果要求单总线器件回送数据,则在写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。①DS18B20勺复位时序VDD主机接收所需肚短时间七机发出整位脉冲序〜发出应答肽中SO叫VDD主机接收所需肚短时间七机发出整位脉冲序〜发出应答肽中SO叫他猫3最大值;飒四图4.2DS18B20复位时序〃该函数返回为0,表示有DS1820否则没有bitreset(void){biterr;DQ=0; //在数据线上产生600us的低电平delay15(40);DQ=1; 〃数据线拉高delay15(4); // 延时60userr=DQ; //读取数据线状态,err=0:复位成功delay15(18); // err=1: 复位失败return(err);}②DS18B20勺读时序图4.3DS18B20读时序DS18B2的读时序分读0时序和读1时序两个过程。读时序是主机先把单总线拉低,在之后的15s必须释放单总线,以便将数据传输到单总线上。 DS18B20完成一个读时序至少需要60sounsignedcharread_bit(void){unsignedchari;DQ=0; // 将DQ拉低开始读时间隙_nop_();_nop_();DQ=1; 〃thenreturnhighfor(i=0;i<3;i++); //延时15仙s

return(DQ);//返回DQ线上的电平值}ucharrdbyte(void)//{uchari;return(DQ);//返回DQ线上的电平值}ucharrdbyte(void)//{uchari;dat=0;for(i=8;i>0;i--){dat=dat>>1;DQ=0; //_nop_();DQ=1;delay15(1); //dat7=DQ;delay15(4); //}

return(dat);}③DS18B20的写时序。从总线上读取一个字节//读出数据初值为0//循环读8位(先低位,后高位)//读出数据先右移一位产生1us的负脉冲//数据总线拉高//读取数据延时,为读下一位做准备图4.4DS18B20写0时序与写1时序DS18B2的写时序也分为写0时序和写1时序两个过程。写0时序和写1时序的要求不同,写0时,单总线要被拉低至少60s,保证DS18B2能够在15-45s之间正确采样I/O总线上的“0”电平。写1时,单总线被拉低,在之后的15s必须释放单总线

voidwrite_bit(charbitval){DQ=0; //将DQ拉低开始写时间隙_nop_();_nop_();if(bitval==1)DQ=1; //如果写1,DQ返回高电平delay(8); //在时间隙保持电平值,DQ=1; //Delay 函数每次循环延时13仙s,因止匕delay(8)=105(is}voidwrbyte(uchard)//{uchari;}voidwrbyte(uchard)//{uchari;dat=d;for(i=8;i>0;i--){DQ=0;

delay15(1);DQ=dat0;dat=dat>>1;delay15(1);DQ=1;向总线写入一个字节//循环写 8位(先低位,后高位)//产生15us的负脉冲//将当前数据位送数据线//将下一位要写入的数据移到最低位//延时15us//数据线拉高,为写入下一位做准备}DS18B2艇位后,就可以编程控制读到其部RA蜥采集到白温度值(通过P0.7),并且读取数据时低位在前,高位在后。 读出数据后, 需判断对应的温度是正值还是负值,当温度值为正值时,直接将二进制数转换为十进制温度值 ;当温度值为负值时先将二进制补码变为原码,再转换为十进制温度值。本课题的温度测量与读取软件流程:开始延时图4.5温度测量程序流图DS18B20U程注意事项(1)温度换时间设置为750ms寸,灵敏度会大大提高,在需要较高精度要求下建议使用,而且回复性很好 ;Dsl8B20的读写时序须经仔细调整,在反复的调试中找出合适的延时时间 ;(3)在程序等待DS18B20:出的存在信号时,最好设置一个有限的等待时间,否则一旦有温度传感器损坏时,程序将进人无限等待的死循环中显示程序设计根据系统的要求, 单片机不仅要能接收到温度信号, 还要将温度信号显示出来,使系统一目了然。液晶显示模块与数码管相比,显得更为专业、漂亮。液晶显示屏以其功耗低、体积小、显示容丰富、超薄轻巧、使用方便等诸多优点,在仪器仪表、电子设备、 家用电器等低功耗应用系统中得到越来越广泛的应用。 液品模块分为字符型和点阵型两类:字符型显示模块通常只能显示ASCII码表中的数字、字母等符号;点阵型显示模块除了可以显示ASCII字符,还能显示汉字、绘制图形。(一)引脚功能RT1602液晶模块带标准字库,部的字符发生存储器(CGRQME经存储了192个5X7点阵字符,可显示2行X16列共32个点阵字符,其外观及引脚排列如图6-8所示,其引脚功能说明如下:VSS电源地VDD5V正电源V0:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生阴影,使用时可以通过一个10K的电位器调整对比度。RS寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W读写信号线,高电平时进行读操作,低电平时进行写操作。E:使能控制信号,当该引脚由高电平跳变成低电平时, 液晶模块执行命令。RS=0R/W=1E=1时,读取液晶模块的状态字。RS=0R/W=0E=1,向液晶模块写入命令字。RS=1R/W=1E=1时,从液晶模块读取数据。RS=1R/W=0E=1时,向液晶模块写入数据。DB3DB78位双向数据线。BLA背光源正极。BLK背光源负极。读时序写时序

读时序写时序(二)显示模块的指令功能RT1602夜晶模块部的控制器共有11条控制指令,单片机对液晶模块的控制都是通过指令编程来实现的,指令的格式如表 6-3所示,现分别说明如下1、清屏:指令码01H,清屏后,光标返回到地址00Ho2、光标返回光标返回到地址 00H。3、光标和显示模式设置I/D光标移动方向,高电平右移,低电平左移。S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效4、显示开 /关控制D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标低电平不闪烁。显示模块的指令集B:低电平不闪烁。显示模块的指令集表4.8RT1602指令RSR/WD7D6D5D4D3D2D1D0清屏光标返回置输入模式I/D显示开/关控制光标或字符移位S/CR/L置功能DL置数据存储器地显示数据存储器地址(ADD)指令RSR/WD7D6D5D4D3D2D1D0清屏光标返回置输入模式I/D显示开/关控制光标或字符移位S/CR/L置功能DL置数据存储器地显示数据存储器地址(ADD)读忙标志或地址BF计数器地址( AC)写数据要写的数据写数据读出的数据读数据读出的数据5、光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。R/L:移动方向,高电平右移,低电平左移。6、置功能

DL高电平时为4位总线,低电平时为8位总线。N:低电平时为单行显示,高电平时双行显示。F:低电平时显示5X7的点阵字符,高电平时显示5X10的点阵字符7、置数据存储器地址:如图4.9所示,液晶屏幕上的每个字符位置与部数据存储器( DDRAM之间为了将字符显示到屏幕指定位置,必须用该命令设置液晶模块的数据存储器地址。例如:为了能在第二行第二列(数据存储器地址为 41H)显示字符,必须首先置数据存储器地址为41H,相应的命令字为10000000B+01000001B=11000001B(C1H。8、读忙标志和光标地址:BF为BF:BF为低电平表示不忙。AC为当前计数器地址9、写数据:RT1602液晶模块部的字符发生存储器(CGROM)经存储了160个不同的点阵字符图形, 包括阿拉伯数字、 英文字母的大小写、 常用的符号、 和日文假名等,每一个字符都有一个固定的代码, 一般为该字符的 ASCII码,只要执行写数据指令,写入该字符的代码,就可在屏屏幕上显示该字符。为了使程序清晰易读, 将对命令口、 数据口的写操作及等待操作完成设计成函数,每次写入指令码或数据后必须等待忙标志 BF为0后才返回;由于每次写入数据后, 模块的地址寄存器会自动指向下个单元, 因此无需在每个字符输出前都设置数据存储器地址, 比如在显示字符串 str1前,只要用“lcd_cmd(0x80);”语句设置一次即可,将strl的第一个字符'W写入模块地址为00H的单元,即显示在第一行的第一个字符位置, 后续的其它字符就无需再设置地址了, 程序清单如下:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDP0//P0口作为总线端口sbitRS=P3A7;// 数据/命令寄存器选择控制端sbitRW=P3A6;// 读写控制端sbitE=P3A5;//使能控制端sbitRDY=LCDA7;//就绪线BF,低电平有效voidlcd_cmd(ucharcmd)//向液晶屏发送指令{LCD=cmd;RS=0; //选择命令寄存器RW=0; //执行写数据操作E=1;_nop_(); //延时}}}}E=0; //使能信号有效while(1){LCD=0xff;//总线变高RS=0; // 选择命令寄存器RW=1; // 读操作E=0; // 使能信号有效_nop_();//延时E=1; // 撤消使能信号if(RDY==0)break;//如果就绪,返回}}voidlcd_dat(uchardat)//向液晶屏写入数据{LCD=dat;// 显示数据送总线RS=1; // 选择数据寄存器RW=0; // 执行写数据操作E=1;_nop_();E=0; //使能信号有效while(1){LCD=0xff;// 总线变高RS=0;// 选择命令寄存器RW=1;// 读操作E=0; // 使能信号有效_nop_();// 延时E=1; // 撤消使能信号if(RDY==0)break;//如果就绪,返回dat=LCD;}}voidinit_lcd(void)//初始化液晶屏lcd_cmd(0x01);//清屏幕lcd_cmd(0x3c);//设置双行显示 ,5X10点阵lcd_cmd(0x0C);//开显示,关闭光标voiddisp_str(ucharx,uchary,uchar*p)//在x行、y列显示字符串 pif(x==0)//voidinit_lcd(void)//初始化液晶屏lcd_cmd(0x01);//清屏幕lcd_cmd(0x3c);//设置双行显示 ,5X10点阵lcd_cmd(0x0C);//开显示,关闭光标voiddisp_str(ucharx,uchary,uchar*p)//在x行、y列显示字符串 pif(x==0)//如果在第一行显示lcd_cmd(0x80+y);//设置写入地址else//如果在第二行显示lcd_cmd(0xc0+y);//设置写入地址while(*p)//将字符依次发送到液晶屏lcd_dat(*p++);键盘程序设计单片机将传感器的温度信号显示以后, 要开始按键处理, 单片机根据按键将温度上下限设定值信号显示出来或者是执行其他相应的功能。键盘电路虽然简单,但键盘的稳定性、可靠性,应引起足够的重视。所以,当检测到有键按下或释放时,应通过软件延时 20-30ms左右,避开触点抖动的影响。去抖时间既不能太短也不能太长:如果时间太短,无法起到去抖作用;如果时间太长,超过了键按下的持续时间,则会判不到按键。 软件去抖时间不宜太短也不宜太长, 定为20ms。为确定是否有键按下,CPUfe通过并行输出口使所有的行线为低电平, 然后通过并行输入口读入列信号,若为全“ 1”,则没有键按下,若有一个为“ 0”,则表示有一个键已按下。若有一个为“ 0”,则表示有一个键已按下。为消去按下时的抖动现象,程序延迟20mSt再判断具体是哪一个键按下先将第一行置为低电平,然后读入列信号,若有一个为“ 0”,则按下的键在此行;若为全“ 1”,则按下的键不在此行,再将下一行置为低电平,并测试列信号。根据本课题的系统要求,键盘主要是用来设置温度的上下限, 因此采用独立式键盘来完成这一功能。通过设置四个按键来控制温度上下限的显示和调整,程序清单如下所示:while(1){ inti,t;if(S2==0){debouncer();term_H=(0<term_H&&term_H<100)?++term_H:50;while(S2==0);debouncer();}if(S3==0){debouncer();term_L=(0<term_L&&term_L<100)?--term_L:50;debouncer();}debouncer();}for(i=0;i<1;i++)//{bitzf;zf=0;if(term_H<0)依次显示报警温度值TOC\o"1-5"\h\z//正负标记 温度在0度以下为 1,否则为 0//如果温度小于 0{zf=1; //正负标志置 1term_H=-term_H;//求出温度的绝对值term_H=-term_H;//求出温度的绝对值str[0]=term_H/100+0x30;term_H=term_H%100;str[1]=term_H/10+0x30;str[2]=term_H%10+0x30;if(zf==1){str[0]=term_H/100+0x30;term_H=term_H%100;str[1]=term_H/10+0x30;str[2]=term_H%10+0x30;if(zf==1){if(str[1]=='0'){str[0]='';str[1]='-';}elsestr[0]='-';}else{if(str[0]=='0'){if(str[1]=='0') //str[1]='';str[0]=''; ////求出百位的 ASCII码//求出十位的 ASCII码//求出个位的 ASCII码//如果是负数//如果十位为 0//显示格式为 '-x.x'//如果十位不为 0//显示格式为 '-xx.x'//如果是正数//如果百位、十位都是 0显示格式为 'x.x'//如果只有百位为 0显示格式为 'xx.x'}}disp_str(i/2,(i%0x02)*9+2,str);// 将字符串在指定位置显示出来for(t=1;t<2;t++)//依次显示报警温度值{TOC\o"1-5"\h\zbitzf; //正负标记 温度在0度以下为 1,否则为 0zf=0;if(term_L<0) //如果温度小于 0{zf=1; //正负标志置 1term_L=-term_L;//term_L=-term_L;//求出温度的绝对值//求出百位的 ASCII //求出百位的 ASCII 码//求出十位的 ASCII 码//求出个位的 ASCII 码//如果是负数//如果十位为 0//显示格式为 '-x.x'//如果十位不为 0//显示格式为 '-xx.x'如果是正数//如果百位、十位都是 0显示格式为 'x.x'//如果只有百位为 0显示格式为 'xx.x'将字符串在指定位置显示出在屏幕指定位置显示//A:}str[0]=term_L/100+0x30;term_L=term_L%100;str[1]=term_L/10+0x30;str[2]=term_L%10+0x30;if(zf==1){if(str[1]=='0'){str[0]='';str[1]='-';}elsestr[0]='-';}TOC\o"1-5"\h\zelse //{if(str[0]=='0'){if(str[1]=='0') //str[1]='';str[0]=''; //}}disp_str(t/2,(t%0x02)*9+2,str);//}if(S4==0){debouncer();str[1]=':';//for(i=0;i<4;i++)

//C://C:disp_str(i/2,(i%0x02)*9,str);}break;while(S4==0);debouncer();}}报警程序设计当温度大小或小于所设定的温度是,蜂鸣器开始响起,一直到温度在设定温度。声音是由蜂鸣器的振动产生,而蜂鸣器就像是一个电磁铁,电流流过即可激磁,则蜂鸣器里发声的簧片将被吸住;电流消失时,簧片将被放开。若要产生 f的频率,则需于T时间(其中T=1/f),进行吸、收各一次,换言之,激磁、断磁的时间各为T/2,成为半周期。例如,要产生1khz的频率,则半周期为0.5ms,P3.7所发送的彳S号中,0.5ms为高电平,0.5ms为低电平。若0.5ms为高电平与0.5ms为低电平为一组信号,连续送出100组,即可得到1khz的声音约为0.1s;停止输出0.1s后,在连续送出10则可听到“哗、哗”两声。)0停止输出0.1s后,在连续送出10则可听到“哗、哗”两声。)0组0.5ms为高电平与0.5ms为低电平的信号,p 1读入温 gj—大于或小于设皆也报警器响起}}}}图4.10报警流程图程序清单:voidpulse(intcount,intTH,intTL){inti;for(i=0;i<count;i++){LS1=1;delay10ms(TH);LS1=0;delay10ms(TL);}}voidalarm(){if(((term_H<temp[0])||(temp[0]<term_L))||((term_H<temp[1])||(temp[1]<term_L))||((term_H<temp[2])||(temp[2]<term_L))||((term_H<temp[3])||(temp[3]<term_L )))//只要四点有一个大鱼或低于温度上下限,就报警{ pulse(5,1,1);delay10ms(50);第五章仿真调试及小节仿真结果在KEIL下编译项目,进入调试方式后全速运行,然后切换到Proteus环境,此时在屏幕上将会显示出各测温点的温度值,如图 6-12所示。用鼠标指向某传感器的或点击左键, 屏幕上对应位置的温度值将随之增减, 如果某个传感器的温度值总是为 0,应检查它的序列号是否与数组二维数组 id中所定义的值一致。多路采样周期的估算: 采样周期由两部分组成: (1)启动总线上所有的DS18B20W]时开始转换到转换2束,最长不超过 750ms(2)逐一选定总线上的DS18B20并读取其温度。根据读写时序,分析rdbyte()及wrbyte(),读写一字5.5.(3)图5.3是按下按键S1后,LCD显示的是温度上下限初始值,H-代表温度的上限值50,L-代表温度的下限值10。5.3(4)如图 5.4所示:此图为调整温度上下限之后的显示数值,如果四点温度在60和5之间单片机急不发出报警命令,只要有任意一点或多点温度大于上限或低于下限,单片机就会发出报警命令,蜂鸣器响起,然后做出相关的操作。调试及小节本文利用Proteus与KEILC51对单片机多点温度测量系统进行了仿真设计.从本文结果可以看出,利用 Proteus进行单片机系统的仿真设计可以极简化单片机程序在目标硬件上的调试工作, 大幅度节省制作电路板的时间, 对于提高产品的开发效率、降低开发成本等有重要作用.硬件电路的简单是以软件的复杂为代价的, 所以在程序编写和调试的过程中稍一粗心就会出现错误,包括时间延时不够, 设置参数的类型有误, 按键子程序放置位置不妥等错误。 本程序经过反复的调试修改, 虽然能达到预期的基本目标,但是还有很多地方需要完善,如开始仿真时机器会扫描错误代码而使电路报警,报警的同时可以使数码管闪烁,还可以利用剩余的 I/O口挂接更多的DS18B2等。本课题通过分析对比各种不同的温度传感器,选定 DS18B20这种单总线数字温度传感器的通信方式比较独特,软件编写要求的比较新颖,特点突出。 用其构建的系统有很多优点: 硬件连线简单, 省去了使用模拟传感器要进行放大、 A/D转换等工作, 由于它的级联功能, 一条总线可挂接多个传感器测量不同位置的温度,根据DS18B2睢一的序号识别不同传感器在各自位置的温度。需要注意的是 ,在系统安装及工作之前应将主机逐个与 DS1820挂接,以读出其序列号。另外,由于DS1820单线通信功能是分时完成的,遵循严格的时隙概念,因此,系统对DS1820和各种操作必须按协议进行,即:初始化DS18B20(发复位脉冲)一发RO—能命令一发存储器操作命令一处理数据。现场温度直接以“一线总线”的数字方式传输,每一个自带地址,大大减少了系统的电缆数,提高了系统的稳定性和抗干扰性。通过调试成型系统发现了DS18B2除了上述优点外,还有一些缺点,如:简单的硬件连接的代价是复杂的软件时序, DS18B2施测量温度的时候,灵敏度不够高,温度快速变化时无法迅速显示出其变化。通过一系列的实验发现:由DS18B2峋建的测温小系统适用于环境温度监控,对温度小变化较敏感;不适合应用于要时性强、温度跨度大的测温方本次毕业设计是在为相老师的细心认真的指导下完成的,不论在选题、资料搜集还是在论文写作方面,老师都给予了我很大的帮助。老师治学严谨、一丝不苟,对学生既严格要求,又可耐心指导、循循善诱,在繁忙的工作之余还经常关心我的论文进行情况,并且对我在设计中遇到的问题耐心指导,巧妙地激发我的求知欲来促使我对问题进行更深入的研究,使我的独立探索解决问题的能力有了很大的提高,老师用心良苦,让我深深体会到为人师表的伟大与无私。在本次毕业设计中,我还得到了多位同学和老师的帮助,对我成功完成本次设计带来了很大的帮助。在次论文完成之即,请接受我真诚的感!衷心的感在百忙之中评阅论文和参加答辩的各位专家、教授!参考文献新荣.基于单片机的多路温度监测系统设计 [J].工业控制计算机 ,2010年,23(7):95-98.周梅,廖承虎,爱祥.基于AT89C51的多路温度检测报警系统设计 [J].电子测量技术 ,2008,31(9):140-142.基于单片机的多点温度检测系统 ..xuehi./docs/38504.html.包敬海.基于DS18B20的多点体温检测系统的研究 [J].自动化与仪表 ,2010年.2,20-22.[5]周秀明,隽,春龙.基于DS18B20的单片机温度检测与调节系统设计实验室科学,现代电子技术 ,第14卷,第1期,2011年2月,第34卷,第9期.奚建荣.基于51单片机的多点温度控制系统设计 .现代电子技术 ,2009年第2期,第289期程真.理工大学机控学院 .商场现代化 ,2007年4月(下旬刊)总第 501期.[8]黄小波.基于AT89S52^片机与DB18B20勺温度监控系统[J].单片机开发与应用,2008年,24(10):119-120.晁阳,争刚,熊刚.基于单片机的温度控制系统的设计 ,凌职业技术学院学报,第10卷,第1期,2011年3月.[10]海平.基于单片机和DS18B20的分布式多点温度检测系统的设计[J].自动化技术与应用 ,2008年,11:90-93.[11]杜珺.基于单片机控制的温度监测系统 ,机械管理开发 ,第2期(总第120期),2011年4月.[12]冶,袁永超,罗平.基于DB18B20的单片机温度测量系统 [J].农机化研究,2007年(10):160-164.董慧敏,朱智民.多点温度检测系统电路设计 .职业技术学院学报 ,第6卷,第3期,2007年7月.[14]玉洁.DS18B20温度测量电路的设计与仿真[J].数字技术及应用,2011年(04):156-157.[15]红刚,方佳,王强,钱双艳.基于80C51的八路温度巡回检测系统设计.热带农业工程,2010年2月.第34卷,第1期.开生,郭国法.MS-C51单片机温度控制系统的设计 [J].微计算机信息 ,2005年21(7):68-70.奚建荣.基于51单片机的多点温度控制系统设计 [J].现代电子技术 ,2009年2月(289):186-1881原理图2源代码(一)主程序代码#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineLCDP0voiddeouncer(void);voiddelay10ms(int);voidpulse(int,int,int);voidalarm(void);externvoidinit_lcd(void);〃 初始化液晶屏,在文件 1602DRV.C中externvoiddisp_str(ucharx,uchary,uchar*p);// 在x行、y列显示字符串 pexternvoidgettemp(inttemp[]);// 巡回检测 4个传感器的温度值送数组 tempexternvoidreadid(uchar*id); //读取传感器的序列号charterm_H=50,term_L=10;//报

温馨提示

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

评论

0/150

提交评论