版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1引言在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数,例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反响炉和锅炉中的温度进行检测和控制。由于单片机控制功能强、体积小、功耗低、本钱小等一系列特点,使它在工业控制、智能仪器、节能技术改造、通信系统、信号处理及家用电器产品中得到广泛应用,随着数字技术的开展及单片机在电子系统中的应用,在很大程度上改变了原有的传统设计方法。以往采用模拟电路数字电路实现电路系统,大局部功能单元都可以通过对单片机硬件功能的扩展及专有程序的开发,来实现系统提出的要求,这意味着许多电路设计问题将转化为程序设计问题。这种用软件取代硬件实现和提高系统性能的设计思想称之为微控制技术,微控制技术最根本的研究对象是单片机。采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,采用单片机对温度的控制问题是一个工业生产中经常会遇到的问题。1.1温度检测的意义温度这个和我们每个人生活息息相关的词汇在工业、农业中发挥着越来越大的作用,各种工矿企业,科研机构,都要用到温度控制。例如:烟花爆竹工厂的仓库必须对温度的上限有严格的控制,炼钢厂的锅炉温度,孵化室等等,都需要对温度的变化进行严密的监测和控制,这就需要一些温度监控设备,来对温度进行监控,以防止不幸事件和不必要的损失,因此研究温度的控制方法和装置具有重要的意义。随着现代信息技术的飞速开展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件,热敏电阻的本钱低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度控制系统具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。单片机来对温度进行控制,不仅具有控制方便与组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量,因此单片机对温度的控制在社会工业化中起着关键作用。1.2温度检测技术的开展及趋势自20世纪70年代起采用模拟式组合仪表,采集现场数据信息,并以相关的模拟式仪表进行指示、记录和控制。随着现代信息技术的飞速开展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的本钱低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度检测系统相比,这里设计的超温报警系统具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用AT89S51型单片机作为主控制器件,以DSl8820作为测温传感器通过4位共阳极LED数码管串口传送数据,实现温度的实时显示。通过DSl8820直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在O℃--100℃最大线性偏差小于0.1℃,可直接向单片机传输数字信号,便于单片机及时智能温度控制器正朝着高精度、多功能、总线标准化、高可靠性及平安性、开发虚拟温度控制器和网络温度控制器、研制单片测温控温系统等高科技的方向迅速开展。目前,我国的计算机控制技术还大多处于单控制器+单传感器+执行机构这种较原始的状态,由于工厂及其它场所特殊的高温环境,各类国产传感器的可靠性、稳定性也是一个较为重要的问题,急需解决。此外,温度控制的计算机软件也有待于进一步开发。近百年来,温度控制器的开展大致经历了以下阶段:1)模拟、集成机械式温度控制器;2)电子式智能温度控制器。目前,国际上新型温度控制器正从模拟式向数字式、电子式由集成化向智能化、网络化的方向开展。温度控制器开展初期是机械式温度控制器,这类温度控制器采用双金属片或充气膜盒感测室内温度,使用波段开关直接调整风速。双金属片温度控制器现根本已淘汰,只使用在一些要求不高较低档场合;充气膜盒温度控制器当前较流行,但总体来讲机械式温度控制器缺点十清楚显:1.机械式温度控制器外观陈旧呆板。2.机械式温度控制器控温精度差。3.容易打火〔直接切换强电〕。4.极易在一个极小温差范围内频繁开关水阀〔风阀〕。5.功能比拟单一。在当今电子信息时代,电子自动化、信息采集控制在任何行业都是不可逆转的潮流,电子式温度控制器全面取代机械式温度控制器将在未来很短时间内实现。当今时代是信息化时代,各个领域常以信息的获取与利用为中心,一些先进技术,如信息传感技术、数据处理技术及计算机控制技术正在飞速开展并不断变革。智能化是现代控制系统的主要开展趋势。所谓智能是指随外界条件的变化,具有确定正确行动的能力,也即具有人的思维能力以及推理并作出决策的能力。从温度控制系统的智能化的措施来看,以单片机为核心构成的微型温度控制系统调节装置己被国内外许多公司和单位作为研究对象,客观存在的硬件简单,软件丰富,能方便地实现现代化控制规律和多种功能,性能优良,运行、调试都非常方便,且生产本钱低,可加快生产设备的更新换代,已开始受到重视和欢送。加之近年来,单片机的性能不断提高,而价格却逐年降低,所以单片机温度控制装置将具有广阔的开展和运用前景。单片机具有体积小、重量轻、价格低、可靠性高、耗电少和灵活机动等许多优点,因此利用单片机进行温度的测量和控制,将会大大提高温度测控的可靠性和灵活性。单片机是一种非常活泼和颇具生命力的机种,特别适合用于智能控制系统.与PC机用于控制系统相比,其具有明显的性能价格比。智能化的一个措施就是控制算法的参加,目前以模糊控制为核心的控制算法被广泛的应用。模糊控制系统是基于知识或基于规那么的系统,它的核心就是由所谓的IF—THEN规那么所组成的知识库。模糊系统理论的最大奉献就是它为从知识库向非线形映射的转换提供了一套系统的程序。正是由于这一转换,我们才能将基于知识的系统〔模糊系统〕采用同数学模型及传感器测量一样的方式,应用到工程应用中〔控制、信号处理及通信系统等〕。这样,最终组合而成的系统的分析和设计就会以数学这种严密方式来进行。1.3本课题主要研究的内容及现实意义本课题分为硬件设计和软件设计两大模块,其中本人负责完成软件设计这一模块。本系统的主要任务是以单片机为核心,利用温度传感器对环境的温度进行采集与处理,如果温度超过设定的报警上限值,那么扬声器鸣叫报警,如果低于报警上限值那么不报警,另外可以根据需要人工设定报警上限值。随着单片机和传感技术的迅速开展,自动检测领域发生了巨大变化,温室环境自动监测控制方面的研究有了明显的进展,并且必将以其优异的性能价格比,逐步取代传统的温度控制措施.但是,目前应用于温室大棚的温度检测系统大多采用模拟温度传感器、多路模拟开关、A/D转换器及单片机等组成的传输系统,这种温度采集系统需要在温室大棚内布置大量的测温电缆,才能把现场传感器的信号送到采集卡上,安装和拆卸繁杂,本钱也高。同时线路上传送的是模拟信号,易受干扰和损耗,测量误差也比拟大。为了克服这些缺点,本文参考了一种基于单片机并采用数字化单总线技术的温度测控系统应用于温室大棚的的设计方案,根据试用者提出的问题进行了改良,提出了一种新的设计方案。在本设计中编程语言采用的是C语言,C语言是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,其主要有以下特点:1.C是中级语言它把高级语言的根本结构和语句与低级语言的实用性结合起来。C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最根本的工作单元。2.C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个局部除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供应用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。3.C语言功能齐全C语言具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比拟强大,可以实现决策目的编游戏,编3D游戏,做数据库,做联众世界,做聊天室,做PHOTOSHOP做FLASH,做3DMAX。4.C语言适用范围大C语言还有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维、二维图形和动画,它是数值计算的高级语言。2系统总体设计2.1控制方案温度控制局部,提出了用数字温度传感器DS18B20、单片机AT89C51及七段数码管和一个扬声器的硬件电路完成对温度的实时检测及显示,利用DS18B20与单片机连接由软件与硬件电路配合来实现对温度的实时控制及超出测量范围的上限温度的报警系统,另加一个小的独立键盘,来控温度报警的上限值。系统总体设计框图如图1所示。2.2器件选择本设计是在和做硬件的同学的密切配合下完成的,其中硬件局部的器件选择是:核心处理器为单片机AT89C51,数字式温度传感器DS18B20,温度超限报警时选用扬声器,并用四位共阳极数码管显示出来检测到的环境温度,另外选用了四个独立按键作为控制键盘。2.2.1AT89CAT89C51是一种带4K字节闪烁可编程可擦除只读存储器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory〕的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51具有如下特点:与MCS-51兼容,4K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保存时间:10年,全静态工作:0Hz-24MHz,三级程序存储器锁定,128×8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1〞且在任何非空存储字节被重复编程以前,该操作必须被执行此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。引脚图如下列图2:图1系统结构框图图2STC89C51单片机引脚图数字式温度传感器DS18B20DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单、体积小的特点,因此用它来组成一个测温系统,具有硬件线路简单、低本钱等优点,另外在一根通信线上可以挂很多这样的数字温度计,十分方便。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性,该协议定义了几种信号的时序:初始化时序、读时序、写时序,所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收,数据和命令的传输都是低位在先。DS18B20的复位时序:使用DS18B20时,首先需将其复位,然后才能执行其它命令。复位时,主机将数据线拉为低电平,并保持480-960us,然后释放数据线,再由上拉电阻将数据线拉高15-60us,等待DS18B20发出存在脉冲,存在脉冲有效时间为60-240us,这样就完成了复位操作。DS18B20的读时序:对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时序是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的写时序:对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0〞电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。为保证DS18B20的严格的I/O时序,需要做精确的延时,主机控制DS18B20完成温度转换必须经过3个步骤:初始化、ROM操作指令、存储器操作指令。在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,在程序读该DS18B20时,将没有返回信号,程序进入死循环,所以程序设计中一定要对此进行一定的处理,比方可以参加超时退出等可靠性设计。3软件设计在应用系统中,系统软件的设计是建立在具体硬件电路根底之上,根据系统功能要求可靠地实现系统的各种功能。好的软件设计能够充分发挥微控制器的运算和逻辑控制功能,从而提高仪器的精度和使用的方便性。3.1系统编程语言和编程工具硬件电路焊接好后,就可以编写相关的程序调试电路了,由于电路复杂,不可能一步全部完成,一般方法是,一边写软件一边调试,这样可以及时发现是硬件问题还是软件问题,也方便及时改正。单片机编程可以采用汇编语言,和高级语言,汇编语言编程代码长度短,效率高,但可读性很差,就是自己写的程序,过几天自己再看可能也不能立刻读懂,适用于编写小的程序。现在编写单片机程序一般使用高级语言,C语言用的比拟多,它比汇编语言可读性强,而且运算方便,可以直接调用标准函数库。考虑到开发速度、软件质量、结构严谨、程序巩固等方面,那么C语言是一个很好的选择。下面结合8051介绍单片机C语言的优越性:1〕不懂得单片机的指令集,也能够编写完美的单片机程序;2〕无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序;3〕不同函数的数据实行覆盖,有效利用片上有限的RAM空间;4〕程序具有巩固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,防止了运行中间非异步的破坏;5〕C语言提供复杂的数据类型〔数组、结构、联合、枚举、指针等〕,极大地增强了程序处理能力和灵活性;6〕提供auto、static、const等存储类型和专门针对8051单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址;7〕提供small、compact、large等编译模式,以适应片上存储器的大小;8〕中断效劳程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;9〕提供常用的标准函数库,以供用户直接使用;10〕头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;11〕有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;12〕可方便地接受多种实用程序的效劳:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的平安性等等。本电路编程使用C语言,用KeiluVision3软件编程。在软件系统的设计中,考虑到程序的可读性,系统的可扩展性,以及升级的需要,程序设计过程采用模块化的设计方法,每个模块实现一定的功能,模块与模块间功能相对独立,这样就使得程序结构清晰。另外,模块的功能相对独立,同一模块可以应用在不同的地方,这增加了代码的使用效率。本系统软件设计可以分成几个模块来设计,这几个模块分别是:主程序模块,数码管显示模块,DS18B20操作模块,按键模块等,3.2主程序设计系统的主程序设计主要完成系统初始化、中断优先级设定以及判断调用各模块程序,即主要实现各模块程序的链接。系统上电复位初始化后,首先启动DS18B20,监测周围环境温度,主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。通过键盘设定报警的上限值,读出温度数据后,假设温度超过报警上限值,那么将低电平信号送至P1.2口,使三极管导通,蜂鸣器发出报警声,并在LED上显示系统当前检测到的环境温度,另外可以设定报警的上限值。主程序流程图如图3所示。主程序如下:voidmain(){TESTLED0=0;Delayms(200);read_temp();TESTLED0=1;initialize();while(1){ display(); if(readbit){read_temp();readbit=0;}// read_temp();if(!flash)work_temp();}}温度显示温度显示是否超温温度报警及温度控制系统初始化开始传感器检测?故障提示测量温度YNN图3主程序流程图数码管显示模块为了使操作人员及时掌握生产情况,在一般的微型计算机控制系统或智能化仪器中,都配有显示程序。常用的显示器件有:a、显示和记录仪表,b、显示终端,c、LED或LCD显示器,d、大屏幕显示器。在这些显示方法中,显示和记录仪能连续进行显示和记录,但它的价格比拟贵,且为模拟显示,读数不方便,有一定的误差,所以它只适用于企业的技术改造,在新设计的单片微型计算机系统中不采用,显示终端是目前微型控制系统中常用的显示设备,它直观、灵活,不但可以显示数字,而且可以显示画面及报告,如生产流程图、报警画面、动态趋势图、条形图。在单片机应用系统中,常用的显示器件有LED〔发光二极管显示器〕〕和LCD,〔液晶显示器〕。这两种器件都具有本钱低廉、配置灵活、与单片机接口方便的特点。在本系统的设计中作为人机对话的一个重要局部就是显示器,硬件电路中使用四位共阳极数码管作为系统的显示器,在软件中是显示存放器。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要看到的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制翻开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在动态显示方式中,系统定期的扫描每个数码管,借助于人的视觉残留效应,使的数字得以正确显示,显示电路采用数码管动态扫描电路,占用单片机资源少,显示电路本钱比拟低,与静态扫描电路相比拟,电路简单,本钱低,测温电路采用专门的温度传感器DS18B20,硬件电路相对简单,只需要一根线就可以读取温度,它在本程序中对应的函数有display()。display(){if((key_sign==1)&&led_flash)P0=0xff;elseP0=dis_8[LEDnumber[0]];LED0=0;Delayms(2);LED0=1; //左第一位 温度最高位局部if((key_sign==2)&&led_flash)P0=0xff; elseP0=dis_8[LEDnumber[1]];LED1=0;Delayms(2);LED1=1; //左第二位 温度十位局部 if((key_sign==3)&&led_flash)P0=0xff;elseP0=dis_8[LEDnumber[2]]&0xf7;LED2=0;Delayms(2);LED2=1; //左第三位 温度个位局部 if((key_sign==4)&&led_flash)P0=0xff; elseP0=dis_8[LEDnumber[3]];LED3=0;Delayms(2);LED3=1; //左第四位温度小数局部在控制系统中,有些参数的计算是非常复杂的,用公式计算不仅程序长,难于计算,而且需要消耗大量时间。还有一些非线形参数,它们不是用一般算术运算就可以计算出来的,所有这些运算用编程的方法比拟复杂,有些参数甚至无法建立相应的数学模型,为了解决这些问题,可以采用查表法。温度的小数局部采用的查表法。所谓的查表法,就是把事先计算或测得的数据按一定顺序编制成表格,查表程序的任务就是根据被测参数的值或者中间结果,查出最终所需要的结果。查表法只需把转换结果按序编成表,连续存放在ROM中,用查表指令即可实现转换,查表法编程方便且程序量小,执行速度快,修正起来方便。温度检测子程序温度检测子程序流程图如图4所示。本系统的温度采集选用DS18B20温度传感器。在程序设计中S18B20温度传感器一般有四个步骤:初始化命令;传送ROM命令;传送RAM命令;数据交换命令。由于DS18B20有着严格的时序控制,因此在进行温度采集时必须关闭所有的中断,保证DS18B20平安的工作。初始化的时序是单片机先发出480~960us的复位脉冲,在15~60us后,DS18B20发出60~240us的应答脉冲,完成对DS18B20的初始化。DS18B20的传送命令有:读ROM命令〔33H〕,匹配ROM命令〔55H〕,跳过ROM命令〔CCH〕,搜索ROM命令〔F0H〕,报警搜索命令〔ECH〕。传送RAM命令有:温度转换命令〔44H〕,读存储器命令〔EBH〕,写存储器命令〔4EH〕,复制存储器命令〔48H〕,读EEPROM命令〔B8H〕,读供电方式命令〔B4H〕。数据交换命令是用具体的读/写时序脉冲读出或写入数据。对于DS18B20的读时序分为读0时序和读1时序两个过程。DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。两种写时隙均起始于主机拉低总线,DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0〞电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。写时隙起始后15-60μs期间,单总线器件采样总线电平状态。如果在此期间采样为高电平,那么逻辑1被写入该器件,如果为0,那么写入逻辑0。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB低字节格式:232²21202-12-22-32-4高字节格式:SSSSS262524温度存储器高位的前5位为符号位,当温度大于零时,这5位为0,当温度小于零时,这5位为1,高位剩下的三位和低位的前四位是温度的整数位,低位的后四位是小数位,当温度大于零时它们以原码的形式存储,而当温度小于零时都以二进制补码的形式存储,当转换位数为12位时,温度的精度为0.0625在使用DS18B20时应注意:主机控制DS18B20完成温度转换时,在每一次读写之前,都要对DS18B20进行复位,而且该复位要求主CPU要将数据线下拉500μs,然后释放。DS18B20收到信号后将等待16~60μs左右,之后再发出60~240μs的低脉冲。主CPU收到此信号即表示复位成功。实际上,较小的硬件开销需要相对复杂的软件进行补偿。由于DS18B20与微处理器间采用串行数据传送方式,因此,在对DS18B20进行读写编程时,必须严格地保证读写时序,否那么,将无法正确读取测温结果。本设计中与DS18B20通讯步骤如下:1、初始化;2、ROM命令:跳越ROM命令[CCh]〔由于在本设计中只有DS18B20一个单总线协议芯片〕;3、功能命令:温度转换命令[44h];4、延时;5、初始化;6、ROM命令:跳越ROM命令[CCh];7、功能命令:读暂存器命令[BEh]。温度检测的主程序如下:read_temp(){ow_reset();//总线复位write_byte(0xcc);//发命令SkipROMwrite_byte(0x44);//发读命令 ow_reset(); //总线复位write_byte(0xcc);//发命令SkipROMwrite_byte(0xbe);//Read发转换命令 tplsb=read_byte();//温度低8位tpmsb=read_byte();//温度高8位}3.5按键模块按键电路的作用是设置时间及温度,一般按键电路有按键查询式,CPU不断的检测是否有按键按下,这样将会消耗大量的CPU时间,且反响速度慢,实时性不强;还有一种是中断式按键,只有当有按键按下时,单片机产生中断,开始处理按键的输入功能,没有键按下时单片机处理其他,不需要不停地查询按键是否按下。这样采用中断使按键反响速度快,同时减少单片机处理时间,本设计采用中断扩展式电路。键盘扫描流程图如图5。在51系统中,中断的允许或禁止是由片内的中断允许存放器IE控制的,IE存放器的地址是A8H,位地址为AFH-A8H。存放器的内容及位地址如下:位地址AFAEADACABAA99A8位符号EA//ESET1EX1ET0EX0EA—中断允许总控制位。EA=0时,表示CPU禁止所有中断,即所有的中断请求被屏蔽;EA=1时,表示CPU开放中断,但每个中断源的中断请求时允许还是禁止,要看各自的允许控制。EX0〔EX1〕--外部中断允许控制位。EX0〔EX1〕=0,禁止外中断;EX0〔EX1〕=1,允许外中断。ET0〔ET1〕--定时/计数器的中断允许控制位。ET0〔ET1〕=0,禁止定时/计数器中断;ET0〔ET1〕=1,允许定时/计数器中断。ES--串行中断允许控制位。ES=0,禁止串行中断,ES=1,允许串行中断。在本系统的设计中采用的是中断0,定时时间的计算方式为〔M-X〕T=定时值,即〔216-X〕*1=50所以X=3CB0定时/计数器T0由TH0和TH0构成,T1由TH1和TL1构成。TMOD用于控制和确定各定时/计数器的功能和工作模式。TCON用于控制定时/计数器T0、T1启动和停止计数,同时包含定时/计数器的状态。它们属于特殊功能存放器,这些存放器的内容靠软件设置。系统复位时,存放器的所有位都被清零。根据计算结果,在本系统中,TH0=0X3C,Tl0=0XB0根据硬件的设计方法,编写程序根本结构如下:/*****************************功能:按键输入说明:用到中断0,P2.0~P2.3/****************************/voidinkey_int0()interrupt0 {ucharinput;P2=P2|0x0finput=P2; switch(input&0x0f {case0x0e: //1110最右边//按键1功能 break; case0x0d://1101//按键2功能case0xb://1011//按键3功能 case0x07://0111//按键4功能 break; default:break; } }NNNN键盘扫描有键闭合?延时去键抖动扫描键盘Y找到闭合键?计算键值执行相应功能返回YNN开始关中断初始化DS18B20设置温度转换命令调用写命令子程序设置跳过ROM命令调用写命令子程序调延时子程序设置跳过ROM命令调用写命令子程序初始化DS18B20返回读DS18B20得到温度数据设置读温度命令调用写命令子程序图4温度检测流程图图5键盘扫描流程图4系统调试4.1仿真器和调试软件的使用本系统的调试是利用的TKS系列的仿真器,调试软件是Keil编译软件。TKS系列仿真器可以实时在线仿真PHILIPS半导体公司的80C51系列单片机的同时,还能够实时在线仿真ATMEL、HY、Winbond等公司兼容MCS-51内核的标准80C51单片机,彻底解决80C51开发中的仿真工具的瓶颈问题。TKS仿真器可以选用外部晶振作为系统时钟,同时还提供6MHz、12MHz、24MHz三个内部晶振。利用微机把源程序汇编为目标程序并通过串行口把目标程序送入仿真机。Keil是基于80C51内核的微处理器软件开发平台,内嵌多种符合当前工业标准的开发工具,可以完成工程建立和管理,编译,连接,目标代码的生成,软件仿真,硬件仿真等完整的开发流程。尤其C编译工具在产生代码的准确性和效率方面到达了较高的水平。整个调式软件的使用流程为:建立工程→为工程选择目标器件→设置工程的配置参数→翻开/建立程序文件→编译和连接工程→使用TKS仿真器对应用程序进行仿真→将生成的Hex文件烧写到ROM中运行测试。4.2模块程序的调式在系统联调前必须保证各个模块调试正确,在每个模块单独通过调试后才能把它们串联起来,进行整个系统的联调。显示模块的调试:显示模块主要是显示温度的数据,用三极管驱动数码管。先调试数码管能被正确点亮,接着对数码管的每个段逐个单独点亮,列出每个数字的正确段码。最后能做到正确显示0~9每个数字,至此本模块调试才算通过。采集模块的调试:温度采集是选用的DS18B20温度传感器,该传感器有着严格的时序要求,在调试时必须严格按照它的时序要求。先调试初始化程序,在保证初始化程序正确后,才能进行写操作和读操作的调试。由于在DS18B20工作时不能有中断,因此,在调试时不能使用断点操作,调试结果主要看温度存放器里的温度数据是否正确。在调试时必须注意调用该模块时C语言与汇编语言之间的参数传递情况。在Keil编译器中参数的出口和入口都是R6,R7,高字节是存在R6,底字节是存在R7。定时器/计数器中断效劳模块的调试:定时/计数器中断效劳模块完成的功能是进行系统时钟的计算,系统控制周期的计算,对系统控制量进行输出。调试此子程序时在每个功能程序前设置断点,在程序运行到每处时,都必须查看每个相关参数是否正确,完成的功能是否与程序设计的目的相一致,延时时间要做到精确。4.3系统的联调系统联调是把每个模块按照系统功能组合在一起,主要是完成各个模块间的连接。在整个系统的开始阶段,完成一些存放器和重要参数的设置,然后翻开通信端口,整个系统的启动命令通过键盘或上位机送出,启动之后进入系统主要功能工作阶段。在系统联调中出现的一个重要问题是DS18B20的使用,由于DS18B20在工作时必需关闭所有中断,但系统的时钟是在T0中断中计算的,因此每进行一次温度转换就必需对时间做出修正,以保证系统时钟的正确。在本系统中,许多模块的工作都是通过判断一些标志位来决定本模块是否可以运行的,参加这样的方法有利于协调各个模块的工作,使系统稳定的工作。结论本课题是基于单片机的超温报警显示电路的系统设计,以温度检测智能化和实时化为宗旨,集报警与显示于一体,完成了一个根本的测控系统的设计本课题以AT89S51单片机系统为核心,由单片机、温度传感器、蜂鸣器组成。该温度测控系统利用了DS18B2O“一线总线〞式数字温度传感器,能够对环境温度进行实时巡检。各检测单元能够根据主控机的指令对温度进行定时采集,测量结果在本地显示、处理。主控机负责控制指令的发送,控制温度传感器进行温度采集,收集测量数据,并对测量结果进行整理、显示。主控机与各从机之间能够相互联系、相互协调,从而到达系统整体统一、和谐的效果。系统采用C语言编程,软件调试和维护方便,生成代码质量高,程序执行效率高,当然,由于时间比拟短暂,条件不够成熟,本课题完成的还不够完善,其中还有一些不尽如人意的地方,例如系统的加热和降温,控制算法的参加等,因此本系统还具有很大的完善空间。致谢本论文是在张月红老师的精心指导下完成的,从论文选题到课题难点的解决,张老师都给予了我悉心地指导。张老师严谨的治学态度、很深的专业造诣和顽强的敬业精神都使我受益匪浅,终身难忘。在课题完成过程中张老师给我提供了很多思路与经验,对我深入理解课题的有关知识与方法起到了重要作用,在此,我首先向张老师致以深深的敬意和衷心的感谢!其次,我要感谢我的母校淮阴工学院,它提供应我很好的学习气氛,使我能向更高知识的殿堂迈进,学会了独立思考的精神和一丝不苟的学习态度,更让我把自己青春与美好回忆留在了这里。最后,借此时机向几年来所有帮助过我的老师、朝夕相处的同学和朋友表示最诚挚的谢意!参考文献1李锡雄,陈婉儿.微型计算机控制技术.第1版.北京:科学出版社,19992潘新民,王燕芳.微型计算机控制技术.第1版.北京:电子工业出版社,20033胡汉才.单片机原理及接口技术.北京:北京航空航天大学出版社,19934孙育才.MCS-51系列单片微型计算机及其应用.第3版.东南大学出版社,19975黄胜军等.微机控制应用实验与实例6章兼源.微机控制技术7王福瑞.单片微机测控系统设计大全.北京:北京航空航天出版社8丁镇生.传感器及传感技术应用.电子工业出版社9梅丽凤等.单片机原理及接口技术.清华大学出版社,200610陈明荧.8051单片机课程设计实训教材北京:清华大学出版社,200411赖麒文.8051单片机C语言彻底应用.科学出版社,200212王庆利,袁建敏单片机设计案例实践教程.北京邮电大学出版社,2023附录:软件代码#include<REG51F.H>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^0; //温度传感器DS18B20读写sbitLED0=P2^7;//控制显示数码管的位sbitLED1=P2^5;sbitLED2=P2^6;sbitLED3=P2^4;sbitTESTLED0=P1^1;//报警小灯指示sbitalarm=P1^2;//报警器控制输出bitreadbit=0; //温度读取标志位bitflash=0; //设置温度时数码管闪烁标志bitled_flash=0; //设置温度时数码管闪烁标志uchardataled_cont=0;//闪烁时间定时计数uchardatakey_sign=0;//用于按键中判别uchardatacont1s=0;//定时器温度读取计数uchardatacudisplay=0;//温度整数局部计算缓存uchardatadotdisplay=0;//温度小数局部计算缓存uchardatasettemp=31; //设置温度uchardatatem_dot=0;//设置温度的小数局部uchardatatplsb=0x00;//温度低8位uchardatatpmsb=0x00;//温度高8位uchardataH_freq=0X3C; //报警声音频率设定uchardataL_freq=0XB0; //报警声音频率设定ucharcodedis_8[]={0x28,0x6f,0x58,0x4a,0x0f,0x8a,0x88,0x6e,0x08,0x0a,0xff,0xdf};//0,1,2,3,4,5,6,7,8,9,熄灭-a,b,c,d,e,f,g,dp,对应由底位到高位//温度小数局部用查表法***********//Ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};uchardataLEDnumber[4]={7,8,9,10};//存放要显示的数据,温度显示要送到这里显示/*****************************功能:延时程序 /****************************/voidDelayms(intt)//1ms延时函数{uinti,j; for(i=0;i<t;i++) for(j=0;j<120;j++) ;}/*****************11us延时函数*************************/voiddelay(uinti)//delay延时子程序{while(i--);}voidinitialize(void){IT0=1;EX0=1;//EA=1;//中断0 IT1=1;EX1=1;//EA=1;//中断1 SCON=0x00;//串行口初始化 TH0=0X3C;TL0=0XB0;//50ms定时 TH1=0x3c;TL1=0xb0; //报警定时 TMOD=0x11;ET0=1;TR0=1;//按键中设置运行 TMOD=0x01;ET0=1;TR0=0; ET1=1;TR1=0; EA=1;}/****************DS18B20复位函数************************/voidow_reset(void){unsignedcharx=1;while(x){DQ=1;//DQ复位_nop_();//稍做延时 DQ=0;//单片机将DQ拉低 delay(55);//精确延时大于480us delay(50);DQ=1;//拉高总线 delay(8); //延时x=DQ;//稍做延时后如果x=0那么初始化成功x=1那么初始化失败 }delay(8); // 延时}/****************DS18B20写命令函数************************///向1-WIRE总线上写1个字节 voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--){DQ=1;_nop_();//从高拉倒低DQ=0;_nop_();_nop_();_nop_();nop_();_nop_();//延时5usDQ=val&0x01;//最低位移出delay(8);//66us val=val>>1;//右移1位}DQ=1;delay(1); //延时}///****************DS18B20读1字节函数************************///从总线上取1个字节 ucharread_byte(void){uchari;ucharvalue=0;for(i=8;i>0;i--){DQ=1;_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();//4usDQ=1;_nop_();_nop_();_nop_();_nop_();//4usif(DQ)value|=0x80;delay(8);//66us }DQ=1;return(value);}///****************读出温度函数************************/read_temp(){ow_reset();//总线复位write_byte(0xcc);//发命令SkipROMwrite_byte(0x44);//发读命令 ow_reset(); //总线复位write_byte(0xcc);//发命令SkipROMwrite_byte(0xbe);//Read发转换命令 tplsb=read_byte();//温度低8位tpmsb=read_byte();//温度高8位}/****************温度数据处理函数************************///二进制高字节的低半字节和低字节的高半字节组成一字节,这个 //字节的二进制转换为十进制后,就是温度值的百、十、个位值,而剩//下的低字节的低半字节转化成十进制后,就是温度值的小数局部/********************************************************/voidwork_temp(){ucharn=0;if(tpmsb>127)//正、负数判断{tpmsb=(256-tpmsb);tplsb=(256-tplsb);n=1;//负温度求补码} dotdisplay=tplsb&0x0f;//取低字节的低4位--小数局部 LEDnumber[3]=ditab[dotdisplay]; cudisplay=((tplsb>>4)|(tpmsb<<4));//取整数局部 if((cudisplay<settemp)||((cudisplay==settemp)&&(LEDnumber[3]<tem_dot))) TESTLED0=0;//如果当前温度比设置的低加热 else TESTLED0=1;//如果当前温度比设置的低加热 if(cudisplay>=100){LEDnumber[0]=cudisplay/100;LEDnumber[1]=cudisplay/10-10;} else{LEDnumber[0]=10;LEDnumber[1]=cudisplay/10;}//如果不大于100最高位不显示 LEDnumber[2]=cudisplay%10; if(n)LEDnumber[0]=11;//如果为负温度最高位显示-}/*******************************功能:数码管显示 说明:/******************************/display(){if((key_sign==1)&&led_flash)P0=0xff;elseP0=dis_8[LEDnumber[0]];LED0=0;Delayms(2);LED0=1; //左第一位 温度最高位局部if((key_sign==2)&&led_flash)P0=0xff; elseP0=dis_8[LEDnumber[1]];LED1=0;Delayms(2);LED1=1; //左第二位 温度十位局部 if((key_sign==3)&&led_flash)P0=0xff;elseP0=dis_8[LEDnumber[2]]&0xf7;LED2=0;Delayms(2);LED2=1; //左第三位 温度个位局部 if((key_sign==4)&&led_flash)P0=0xff; elseP0=dis_8[LEDnumber[3]];LED3=0;Delayms(2);LED3=1; //左第四位温度小数局部}/***********
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数据中心网络设备安装与升级合同范本3篇
- 高铁车厢窗帘采购方案
- 社会责任标准化管理办法
- 2025年度跨境电子产品运输及售后服务合同范本3篇
- 市场进入策略工艺管理办法
- 康复医院治疗师聘用合同书
- 校园配餐合作合同
- 投资分红合同样本
- 国际健身中心检查井施工协议
- 企业团队建设光荣院管理办法
- GB/T 23794-2023企业信用评价指标
- 第7章 TBM设备介绍及维修保养汇总
- 第六章 证券法
- 饮品创业项目计划书
- 2023-2024学年江苏省昆山市小学数学五年级上册期末模考试题
- 江苏市政工程计价表定额计算规则
- 外国文学史期末考试题库(含答案)
- GB/T 32218-2015真空技术真空系统漏率测试方法
- GB/T 22520-2008厚度指示表
- GB 18384-2020电动汽车安全要求
- 索拉燃气轮机Titan130介绍
评论
0/150
提交评论