毕业设计论文基于at89c51单片机的通用室温控制器设计管理资料.docx
- 文档编号:10720047
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:43
- 大小:274.15KB
毕业设计论文基于at89c51单片机的通用室温控制器设计管理资料.docx
《毕业设计论文基于at89c51单片机的通用室温控制器设计管理资料.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于at89c51单片机的通用室温控制器设计管理资料.docx(43页珍藏版)》请在冰豆网上搜索。
毕业设计论文基于at89c51单片机的通用室温控制器设计管理资料
第1章绪论
以单片机为核心,设计通用室温控制系统对室内温度进行有效的控制。
用集成温度传感器实时采集室内温度,将采集到的温度信号转换成可供CPU读取的信号,利用简单键盘输入不同的室温设定值,并且能区分开工作日及休息日的情况。
通过液晶显示器在键盘的辅助下能实时显示当前的室温值,设定的温度值、时间、日期等。
对室内温度进行有效的控制,在一天24小时之内不同的时间段可设定不同的室温设定值,并且能区分开工作日及休息日的情况,能够显示当前的室内温度值、设定的温度值、时间、日期等。
本论文拟采用模糊控制为核心算法进行设计。
模糊控制是目前在控制领域所采用的智能控制方法中最具实际意义的方法。
模糊控制的采用解决了大量过去人们无法解决的问题,并且在工业控制、家用电器和各个领域已取得了令人瞩目的成效。
模糊控制比传统的PID等控制方法,在强时变、大时滞、非线性系统中的控制效果有着明显的优势。
将模糊控制技术应用于家电产品在国外已是很普遍的现象。
单片机是家用电器常用的控制器件,把二者结合起来,可使控制器的性能指标达到最优的目的。
基于模糊控制技术的单片机控制的电器,是对传统的电器开关控制的改造,具有达到设定温度的时间短、稳态温度波动小、反应灵敏、抗干扰能力强、节省电能等优点
。
第2章方案论证
本文拟采用以单片机为核心,设计通用室温控制系统对室内温度进行有效的控制。
用集成温度传感器实时采集室内温度,将采集到的温度信号转换成可供CPU读取的信号,利用简单键盘输入不同的室温设定值,并且能区分开工作日及休息日的情况。
通过液晶显示器在键盘的辅助下能实时显示当前的室温值,设定的温度值、时间、日期等。
常用的电加热控制方式有两位式控制、三位式控制、比例控制、积分控制、比例积分控制、比例微分控制及比例积分微分控制。
实践证明这些控制方式是行之有效的,但由于室稳对象的环境参数、系统参数都是时变的,很难建立被控对象准确的数学模型,同时系统参数的在线调节又相当麻烦,所以传统的控制方式不尽使用。
本论文拟采用模糊控制为核心算法进行设计。
模糊控制比传统的PID等控制方法,在强时变、大时滞、非线性系统中的控制效果有着明显的优势。
将模糊控制技术应用于家电产品在国外已是很普遍的现象。
模糊控制是目前在控制领域所采用的智能控制方法中最具实际意义的方法。
模糊控制的采用解决了大量过去人们无法解决的问题,并且在工业控制、家用电器和各个领域已取得了令人瞩目的成效。
拟以AT89C51为核心
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
时钟控制拟采用DS12887进行控制。
DS12887芯片具有微功耗、外围接口简单、精度高、工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟场合中。
利用集成温度传感器AD590实时采集室内温度。
将采集到的温度信号转喊成DC0~~5V的电压信号通过ADC0809转换器转换成数字信号供AT89C51读取。
在一天24小时之内不同的时间段利用简单键盘输入不同的室温设定值,并且能区分开工作日及休息日的情况。
通过液晶显示器在键盘的辅助下能实时显示当前的室温值、设定的温度值、时间、日期等。
系统分为一个主程序,和几个子程序。
主程序主要为初始化,等待子程序的中断。
几个子程序包括以下诸功能:
从键盘输入数据和命令,显示数据,接收从模数转换器来的数据,处理这些数据并且控制输出。
第3章系统硬件设计
AT89C51单片机
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM-FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
·与MCS-51兼容
·4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
管脚说明
:
VCC:
供电电压。
GND:
接地。
图3-1AT89C51管脚说明
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
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"时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入"1"后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
RXD(串行输入口)
TXD(串行输出口)
/INT0(外部中断0)
/INT1(外部中断1)
T0(记时器0外部输入)
T1(记时器1外部输入)
/WR(外部数据存储器写选通)
/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
图3-2振荡器电路
芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写"1"且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
在众多的51系列单片机中,要算ATMEL公司的AT89C51更实用,因他不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除,改写,一般专为ATMELAT89Cx做的编程器均带有这些功能。
显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。
写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。
虽然网上有人说AT89c51可以解密,,只是费用多少的问题。
再者,AT89C51目前的售价比8031还低,市场供应也很充足。
复位电路
此系统中采用电平式开关复位与上电复位,当采用6MHz时钟时,C2为22μF,R9为200Ω,R10为1KΩ。
复位电路的核心就是必须保证RST引脚上出现10ms以上稳定的高电平。
这样就能实现可靠地复位。
此电路中,在按下按键之时,便通电。
在通电瞬间,RC电路充电过程中,RST端出现正脉冲,从而使单片机复位。
图3-3复位电路
实时时钟DS12887
DS12887简介
DS12887为DALLAS公司生产的实时时钟芯片,除具有实时钟功能外,它还具有114字节的通用RAM。
内藏锂电池,并与广泛应用的DS1287、MC146818B脚对脚兼容。
DS12887的功能特点DS12887是美国达拉斯半导体公司最新推出的时钟芯片,采用CMOS技术制成,把时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,同时它与目前IBMAT计算机常用的时钟芯片MC146818B和DS1287管脚兼容,可直接替换。
采用DS12887芯片设计的时钟电路勿需任何外围电路并具有良好的微机接口。
DS12887芯片具有微功耗、外围接口简单、精度高、工作稳定可靠等优点,可广泛用于各种需要较高精度的实时时钟场合中。
其主要功能如下:
(1)内含一个锂电池,断电情况运行十年以上不丢失数据。
(2)计秒、分、时、天、星期、日、月、年,并有闰年补偿功能。
(3)二进制数码或BCD码表示时间、日历和定闹。
(4)12小时或24小时制,12小时时钟模式带有PWM和AM指导,有夏令时功能。
(5)MOTOROLA5和INATAEL总线时序选择。
(6)有128个RAM单元与软件音响器,其中14个作为字节时钟和控制寄存器,114字节为通用RAM,所有ARAM单元数据都具有掉电保护功能。
(7)可编程方波信号输出。
(8)中断信号输出(IRQ)和总线兼容,定闹中断、周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。
图3-4DS12887芯片
DS12887由振荡电路、分频电路、周期中断/方波选择电路、14字节时钟和控制单元、114字节用户非易失RAM、十进制/二进制计加器、总线接口电路、电源开关写保护单元和内部锂电池等部分组成。
下面分别说明管脚功能:
GND,VCC:
直流电源+5V电压。
当5V电压在正常范围内时,数据可读写;,读写被禁止,计时功能仍继续;当VCC下降到3V以下时,RAM和计时器被切换到内部锂电池。
MOT(模式选择):
MOT管脚接到VCC时,选择MOTOROLA时序,当接到GFND时,选择INTEL时序。
SQW(方波信号同):
SQW管脚能从实时时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。
AD0~AD7(双向地址/数据复用线):
总线接口,可与MOTOROLA微机系列和INTEL微机系列接口。
AS(地址选通输入):
用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。
DS(数据选通或读输入):
DS/RD客脚有两种操作模式,取决于MOT管脚的电平,当使用MOTOROLA时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总的时刻,在写周期,DS的后沿使DS12887锁存写数据。
选择INTEL时序时,DS称作(RD),RD与典型存贮器的允许信号(OE)的定义相同。
R/W(读/写输入):
R/W管脚也有两种操作模式。
选MOTOROLA时序时,R/W是一电平信号,指示当前周期是读或写周期,DSO为高电平时,R/W高电平指示读周期,R/W低电平指示写周期;选INTEL时序,R/W信号是一低电平信号,称为WR。
在此模式下,R/W管脚与通用RAM的写允许信号(WE)的含义相同。
CS(片选输入):
在访问DS12887的总线周期内,片选信号必须保持为低。
IRQ(中断申请输入):
低电平有效,可作微处理的中断输入。
没有中断条件满足时,IRQ处于高阻态。
IRQ线是漏极开路输入,要求外接上接电阻。
RESET(复位输出):
当该脚保持低电平时间大于200ms,保证DS12887有效复位。
DS12887的内部功能
地址分配DS12887的地址分配,由114字节的用户RAM,10字节的存放实时时钟时间。
日历和定闹RAM及用于控制和状态的4字节特殊寄存器组成,几乎所有的128个字节可直接读写。
时间、日历和定闹单元时间和日历信息通过读相应的内存字节来获取,时间、日历和定闹通过写相应的内存字节设置或初始化,其字节内容可以是十进制或BCD形式。
时间可选择12小时制或24小时制,当选择12小时制时,小时字节搞位为逻辑“1”代表PM。
时间、日历和定闹字节是双缓冲的,总是可访问的。
每秒钟这10个字节走时1秒,检查一次定闹条件,如在更新时,读时间和日历可能引起错误。
三个字节的定闹字节有两种使用方法。
第一种,当定闹时间写入相应时、分、秒定闹单元,在定允许闹位置高的条件下,定闹中断每天准时起动一次。
第二种,在三个定闹字节中插入一个或多个不关心码。
不关心码是任意从C到FF的16进制数。
当小时字节的不关心码位置位时,定闹为小时发生一次由于相线小时和分钟定闹字节置不关心位时,每分钟定闹一次;当三个字节都置不关心位时,每秒中断一次。
非易失RAM在DS12887中,114字节通用非易失RAM不专用于任何特殊功能,它们可被处理器程序用作非易失内存,。
在更新周期也可访问。
中断RTC实时时钟加RAM向处理器提供三个独立的、自动的中断源。
定闹中断的发生率可编程,从每秒一次到每天一次,周期性中断的发生率可从500ms到122s选择。
更新结束中断用于向程序指示一个更新周期完成。
中断控制和状态位在寄存器B和C中。
晶振控制位DS12887出厂时,其内部晶振被关掉,以防止锂电池在芯片装入系统前被消耗。
寄存器A的BIT4~BIT6为010时打开晶振,分频链复位,BIT4~BIT6的其它组合都是使晶振关闭。
方波输出选择15级分步抽着中的13个可用于15选1选择器,选择分频器抽头的目的是在SQW管脚产生一个方波信号,其频率由寄存器A的RS0~RS3位设置。
SQW频率选择与周期中断发生器共离15选1选择器,一旦频率选择好,通过用程序控制方波输出允许位SWQE来控制SQW管脚输出的开关。
周期中断选择周期中断可在IRQ脚产生500ms一次到每122s一次的中断,中断频率同样由寄存器A确定,它的控制位为寄存器B中的PIE位。
更新周期DS12887每秒执行一次更新周期还比较每一定闹字节与相应的时间字节,如果匹配号三个字节都是不关心码,则产生一次定闹中断。
DS12887状态控制寄存器DS12887有4个控制寄存器,它们在任何时间都可访问,即使更新周期也不例外。
寄存器A
BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0UIP
DV2DV1DV0RS3RS2RS1RS0
UIP:
更新周期正在进行位。
当UIP为1,更新转换将很快发生,当UIP为0,更新转换至少在244s内不会发生。
DV0,DV1,DV2:
用于开关晶振和复位分频链。
这些位的010唯一组合将打开晶振并允许RTC计时。
RS3,RS2,RS1,RS0:
频率选择位,从15级频率器13个抽头中选一个,或禁止分频器输入,选择好的抽头用于产生方波(SQW管脚)输出和周期中断,用户可以:
(1)用PIE位允许中断:
(2)用SQWE位允许SQAW输出;
(3)二者同时允许并用相同的频率;
(4)都不允许。
寄存器B
BIT7BIT6BIT5BIT4BIT3BIT2BIT1
SETPIEALE0VIESQWEDM24/12DSE
SET:
SET为0,时间更新正常进行,每秒计数走时一次,当SET位写入1,时间更新被禁止,程序可初始化时间和日历字节。
PIE:
周期中断劲旅位,PIE为1,则允许以选定的频率拉低IRQ管脚,PIE为0,则禁止中断。
AIE:
定闹中断允许位,PIE为1,允许中断,否则禁止中断。
SQWE:
方波允许位,置1选定频率方波从SQW脚输出;为0-时,SQW脚为低。
DM:
数据模式位,DM为1青蛙为十进制数据,而0表明是BCD码的数据。
24/12:
小时格式位,1表明24小时制,而0表明12小时制。
DSE:
P夏令时允许位,当DSE置1时允许两个特殊的更新,在四月份的第一时期日、时间从1:
59:
59AM时改变为1:
00:
00AM,当DSE位为0,这种特殊修正不发生。
寄存器C
BIT7BIY6BIT5BIT4BIT3BIT2BIT1BIT0
IRQFPFAFVF0000
IRQF:
中断申请标志位。
当下列表达式中一个或多个为真时,置1。
PF=PIE=1;AF=AIE=1;UF=UIE=1;
即:
IRQF=PF·PIE+AF·AIE+UF·UIE只要IRQF为1,IRQ管脚输出低,程序读寄存器C以后或RESET管脚为低后,所有标志位清零。
AF:
定闹中断标志位,只读,AF为1表明现在时间与定闹时间匹配。
VF:
更新周期结束标志位。
VF为1表明更新周期结束。
BIAT0~BIT3:
未用状态位,读出总为0,不能写入。
寄存器
DBIT7BIT6BIT5BIT4BIOT3BIT2BIT1BIT0VRT0000000
VRT:
内部锂电池状态位,平时应总读出1,如出现0,表明内部锂电池耗尽。
BIT0~BIT6:
未用状态位,读出总为0,不能写入。
硬件接口电路DS12887时钟芯片和单片机的接口
模式选择脚MOT拉地,选择INTEL时序,选择DS12887时钟芯片的地址总线及AS端口和单片机的P0及ALE端直接相联;而DS、R/W读写控制线与单片机的RD、WAR控制线相连;,则DS12887的高8位地址定为7FH,而其低8侠地址则由芯片内部各单元的地址来决定(00H~3FH);DS12887的中断输出端IRQ和80C的外部T1端相联,给单片机提供中断信号;DS12887的SQW端口可编程产生方波输出信号。
图3-5DS12887与AT89C51连接图
接口软件
下面为DS12887时钟芯片和单片机的接口软件,假定采用每天24小时制的非夏令时,时间数据格式为BCD码,初始化时间为1996年1月1日9时00分00秒,1k方波输出。
时钟芯片每一秒种向单片机申请中断一次,一方面让单片机修改一次时钟显示,另一方面也给单片微机系统提供时间基准。
DS12887时钟芯片的初始化写入程序
MOVDPTR,#7F0AH;寄存器A地址
MOVA,#70H;DV2~DV0=111,分频复位
MOVX@DPTR,AA
INCDPTR;到寄存器B地址
MOVA,#8AH;停止更新,允许更新中断,选BCD码,24小时制
MOVX@DPRT,A
MOVQPL,#00H;秒单元地址
CLRA;00秒
MOVX@DPTR,A
MOVDPL,#02H;分单元地址
CLRA;00分
MOVA,#09H;9时
MOVX@DPTR,A
MOVDPL#07H;日单元地址
MOVA,@01H;1日
MOVX @DPTR,A
INC DPTR;到月单元地址
MOV A,#01H;1月
MOVX@DPTR,A
ICDPTR;到年单元地址
MOVA,#96H;1996年
MOVX@DPTR,A
INCDPTR;到寄存器A地址
MOVA,#26H;DV2~DV0=010RS3~RS0=0110
MOVX@DPTR,A;?
s,允许方波输出,频率1kHz
INCDPTR;到寄存器B
MOVA,#1AH;每秒更新一次,允许方波输出,24小时制
MOVX@DPTR,A;时钟开始运行
读取DS12887时钟日历数据程序DS12887的日历时钟通常有中断和查询两种方法读出。
但在读数据时,首先要判断数据是否更新结束,只有在数据更新结束时数据读出才有效。
采用查询法读取数据:
查询寄存器A的UIP位,当UIP=0时,数据更新结束,可以读出。
以下是采用查询方法,从秒至年单元的数据读出后存入80C31内部RAM的30~35H单元中,该部分程序如下:
MOVDPTR,#7F0AH;寄存器A地址
MOVXA,@DPTR;
JB,WAIT;UIP=1则等待更新完毕
MOVDPL,@00H;秒地址
MOVR0,#30H;取目标首地址
MOVXA,@DPTR;取秒数据
MOV@R0,A;送入80C31的内部RAM缓冲区
ICDPTR;移指针
ICR0;以下略
采用中断法读取数据当DS12887发出中断请示,单片微机可以响应中断而读取日历数据。
对于更新结束中断,中断时更新结束,数据有效,可以直接读取日历数据;对于闹钟中断和周期中断也需查询寄存器A的UIP位,当UIP=0时,数据更新结束,再读出日历时钟。
典型的A/D转换器芯片ADC0809
信号引脚
IN7-IN0:
模拟量输入通道,ADC0809对输入模拟量的要求有:
信号单极性,电压范围0-5V,若信号还小,还需进行放大。
另外,模拟输入在A/D转换过程中,其值不应变化。
因此,对变化速度快的模拟量,在输入前应增加采样保持电路。
A,B,C:
地址线,A为低地址线,B为高地址线,用于对模拟通道进行选择,引脚图中相应为ADDA,ADDB,ADDC。
其地址状态与通道的对应关系见
ALE:
地址锁存允许信号,对应ALE上跳沿是,A,B,C地址送入地址锁存器中。
START:
转换启动信号,对应ALE上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换,在A/D转换期间,START应保持低电平。
本信号有时简写成ST
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 at89c51 单片机 通用 室温 控制器 设计 管理 资料