(完整版)基于单片机的智能温控仪毕业设计论文

更新时间:2024-05-27 20:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

优秀论文 审核通过 未经允许 切勿外传

基于设计

AT89C52的智能温控仪

基于AT89C52的智能温控仪设计

一、设计任务及要求

1. 设计题目:基于AT89C52的智能温控仪设计 2. 设计要求:

(1)采用Pt1000温度传感器,测温范围0--100℃; (2)系统可设定温度值;

(3)设定温度值与测量温度值可实时显示; (4)控温精度:±0.5℃。 3. 设计任务 (1)拟定电路。

(2)编制软件流程图及给出系统软件主要部分的源程序

二、设计背景简介

温度是科学技术中最基本的物理量之一,物理化学生物等学科都离不开温度。在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内温度往往是表征对象和过程状态的最重要的参数之一。

本文介绍采用测温范围宽、精度高的铂热电阻进行温度系统的测量和控制。

温度控制系统具有非线性、时滞以及不确定性。单纯依靠传统的控制方式或现代控制方式都很难以达到高质量的控制效果。而智能控制中的模糊控制通过从专家们积累的经验中总结的控制规则,对温度进行控制,可以有效地解决温度控制系统的非线性、时滞以及不确定性。本节采用模糊控制对温度进行控制。

三、系统总体框图

框图说明:本系统共用到两片AT89C52单片机,即单片机A和单片机B,其中A机用于现场温度采集和显示,B机用于控制。A、B机通过max232硬件连接串口实现全双工通信。A机采用中断方式将采集的温度值不停的发往B机,B机采用查询方式实时接受A机发送的温度数据并将处理后的数据送往液晶显示。B机通过按键输入温度设定值,并可将设定温度值通过按键选择发送模式发送到B机,经A机简单处理送数码管显示。

A机将接收到的温度值与当前温度值比较,将比较值作为控制加热丝和风扇

图1 系统总体框图

以及PWM占空比的依据,A机通过两个四位一体的数码管现场显示当前温度和设定温度,因此可以在现场可以动态观察到当前温度变化和当前温度与设定温度之间的差值的大小。由于需要显示日期、时间、温度等众多信息B机采用液晶显示。B机的日期、时间等信息由实时时钟芯片DS12887提供,因为DS12887在断电情况下可长时间运行,且时间误差极小所以省去时间调整环节。B机的存储电路采用24C02存储芯片,每次存储包括日期、时间和A机发送来的温度值在内的共5个字节的信息,每隔一分钟存储一次信息,存储芯片写满以后地址指针指向头地址,覆盖掉最

初的温度值,由于24C02最多包含256个字节,因此最多可以保留51次存储记录,即最多能记录50分钟内的温度值。所以在查询模式下最多可以查询50分钟以内的温度。

四、电路设计

1.电路设计整体思路

在温度测量控制系统中,实际温度值由铂电阻恒流工作调理电路进行测量。为了克服铂电阻的非线性特点,在信号调理电路加入负反馈非线性校正网络;调理电路的输出电压经8 通道、多量程双极性输入、串行输出、逐次逼近型12 bit AD 转换器max1270转换后送入单片机AT89C52;对采样数据进行滤波及标度变换处理后。由高集成化的串行输入输出的共阴极LED驱动显示器max7219连接两个四位一体数码管显示。输入的设定值则有4位的独立式键盘电路进行调整,可分别对设定值的十位和个位进行加一减一操作,送入单片机AT89c52后,有另一4位七段数码管显示。

本系统的模糊控制由单片机AT89C52的程序来实现。首先有温度采样值与设定值之差求出温度误差,进一步求出误差变化率,经量化及限幅程序处理,得到误差语言变量E和误差变化率语言变量Ec,直接查询模糊控制表就可获的控制量U,然后有定时子程序处理,发出控制信号,控制加热片及风扇工作。加热片及风扇的控制电路采用晶体管驱动的直流电磁继电器的通断时间,从而达到控制温度的目的。若系统温度偏高,则控制风扇工作,进行降温;若温度未达到设定值,则输出温度控制信号,控制加热电路,进行加热。从而实现自动控制温度的目的。

2.基本硬件组成 (1)铂电阻测温调理电路

本系统采用恒流工作调理电路,铂电阻选用标称值为1000欧的PT1000作为温度传感器,其物理、化学性能在高温和氧化性介质中非常稳定,其

