基于PWM的加热温度控制系统设计_第1页
基于PWM的加热温度控制系统设计_第2页
基于PWM的加热温度控制系统设计_第3页
基于PWM的加热温度控制系统设计_第4页
基于PWM的加热温度控制系统设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、引言嵌入式在电子产品中的应用已经变得越来越广泛,并且在很多电子产品中也将其运用到温度控制和温度检测、显示。基于单片机的温度监控系统较传统的温度控制系统具有更好的智能性,并且系统的功能更加易于扩展和升级,是一种低成本的温度控制、检测方案。采用单片机对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且还可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此单片机对温度的控制问题是一个工业生产中经常会遇到的问题。本次设计采用at89s52单片机与各种外围电路构成单片机温度自动检测和控制系统,实现对温度的实时检测、控制以及显示。通过本次设计掌握对温度检测控制系统的硬件设计

2、方法和软件编写方法。熟悉protel软件的使用方法,熟悉pcb板的制作。通过课题的研究进一步的巩固所学知识,同时学习课程以外的相关知识,培养综合应用知识的能力。锻炼动手能力与实际工作能力,将所学的理论与实践结合起来。目前国内外的温度控制方式越来越趋于智能化,温度测量首先是由温度传感器来实现的。测温仪器由温度传感器和信号处理两部分组成。温度测量的过程就是通过温度传感器将被控对象的温度值转换成电的或者其它形式的信号,传递给信号处理电路进行信号处理,转换成温度值显示出来。温度传感器随着温度变化而引起变化的物理参数有:膨胀、电阻、电容、热电动势、磁性能、频率、光学特性及热噪声等。随着生产的发展,新型的

3、温度传感器还会不断出现。目前,国内外通用的温度传感器及测温器大致有以下几种:热膨胀式温度计、电阻温度计、热电偶、辐射式温度仪表、石英温度传感器测温仪。该设计是以单片机at89s52为控制核心,从ds18b20温度传感器的数据采集、设定值调整、lcd显示电路、报警及输出控制电加热等几个方面出发,详细研究和设计了基于pwm的单片机温度控制的各个部分内容,设计了单片机及其外围电路,并结合pid的程序算法。在一些温控系统电路中,广泛采用的是通过热电偶、热电阻或pn结测温电路经过相应的信号调整电路,转换成a/d转换器能接受的模拟量,再经过采样/保持电路进行a/d转换,最终送入单片机及其相应的外围电路,来

4、完成监控。但是由于传统的信号调整电路实现复杂、易受干扰、不易控制而且精度不高。本文介绍单片机结合ds18b20环境温度控制器设计,本系统用一种新型的可编程温度传感器(ds18b20),不需要复杂的信号调整电路和a/d转换电路就能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要运用于各种场合。1 设计要求和方案的选择1.1 设计要求和目标1.1.1具体要求在我们生活的环境中,最高温度都在50以内,所以温度控制的范围设置在环境温度到50。一般人体能够感觉到的温度变化都在1以外,所以选择温度控制误差为1。采用ac220v作为加热部件的电源,是因为我们国家的电压都是220v,所以选它具

5、有通用性,在任何地方都可以用。传统的温度控制器进行温度控制期间,当被加热器件温度升高至设定的温度时,控制器发出信号停止加热,被加热器件的温度还会继续上升几度,然后才开始下降,这样会产生一个很大的偏差。想要解决这个问题,就要采用pid模糊控制技术,并用软件的方法来实现。比例(p)控制器的输出与输入误差信号成比例关系,当仅有比例控制时系统输出存在稳态误差。积分(i)控制器的输出与输入误差信号的积分成正比关系,它可以消除稳态误差。微分(d)控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系,它能预测误差变化的趋势,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,应该使用pid

6、控制技术来改善系统在调节过程中的动态特性。然后,要完成这个设计,还要了解一些显示芯片,温度传感器的用法,做一个键盘,实现输入温度设定值和复位之类的功能。接着,把电热丝和温度传感器放在一起,通过单片机来控制电热丝的通电和断电。最后,就是调试,使温度稳定在设定值附近,误差小于1;1.1.2设计目标 单片机温度传感器lcd显示pid算法键盘加热模块 图1-1 系统结构大致的系统结构,如图1-1所示。首先,通过单片机读取ds18b20的12位串行数据,再加以分析和转换,然后把要显示的数据输入到lcd1602上,使它显示当前温度。其次,通过键盘输入一个设定值,经过单片机的比较判断输出pwm加热信号,然后

