基于单片机的多点温度检测系统设计_第1页
基于单片机的多点温度检测系统设计_第2页
基于单片机的多点温度检测系统设计_第3页
基于单片机的多点温度检测系统设计_第4页
基于单片机的多点温度检测系统设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

目录摘要31.绪论32.设计方案52.1引言62.2方案设计72.3方案选择比较83.硬件设计103.1温度传感器123.2单片机电路143.3显示电路153.4键盘电路153.5报警电路163.6通信模块173.6.1RS-232接口183.6.2MXA232芯片193.6.6接口电路204软件设计204.1系统主程序224.2传感器程序234.3键盘电路程序24参考文献25附件A电路原理图26附件B程序软件271绪论在人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。自18世纪工业革命以来,工业开展对是否能掌握温度有着绝对的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎%80的工业部门都不得不考虑着温度的因素。温度对于工业如此重要,由此推进了温度传感器的开展。目前市场主要存在单点和多点两种温度测量仪表。对于单点温测仪表,主要采用传统的模拟集成温度传感器,其中又以热电阻、热电偶等传感器的测量精度高,测量范围大,而得到了普遍的应用。此种产品测温范围大都在-200℃~800℃之间,分辨率12位,最小分辨温度在0.001~0.01之间。自带LED显示模块,显示4位到16位不等。有的仪表还具有存储功能,可存储几百到几千组数据。该类仪表可很好的满足单个用户单点测量的需要。多点温度测量仪表,相对与单点的测量精度有一定的差距,虽然实现了多路温度的测控,但价格昂贵。针对目前市场的现状,本课题提出了一种可满足要求、可扩展的并且性价比高的单片机多路测温系统。在传统的温度测量系统设计中,往往采用模拟技术进行设计,这样就不可防止地遇到诸如引线误差补偿、多点测量中的切换误差和信号调理电路的误差等问题;而其中某一环节处理不当,就可能造成整个系统性能的下降。本课题主要是实现对温度进行多点同时测量并准确显示。整个系统由单片机控制,要能够接收传感器的数据并显示出来,可以从键盘输入命令,系统根据命令,选择对应的传感器,并由驱动电路驱动温度显示。设计一种合理、可行的单片机监控软件,完成多点测量和显示的任务,并编写硬件底层驱动程序。利用一个单片机设计一个能够进行多点温度进行同时测量的系统。该系统能够同时对多个点的温度进行测量和进行显示,并且能够对异常情况进行报警。2方案论证比较与选择2.1引言温度测量的方案有很多种,可以采用传统的分立式传感器、模拟集成传感器以及新兴的智能型传感器。对于控制系统可以采用计算机、单片机等。2.2方案设计2.2.1设计方案一本方案采用AT89C51单片机为核心,通过温度传感器AD590采集温度信号,经信号放大器放大后,送到A/D转换芯片,最终经单片机检测处理温度信号。图2.1方案一原理图如图2.1,采用该方案技术已经成熟,AD转换电路设计较烦琐,而且使用AD590进行温度检测必须对冷端进行补偿,以减小误差。2.2.2设计方案二本设计运用主从分布式思想,由一台上位机〔PC微型计算机〕,下位机〔单片机〕多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。该系统采用RS-232串行通讯标准,通过上位机〔PC〕控制下位机〔单片机〕进行现场温度采集。温度值既可以送回主控PC进行数据处理,由显示器显示。也可以由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。下位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼宇自动化系统、温控制程生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械…等。系统框图如下:图2.2方案二原理图2.3方案的比较与选择基于数字式温度计DS18B20的温度测量仪的硬软件开发过程,DS18B20将温度信号直接转换为数字信号,实现了与单片机的直接接口,从而省去了信号调理电路。该仪器电路简单、功能可靠、测量效率高,很好地弥补了传统温度测量方法的缺乏。相对与方案1,硬件电路简单,易于操作,具有更高的性价比,更大的市场。所以我采用方案2完本钱设计。2.4方案的阐述与论证方案三以DS18B20为传感器、AT89C51单片机为控制核心组成多点温度测试系统,该系统包括传感器电路、键盘与显示电路、串口通信电路等组成部。采用美国Dallas半导体公司推出的数字温度传感器DS18B20,属于新一代适配微处理器的智能温度传感器。它具有独特的单总线接口,仅需要占用一个通用I/0端口即可完成与微处理器的通信。全部传感元件及转换电路集成在形如一只三极管的集要求通过简单的编程实现9~12位的数字值读数方式。其可以分别93.75ms和750ms内完成9位和12位的数字量,最大分辨率为0.0625℃,而且从DS18B20读出或写入DS18B20的信息仅需要一根口线(单线接口)读写。它有如下的性能特点:1)独特的单线接口,既可通过串行口线,也可通过其它I/O口线与微机接口,无需变换其它电路,直接输出被测温度值;2)多点能力使分布式温度检测应用得以简化;3)不需要外部元件;4)既可用数据线供电,也可采用外部电源供电;5)不需备份电源;6)测量范围为-55~+125℃,固有测温分辨率为0.5℃;7)通过编程可实现9~12位的数字读数方式;8)用户可定义非易失性的温度告警设置;9)警告搜索命令能识别和寻址温度在编定的极限之外的器件(温度警告情况);10)应用范围包括恒温控制、工业系统、消费类产品、温度计或任何热敏系统。以上特性使得DS18B20非常适用于构建高精度、多点温度测量系统。根据DS18B20以上的特点我选用方案三来实现本课题。3硬件设计本课题研究的多点测温系统是以单片机和单总线数字温度传感器DS18B20为核心,充分利用单片机优越的内部和外部资源及数字温度传感器DS18B20的优越性能构成一个完备的测温系统,实现对温度的多点测量。整个系统由单片机控制,能够接收传感器的温度数据并显示出来,可以从键盘输入命令,系统根据命令,选择对应的温度传感器,并由驱动电路驱动温度显示。本课题设计了一种合理、可行的单片机监控软件,完成测量和显示的任务。由于单片机具有强大的运算和控制功能,使得整个系统具有模块化、硬件电路简单以及操作方便等优点。本课题的整个系统是由单片机、显示电路、键盘电路、驱动电路,串口通信等构成。3.1温度传感器3.1.1温度传感器选用细那么现代传感器在原理与结构上千差万别,如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的题。当传感器确定之后,与之相配套的测量方法和测量设备也就可以确定了。测量结果的成败,在很大程度上取决于传感器的选用是否合理。根据测量对象与测量环境确定传感器的类型2〕灵敏度的选择通常,在传感器的线性范围内,希望传感器的灵敏度越高越好。因为只有灵敏度高时,与被测量变化对应的输出信号的值才比较大,有利于信号处理。但要注意的是,传感器的灵敏度高,与被测量无关的外界噪声也容易混入,也会被放大系统放大,影响测量精度。因此,要求传感器本身应具有较高的信噪比,尽员减少从外界引入的串扰信号3〕频率响应特性传感器的频率响应特性决定了被测量的频率范围,必须在允许频率范围内保持不失真的测量条件,实际上传感器的响应总有—定延迟,希望延迟时间越短越好。传感器的频率响应高,可测的信号频率范围就宽,而由于受到结构特性的影响,机械系统的惯性较大,因有频率低的传感器可测信号的频率较低。4〕线性范围传感器的线形范围是指输出与输入成正比的范围。以理论上讲,在此范围内,灵敏度保持定值。传感器的线性范围越宽,那么其量程越大,并且能保证一定的测量精度。在选择传感器时,当传感器的种类确定以后首先要看其量程是否满足要求。但实际上,任何传感器都不能保证绝对的线性,其线性度也是相对的。当所要求测量精度比较低时,在一定的范围内,可将非线性误差较小的传感器近似看作线性的,这会给测量带来极大的方便。5〕稳定性传感器使用一段时间后,其性能保持不变化的能力称为稳定性。影响传感器长期稳定性的因素除传感器本身结构外,主要是传感器的使用环境。因此,要使传感器具有良好的稳定性,传感器必须要有较强的环境适应能力。在选择传感器之前,应对其使用环境进行调查,并根据具体的使用环境选择适宜的传感器,或采取适当的措施,减小环境的影响。6〕精度精度是传感器的一个重要的性能指标,它是关系到整个测量系统测量精度的一个重要环节。传感器的精度越高,其价格越昂贵,因此,传感器的精度只要满足整个测量系统的精度要求就可以,不必选得过高。这样就可以在满足同一测量目的的诸多传感器中选择比较廉价和简单的传感器。如果测量目的是定性分析的,选用重复精度高的传感器即可,不宜选用绝对量值精度高的;如果是为了定量分析,必须获得精确的测量值,就需选用精度等级能满足要求的传感器。对某些特殊使用场合,无法选到适宜的传感器,那么需自行设计制造传感器。自制传感器的性能应满足使用要求。温度传感器DS18B20DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器。全部传感元件及转换电路集成在形如一只三极管的集成电路内。与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。其可以分别93.75ms和750ms内完成9位和12位的数字量,最大分辨率为0.0625℃,而且从DS18B20读出或写入DS18B20的信息仅需要一根口线(单线接口)读写。DS18B20的性能特点单线数字化智能集成温度的传感器,其特点是:DSI8B20可将被测温度直接转换成计算机能识别的数字信号输出,温度值不需要经电桥电路先获取电压模拟量,再经信号放大和A/D转换成数字信号,解决了传统温度传感器存在的因参数不一致性,在更换传感器时会因放大器零漂而必须对电路进行重新调试的问题,使用方便.DS18B20能提供9到12位温度读数,精度高,且其信息传输只需1根信号线,与计算机接口十分简便,读写及温度变换的功率来自于数据线而不需额外的电源.每一个DS18B20都有一个惟一的序列号,这就允许多个DS18B20连接到同一总线上.尤其适合于多点温度检测系统.④负压特性:当电源极性接反时,DS18B20虽然不能正常工作,但不会因发热而烧毁正是由于具有以上特点,DS18B20在解决各种误差、可靠性和实现系统优化等方面与传统各种温度传感器相比,有无可比较的优越性,因而广泛应用于过程控制、环境控制、建筑物、机器设备中的温度检测。其外形和管脚如以下图:图3.1DS18B20外部形状及管脚图⑵.DS18B20与单片机的典型接口设计DS18B20测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。Dsl8B20与单片机的硬件连接有两种方法:一是Vcc接外部电源,GND接地,I/0与单片机的I/0线相连;二是用寄生电源供电,此时,~UDD和GND接地,I/0接单片机I/0。无论是哪种供电方式,I/0口线都要接4.7kQ左右的上拉电阻。图4给出了DSl8B20与微处理器的典型连接。①DS18B20寄生电源供电方式:如下面图3.2(a)所示,在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源〔电容〕充电。