灵敏度远高于PT100,在-259.34℃~630.74℃温域内可作为温度标准。A1、A2和A3采用低温漂移运放OP07C,由于有电流流经铂电阻传感器,所以当温度为0℃时,载波电阻传感器上有压降,这个电压为铂电阻传感器的偏置电压,是运放A1输出电压的一部分,是恒流工作调理电路的输出实际不为零。所以需要对这个偏置电压调零,图中R1为调零电阻,其作用是当温度为零度时,将恒流工作调理电路的输出调为零。又因为铂电阻的电阻特性为非线性,铂电阻在0~100度变化范围内的非线性误差为0.4%(0.4℃),就有可能对AD量化和数码管显示造成影响,所以加入了线性化电路,图中运放AR3、及R5、R6和R7一起构成了负反馈非线性化校正化网络,R3用于调整运放A2的增益。

电路的调整方法如下(用精密可调电阻代替铂电阻进行调整): ① 将精密可调电阻调整到相当于0℃的阻值(1000欧),用R1调零。 ② 将精密可调电阻调整到相当于50℃的阻值(1193.971欧),用R3

调整增益。

③ 将精密可调电阻调整到相当于100℃的阻值(1385.055欧),用R6

或R7调整线性。

④ 反复调整多次,在0~100℃温度范围内适宜为止。

图2 铂电阻恒流工作调理电路

(2)AD转换电路

目前AD 转换器的种类繁多,从数据输出形式上可分为串行输出与并行输出两大类。其中串行输出AD转换器因其硬件接口简单而得到广泛应用。另外,从可接受的输入信号极性上看,AD 转换器又可分为单极性输入和双极性输入。在很多的数据采集场合常常面对极性可变的模拟信号。当然可将待转换信号进行电位移动以将其转化为单一极性,但如此便增加了电路的复杂性。串行输出、双极性输入AD 转换器MAX1270不增加任何硬件电路可实现对双极性模拟信号AD 转换。MAX1270 是8 通道、多量程双极性输入、串行输出、逐次逼近型12 bit AD 转换器。其封装形式有24 脚Narrow PDIP 和28 脚SSOP 两种。PDIP 封装的引脚排列如图4所示。各有用引脚功能如下:1-VDD,+5V 电源输入端;2、4-DGND,数字地;5-SCLK,串行时钟输入端;6-CS,片选输入端,低电平有效;7-DIN,串行数据输入,即AD 转换控制字输入端;8-SSTRB,串行数据输出选通输出端;10-DOUT,串行数据输出端;11-SHDN,掉电模式控制输入端,

图3 MAX1270 引脚排列

低电平有效;12-AGND,模拟地;13~20-CH0~CH7,模拟信号输入端;21

-REFADJ,参考电压输出外部调节输入;23-REF,参考电压缓冲输出ADC 的参考输入。 ① MAX1270 的控制字

MAX1270 的8 位控制字及其功能如表1 所示。最高位START 为起始位(高电平),标志控制字的开始。CS 为低电平期间,控制字在时钟脉冲SCLK 作用下先高位后低位通过DIN 端输入。

表1 控制字格式

BIT7(MSB) BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0(LSB) START SEL2 SEL1 SEL0 RNG BIP PD1 PD0 ② 时钟模式与转换速率

PD1PD0 为掉电时钟模式选择位。PD1PD0=10、11 时为省电模式。正常工作时MAX1270有外部时钟与内部时钟两种工作模式。PD1PD0=01 时为外部时钟模式,串行数据的移入、移出以及数据采集、转换都由SLCK 端的输入脉冲控制。PD1PD0=00 时为内部时钟模式,

数据转换时钟由芯片自己产生,减轻了微处理器的负担,使得转换后的数据可在微处理器方便的任何时刻读取,利于提高微处理器的工作效率。外部时钟模式分为25SCLKs(每个数据转换需要25 个时钟周期)和18 SCLKs 两种方式,后者转换速率稍快的原因是在全部数

据转换期间CS 始终维持有效电平。内部时钟模式也有20、16、13 SCLKs 等不同转换方式。不同的时钟模式和转换方式,其转换速率不同。在外部时钟模式、SCLK 速率为2MHz、18SCLKs 时MAX1270 转换速率可达110ksps。

③ 通道选择与输入范围

SEL2~SEL0 为通道选择位,000~111 分别选择输入通道CH0~CH7。

RNG~BIP 为输入范围选择位,MAX1270 有4 种输入范围RNG~BIP 置00 时 0~5V 单极性输入, 置01 时0~+10V 单极性输入; 置10 时 -5~+5V 双极性输入;置11 时-10~+10V 双极性输入。 ④传输函数与输出数据格式