7、加热的温度又反馈到单片机进去比较分析,判断是否继续加热。1.2 方案和器件的选择方案一:选择atmel公司的新型单片机avr单片机atmega16,其功能极为强大,内部集成有8路的10位a/d,多种pwm产生模式,输入比较等。用这个作为微控制器,因其内部带有pwm产生器,给设计带来了极大的方便,每次通过模糊运算后产生的控制量赋给内部产生pwm的匹配寄存器,单片机自身就会根据这个值来自动改变pwm的占空比,加热功率便会得到控制。方案二:选择传统的mcs-51单片机做为控制的核心,用其中的一个定时器作为pwm波产生器,传感器将每次的偏差值带回模糊控制器运算,得出每次的控制量,然后送入定时器的赋值寄

8、存器来改变定时器的值来改变占空比。温度传感器选用ds18b20,一总线的数字量输出,避免了用模拟量输出在信号处理时产生的误差较大的因素。显示器则用lcd1602,方便多文字、多字符显示。通过以上两个方案的分析,可知,方案一avr单片机atmega16操作比较复杂系统的学习起来比较困难,且功能利用情况不足10%。方案二解决了方案一难度大、成本高,不利于新手学习等问题。综合评价为:控制容易,便于编程,硬件电路简单,成本也不高,充分发挥了微控制器的性能,提高了性价比,符合大众化的要求。这给设计带来了很大的方便。因此最终决定采用方案一来完成本次设计。2 硬件说明2.1 单片机的选择本次设计主控部分选择

9、了at89s52单片机。at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.1.1主要特性 与mcs-51兼容; 4k字节可编程闪烁存储器; 寿命:1000写/擦循环; 数据保留时

10、间:10年; 全静态工作:0hz-24hz; 三级程序存储器锁定; 128*8位内部ram; 32可编程i/o线; 两个16位定时器/计数器; 5个中断源; 可编程串行通道; 低功耗的闲置和掉电模式; 片内振荡器和时钟电路。 图2-1 at89c系列引脚图2.1.2管脚说明vcc:供电电压。gnd:接地。p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1

11、口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利

12、用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些特殊功能口,如下所示: p3.0:rxd(串行输入口); p3.1:txd(串行输出口); p3.2:/int0(外部中断0); p3.3:/int1(外部中断1); p3.4:t0(记时器0外部输

13、入); p3.5:t1(记时器1外部输入); p3.6:/wr(外部数据存储器写选通); p3.7:/rd(外部数据存储器读选通); p3口同时为闪烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在

14、sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal

15、1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。由以上资料可以看出,at89s52单片机具有32个可编程i/o口以及4k字节的可编程闪烁存储器,对于本次的设计要求已经完全可以任命,因此这款芯片是不错的选择。2.1.3单片机编程语言介绍对于51系列单片机,现有四种语言支持,即汇编、pl/m,c和basic。basic通常附在pc机上,是初学编程的第一种语言。一个新变量名定义之后可在程序中作变量使用,非常易学,根据解释的行可以找到错误而不是当程序执行完才能显现出来。basic由于逐行解释自然很慢,每一行必须在执行时转换成机器代码,需要花费许多时间不能做到实时性。

16、basic为简化使用变量,所有变量都用浮点值。basic是用于要求编程简单而对编程效率和运行速度要求不高的场合。pl/m是intel从8080微处理器开始为其系列产品开发的编程语言。它很像pascal,是一种结构化语言,但它使用关键词去定义结构。pl/m编译器好像汇编器一样可产生紧凑代码。pl/m总的来说是“高级汇编语言”,可详细控制着代码的生成。但对51系列,pl/m不支持复杂的算术运算、浮点变量而无丰富的库函数支持。学习pl/m无异于学习一种新语言。c语言是一种源于编写unix操作系统的语言,它是一种结构化语言,可产生压缩代码。c语言结构是以括号 而不是子和特殊符号的语言。c可以进行许多机

