完整版基于单片机的智能温控仪毕业设计.docx
《完整版基于单片机的智能温控仪毕业设计.docx》由会员分享,可在线阅读,更多相关《完整版基于单片机的智能温控仪毕业设计.docx(59页珍藏版)》请在冰点文库上搜索。
完整版基于单片机的智能温控仪毕业设计
以下文档格式全部为word格式,下载后您可以任意修改编辑。
基于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通道、多量程双极性输入、串行输出、逐次逼近型12bitAD转换器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通道、多量程双极性输入、串行输出、逐次逼近型12bitAD转换器。
其封装形式有24脚NarrowPDIP和28脚SSOP两种。
PDIP封装的引脚排列如图4所示。
各有用引脚功能如下:
1-VDD,+5V电源输入端;2、4-DGND,数字地;5-SCLK,串行时钟输入端;6-CS,片选输入端,低电平有效;7-DIN,串行数据输入,即AD转换控制字输入端;8-SSTRB,串行数据输出选通输出端;10-DOUT,串行数据输出端;11-SHDN,掉电模式控制输入端,
图3MAX1270引脚排列
低电平有效;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个时钟周期)和18SCLKs两种方式,后者转换速率稍快的原因是在全部数
据转换期间CS始终维持有效电平。
内部时钟模式也有20、16、13SCLKs等不同转换方式。
不同的时钟模式和转换方式,其转换速率不同。
在外部时钟模式、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)使用片外参考电压
图5AD转换电路
(3)7219显示电路
①MAX7219功能和设置简介
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):
决定正常工作方式或显示测试.
2引脚功能和功能框图:
MAX1279引脚排列如图7所示
图6MAX7219引脚排列图
引脚功能如下:
㈠DIN 为串行数据输入端。
当CLK为上升沿时,数据被载入16b内部移位寄存器。
㈡CLK 为串行时钟输入端。
其最大工作频率可达10MHz。
㈢LOAD 为片选端,当LOAD为低电平时,芯片接收来自DIN的数据,接收完毕,LOAD回到高电平时,接收的数据将被锁定。
图7DIN,CLK和LOAD的工作时序。
㈣DIG0~DIG7 为吸收显示器共阴极电流的位驱动线。
其最大值可达500mA,关闭状态时,输出+VCC。
㈤SEGA~SEGG,DP 为驱动显示器7段及小数点的输出电流,一般为40mA左右,可软件调整,关闭状态时,接入GND。
㈥DOUT 为串行数据输出端,通常直接接入下一片MAX7219的DIN端。
图8MAX7219的功能框图
串行输入数据在时钟上升沿时移入内部的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
x
地址
数据
表2串行数据格式(16位)
3MAX7219控制字
表3max7219寄存器地址控制字
MAX7219有14个可寻址的控制字寄存器(如表3),控制字寄存器由芯片的8×8双端口SRAM识别,SRAM直接寻址,这样单一的位能被更改或保留,条件是电源电压明显大于2V。
控制字寄存器包括译码模式、显示强度、扫描限制(被扫描位的个数)、关闭模式、显示测试(点亮所有的LED)。
另外还有一个空操作寄存器,该寄存器允许数据从DIN直送DOUT,在设备串接情况下,不会改变显示或影响任何控制寄存器。
基于以上优点MAX7219已用于血氧监护仪的脉搏强度柱状图显示及血氧、脉率的LED显示,节省了许多锁存器、译码器及驱动器,大大提高了仪器显示器部分的集成程度。
在很多嵌入式系统设计中,都要用到LED显示驱动芯片,MAXIM公司生产的MAX7219串行LED驱动显示器具有接口简单.占用资源少、控制灵活方便、LED级联扩展便利的优点,从而成为很多开发人员的首选。
图9max7219驱动数码管显示电路
(4)Max232远程通信电路
AT89C52单片机内部的串行接口是全双工的,即它能同时发送和接收数据。
发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。
串行口还有接收缓冲作用,即从接收寄存器中读出前一个已收到的字节之前就能开始接收第二字节。
两个串行口数据缓冲器(实际上是两个寄存器)通过特殊功能寄存器SBUF来访问。
写入SBUF的数据储存在发送缓冲器,用于串行发送;从SBUF读出的数据来自接收缓冲器。
两个缓冲器共用一个地址99H(特殊功能寄存器SBUF的地址)。
①串行口控制寄存器
控制串行口的寄存器有两个特殊功能寄存器:
即串行口控制寄存器SCON和电源控制器PCON。
㈠PCON中的波特率选择位
PCON是一个特殊功能寄存器(如下图所示),没有位寻址功能,字节地址为87H。
其中D7位(SMOD)为波特率选择位。
其他均无意义。
复位时的SMOD值为0。
可用MOVPCON,#80H或MOV87H,#80H指令使该位置1。
当SMOD=1时,在串行口方式1,2或3情况下,波特率提高一倍。
2串行口控制寄存器SCON
特殊功能寄存器SCON用于定义串行口的操作方式和控制它的某些功能。
其字节地址为98H。
寄存器中各位内容如下:
D7D6D5D4D3D2D1D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
ⅰ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位数据可按需要由软件置位或复位。
ⅴ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串行口方式选择
SM0SM1
方式
功能说明
波特率
00
0
移位寄存器方式
fosc12
01
1
8位UART
可变
10
2
9位UART
fosc64或fosc32
11
3
9位UART
可变
1方式0
串行口的工作方式0为移位寄存器输入输出方式,可外接移位寄存器,以扩展IO口,也可外接同步输入输出设备。
方式0主要用于使用CMOS或TTL移位寄存器进行IO扩展的场合。
2方式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)。
图10max232远程通信电路
(5)Ds12887实时时钟电路
DS12887是一款集成了DS12R885裸片、32.768KHz石英晶体和一个可充电电池的时钟器件。
器件内部含有14字节的实时时钟日历、闹钟、控制状态寄存器以及114字节的非易失、电池备份的的静态RAM。
少于31天的月份,月末日期可自动调整,其中包括闰年补偿,该器件提供一个定时闹钟、三个可屏蔽中断和一个通用中断输出,以及可编程方波输出,DS12887可以工作于24小时或带AMPM指示的12小时格式。
一个精密的温度补偿电路用来监视VCC的状态,如果检测到主电源故障,该器件可以自动切换到备用电源供电。
备用电源支持可充电电池或超级电容,器件内部包含一个集成的涓流充电器,涓流充电器始终有效,可通过多路复用的地址数据总线访问ds12887,总线支持Intel和Motorola模式。
DS12887可作为IBMAT计算机的时钟和日历与MC146818和DS1287的管脚兼容在没有外部电源的情况下可工作10年,可以计算到2100年前的秒、分、小时、星期、日期、月、年七种日历信息并带闰年补偿,可以编程选择用二进制码或BCD码代表日历和闹钟信息,可以切换到夏令时。
图11实时时钟电路
(6)24c02存储与读取电路
①24C02功能概述
24C02是一个2K位串行CMOSE2PROM内部含有256个字节的存储空间。
采用I2C总线接口可与400KHzI2C总线兼容,工作电压范围为1.8到6.0V,采用低功耗CMOS技术功耗很低。
设有一个专门的写保护功能:
当WP为高电平时进入写保护状态。
可自定时擦写周期,具有编程擦除周期,数据可保存100年。
②功能描述
24WC02支持I2C总线数据传送协议I2C总线协议规定:
任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件作为接收器件。
数据传送是由产生串行时钟和所有起始停止信号的主器件控制的,主器件和从器件都可以作为发送器或接收器但由主器件控制传送数据发送或接收的模式通过器件地址输入端A0A1和A2可以实现将最多8个24WC01和24WC02器件4个242C04器件,2个24WC08器件和1个24WC16器件连接到总线上。
③管脚描述
㈠SCL串行时钟
CAT24WC02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,是一个输入管脚。
㈡SDA串行数据地址
CAT24WC02双向串行数据地址管脚,用于器件所有数据的发送或接收。
SDA是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线与。
㈢A0A1A2器件地址输入端
这些输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0(24WC01除外)当使用24WC02时最大可级联8个器件如果只有一个24WC02被总线寻址这三个地址输入脚A0A1A2可悬空或连接到Vss;如果只有一个24WC01被总线寻址这三个地址输入脚A0A1A2必须连接到Vss;当使用24WC04时最多可连接4个器件该器件仅使用A1A2地址管脚A0管脚未用,可以连接到Vss或悬空如果只有一个24WC04被总线寻址A1和A2地址管脚可悬空或连接到Vss;当使用24WC08时最多可连接2个器件且仅使用地址管脚A2A0A1管脚未用,可以连接到Vss或悬空;如果只有一个24WC08被总线寻址A2管脚可悬空或连接到Vss;当使用24WC16时最多只可连接1个器件所有地址管脚A0A1A2都未用管脚可以连接到Vss或悬空。
㈣WP写保护
如果WP管脚连接到Vcc所有的内容都被写保护只能读,当WP管脚连接到Vss或悬空允许器件进行正常的读写操作。
④I2C总线协议
I2C总线协议定义如下
㈠只有在总线空闲时才允许启动数据传送
㈡在数据传送过程中当时钟线为高电平时数据线必须保持稳定状态不允许有跳变时钟线为高电平时数据线的任何电平变化将被看作总线的起始或停止信号起始信号时钟线保持高电平期间数据线电