对单极性输入,1LSB=FS4096,输出数据为12 位二进制码。对双极性输入,1LSB=FS2048,输出数据为12 位二进制补码。 ⑤参考电压

MAX1270 可使用芯片内的4.096V 参考电压,也可使用外部参考。。图是使用片外参考和片内参考时相关管脚的接法。

图4 管脚连接图 (a) 使用片内参考电压 (b)、(c)使用片外参考电压

图5 AD转换电路

(3)7219显示电路

① MAX721 9功能和设置简介

MAX7219是串行输出共阴极显示性能非常卓越的驱动芯片。其接口采用流行的同步串行外设接口SPI,可与任何一种单片机方便接口,并可同时驱动8位LED,还具有级联功能可控制更多的LED。 MAX7219为24引脚芯片,除与LED显示相连的线外,与微控制器只需3根连线相接:芯片端管脚分别为CLK. DIN.LOAD,其中CLK为时钟输入端,DIN为数据输入端,LOAD为锁存信号。其工作时序为:时钟的上升沿MAX7219把DIN引脚数据移入内部移位寄存器,在时钟下降沿MAX7219把数据移向DOUT端, 而LOAD的上升沿则锁存最后移入的16位串行数据。对MAX7219的控制操作很方便其内部具有15×8位RAM 功能控制寄存器,可方便寻址,对每位数

字可单独控制、刷新,不需要重写整个显示器。显示亮度可数字控制。MAX7219的这些功能,使系统编程简单方便,同时节省IO 口。

MAX7219的控制寄存器分别为:不工作方式寄存器、译码方式寄存器、亮度控制寄存器、扫描个数寄存器、关闭寄存器.显示测试寄存器.寄存器的操作格式为2字节的串行数据,第一个字节为寄存器地址,第二个字节为控制命令或待显示数据。寄存器的地址分配及功能如下所示: ㈠ 不工作寄存器(0x00):用于MAX7219级联控制。 ㈡ 位寄存器(0x01·0x08):8位LED待显示内容。

㈢ 译码方式寄存器(OxOg):决定译码方式,分B码和不译码两种。 ㈣ 亮度控制寄存器(0x0A):LED段电流控制. ㈤ 扫描个数寄存器(0x0B):决定显示多少个LED。

㈥ 关闭寄存器(0xOC):决定正常工作方式或关闭LED显示。 ㈦ 显示测试寄存器(0x0D):决定正常工作方式或显示测试. ② 引脚功能和功能框图: MAX1279 引脚排列如图7 所示

图6 MAX7219引脚排列图

引脚功能如下:

㈠ DIN 为串行数据输入端。当CLK为上升沿时,数据被载入16 b内部移 位寄存器。

㈡ CLK 为串行时钟输入端。其最大工作频率可达10 MHz。 ㈢ LOAD 为片选端,当LOAD为低电平时,芯片接收来自DIN的数据,接收完毕,LOAD回到高电平时,接收的数据将被锁定。

图7 DIN,CLK和LOAD的工作时序。

㈣ DIG0~DIG7 为吸收显示器共阴极电流的位驱动线。其最大值可

达500 mA,关闭状态时,输出+VCC。

㈤ SEGA~SEGG,DP 为驱动显示器7段及小数点的输出电流,一般

为40 mA左右,可软件调整,关闭状态时,接入GND。

㈥ DOUT 为串行数据输出端,通常直接接入下一片MAX7219的DIN

端。

图8 MAX7219 的功能框图

串行输入数据在时钟上升沿时移入内部的16 位移位寄存器, 在装载的上升沿时数据被锁存在每一位或寄存器中。装载信号必须在第16 个时钟上升沿发生时或之后达到高电平, 但要在下一个时钟的上升沿和数据丢失之前到达。串行输入数据通过移位寄存器传输, 在以后数据输出的16. 5 个时钟循环出现,数据在时钟的下降沿记录下来。数据各位记录为D0~D15 (如表2 所列) , D8~D11 为移位寄存器地址, D0~D7 为数据, D12~D15 是无关位。第一位接收到的位是最高位D15。D7 为数据最高有效位,D0 为数据最低有效位。

D15 D14 D13 D12 D11 D10 D9 D8 D7 ~ D0

x x x 表2

串行数据格式(16位) ③ MAX7219 控制字

x 地址 数据 表3 max7219寄存器地址控制字