17、器级函数控制而不用汇编语言。与汇编相比,有如下优点:对单片机的指令系统不要求了解,仅要求对51的内存结构有初步了解寄存器分配、不同内存的寻址及数据类型等细节可由 编译器管理程序有规范的结构,可分为不同的函数。这种方式可使程序结构化将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性编程及程序调试时间显著缩短,从而提高效率提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术 c语言作为一种非常方便的语言而得到广泛的支持,c语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机不同较快地移植过来。51的汇编语言非常像其它汇编

18、语言。指令系统比第一代微处理器要强一些。51的不同存储区域使得其复杂一些。尽管懂得汇编语言不是你的目的,看懂一些可帮助你了解影响任何语言效率的51特殊规定。例如,懂得汇编语言指令就可以使用在片内ram作变量的优势,因为片外变量需要几条指令才能设置累加器和数据指针进行存取。要求使用浮点和启用函数时只有具备汇编编程经验才能避免生成庞大的、效率低的程序,这需要考虑简单的算术运算或先算好的查表法。最好的单片机编程者应是由汇编转用c而不是原来用过标准c语言的人。由此来看,单片机有着微处理器所不具备的功能,它可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。2.2 ds18b202.2

19、.1ds18b20概述1、一般说明ds18b20数字温度计提供有9位温度读数,指示器件的温度。信息通过单线接口送入ds18b20或者从ds18b20送出。因此从中央处理器到ds18b20 仅需连接一条线(和地)。读、写和完成温度变换所需要的电源可以直接由数据线本身提供,而不需要外部电源。因为每一个ds18b20都有唯一的系列号(silicon serial number),因此多个ds18b20 可以同时存在于同一条单线总线上。这允许在许多不同的地方放置温度灵敏器件。此特性的应用范围包括hvac环境控制、建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。(1)特性l 特独特的单线

20、接口,只需1个接口引脚即可通信;l 多点(multidrop)能力使分布式温度检测应用得以简化;l 不需要外部元件;l 可用数据线供电;l 不需备份电源;l 测量范围从-55至+125增量值为0.5等效的华氏温度范围是-67至257, 增量值为0.9;l 以9位数字值方式读出温度;l 在1秒(典型值)内把温度变换为数字;l 用户可定义的,非易失性的温度告警设置;l 告警搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况);l 应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统。(2)引脚排列图2-2 ds18b20引脚图2.2.2详细说明(1)综述图2-3的方框图表示ds

21、18b20的主要部。ds18b20有三个主要的数据部件:64位激光(lasered)rom、温度灵敏元件以及非易失性温度告警触发器th 和tl。器件从单线的通信线取得其电源,在信号线为高电平的时间周期内,把能量贮存在内部电容器中;在单信号线为低电平的时间周期内断开此电源,直到信号线变为高电平重新接上寄生(电容)电源为止。作为另一种可供选择的方法,ds18b20也可用外部5v电源供电。64位rom与单线接口存储器与控制逻辑高速暂存器8位crc发生器温度传感器高温触发器th低温触发器tl配置寄存器电源检 测dqvdd内部vdd 图2-3 ds18b20方框图与ds18b20的通信经过一个单线接口。

22、在单线接口情况下,rom操作未定建立之前不能使用存贮器和控制操作,主机必须首先提供五种rom操作命令之一: read rom(读rom); match rom(符合rom); search rom(搜索rom); skip rom(跳过rom)或者alarm search(告警搜索)。这些命令对每一器件的64位激光rom部分进行操作。如果在单线上有许多器件,则可以挑选出一个特定的器件,并给总线上的主机指示存在多少器件及其类型。在成功地执行了rom操作序列之后,可以使用存贮器和控制操作,然后主机就可以提供六种存贮器和控制操作命令之一。一个控制操作命令指示ds18b20完成温度测量。该测量的结果将

23、放入ds18b20的高速暂存(便笺式)存贮器(scratchpad memory)。通过发出读暂存存储器内容的存储器操作命令可以读出此结果。每一温度告警触发器th和tl构成一个字节的eeprom。如果不对ds18b20施加告警搜索命令,这些寄存器可以用作通用用户存储器。使用存储器操作命令可以写th和tl。对这些寄存器的读访问通过便笺存储器,所有数据均以最低有效位在前的方式被读写。(2)寄生电源(parasite power)方框图(图2-4)示出寄生电源电路。当i/o或vdd引脚为高电平时,这个电路便“取”得电源。只要符合指定的定时和电压的要求,i/o将提供足够的功率。寄生电源的优点是双重的:

