资源描述
浙江工商职业技术学院机电工程学院毕业设计浙江工商职业技术学院毕业设计题 目 温度监控器的设计与制作 姓 名 学 号 专业班级 分 院 指导教师 2011年 9 月 23 日温度监控器的设计与制作摘 要:本设计基于AT89C51和DB18B20来实现温度控制器的制作,它以89C51单片机为核心,配以DS18B20(数字温度传感器),小风扇,金属膜电阻来完成温度的控制与显示。系统的硬件和软件都比较简明,且易于实施。在硬件设计方面,由AT89C51、DS18B20(数字温度传感器)、数码管,小风扇,金属膜电阻构成的电路,在软件方面,以单片机和DS18B20数字温度传感器为中心,详细的阐述了系软件设计的思想,主流程图以及相应电路模块的流程图。关键词:温度控制器;DS18B20;AT89C51目录摘要 11绪论 31.1 温度控制器的意义与任务 31.2 温度控制器的发展 31.3 论文设计内容 42 系统设计思路 4 2.1 系统总体设计思路 42.2 核心电路介绍52.3 DS18B20数字温度传感器7 2.3.1 DS18B20数字温度传感器结构介绍8 2.3.2 DS18B20数字温度传感器的特性9 2.3.3 DS18B20与AT89C51的连接电路103 硬件电路设计 103.1 显示电路设计103.2 控制电路设计123.3 晶振电路的设计123.4 复位电路的设计 134 软件设计144.1 设计思路 144.2 显示程序设计 15 4.3 温度控制程序设计 165 调试 17 5.1调试准备 175.2 关于温度控制器的部分调试 185.3 软件编程的几点体会18结论 19谢辞 20参考文献 21附录A(电路元器件清单)22附录B(电路原理图)23附录C(PCB图) 24附录D(实物图)25附录E(软件程序)261 绪论1.1温度控制器的意义与任务随着社会的发展,时代的进步,在人们的生活中对于温度的要求也越来越来要求了,而温度控制器它就可以解决人们对于这方面的要求,他可以把温度控制在人们所需要的温度范围内。比如用在对冷部位(如空调室、冷冻水、库温等)的温度及其波动范围进行控制的电开关。根据制冷、制热装置方式的不同,温度控制器电路的电控对象亦不同。例如,对于制冷于制热装置(如空调器、冷饮水机、电冰箱、浴室,咖啡壶等等许多用品中)温度控制器可以根据设定温度直接控制电机或者开关的停开,使温度到达所预定的温度值。温度控制器在实际中应用很广泛,也很实用。温度的输出值也比较准确。随意技术的发展,温度控制器的应用更加广泛,所应用的场合也越来越多,效率与稳定也会不断的提高,在以后的发展中会更加的完善、实用。 温度控制器的任务,具体的说就是用DS18B20(数字温度传感器)来感应被加热的电阻温度,把传感器感应到的温度传输到单片机里进行数据处理,用单片机进行准确的把温度值输出来传输到数码管中去显示当前测到的温度值。如果所测到的温度值位达到限定最高值时就让继电器吸和把金属膜电阻加热,以至达到所规定的上限温度值,如果达到了所规定的温度值,继电器就断开。而小风扇就开始降温工作,把加热器的温度降到所规定的最低值,之后继电器又开始吸合,开始加热工作。就这样一直反复工作,把温度控制在所规定的温度值内活动,而数码管也会显示相应的温度值。1.2 温度控制器的发展 现代信息技术的三大基础是信息采集控制(即温度控制器技术)、信息传输(通信技术)和信息处理(计算机技术)。温度控制器属于信息技术的前沿尖端产品,尤其是温度控制器被广泛用于工农业生产、科学研究和生活等领域,数量日渐上升。以温度作为被控制量的反馈控制系统。在化工、石油、冶金等生产过程的物理过程和化学反应中,温度往往是一个很重要的量,需要准确地加以控制。除了这些部门之外,温度控制系统还广泛应用于其他领域,是用途很广的一类工业控制系统。温度控制系统常用来保持温度恒定或者使温度按照某种规定的程序变化。 温度控制在我国电子,治金,机械等工业领域应用非常广泛,由于具有其工矿复杂,参数多变,运行惯性大,控制滞后等特点,它对控制调节器要求极高。目前,仍有相当部分工业企业在用窖,炉,烘干生产线存在着控制精度不高,炉内温度均匀性差等问题,达不到工艺要求,造成装备运行成本费过高,产出品品质差,严重影响企业济济效益,急需进行技术改造。 严格说,多数温度控制系统中被控对象在进行热交换时的温度变化过程,既是一个时间过程,也是沿空间的一个传播过程,需要用偏微分方程来描述各点温度变化的规律。因此温度控制系统本质上是一个分布参数系统。分布参数系统的分析和设计理论还很不成熟,而且往往过于复杂而难于在工程实际问题中应用。解决的途径有二:一是把温度控制系统作为时滞系统来考虑。时滞较大时采用时滞补偿调节,以保证系统的稳定性。具有时滞是多数温度控制系统的特点之一。另一途径是采用分散控制方式,把分布参数的被控过程在空间上分段化,每一段过程可作为集中参数系统来控制,构成空间上分布的多站控制系统。采用分散控制常可获得较好的控制精度。 近年来,国内外对温度控制调节器进行了广泛,深入的研究,特别是随着计算机的发展,温度控制器的研究取得了巨大的进展,形成了一批商品化温度调节器。自70年代以来,由于工业过程控制的需要,特别是在微电子技术和计算机技术的迅猛发展以及自动控制理论和设计方法发展的推动下,国内外温度控制系统发展迅速,并在智能化,自适应,参数自整定等方面取得成果。在这方面,国外的技术比国内的技术领先,都生产了一批商品化的,性能优异的温度控制器及仪器仪表,并在各行业广泛应用,温度控制器具有控制精度高,抗干扰力强,鲁棒性好响应快、动态偏差小的特点,目前,国内外的温度控制系统以及仪器仪表正朝着高精度,智能化,小型化等方面快速发展。1.3 设计任务与要求 本论文详细的阐述了一个温度控制器的设计与实现,主要包括介绍温度控制器的基本理论、硬件电路的设计、软件编程、硬件软件调试等几部分。(1)温度控制器的基本理论方面,对温度传感器加以讨论。 (2)硬件电路设计方面,完成了总体硬件电路的设计:包括核心电路的选择(AT89C51)、数字温度传感器、显示电路、控制电路和晶振电路的设计。(3)软件设计方面,完成了各个子程序模块的编程设计:主控制程序、显示子程序等。 2 系统设计思路2.1 系统总体设计说明在现代工业测温的许多方面都要有对温度的处理、控制和显示。而单片机由于它具有性能高、速度快、价格低、体积小、稳定可靠、使用方便灵活等特点。还有温度控制器具有控制精度高,抗干扰力强,鲁棒性好响应快、动态偏差小的特点。因而它们常常被用在职能检测装置及控制中,是本次设计的核心元件。本文给出了基于单片机的温度控制系统的设计框图,它主要由以下几部分构成,如图2.1所示:数字温度传感器DS18B20单片机温度显示控制电路晶振电路图2.1系统框图基于单片机AT89C51的核心电路部分。即AT89C51单片机,其主要任务是将传感器输入的信号,传输到单片机中。传感器部分。主要是由DS18B20(数字温度传感器)构成,主要任务是将传感器输出的温度经AT89C51进行数字处理。显示电路部分。它的主要器件是由4位七段LED数码管组成,其任务是将单片机传输并处理后的数据实时显示出来。控制电路部分。它主要由降温电路和加热电路组成。其任务的是控制温度的上下限温度值。晶振电路部分。2.2 核心电路的设计在产业化生产中硬件的价格和成本是对经济效益有关键影响的因素,因此选择一种最合适硬件电路的核心单片机是首要任务。单片机的价格在整个装置的价格中占有较大的比重。因此选择一个价格低廉而且功能合适的单片机有着十分重要的意义。经过综合考虑,本次设计采用AT89C51单片机。AT89C51单片机:89C51系列的单片机是当前最新的一种电擦写的8位单片机,与80C51系列完全兼容,有较强的保密功能,其片内的闪速存储器编程和擦除完全用电实现,编程的速度快,可实现在线编程。89C51片内有4KB的Flash ROM代码存储器阵列。有低电压编程和高电压编程(12V)两种模式。低电压编程模式为用户在系统中编程89C51提供了一个方便的途径,而高电压编程程(12V)模式与一般常规的EPROM编程器兼容。 主要性能: 内含4KB的FLASH存储器,擦写次数1000次。 具有6个中断源,5个中断矢量,2级优先权的中断结构。 AT89C51工作电源电压为5(10.2)V,且典型值为5V。 两种低功耗工作模式,即空闲模式和掉电模式。 内含128字节的RAM。 具有32根可编程I/O线。 具有2个16位可编程定时器。 具有1个全双工的可编程串行通信接口。 具有1个数据指针DPTR。 具有可编程的3级程序锁定位。 AT89C51最高工作频率为24MHz。 完全定态操作:0Hz-24Hz,可输出时钟信号 管脚说明:AT89C51的引脚结构图及功能的叙述。1)电源和晶振: VCC运行和程序校验时加+5V。 图2.2 AT89C51VSS接地。 XTAL1输入到振荡器的反相放大器。 XTAL2反相放大器的输出,输入到内部时钟发生器。当用外部振荡器时,XTAL2不用,XTAL1接收振荡器信号。2)制线:共4根。a. 输入:RST复位输入信号,高电平有效。在振荡器工作时,在RST上作用两个机器周期以上的高电平,将器件复位。EA/VPP片外程序存储器访问允许信号,低电平有效。在编程时,其上施加21V或12V的编程电压。b. 输入、输出:ALE/PROG地址锁存允许信号,输出。用作片外存储器访问时,低字节地址锁存。ALE以1/6的振荡频率稳定速率输出,可用做对外输出的时钟或用于定时。在EPROM编程期间,作输入。输入编程脉冲(PROG)。ALE可以驱动8个LSTTL负载。c. 输出:PSEN片外程序存储器选通信号,低电平有效。在从片外程序存储器取指期间,在每个机器周期中,当PSEN有效时,程序存储器的内容被送上P0口(数据总线)。PSEN可以驱动8个LSTTL负载。3)I/O口:4个口,32根。P08位、漏极开路的双向I/O口。当使用片外存储器(ROM及RAM)时,作地址和数据总线分时复用。在程序校验期间,输出指令字节(这时,需加外部上拉电阻)。P0口能驱动8个LSTTL负载。P18位、准双向I/O口,具有内部上拉电阻。在编程/校验期间,用做输入低位字节地址。P1口可驱动4个LSTTL负载。P28位、准双向I/O口,具有内部上拉电阻。当使用片外存储器(ROM及RAM)时,输出高8位地址。在编程/校验期间,接收高位字节地址。P2口可以驱动4个LSTTL负载。P38位、准双向I/O口,具有内部上拉电阻。P3还提供各种替代功能。在提供这些功能时,其输出锁存器应由程序置1。P3口可以驱动4个LSTTL负载。I/O口的端口自动识别功能,保证了无论是P1口(低8位地址)P2口(高8位地址)的总线复用,还是P3口的功能复用,内部资源自动选择而不需要用指令进行状态选择。l 串行口:P3.0RXD(串行输入口),输入。P3.1TXD(串行输出口),输出。l 中断:P3.2INT0,外部中断0,输入。P3.3INT1,外部中断1,输入。l 定时器/计数器:P3.4T0,定时器/计数器0的外部输入,输入。P3.5T1,定时器/计数器1的外部输入,输入。l 数据存储器选通:P3.6WR,低电平有效,输出,片外数据存储器写选通。P3.7RD,低电平有效,输出,片外数据存储器读选通。图 中VCC就是由外电源电路提供的+5V的电源。AT89C51微控制器对于广泛的电源输入有很强的兼容性,对于供电电源的噪音也有很强的适应性。2.3数字温度传感器DS18B20DS18B20是美国DALLAS公司生产的单线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易于微处理器等优点,特别适合于构成多点温度测控系统,可直接将温度转化成数字信号供微机处理,而且每个DS18B20都有唯一的产品号并可存入其ROM中,以使在构成大型温度测控系统时在单线上挂任意多个DS18B20芯片。从DS18B20读出或写入DS18B20信息仅需要一根口线,共读写及温度变换功率来原于数据总线,该总体本身也可以向所挂接DS18B20供电,而无需额外电源。DS18B20能提供九位温度读数,它无需任何外围硬件即可方便构成温度检测系统。图2.3 DS18B20表 1:数字温度传感器的引脚引脚8脚(SOIC)引脚 PR35说明51GND地42DQ单线应用的数据输入/输出引脚43VDD电源2.3.1 DS18B20数字温度传感器结构介绍DS18B20的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口,存放中间数据的高速暂存器,用于存储用户设定的温度上下限值的TH和TL解发器,存储与控制逻辑、8位循环沉余校验码(CRC)发生器等七部分组成。图2.3.1 DS18B20内部结构框图 DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20的低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。下图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。低温度系数晶振高温度系数晶振预置斜率累加器比较计数器1=0计数器2=0温度寄存器图2.3.2 DS18B20测温原理框图2.3.2 DS18B20数字温度传感器的特性 (1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内(5)温范围55125,在-10+85时精度为0.5(6)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快(8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作2.3.3 DS18B20与AT89C51的连接电路图2.3.3 DS18B20与AT89C51的连接电路3 硬件电路设计3.1 显示电路设计在单片机应用系统中,通常用数码显示器作为输出设备显示一些需要的信息和结果。在显示驱动电路中,每一个LED显示器需要一个译码芯片,每一段需要一个限流电阻。而本设计所使用的传感器是数字温度传感器,它所测出来的温度为数字,就不需要A/D进行转换了,而使用的数码管又是四位数码管,简单,方便,这样,是电路大大减少了工作量,使电路简单化。 图3.1 数码管此数码管有12个脚,正面向上,点为下,前排6个脚和后排6个脚依次从左向右数为前为6个脚为: E 、 D 、 DP 、 C 、 G 、 Vcc4后排6个脚为:Vcc1、A 、 F 、 Vcc2 、Vcc3、 B 图3.1.1 数码管内部结构图3.1.2 数码管与AT89C51的连接3.2 温度控制电路的设计此控制电路为单片机所控制的两路电路,一路为小风扇的工作电路,它的功能是当温度超过所限定的高值时,就为电路散热。另一路为加热电阻的工作电路,它的功能是当温度低于所限定的温度值时,就为电路加热。这两个电路就是把温度限定的温度值中工作,即进行控制温度。 图3.2 AT89C51与控制电路连接图3.3 晶振电路的设计单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。电路中,电容器C1和C2对振荡频率有微调作用,通常取(3010)pF。石英晶体选择6MHz或12MHz都可以。如图所示:图3.3 晶振电路图3.3 晶振电路由图可知,晶振为12MHz,则机器周期Tc=12/12M=1s,从而决定了执行一条一个机器周期的语句为1s。振荡器的工作可以由PD位(特殊功能寄存器PCON中的一位)控制。当PD置1时,振荡器停止工作,系统进入低功耗状态。振荡器的工作频率一般在1.212MHZ之间,现在,由于制造工艺的改进,频率范围正向两端延伸,高端可以达到40MHZ,低端可以达到0HZ。图示由晶振和电容构成谐振电路,C1,C2虽没有严格要求,但电容的大小影响振荡器振荡的稳定性和起振的快速性,本设计选择0.01uF,在设计电路板时,晶振、电容等均应尽可能靠近芯片,以减小分布电容,保证振荡器振荡的稳定性。3.4 复位电路的设计复位是单片机初始化操作。所谓初始化,就是计算机及各芯片在启动运行时都要复位,使各单元处于一个确定的“各就各位”的初始状态,并从这个状态开始工作。MCS51单片机初始化后。程序指针指向0000H单元,单片机由0000H单元开始执行程序。图3.4 复位电路4 软件设计4.1 总体思路温度控制器系统控制程序是控制单片机系统按照预定的操作方式运行的程序,其组要任务是:对温度的控制,把温度控制在规定的值内,以及对温度的检测。软件总体设计包括主控制程序和子显示程序,延时程序。主控制程序主要完成对温度的控制,检测,它通过调用各个程序模块来实现整体系统的各项功能。 MCS-51系列单片机上电复位后,(PC)=0000H,到0030H。电路上电,首先把DS18B20初始化,然后传感器开始感应当前的温度值,并把温度采集到单片机里,让单片机把温度值传输到数码管中去显示温度值,并让单片机进行对温度的判断,如果温度达到所规定的低值时,单片机P2.4口开始工作,没达到就继续进行温度测试。如果达到温度的高值后,单片机P2.7口开始工作,没达到就继续进行温度测试。开始初始化DS18B20读入温度计算温度LCD显示温度延时时间判断温度是否上限温度是否下限温度降温返回是否达到下限温度返回图4.1 总体流程图4.2 显示程序设计显示程序就电路上电开始工作,数码管就显示当前所测到的温度值。他的工作原理是,首先把单片机的百位送到数码管显示,P2.0口置位,在把十位送到数码管显示,P2.1口置位,在那个为送到数码管显示,P2.2口置位,最后把个位送到数码管显示,P2.3口置位,就一直这样工作。 开始单片机百位送数P2.0置位单片机十位送数P2.1置位单片机个位送数P2.2置位单片机小数送数P2.3置位RET图4.2 显示流程图4.3 温度控制程序设计温度控制程序就电路上电后对温度的控制工作。它的工作原理是,首先数码管显示当前的温度,然后DS18B20测试温度,是否有达到上限的温度值,如果达到了上限温度值,风扇启动,开始降温工作,如果没有达到就继续测试与降温工作。如果温度达到下限温度值后就返回。DS18B20判断温度是否到达上限温度风扇启动降温是否到达下限温度返回显示当前温度开始图4.3 温控流程图5 系统调试5.1 系统的合成调试及准备工作软件编好后需要通过硬件看看是否能够实现预想的功能,所以需要二者结合调试。 在调试程序的实际过程中,总是希望在一个很庞大也很复杂的用户程序中,挑选出来某一段程序或某一个子程序,单独进行调试,以便达到化繁为简,各个击破的目的。在编写本课题程序时,采取的是反其道而行之,先简后繁,即将编写好各个子程序先在所购买的目标板上调试成功,然后在组成复杂的用户程序,最后将程序烧写到所设计的装置中,完成整个设计的程序调试工作。 调试前的准备工作:PC机;.程序编制器;.数字万用表;. 5V的电源;.简易实验板(面包板);.电缆;.导线剪;.导线剥离器;.尖嘴的镊子;.平头的小改锥等。5.2 关于温度传感器部分的调试适应电压范围:3.05.5V,在寄生电源方式下可由数据线供电,独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,测温范围55125,在-10+85时精度0.5,可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温,在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快,测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力,负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。5.3 软件编程的几点体会 通过用汇编语言开发基于单片机AT89C51的多路数据采集系统,我发现在编程时,遵循一些规则可避免在后面的工作中犯一些基本错误。 要时常记得对所用的变量进行初始化。在单片机中文件寄存器是不会被初始化为一个特定的取值的。在对变量进行初始化的时候,要确定把它们置为0,因为只有这样才和MPLAB模拟器中给它们赋的初值相吻合,也才能保证它们在应用软件中的工作情况和在模拟器中的工作情况完全一样。 理想情况下,一个应用软件的设计应该使得所有寄存器体1寄存器和硬件设备都在清零后完成初始化,然后在寄存器体。先要制定一个计划用以测试并保证你的程序是正确的。在开发过程中的每一步都要对你的程序进行调试,直到你对所有先前的程序的性能都100%满意了才能继续进行下一步开发工作。5.4 标定结论 此次毕业设计是对我们大学三年的所学知识的最后一次检验,其目的是考察我们对所学专业的掌握程度以及所应用的程度。它与平日所进行的实验、考试、测验不同,它更注重我们的实践能力与综合能力的表现,在做毕业设计的过程中,使我锻炼了自我处理与自我控制的能力。在这几个月的时间里,我通过网上查询以及到图书馆翻阅资料学到了许多的专业相关知识以及其他所对应的专业知识,从而对自己的毕业设计也渐渐的有了了解与思路,同时在老师和同学的帮助下,我对题目设计的思路也有了明晰的概念。我将自己在学校所学的专业知识和理论知识与最近所翻阅的资料进行融合,来完成本次设计的任务与要求,在这个设计过程中使我学到更多的专业知识,让我以后在工作的道路得更大的帮助。在论文写作的过程中,我接触到了各种不同的问题,在设计电路过程中,要设计更加合适、简明、实用的电路,使之在以后的设计工作中减少麻烦。但在设计电路中也碰到一些问题,比如在设计电路板没有把器件合理分布,导致线路复杂化,之后在进行合理布局,使电路简明清晰化。在软件编程方面也会碰到一些问题,比如把一些复杂的程序编成复杂化了,经过反复的修改,以至达到比更好的软件程序。在此次设计中,我提出各种解决方案,获得了很多有价值的心得和体会,这为未来的工作积累了宝贵的资源。论文主要研究目的是实现设计一套基于单片机的温度控制器,包括温度的上限值与下限值的控制与温度的测量。工作总结为如下几点:设计、安装和调试了温度控制器,该部件由温度传感器以及AT89C51单片机组成,实现温度的采集。编写和调试了各部分的软件。谢辞 我所做的设计工作和论文撰写工作,都是在导师*老师的细心指导和严格要求下完成的。*老师严谨治学的态度和宽厚仁慈的关爱,使我受益匪浅。尤其是在论文写作的进行中*老师在百忙之中也不忘关心我的工作与学习,经常挤出时间帮助我完成设计与教我 更多与之相关的专业知,使我受益非潜。正是这种对工作和事业的执着追求,永远不知疲倦的精神鼓舞着我克服一个又一个困难,并顺利的完成设计工作。使我在知识的海洋中不断前行。在此,谨向我尊敬的导师表示衷心的敬意和诚挚的感谢。 同时,我还要感谢我的同学们,正是在这样的一个团结友爱,亲密无间的集体中,在他们的合作、帮助和启发中,才有了我今天的小小收获。谢谢你们! 参考文献1吕俊芳编著.传感器接口与检测仪器电路.北京航空航天大学出版.1994.62薛钧义、姚燕南主编.微机控制系统及其应用.西安交通大学出版社,1994.23李华.MCS-51系列单片机实用接口技术.北京航天航空大学出版.1993,84周航慈.单片机应用程序设计技术.北京航空航天大学出版社,19918刘乐善主编.微型计算机接口技术及应用 .华中科技大学出版社10周航慈编著.单片机应用程序设计技术.北京航空航天大学出版社11何立民编著.MCS-51单片机应用系统设计.北京航空航天大学出版社12童诗白.模拟电路技术基础.高等教育出版社 13何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社.190015王之芳.传感器应用技术.西北工业大学出版社.199518陈宝江.MCS单片机应用系统指南.北京:机械工业出版社,199719万福君.单片微机原理系统设计与开发应用.中国科学出版社.199520张友德、赵志英等.单片机原理应用与实验.上海复旦大学出版社.199222高海生等单片机应用技术大全.西安:西安交通大学出版社. 1991.1223陈汝全电子技术常用器件应用手册.北京理工大学出版社. 1991.9附 录附录A电路元器件清单:序号材料名称型号规格数量编号1数字温度传感器DS18B201J12CPUAT89C511U13集成块74HC5411U24排组A472G1U35数码管LDS-5461AH1A16小风扇DC-5V1S17金属膜电阻2W/1001S28继电器JRC-21F-05VDC1D29电解电容100uF1C510电解电容10uF1C411电解电容22uF1C312瓷偏电容33PF2C1-C213晶振12M1Y114电阻1K1R115电阻4.7K2R2-R316电阻6802R4-R517二级管IN41481D118三级管8550(PNP)2Q1-Q219发光二级管LED2L1-L2附录B 电路原理图: 附录C PCB图附录D 实物图25浙江工商职业技术学院机电工程系毕业设计附录E 软件程序31WDLW EQU 35HWDHW EQU 36HWDBW EQU 30HWDSW EQU 31HWDGW EQU 32HWDXSD EQU 33HWX1 BIT P2.0WX2 BIT P2.1WX3 BIT P2.2 WX4 BIT P2.3BZW BIT 00HSJX BIT P1.1 ORG 0000H SJMP START ORG 0030HSTART: MOV DPTR,#WDTAB MOV WDLW ,#00H MOV WDHW ,#00H LCALL ZHSJ LCALL CF LCALL BCDZH LCALL JYBCD SJMP QXSMAIN: LCALL SZROMQXS: MOV R3 ,#10SPCS: LCALL WDXS DJNZ R3 ,SPCS lcall dbj lcall gbj SJMP MAIN;=判断温度下限= dbj: mov a,30h clr c cjne a,#2,bd1bd1: jc dl setb p2.7 jmp js1dl: clr p2.7 mov a,#0js1: ret;=判断温度上限=gbj: mov a,30h setb c cjne a,#5,db2db2: jnc d2 setb p2.4 jmp js2 d2: clr p2.4 mov a,#0js2: ret ;=设置DS1820的ROM情况=SZROM: SETB SJX ; 定时入口CSH1: LCALL CSH1820 JB BZW,CZ1820 AJMP CSH1 ; 若DS18B20不存在则返回CZ1820: MOV A,#0CCH ; 跳过ROM匹配-0CC LCALL WRITE1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE1820ZHH: JB SJX ,CSH2 LCALL WDXS SJMP ZHHCSH2: LCALL CSH1820 JB BZW,CZ18200 AJMP CSH2CZ18200: MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE1820 MOV A,#0BEH ; 发出读温度命令 LCALL WRITE1820 LCALL READ1820 ;READ1820 LCALL ZHSJ LCALL CF LCALL BCDZH LCALL JYBCD RET;=DS18B20初始化程序=CSH1820:SETB SJX NOP CLR SJX LCALL YS500uS SETB SJX LCALL YS50uS JNB SJX,YES1820 AJMP NO1820YES1820:SETB BZW MOV R7,#100 DJNZ R7,$ AJMP JS3 NO1820: CLR BZWJS3: SETB SJX RET;=读DS18B20的程序=;从DS18B20中读出两个字节的温度数据;高位放在WDHW中,底位放在WDLW中;=READ1820: MOV R4,#2 MOV R0,#WDLWSTRE0: MOV R6,#8STRE1: CLR C SETB SJX NOP CLR SJX NOP SETB SJX MOV 70H,#2 DJNZ 70H,$ MOV C,SJX LCALL YS30uS RRC A SETB SJX DJNZ R6,STRE1 MOV R0,A INC R0 DJNZ R4,STRE0 RET ;=写DS18B20的程序=WRITE1820:MOV R6,#8;写数据入DS1820STWR: CLR C CLR SJX NOP RRC A MOV SJX,C LCALL YS30uS SETB SJX DJNZ R6,STWR SETB SJX RET;=;() 标号: 功能:双字节二进制无符号数乘法 ;入口条件:被乘数在R2、R3中,乘数在R6、R7中。 ;出口信息:乘积在R2(高位)、R3、R4、R5中。;影响资源:PSW、A、B、R2R7 堆栈需求: 字节 ;=ZHSJ: MOV R3 ,WDLW MOV R2 ,WDHW MOV R6 ,#02H MOV R7 ,#71H MOV A,R3;计算R3乘R7;MOVB,R7MULABMOVR4,B;暂存部分积;MOVR5,AMOVA,R3;计算R3乘R6MOVB,R6MULABADDA,R4;累加部分积MOVR4,ACLRAADDCA,BMOVR3,AMOVA,R2;计算R2乘R7;MOVB,R7MULABADDA,R4;累加部分积MOVR4,AMOVA,R3ADDCA,BMOVR3,ACLRARLCAXCHA,R2;计算R2乘R6MOVB,R6MULABADDA,R3;累加部分积MOVR3,AMOVA,R2ADDCA,BMOVR2,ARET;=; 标号: 功能:双字节二进制无符号数除法;入口条件:被除数在R2(高位)、R3、R4、R5中,除数在R6(高位)、R7中。;出口信息:OV=0 时,双字节商在R2(高位)、R3中,OV=1 时溢出。;影响资源:PSW、A、B、R1R7 堆栈需求: 字节;= CF: MOV R6,#00H MOV R7 ,#64H CLRC ;比较被除数和除数MOVA,R3SUBBA,R7MOVA,R2SUBBA,R6JCDVD11SETBOV;溢出RETDVD11:MOVB,#10H;计算双字节商DVD21:CLRC;部分商和余数同时左移一位MOVA,R5RLCAMOVR5,AMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,AXCHA,R2RLCAXCHA,R2MOVF0,C;保存溢出位CLRCSUBBA,R7;计算(R2R3R6R7)MOVR1,AMOVA,R2SUBBA,R6ANLC,/F0;结果判断JCDVD31MOVR2,A;够减,存放新的余数MOVA,R1MOVR3,AINCR5;商的低位置一DVD31:DJNZB,DVD21;计算完十六位商(R4R5)MOVA,R4;将商移到R2R3中MOVR2,AMOVA,R5MOVR3,ACLROV;设立成功标志 RET;=;=温度显示子程序=;段码数据分别存在30h-33h中;位选端分别为p3.1-p3.4;=WDXS: setb wx1 setb wx2 setb wx3 setb wx4 MOV A,WDBW MOVC A,A+DPTR MOV P0,A clr WX1 LCALL YS10uS setb WX1 MOV A,WDSW MOVC A,A+DPTR MOV P0,A clr WX2 LCALL YS10uS setb WX2 MOV A,WDGW MOVC A,A+DPTR MOV P0,A clr WX3 LCALL YS10uS setb WX3 MOV A,WDXSD MOVC A,A+DPTR MOV P0,A clr WX4 LCALL YS10uS setb WX4 RET;-; 标号: 功能:双字节十六进制整数转换成双字节码整数;入口条件:待转换的双字节十六进制整数在R6(高位)、R7中。;出口信息:转换后的三字节码整数在R3(高位)、R4、R5中。(压缩);影响资源:PSW、A、R2R7 堆栈需求: 字节;-BCDZH: MOV A ,R2 MOV R6,A MOV A ,R3 MOV R7 ,ACLRA;码初始化MOVR3,AMOVR4,AMOVR5,AMOVR2,#10h;转换双字节十六进制整数HB3:MOVA,R7;从高端移出待转换数的一位到CY中RLCAMOVR7,AMOVA,R6RLCAMOVR6,AMOVA,R5;码带进位自身相加,相当于乘ADDCA,R5DAA;十进制调整MOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,AMOVA,R3ADDCA,R3MOVR3,A;双字节十六进制数的万位数不超过,不用调整DJNZR2,HB3;处理完RET;=;将R3(高)R4 R5 中的压缩BCD吗解压到;40H(高)41H 42H 43H 44H显示缓冲区;
展开阅读全文