独特的寄生电源方式有三个好处:进行远距离测温时,无需本地电源可以在没有常规电源的条件下读取ROM电路更加简洁,仅用一根I/O口实现测温要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流到达1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。因此,该电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。〔2〕DS18B20的内部结构:图3.3为DS18B20的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七局部。64位光刻ROM的排列是:开始8位是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。光刻R0M的作用是使每一个DS18B20都各不相同,这可实现一根总线上挂接多个DS18B20的目的。暂存存储器包含了8个连续字节,前2个字节是测得的温度信息,第1个字节的内容是温度的低8位,第2个字节是温度的高8位。第3个和第4个字节是TH、TL的易失性拷贝,第5个字节是结构存放器的易失性拷贝,这3个字节的内容在每一次上电复位时被刷新。第6、7、8个字节用于内部计算。第9个字节是冗余检验字节图3.3DS18B20的内部结构〔3〕DS18B20的测温原理:DS1820测温原理如以下图所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。图3.4DS18B20测温原理高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度存放器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度存放器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,DS18B20测量温度原理停止温度存放器值的累加,此时温度存放器中的数值即为所测温度。在正常测温情况下,DS18B20的测温分辨力为0.5℃,可采用下述方法获得高分辨率的温度测量结果:首先用DS18B20提供的读暂存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数局部TZ,然后再用BEH指令取计数器1的计数剩余值CS和每度计数值CD。考虑到DS18B20测量温度的整数局部以0.25℃、0.75℃为进位界限的关系,实际温度TS可用下式计算:TS=(TZ-0.25℃)+(CD-CS)/CD.3.2.单片机系统设计在当今新科学技术飞速开展的年代里,单片机的应用已越来越受到人们的重视,它被广泛的应用于家电、医疗、智能仪表、工业自动化等各个领域。单片机全称单片微型计算机,是将计算机的根本局部微型化,使之集成在一块芯片上的微机。目前市场上较为流行的单片机有Intel公司和Philip公司的8051系列单片机.Motorola公司的M6800系列单片机。Intel公司的MCS96系列单片机以及Microchip公司的PIC系列单片机。片内含有CPU、ROM、RAM、并行I/O口、串行I/O口、定时/计数器、A/D、D/A、中断控制、系统时钟及系统总线等。本课题是利用Intel的89c51控制整个系统。89c51单片机包含以下几个部件:1个8位CPU、1个片内震荡器及时钟电路、4KBROM程序存储器、128BRAM数据存储器、可寻址64KB外部数据存储器和64KB外部程序存储器的控制电路、32条可编程的I/O线、2个16位的定时/计数器、1个可编程全双工串行接口、5个中断源、2个优先级嵌套中断结构。本课题运用Intel公司的8051进行系统控制,运用到了复位电路,时钟电路,串口,I/O口。复位电路:无论哪种单片机,都会涉及到复位电路。如果复位电路不可靠,在工作中就有可能出现“死机〞,“程序走飞〞等现象。所以,一个单片机复位电路的好坏,直接影响到整个系统工作的可靠性。复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。当89c51单片机的复位引脚RST出现5ms以上的高电平时,单片机就完成了复位操作,如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序,因此要求单片机复位后能脱离复位状态。复位操作通常有上电和开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。常用的上电复位且开关复位电路如图3.6所示,上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。单片机的复位操作使单片机进入初始化过程,其中包括是程序计数器PC=0000H,P0-P3=FFH,SP=07H,其他存放器处于零,程序从0000H地址单元开始执行,单片机复位后不改变片内RAM区中的内容。图3.6.复位电路时钟电路:89c51单片机的时钟信号通常用内部振荡和外部振荡方式。在引脚XTAL1和XTAX2外接晶体振荡器,就够成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部振荡器方式如下。如图3.7,电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般为5-30PF。内部振荡方式所得的时钟信号比较稳定。外部振荡方式是把已有的时钟信号引入单片机内,这种方式适于用于用来使单片机的时钟与外部信号保持一致。图3.7时钟电路串口:串行通信是CPU与外界交换的一种根本方式。单片机运用于数据采集或工业控制时,往往作为前端机安装在工作现场,远离主机,现场数据采用串行通信方式主机并进行处理,以降低通信本钱,提高通信可靠性。51系列单片机自身有全双工的异步通信接口,通过软件编程,它可以作为通用异步接受和发送器使用,也可作为同步移位存放器。89c51单片机串口主要由两个数据缓冲存放器SBUF和一个输入移位存放器组成,其内部还有一个串行控制存放器SCON和一个波特率发生器。接受缓冲器与发送缓冲器占用同一个地址99H,其名称亦同样为SBUF。CPU写SBUF,一方面修改发送存放器,同时启动数据串行发送;读SBUF,就是读接受存放器,完成数据的接受。特殊功能存放器SCON用以存放串行口的控制和状态信息。根据对其写的控制字决定工作方式,从而决定波特率发生器的时钟是来自系统时钟还是来自定时器T1。特殊功能存放器PCON的最高位SMOD为串行口波特率的倍增控制位。89c51单片机的串行口正是通过对上述专用存放器的设置,检测与读取来管理串行通信。在进行通信时,外界的串行数据是通过引脚RXD输入的。输入数据先逐位进入输入移位存放器,在送入接受SBUF。在此采用了双缓冲结构,为了防止在接受到第二帧数据之前,CPU未及时响应接受器的前一帧的中断请求而把前一帧数据读走,造成两帧数据重叠的错误。对于发送器,因为发送时CPU是主动的,不会产生写重叠问题,不需要双缓冲器结构,为了保持最大传送速率,仅用了SBUF一个缓冲器。I/O口:计算机对外设进行数据操作时,外设的数据是不能直接连到CPU的数据线上的,必须经过接口。这是由于CPU的数据线是外设或存储器和CPU进行数据传输的唯一公共通道,为了使数据线的使用对象不产生使用总线的冲突,以及协调快速的CPU和慢速的外设,CPU和外设之间必须有接口电路,接口起着缓冲、锁存数据、地址译码、信息格式转换、传递状态、发布命令等功能,I/O接口有并行接口、串行接口、定时/计数器、A/D、D/A等,根据外设的不同情况的应用要求,选择不同的接口。单片机的I/0口一般是双向的.既可以做输入.也可以做输出。以51系列为例,其P0、P1、P2、P3均为双向口,且可位操作。89c51单片机内部有P0、P1、P2、P3四个8位双向I/O口,外设可直接连接于这几个接口上,而无须另加接口芯片。P0-P3的每个端口可以按字节输入或输出,也可以按位进行输入或输出,共32根口线,用作控制十分方便。P0口为三态双向口,能带8个TTL电路。P1、P2、P3口为准双向口,负载能力为4个TTL电路,如果外设需要的驱动电流大,可加接驱动器。P0口具有双重功能:可以作为输入/输出用,外接输入/输出设备;在有外接存储器和I/O接口时常作为低8位地址/数据总线,即低8位地址与数据线分时使用P0口。此时低8位地址由ALE信号的下跳沿使它锁存到外部地址锁存器中,此后,P0口出现数据信息。P1口具有单一接口功能,P1口每一位都能作为可编程的输入或输出口线。P2口具有双重功能:作为输入口或输出口使用,外接输入/输出设备;在有外接存储器I/O接口时,作为系统的地址总线。输出高位地址,与P0口低8位地址一起组成16位地址总线。P3口为双重功能口:可以作为输入/输出口,外接输入/输出设备;作为第二功能使用。图3.8AT89C51工作原理3.3显示电路设计本课题要将传感器的温度信号和键盘输入的控制信号都显示出来,利用单片机89c51传输控制信号。本课题要用到MAXIM公司生产的MAX7219串行LED驱动显示器,MAX7219为24引脚芯片,除与LED显示相连的线外,与微控制器只需3根连线相接:芯片端管脚分别为CLK.DIN.LOAD,其中CLK为时钟输入端,DIN为数据输入端,LOAD为锁存信号。MAX7219的工作时序为:时钟的上升沿MAX7219把DIN引脚数据移入内部移位存放器,在时钟下降沿MAX7219把数据移向DOUT端,而LOAD的上升沿那么锁存最后移入的16位串行数据。对MAX7219的控制操作很方便,其片内具有8个位存放器和6个控制存放器.位存放器对应LED的具体内容,控制存放器决定LED的工作方式。控制存放器分别为:不工作方式存放器、译码方式存放器、亮度控制存放器、MAX7219是在脉冲控制下工作的,因此其抗干扰就更为重要。一般在其电源和地之间接一十几f的电容。另外,当MAX72l9和其他串行芯片共用I/O引脚时,最好在其外边加一上拉电阻。P1口内部有上拉电阻,如不在其外部接上拉电阻,有时出现驱动能力缺乏的现象。本课题用了六个LED数码管,具体连接如以下图:图3.9显示电路图3.4键盘电路设计单片机的键盘电路主要有矩阵扫描和单键电路两种,其中以使用Ⅳ+Ⅳ条l/0线实现Ⅳ×Ⅳ的矩阵扫描式键盘电路最为常用,4×4的矩阵扫描式键盘如下图。当按键少时可接成线性键盘;当按键较多时,可以将键盘接成矩阵形式,这种形式节省口线。矩阵键盘按键的状态同样需要变成数字量1和0。开关的一端通过电阻接VCC,开关另一段的接地是通过程序输出数字0实现的。矩阵键盘每个按键都有它的行值和列值,行值和列值的组合就是这个这个按键的编码。矩阵行线和列线分别通过两个并行接口和CPU通信,其中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态。由行扫描值和列回馈信号共同形成键编码。当有一个键按下时,那么与此键对应的行线与列线接通。如此行线为低电平,那么此列线也为低电平。为确定是否有键按下,CPU先通过并行输出口使所有的行线为低电平,然后通过并行输入口读入列信号,假设为全“1〞,那么没有键按下,假设有一个为“0〞,那么表示有一个键已按下。假设有一个为“0〞,那么表示有一个键已按下。为消去按下时的抖动现象,程序延迟20ms后再判断具体是哪一个键按下先将第一行置为低电平,然后读入列信号,假设有一个为“0〞,那么按下的键在此行;假设为全“1〞,那么按下的键不在此行,再将下一行置为低电平,并测试列信号。电路原理图如以下图所示:图3.10键盘电路原理图本课题使用行列扫描方式,在单片机的P1口上连接上4*4的键盘,单片机扫描键盘,如果有键按下,单片时机根据键码执行相应的程序,使整个系统的功能更加完善。3.5报警电路设计为了实现多点温度检测报警系统,本课题采用AT89C51单片机作为主控制器,采用扫描的方式对多点DS18B20温度传感器获取对应该位置的温度值,经处理后通过串口可以立即发送到上位机,如温度不在设定的范围内,给出报警信号。系统总体硬件电路如图3.11所示。图3.11温度报警电路3.6通信模块设计3.6.1RS-232接口简介RS232是目前异步串行通信中应用最广泛的标准总线,适用于数据中断设备(DTE和数据通信设备(DEC)ELARS232是目前最常用的串行接口标准,用于计算机与计算机之间,计算机与单片机的数据通信。此标准的目的是定义数据终端设备(DTE)之间的电气特性。RS232提供了单片机与单片机、单片机与PC机之间串行数据通信的标准接口。但RS232规定的逻辑电平与单片机的逻辑电平是不一致的。因此在应用中,必须把微处理器的信号电平(TTL电平)转换为RS232电平,或者对二者进行逆转换。选用电平转换芯片MAX232来实现的。由于PC机串行口使用的是RS-232C逻辑电平,而AT89C51单片机串行口的输入输出均为TTL电平,因此,当PC机与单片机通信时必须进行电平转换。常见的电平转换方法有以下3种:①使用MC1488和MC1489电平转换器。由于MC1488和MC1489需要15V或12V供电,所以使用不方便,而且工作稳定性和可靠性也不高。②使用2个三极管构成准RS-232C电平转换器。采用此方法串行通信只能工作于半双工状态,而且程序设计复杂。③使用双向电平转换集成芯片。此方法优点是只需单一个+5V电源供电,可靠性高,无需增加程序设计的复杂性,常用的芯片有ICL232,MAX232,TSC232等。本文采用最后一种方法,芯片选用MAX232。3.6.2MAX232芯片简介MAX232芯片是MAXIM公司生产的,包含两路接收器和驱动器的IC片.MAX232芯片内部有一个电源电压转换器,可以把输入的+5V电压变换为RS-232输出电平所需的一1O~+10V电压.所以采用此芯片接口串行通信系统只需单一的+5V电源就可以了.对于没有一12~+12V的场合,其适应性更强.加之其价格适中,硬件接口简单,所以被广泛采用.MAX232芯片的引脚结构如以下图所示.图3.12MAX232芯片引脚图3.6.3PC机与单片机的串行通信接口电路在设计硬件接口电路时,应充分考虑到电路的电气特性、逻辑电平以及驱动能力的匹配问题,假设匹配得不好,将会导致通信失败。如前所述,本文采用MAX232作为PC机与单片机的串行通信接口芯片。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如下图。图3.11PC机与单片机通信接口电路4软件设计系统软件设计主要包括系统程序和流程图,根据整个系统的要求,完成温度的测量与控制必须经过以下几个步骤:单片机接受传感器的温度信号,并通过MAX7219驱动显示出来,单片机扫描键盘,接受控制信号,并将温度显示出来,假设温度不在范围内那么发出报警。4.1系统主程序流程图图4.1系统主程序流程图4.2传感器程序设计〔1〕DSl8b20编程简介每一片单总线芯片内部都有一个全球惟一的64位编码,在多路测温时就是通过匹配每个芯片的ROM编码(ID),来搜寻该路的温度。DS18b20有9个可擦写的内部存放器,称为便笺式RAM。所有的串行通讯,读写每一个bit位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的DS18b20芯片来说,访问每个器件都要遵守以下命令序列:首先是初始化;其次执行ROM命令;最后就是执行功能命令(R0M命令和功能命令后面以表格形式给出)。如果出现序列混乱,那么单总线器件不会响应主机。当然,搜索ROM命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机设备,且准备就绪。DS18B20在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求,只有严格遵守通讯协议才能保证数据传输的正确性和完整性。所有时序均以主机为Master,单总线器件为Slave,每次数据的传输均从主机启动写时序开始,如果要求单总线器件回送数据,那么在写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20的写时序也分为写0时序和写1时序两个过程。写0时序和写1时序的要求不同,写0时,单总线要被拉低至少60s,保证DS18B20能够在15-45s之间正确采样I/O总线上的“0〞电平。写1时,单总线被拉低,在之后的15s内必须释放单总线。DS18B20复位后,就可以编程控制读到其内部RAM所采集到的温度值(通过P0.7),并且读取数据时低位在前,高位在后。读出数据后,需判断对应的温度是正值还是负值,当温度值为正值时,直接将二进制数转换为十进制温度值;当温度值为负值时先将二进制补码变为原码,再转换为十进制温度值。本课题的温度测量与读取软件流程:图4.2温度测量程序流图4.3键盘程序设计单片机将传感器的温度信号显示以后,要开始扫描键盘,单片机根据键码将键盘输入的控制位移信号显示出来或者是执行其他相应的功能。为确定是否有键按下,CPU先通过并行输出口使所有的行线为低电平,然后通过并行输入口读入列信号,假设为全“1〞,那么没有键按下,假设有一个为“0〞,那么表示有一个键已按下。假设有一个为“0〞,那么表示有一个键已按下。为消去按下时的抖动现象,程序延迟20ms后再判断具体是哪一个键按下先将第一行置为低电平,然后读入列信号,假设有一个为“0〞,那么按下的键在此行;假设为全“1〞,那么按下的键不在此行,再将下一行置为低电平,并测试列信号。定义一个键盘扫描的函数,接受键盘的键码值,根据扫描的键码值单片机转入执行相应的按键功能,显示温度数值。键盘控制流程图如下图:图4.3键盘控制流程图参考文献[1]康华光.数字电子技术.第四版.北京:高等教育出版社,2007[2]康华光.模拟电子技术.第四版.北京:高等教育出版社,2003[3]赵广林.Protel99SE电路设计与制版.北京:电子工业出版社,2005[4]万文略.单片机原理及应用.重庆:重庆大学出版社,2004[5]郁有文、常健、程继红.传感器原理及工程应用.第二版.西安:西安电子科技大学出版社,2003[6]余成波,胡新宇,赵勇主编.传感器与自动检测技术.北京:高等教育出版社,2004.2[7]付家才.单片机测控工程实践技术.北京:化学工业出版社,2001[8]李广弟.单片机根底.北京:北京航空航天大学出版社,2001附录A系统电路图附录B软件程序#include<reg51.h>unsignedintshu[]={0x30,0x31,0x32,0x33,0x34,0X35,0x36,0x37,0x38,0x39};unsignedlongt;unsignedchark,f=0;sbitRS=P2^0;sbitRW=P2^1;sbitE=P2^2;sbitDS=P1^1;voiddel(intcount)//延时程序{while(count--);}voiddelay(unsignedintcount)//延时程序{intp;while(count--)for(p=0;p<125;p++);}voidwrite(unsignedchardate)//向DS18B20中写入数据{inti;for(i=0;i<8;i++)//由于是单总线每次只能写一位,一个字节需循环8次{DS=0;//主机在某一时刻将总线从高电平拉到低电平,产生写时间隙DS=date&0x01;//写入数据。del(15);//写如数据要15us,ds18b20对数据采样需要15us~60us,共需35us~70us.DS=1;date>>=1;}}voidinit(unsignedintn)// RW=0,RS=0;向指令存放器中写入命令,即对1602初始化。{delay(10);E=0;RS=0;RW=0;E=1;P0=n;E=0;}voidwrite_data(unsignedcharn)//RS=1,RW=0;向数据存放器中写入数据,即显示的数符。{delay(10); E=0; RS=1; RW=0; E=1; P0=n;E=0;}voidwrite2(unsignedchari){i+=0x30;if(i==4){i=0;}write(0x55);write(0x28);write(i);write(0xc5);write(0xb8);write(0x00);write(0x00);write(0x00);}voidmatchrom() //匹配ROM{unsignedchari;k=P3;switch(k) {case0:{f=1;init(0x80);write_data(0x50);//pressinit(0x81);write_data(0x72); init(0x82);write_data(0x65); init(0x83);write_data(0x73); init(0x84);write_data(0x73);init(0x85);write_data(0x80);init(0x86);write_data(0x61);//ainit(0x87);write_data(0x80);init(0x88);write_data(0x6b);//keyinit(0x89);write_data(0x65);init(0x8a);write_data(0x79);init(0x8b);write_data(0x80); init(0x8c);write_data(0x21);//!for(i=0x8d;i<=0xcf;i++) {init(i);write_data(0x80);}}break;case1: {init(0x83);write_data(0x31); //NO1 write2(0);write(0x8e);}break;case2: {init(0x83);write_data(0x32);//NO2 write2(1);write(0xb9);}break;case4: {init(0x83);write_data(0x33);//NO3 write2(2);write(0xe0);}break;case8:{init(0x83);write_data(0x34); //NO4 write2(3);write(0xd7);} break;default:{f=1; init(0x80);write_data(0x50);//pleaseinit(0x81);write_data(0x6c); init(0x82);write_data(0x65); init(0x83);write_data(0x61); init(0x84);write_data(0x73);init(0x85);write_data(0x65);init(0x86);write_data(0x80);init(0x87);write_data(0x70);//pressinit(0x88);write_data(0x72);init(0x89);write_data(0x65);init(0x8a);write_data(0x73);init(0x8b);write_data(0x73);init(0x8c);write_data(0x80);init(0x8d);write_data(0x6f);//one init(0x8e);write_data(0x6e); init(0x8f);write_data(0x65); init(0xc0);write_data(0x80);init(0xc1);write_data(0x80); init(0xc2);write_data(0x80); init(0xc3);write_data(0x6b);//key init(0xc4);write_data(0x65);init(0xc5);write_data(0x79);init(0xc6);write_data(0x80);init(0xc7);write_data(0x6f);//onlyinit(0xc8);write_data(0x6e);init(0xc9);write_data(0x6c);init(0xca);write_data(0x79);init(0xcb);write_data(0x80);init(0xcc);write_data(0x21);//!init(0xcd);write_data(0x80); init(0xce);write_data(0x80); init(0xcf);write_data(0x80);}break; }}voidlcd(unsignedcharm)//当为负温度时,液晶显示可以高位为0屏蔽.{init(0x80);write_data(0x4e);//NOinit(0x81);write_data(0x4f);init(0x82);write_data(0x80);init(0x84);write_data(0x80);init(0x85);write_data(0x74);//temperatureinit(0x86);write_data(0x65);init(0x87);write_data(0x6d);init(0x88);write_data(0x70);init(0x89);write_data(0x65);init(0x8a);write_data(0x72);init(0x8b);write_data(0x61);init(0x8c);write_data(0x74);init(0x8d);write_data(0x75);init(0x8e);write_data(0x72);init(0x8f);write_data(0x65);init(0xc0);write_data(0x80);init(0xc1);write_data(0x80);init(0xc2);write_data(0x69);//is:init(0xc3);write_data(0x73);init(0xc4);write_data(0x3a);

温馨提示

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

评论

0/150

提交评论