24、首先利用此引脚远程温度检测无需本地电源,其次缺少正常电源条件下也可以读rom。为了使ds18b20能完成准确的温度变换,当温度变换发生时,i/o线上必须提供足够的功率。因为ds18b20的工作电流高达1ma,5k的上拉电阻将使i/o线没有足够的驱动能力。如果几个ds18b20在同一条i/o线上并且企图同时变换,那么这一问题将变得特别尖锐。有两种方法确保ds18b20在其有效变换期内得到足够的电源电流。第一种方法是在发生温度变换时,i/o线上提供一强的上拉。如图2-4所示,通过使用一个mosfet把i/o线直接拉到电源可达到这一点。当使用寄生电源方式时vdd引脚必须连接到地。向ds18b20供电

25、的另外一种方法是通过使用连接到vdd引脚的外部电源,如图2-5所示。这种方法的优点是在i/o 线上不要求强的上拉。总线上的主机不需向上连接便可以在温度变换期间使线保持高电平。这就允许在变换时间内其它数据在单线上传送。另外,在单线总线上可以放置任何数目的ds18b20,而且如果它们都使用外部电源,那么通过发出跳过(skip)rom命令接着发出变换(convert)t命令,就可以同时完成温度变换。注意只要外部电源处于工作状态,gnd引脚不可悬空。图2-4 强上拉在温度变换期内向ds18b20供电在总线上主机不知道总线上的ds18b20是寄生电源供电还是外部vdd供电的情况下,在ds18b20内采取

26、了措施来通知采用的供电方案。总线上主机通过发出跳过(skip)rom的操作约定,然后发出读电源命令,可以决定是否有需要强上拉的ds18b20在总线上。在此命令发出后,主机接着发出读时间片。如果是寄生供电,ds18b20将在单线总线上送回“0”:如果由vdd引脚供电,它将送回“1”。如果主机接收到一个“0”它知道它必须在温度变换期间在i/o 线上供一个强的上拉。(3)运用-测量温度ds18b20通过使用在(on-board)温度测量专利技术来测量温度。温度测量电路的方框图见图2-6所示。ds18b20通过门开通期间内低温度系数振荡器经历的时钟周期个数计数来测量温度,而门开通期由高温度系数振荡器来

27、决定。计数器予置对应于-55的基数,如果在门开通期结束前计数器达到零,那么温度寄存器也被予置到-55的数值将增量,指示温度高于-55。图2-5 使用vdd提供温度变换所需电流斜率累加器预置计数比较器低温度系数振荡器减法计数器1预置温度寄存器减到0高温度系数振荡器减法计数器2减到0增加停止图2-6 温度测量电路同时,计数器用钭率累加器电路所决定的值来进行予置。为了对遵循抛物线规律的振荡器温度特性进行补偿,这种电路是必需的。时钟再次使计数器计值直至它达到零。如果门开通时间仍未结束,那么此过程再次重复。钭率累加器用于补偿振荡器温度特性的非线性,用以产生高分辩率的温度测量。通过改变温度,每升高一度计数

28、器必须经历的计数个数来进行补偿。因此,为了获得所需的分辩率,计数器的数值以及在给定温度处每一摄氏度的计数个数(钭率累加器的值)二者都必须知道。此计算在ds18b20内部完成用以提供0.5的分辩率。温度读数以16位、符号扩展的二进制补码读数形式提供。表2-1说明输出数据对测量温度的关系。数据在单线接口上串行发送。ds18b20可以以0.5的增量值,在0.5至+125的范围内测量温度,对于应用华氏温度的场合必须使用查找表或变换系数。注意,在ds18b20 中,温度是以1/2lsb(最低有效位)形式表示时,产生以下9位格式,如图2-7。图2-7 温度是以1/2lsb形式表示图最高有效(符号)位被复制

29、到存储器内两字节的温度寄存器中较高msb的所有位,这种“符号扩展”产生了如表2-1所示的16位温度读数。以下的过程可以获得较高的分辩率,首先读温度并从读得的值截去0.5位(最低有效位)。这个值便是temp_read。然后可以读留在计数器内的值,此值是门开通期停止之后计数剩余,公式2-1: (2-1)所需的最后一个数值是在该温度处每一摄氏度的计数个数(count_per_c),于是用户可以使用下式计算实际温度,表2-1。(4)运用告警信号在ds18b20完成温度变换之后,温度值与贮存在th和tl内的触发值相比较,因为这些寄存器仅仅是8位,所以0.5位在比较时被忽略。th或tl的最高有效位直接对应