MAX7219 有14 个可寻址的控制字寄存器(如表3) , 控制字寄存器由芯片的8 ×8 双端口SRAM 识别,SRAM 直接寻址, 这样单一的位能被更改或保留, 条件是电源电压明显大于2V 。控制字寄存器包括译码模式、显示强度、扫描限制(被扫描位的个数) 、关闭模式、显示测试(点亮所有的L ED) 。另外还有一个空操作寄存器, 该寄存器允许数据从DIN 直送DOU T , 在设备串接情况下, 不会改变显示或影响任何控制寄存器。

基于以上优点MAX7219 已用于血氧监护仪的脉搏强度柱状图显示及血氧、脉率的L ED 显示, 节省了许多锁存器、译码器及驱动器,大大提高了仪器显示器部分的集成程度。 在很多嵌入式系统设计中,都要用到LED显示驱动芯片,MAXIM 公司生产的MAX7219串行LED驱动显示

器具有接口简单.占用资源少、控制灵活方便、LED级联扩展便利的优点,从而成为很多开发人员的首选。

图9 max7219驱动数码管显示电路

(4 ) Max232远程通信电路

AT89C52单片机内部的串行接口是全双工的,即它能同时发送和接收数据。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。串行口还有接收缓冲作用,即从接收寄存器中读出前一个已收到的字节之前就能开始接收第二字节。

两个串行口数据缓冲器(实际上是两个寄存器)通过特殊功能寄存器SBUF来访问。写入SBUF的数据储存在发送缓冲器,用于串行发送;从SBUF读出的数据来自接收缓冲器。两个缓冲器共用一个地址99H(特殊功能寄存器SBUF的地址)。 ① 串行口控制寄存器

控制串行口的寄存器有两个特殊功能寄存器:即串行口控制寄存器

SCON和电源控制器PCON。

㈠ PCON中的波特率选择位

PCON是一个特殊功能寄存器(如下图所示),没有位寻址功能,字节地址为87H。

其中D7位(SMOD)为波特率选择位。其他均无意义。复位时的SMOD值为0。可用MOV PCON,#80H或MOV 87H,#80H指令使该位置1。当SMOD=1时,在串行口方式1,2或3情况下,波特率提高一倍。

㈡ 串行口控制寄存器SCON

特殊功能寄存器SCON用于定义串行口的操作方式和控制它的某些功能。其字节地址为98H。寄存器中各位内容如下:

D7 D6 D5 D4 D3 D2 D1 D0

SM0

ⅰ SM0,SM1 串行口操作方式选择位,两个选择位对应于四种状态,所以串行口能以四种方式工作,见表4。

ⅱ SM2 允许方式2和3的多机通信使能位,在方式2或3中,若SM2

置为1,且接收到的第9位数据(RB8)为0,则接收中断标志RI不会被激活,在方式1中,若SM2=1,则只有收到有效的停止位时才会激活RI。在方式0中,SM2必须置为0。

ⅲ REN 允许串行接收位。由软件置位或清零,使允许接收或禁止接收。

ⅳ TB8 是在方式2和3中要发送的第9位数据可按需要由软件置位

SM1 SM2 REN TB8 RB8 TI RI

或复位。

ⅴ RB8 是方式2和3中已接收到的第9位数据。在方式1中,若SM2=0,RB8是接收到的停止位。在方式0中,不使用RB8位。

ⅵ TI 发送中断标志。在方式0中当串行发送完第8位数据时由硬件置位;在其他方式中,在发送停止位的开始时由硬件置位。当TI=1时,申请中断,CPU响应中断后,发送下一帧数据。在任何方式中,该位都必须由软件清0。

ⅶ RI 接收中断标志。在方式0中串行接收到第8位结束时由硬件置位。在其他方式中,在接收到停止位的中间时刻由硬件置位。RI=1时申请中断,要求CPU取走数据。但在方式1中,当SM2=1时,若未接收到有效的停止位,则不会对RI置位。在任何工作方式中,该位都必须由软件清0。在系统复位时,SCON中的所有位都被清0。 ② 串行接口工作方式

串行口的操作方式由SM0,SM1定义,编码和功能如表3所示, 表4 串行口方式选择 SM0 SM1 0 0 0 1 1 0 1 1

㈠ 方式0

串行口的工作方式0为移位寄存器输入输出方式,可外接移位寄存器,以扩展IO口,也可外接同步输入输出设备。方式0主要用于使用CMOS或TTL移位寄存器进行IO扩展的场合。