30、于16位温度寄存器的符号位。如果温度测量的结果高于th或低于tl,那么器件内告警标志将置位。每次温度测量更新此标志。只要告警标志置位ds18b20将对告警搜索命令作出响应。这允许并联连接许多ds18b20同时进行温度测量。如果某处温度超过极限,那么可以识别出正在告警的器件并且立即将其读出而不必读出非告警的器件。(5)64位激光rom每一ds18b20包括一个唯一的64 位长的rom 编码。开始的8位是单线产品系列编码(ds18b20编码是10h)。接着的48位是唯一的系列号。最后的8位是开始56位crc (见图2-8)。64位rom和rom操作控制部分允许ds18b20作为一个单线器件工作并且

31、遵循“单线总线系统”一节中所详述的单线协议。直到rom操作协议被满足,ds18b20控制部分的功能是不可访问的。此协议在rom操作协议流程图(图2-9)中叙述。单线总线主机必须首先操作五种rom操作命令之一: read rom(读rom); match rom(匹配rom); search rom(搜索rom); skip rom(跳过rom)或 alarm search(告警搜索)。在成功地执行了rom操作序列之后,ds18b20特定的功能便可访问,然后总线上主机可以提供六个存贮器和控制功能命令之一。表2-1 温度/数据关系温 度数字输出/(二进制)安息字输出(十六进制)+125000000

32、00 1111101000fah+2500000000 001100100032h+1/200000000 000000010001h+000000000 000000000000h-1/211111111 11111111ffffh-2511111111 11001110ffceh-5511111111 10010010ff92h8位crc编号48位序列号8位产品系列编码msb lsb msb lse msb lsb(最高有效位)(最低有效位)图2-8 64位激光rom上位机tx复位脉冲ds18b20 tx存在脉冲上位机tx rom操作命令33h55hf0hechcchds18b20 txf

33、amily cooeds18b20 tx系列码上位机txbit 0继续警告ds18b20 tx bit 0ds18b20 tx 非bit 0上位机tx bit 0bit0上位机?ds18b20 txcrc 码bit0上位机?上位机tx bit 1ds18b20 tx bit 1ds18b20 tx 非bit 1上位机tx bit 1bit1上位机?bit1上位机?上位机tx bit 63bit63上位机?bit63上位机?ds18b20 与上位机tx bit 63上位机tx memory or control 功能命令nnnnnyyyyyynnnnnnnyyyy图2-9 rom操作流程图(6)

34、crc 产生ds18b20有一存贮在64位rom的最高有效字节内的8位crc。总线上的主机可以根据64位rom的前56位计算机crc的值并且把它与存贮在ds18b20内部的值进行比较来决定rom的数据是否已被主机正确地接收。crc的等效多项式函数为(公式2-2): (2-2)ds18b20也利用与上述相同的多项式函数产生一个8位的crc值并把此值提供给总线的主机以确认数据字节的传送。在使用crc来确认数据传送的每一种情况中,总线主机必须使用上面给出的多项式函数来计算crc的值并把计算所得的值或者与存贮在ds18b20的64位rom部分中的8位crc值(rom 读数)或者与ds18b20中计算得

35、到的8位crc值(在读暂存存贮器中时,它作为第九个字节被读出)进行比较。crc值的比较和是否继续操作都是由总线主机来决定的。当存贮在ds18b20内或由ds18b20计算得到的crc值与总线主机产生的值不符合时,在ds18b20内没有电路来阻止命令序列的继续执行。总线crc可以使用如图2-10所示,由一个移位寄存器和“异或”(xor)门组成的多项式产生器来产生。其它有关dallas公司单线循环冗余校验的信息可参见标题为“理解和使用dallas 半导体公司接触式存贮器产品”的应用注释。移位寄存器的所有位被初始化为零。然后从产品系列编码的最低有效位开始,每次移入一位,当产品系列编码的8 位移入以后

36、,接着移入序列号。在序列号的第48 位进入后,移位寄存器便包含了crc值。移入crc的8位应该使移位寄存器返回至全零。图2-10 单线crc编码(7)存贮器ds18b20的存贮器如图2-11所示那样被组织。存贮器由一个高速暂存(便笺式)ram 和一个非易失性电可擦除eeram 组成,后者存贮高温度和低温度以及触发器th 和tl。暂存存贮器有助于在单线通信时确保数据的完整性。数据首先写入暂存存贮器中,在那里它可以被读回。当数据被校验之后,复制暂存存贮器的命令并把数据传送到非易失性eeram。这一过程确保了更改存贮器时数据的完整性。暂存存贮器是按8 位字节存储器来组织的。头两个字节包含测得温度的信

37、息,第三和第四个字节是th和tl的易失性拷贝,在每一次上电复位时被刷新。接着的两个字节没有使用,但是在读回时它们呈现为逻辑全1。 scratchpad byte e2ramtemperature lsb012345678temperature msbth/userbyte1 th/userbyte1tl/userbvte2 tl/userbvte2reservedreservedcount remaincount percrc图2-11 ds18b20存贮器映象图2.2.3ds18b20的硬件连接ds18b20与单片机的接口极其简单,只需将ds18b20的信号线与单片机的一位双向端口相连即可。

38、如图2-12(a)所示。此时应注意将vdd、dq、gnd三线焊接牢固。另外也可用两个端口,即接收口与发送口分开,这样读写操作就分开了,不会出现信号竞争的问题。如图2-12(b)所示。此图是采用寄生电源方式,将ds18b20的vdd和gnd接在一起。如果vdd脱开未接好,传感器将只送+85.0的温度值。一般测温电缆线采用屏蔽4芯双绞线,其中一对接地线与信号线,另一对接vdd和地线,屏蔽层在源端单点接地。图2-12 ds18b20与单片机的接口3 硬件设计基于单片机的温度监控主要有以下几部分:温度检测数据采集部分,lcd液晶显示部分、报警及控制输出部分、单片机及按键电路设计等几个部分,下面分别加以

39、介绍,硬件模块如图3-1所示。at89s52温度采集模块(ds18b20温度计)键盘调整模块电源模块加热处理模块报警电路模块(蜂鸣器)温度显示模块(采集到的实时温度)图3-1 硬件模块图3.1 温度检测部分温度传感器有很多种,如热敏电阻、热电偶、pn结、半导体温度传感器等。这里选用单总线数字输出的集成半导体温度传感器ds18b20,其特点是:独特的单线接口方式,ds18b20在与微处理器连接时只需要一条口线即可实现微处理器与ds18b20的双向通讯;测温范围55125,固有测温分辨率0.5;支持多点组网功能,多个ds18b20可以并联在唯一的三线上,实现多点测温;工作电源:35v/dc。温度检

40、测数据采集电路如图3-2所示,由温度传感器ds18b20采集被控对象的实时温度,提供给at89s52的i/o口作为数据输入。在本次设计中我们所控的对象为环境监测的温度。图3-2 温度传感器电路3.2 lcd液晶显示部分用来显示的模块,一般有七段数码管和字符型液晶两种。其中led的发光部分由发光二极管拼装组成,其特点是亮度高、耗电少、工作电压低、功耗小、驱动简单、寿命长、易与集成电路匹配、耐冲击、性能稳定。显示屏面积可以根据需要由单元模块任意拼装,强大的视觉冲击力将信息、文字、图片、动画、视频等多种方式显示出来, 成为信息传播的划时代产品,在铁路民航、体育场馆、会议厅等场所。其次,就是字幅型液晶

41、显示模块。它是一种专门用于显示字母,数字,符号等的点阵式液晶显示模块。在显示器件上的电极图型设计,它是由若干个5*7或5*11等点阵符位组成。每一个点阵字符位都可以显示一个字符,点阵字符位之间有一空点距的间隔起到了字符间距和行距的作用。由于液晶显示可以显示字母和各种符号,所以我选择了lcd1602液晶显示器。3.2.1lcd1602的管脚介绍lcd1602采用标准的16脚接口,其中:第1脚:vss为地电源;第2脚:vdd接5v正电源;第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,外接1个10k的电位器可调整对比度;第4脚:rs为寄