方 式 0 1 2 3 功 能 说 明 移位寄存器方式 8位UART 9位UART 9位UART 波 特 率 fosc12 可变 fosc64或 fosc32 可变

㈡ 方式1

串行口工作于方式1时,被控制为波特率可变的8位异步通信接口。传送一帧信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。数据位由TXD发送,由RXD接收。波特率是可变的,取决于定时器1或2的溢出速率。 ㈢ 方式2和方式3

串行工作于方式2和方式3时,被自定义为9位的异步通信接口,发送(通过TXD)和接收(通过RXD)一帧信息都是11位,1位起始位(0),8位数据位(低位在先,)1位可编程位(即第9位数据)和1位停止位(1)。方式2和方式3的工作原理相似,唯一的差别是方式2的波特率是固定的。为fosc32或fosc64;方式3的波特率是可变的,利用定时器1或定时器2作波特率发生器。 ③ 波特率

串行口每秒钟发送(或接收)的位数称为波特率。假设发送一位数据所需要的时间为T,则波特率为。

串行口以方式0工作时,波特率固定为振荡器频率的112。为方式2时波特率为振荡器频率的164或132,它取决于特殊功能寄存器PCON中的SMOD位的状态。如果SMOD=0(复位时SMOD=0)。波特率为振荡器频率的164,如果SMOD=1,波特率为振荡器频率的132。

方式1和3的波特率由定时器1的溢出率所决定。当定时器1作波特率发生器时,波特率由下式确定: 波特率=(定时器1溢出率)n

式中:定时器1=溢出率+定时1的溢出次数秒,n为32或16,取决于特殊功能寄存器PCON中的SMOD位的状态。若SMOD=0,则n=32。若SMOD=1,则n=16。

对于定时器的不同工作方式,得到的波特率的范围是不一样的,这主要由定时器1的计数位数不同所决定。对于非常低的波特率,应选择16位定时器方式(即TMOD.5=0,TMOD.4=1),并且在定时器1中断程序中实现时间常数重新装入。在这种情况下,应该允许定时器1中断 (IE.3=1)。

图10 max232远程通信电路

(5) Ds12887实时时钟电路

DS12887是一款集成了DS12R885裸片、32.768KHz石英晶体和一个可充电电池的时钟器件。器件内部含有14字节的实时时钟日历、闹钟、控制状态寄存器以及114字节的非易失、电池备份的的静态RAM。少于31天的月份,月末日期可自动调整,其中包括闰年补偿,该器件提供一个定时闹钟、三个可屏蔽中断和一个通用中断输出,以及可编程方波输出,DS12887可以工作于24小时或带AMPM指示的12小时格式。一个精密的温度补偿电路用来监视VCC的状态,如果检测到主电源故障,该器件可以自动切换到备用电源供电。备用电源支持可充电电池或超级电容,器件内部包含一个集成的涓流充电器,涓流充电器始终有效,可通过多路复用的地址数据总线访问ds12887,总线支持Intel和Motorola模式。

DS12887可作为IBM AT 计算机的时钟和日历与MC146818和

DS1287的管脚兼容在没有外部电源的情况下可工作10年,可以计算到2100年前的秒、分、小时、星期、日期、月、年七种日历信息并带闰年补偿,可以编程选择用二进制码或BCD码代表日历和闹钟信息,可以切换到夏令时。

图 11 实时时钟电路

(6)24c02存储与读取电路 ① 24C02功能概述

24C02是一个2K 位串行CMOS E2PROM 内部含有256 个字节的存储空间。采用I2C总线接口可与400KHz I2C 总线兼容,工作电压范围为1.8 到6.0 V,采用低功耗CMOS 技术功耗很低。设有一个专门的写保护功能:当WP为高电平时进入写保护状态。可自定时擦写周期,具有编程擦除周期,数据可保存100 年。

② 功能描述

24WC02支持I2C 总线数据传送协议I2C总线协议规定:任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件作为接收器件。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的,主器件和从器件都可以作为发送器或接收器但由主器件控制传送数据发送或接收的模式通过器件地址输入端A0 A1 和A2 可以实现将最多8 个24WC01 和24WC02 器件4 个242C04 器件,2 个24WC08 器件和1 个24WC16 器件连接到总线上。 ③ 管脚描述 ㈠ SCL 串行时钟

CAT24WC02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,是一个输入管脚。 ㈡ SDA 串行数据地址

CAT24WC02双向串行数据地址管脚,用于器件所有数据的发送或接收。

本文来源:https://www.bwwdw.com/article/8h77.html

Top