42、存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;第5脚:rw为读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和rw共同为低电平时可以写入指令或者显示地址。rw为高电平时可以读忙信号,当rs 为高电平rw为低电平时可以写入数据;第6脚:e端为使能端,当e端由低电平跳变成高电平时,液晶模块执行命令;第714脚:d0d7为8位双向数据线;第15脚:背光源正极;第16脚:背光源接地。3.2.2lcd1602的基本操作(1)lcd1602基本操作时序:读状态:输入:rs=l,rw=h,e=h;输出:d0d7状态字写指令:输入:rs=l,rw=l,d0d7=指令码,e=高脉冲;输出:

43、无读数据:输入:rs=h,rw=h,e=h;输出:d0d7数据写数据:输入:rs=h,rw=l,d0d7数据,e=高脉冲;输出:无读操作的时序如图3-3所示:图3-3 读操作的时序写操作的时序图3-4所示:图3-4 写操作的时序时序时间参数如表3-1所示:表3-1 时序时间参数1602 lcd的控制器内置有80个byte的显存,而1602 lcd只有两行16个字符的显示区域,所以显存中有些地址是无法对应上lcd屏的,下图3-5为显存地址对应图lcd的地址。 图3-5 显存地址3.2.3lcd1602的控制指令lcd1602液晶模块内部的控制器共有11条控制指令,如表3-2所示:表3-2 lcd

44、的控制指令表它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)。指令1:清显示,指令码01h,光标复位到地址00h位置。指令2:光标复位,光标返回到地址00h。指令3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则表示无效。 指令4:显示开关控制。d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示;c:控制光标的开与关,高电平表示有光标,低电平表示无光标;b:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位s/c:高电平时移动显示的文字,低电平时移动的

45、光标。指令6:功能设置命令:dl:高电平时为4位总线,低电平时为8位总线;n:低电平时为单行显示,高电平时双行显示;f: 低电平时显示57的点阵字符,高电平时显示510的点阵字符。指令7:字符发生器ram地址设置。 指令8:ddram地址设置。 指令9:读忙信号和光标地址:bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据。 指令11:读数据。 液晶显示模块是一个慢显示器件,所以在执行每条指令前一定要确认模块的忙标志为低电平(表示不忙),否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。程序在开始时对液晶模块功能

46、进行了初始化设置,约定了显示格式。由于lcd1602是慢显示器件,因此在两次显示之间需要一个小小的时间间隔,间隔太小会导致刷新率太高,从而导致显示过于闪烁。因此在初始化这个过程中先延时25ms,然后再进行初始化,其过程为先进行模式设置,再关闭显示,其次再显示清屏、显示光标移动设置、显示开及光标设置。表3-3 cgrom和cgram字符图形代码对应表lcd1602液晶显示电路如图3-6所示:图3-6 lcd液晶显示电路3.3 单片机及按键电路设计 图3-7为单片机及按键、复位电路的电路图,单片机at89s52的时钟引脚外接11.0592m晶振,作为单片机工作的时钟,ea端接高电平,表示使用片内程

47、序存储器。rst引脚接了上电复位电路,当系统上电时,上电复位电路会产生一个高电平脉冲信号,使系统复位。图3-7 按键、复位电路图键盘是标准的输入设备,实现键盘有两种方案:一种是采用现有的一些芯片实现键盘扫描,如8279, ch451, lmc9768等;还有就是用软件实现键盘扫描。使用现成的芯片可以节省cpu的开销,但增加了成本,而用软件实现具有较强的灵活性,也只需要较少的cpu开销,可以节省开发成本。本文便使用软件实现键盘的扫描。常见的键盘可以分为独立按键式键盘和行列扫描式键盘。独立按键式键盘应用在需要少量按键的情况下,按键和单片机的i/o口线直接连接。而行列扫描式键盘用在按键需求较多的情况

48、下。考虑到本次设计只对温度上限的增加和减少,因此使用独立按键式键盘就已经足够了。理论上当按键按下或弹起时,可以相应的产生低电平或者高电平,但实际并非如此。键盘按键一般都是采用触点式按键开关。当按键被按下或释放时,按键触点的弹性会产生抖动现象,即当按键按下时触点不会迅速可靠地接通,当按键释放时,触点也不会立即断开,而是要经过一段时间的抖动才能稳定下来,按键材料不同,抖动时间也各不相同。图3-8 按键抖动示意图一次完整的按键过程,包含以下几个阶段,如图3-8所示。1) 等待阶段:此时按键尚未按下,处于空闲阶段;2) 闭合抖动阶段:此时按键刚刚按下,但信号处于抖动状态,系统在检测时应消抖延时,约5m

49、s到20ms;3) 有效闭合阶段:此时抖动己经结束,一个有效按键动作己经产生,系统应该在此时执行按键功能,或者将按键编码记录下来,等待键弹起时再执行其功能;4) 释放抖动阶段:许多时候编程人员并不在此时消抖延时,但最好也执行一次消抖延时,以防止误操作;5) 有效释放阶段:若设计要求在按键抬起时才执行功能,则应当在此时进行按键功能的处理。软件上对闭合阶段的抖动一般采用延时再次确认按键是否按下的方式消除抖动。如上图3-4所示,完成系统的被测环境温度和当前环境温度的高低调整的按键分别接到单片机的p2.5和p2.6口上,供单片机来回扫描查询,当没有按键按下时,单片机i/o口p2.5和p2.6口输入高电

50、平,当有按键按下时,对应的单片机端口变为低电平,单片机通过检测这种电平的变化确定按键的状态。3.4 报警电路模块报警电路主要是由蜂鸣器组成。当温度超过或者低于警戒温度时,都会有声响警报。报警电路如下图3-9:蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。1压电式蜂鸣器:压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管、多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5v-15v直流工作电压),多谐振荡器起振,输出1.5-2.5khz的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在

51、陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。2电磁式蜂鸣器:电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。从经济和易于控制的角度去考虑,我选着了电磁式蜂鸣器的有源蜂鸣器。在单片机的输出口再加上一个pnp型的8550,起增大单片机的输出电流,使蜂鸣器发出的声音更响。图3-9 报警电路图3.5 加热处理模块加热处理模块主要是由8550和继电器组成。当温度超过设定温度时通过电阻丝来加热,电路如下图3-10:j1口接单片机的输出端j2

52、口分别接+5v和gnd,当单片机输出高电平时,经过8550的放大后,能驱动继电器线圈通电,然后触点接合,电阻丝加热。继电器:继电器是一种电子控制器件,线圈中就会流过一定的电流,从而产生电磁效应,衔铁便会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。它具有控制系统(又称输入回路)以及被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。所以在电路中起着自动调节、安全保护、转换电路等作用。继电器结构图如图3-11:在继电器的4脚和5脚加上续流二极管,二极管的负极接在4管脚上,负极接在5管脚上,如

53、图3-10所示。当线圈得电,这时继电器开关闭合,电路就处于工作状态。当线圈失电,开关断开电路不工作。但这时出现一个问题,线圈可以储存能量的(线圈会阻止电流的突变,也就是电磁感应作用,即电流只能慢慢增大和减少),如果这时一下使线圈断电,它两端就会产生很大的电压,这样就可能使线圈损坏、相连接的元器件击穿。这时,我们只要在线圈两端接上二极管,便可以使它产生一个回路(断电时相当于在线圈两端接根短路线),使线圈储存的能量放完。这个二极管在这里起到续流的作用,我们通常称之为续流二极管。图3-10 加热及制冷处理电路图图3-11 继电器结构图4 软件系统设计 加热初始化开始设定温度当前温度是否达到设定温度p

54、id算法显示当前温度停止加热 图4-1 主程序流程图该系统的软件设计分为以下几个模块:主程序模块、分频模块、温度采集模块、键盘模块、液晶显示模块以及pid控制模块。主程序主要完成初始化、检查有无按键按下以及调用显示、调用温度等等。其基本思路是,首先对ds18b20和lcd1602进行初始化,调用温度模块,获取当前环境温度数据,经过处理后,调用lcd1602液晶显示子程序来显示数据。完成这些步骤后,继续扫描键盘是否被按下,如果按下则进行相应的设定温度增减。其流程图如图4-1所示。4.1 单片机软件开发语言对于8051单片机来说,现有四种语言支持:即汇编、fi/m、c和basic。c是一种源于编写unix操作系统的语言,它是一种结构化语言,可产生紧凑代码。c可以进行许多机器级函数控制而不用汇编语言。与汇编相比,有如下优点:(1)对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解;(2)寄存器分配、不同存贮器的寻址以及数据类型等细节可由编译器管理;(3)程序有规范的结构,可分为不同的函数,这种方式可使程序结构化;(4)具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;(5)关键

温馨提示

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

评论

0/150

提交评论