基于51单片机恒温箱设计.docx
《基于51单片机恒温箱设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机恒温箱设计.docx(34页珍藏版)》请在冰点文库上搜索。
基于51单片机恒温箱设计
学院
课程设计报告
课题名称:
恒温箱设计
姓名***
学号***
专业年级***
指导教师***
摘要
第一章绪论
1.1背景
1.2课程目的
1.3课程意义
第二章硬件设计及工作原理
2.1.AT89C51
2.2温度传感器
2.3光耦合
2.4MAX232
2.5显示部分
2.6输入部分
2.7执行部分
2.8系统电路以及工作过程
第三章系统的应用软件设计
3.1键盘管理模块
3.2显示模块
3.3检测模块
第四章结束语
参考文献
摘要
介绍了基于AT89S51单片机的恒温箱控制系统,系统分为硬件和软件两部分,其中硬件包括:
温度传感器、显示、控制和报警的设计;软件包括:
键盘管理程序设计、显示程序设计、控制程序设计和温度报警程序设计。
编写程序结合硬件进行调试,能够实现设置和调节初始温度值,并实现了温度在±1℃误差的自动调节,进行数码管显示。
本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89S51作为主控芯片,数码管作为显示输出,实现了对温度的实时测量与恒定控制。
关键词:
单片机AT89C51恒温控制
ABSTRACT
IntroducestheAT89S51basedontheconstanttemperatureboxcontrolsystem,hardwareandsoftwaresystemisdividedintotwoparts,thehardwareinclude:
temperaturesensor,display,controlandalarmdesign;Thesoftwareincludes:
thekeyboardmanagementprogramdesign,displayprogramdesign,controlprogramdesignandtemperaturealarmprogramdesign.Writeaprogramcombinedwithhardwaredebugging,willbeabletorealizethesetandadjusttheinitialtemperature,andrealizethetemperaturein±1℃errorautomaticadjustment,digitaltubedisplay.Thisdesignfrompracticalapplicationwereselectedbasedonsmallvolume,relativelyhighprecisionofthedigitaltemperaturesensorDS18B20asatemperatureacquisitionunit,SCMAT89S51asamastercontrolchip,digitaltubedisplayasoutput,realizethereal-timemeasurementoftemperatureandconstantcontrol.
keyword:
SCMAT89C51Thermostaticcontrol
第一章绪论
1.1背景
温度控制是工业生产过程中经常遇到的过程控制,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用,其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。
对于不同场所、不同工艺、所需温度高低范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同。
因而,对温度的测控方法多种多样。
随着电子技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。
利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。
然而现有的温度传感元件大多为模拟器件(热电耦)体积大、应用复杂、而且不容易实现数字化等缺点,阻碍了应用领域的扩展。
本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89C51作为主控芯片,数码管作为显示输出,实现了对温度的实时测量与恒定控制。
1.2课程要求
恒温箱采用30cm*30cm*30cm的木箱或纸箱,内置功率不大于100W的白炽灯泡用于加热,传感器使用一体化数字温度传感器DS18B20,灯泡发热控制采用继电器开关控制,主控芯片采用AT89S51.,最终做到最高温度不高于50℃,误差为±1℃的恒温控制。
1.3课程意义
这次课程设计可以使我们在学校学的理论知识用到实践中,使我们在学习中起到主导地位,是我们在实践中掌握相关知识,能够培养我们的职业技能,课程设计是以任务引领,以工作过程为导向,以活动为载体,给我们提供了一个真实的过程,通过设计和运行,反复调试、训练、便于我们掌握规范系统的单片机方面的知识,同时也提高了我们的动手能力。
第二章硬件设计及工作原理
2.1AT89C51
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
主要性能参数:
·与MCS-51产品指令系统完全兼容
·4k字节可重擦写Flash闪速存储器
·1000次擦写周期
·全静态操作:
0Hz-24MHz
·三级加密程序存储器
·128×8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器
·6个中断源
·可编程串行UART通道
·低功耗空闲和掉电模式
功能特性概述:
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
功能引脚说明:
·Vcc:
电源电压
·GND:
地
·P0:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在FIash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
FIash编程和程序校验期间,P1接收低8位地址。
·P2:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
·P3:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
·ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的l/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
·PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。
·EAVPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
·XTAL1:
振荡器反相放大器的及内部时钟发生器的输入端。
·XTAL2:
振荡器反相放大器的输出端
2.2温度传感器
温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。
超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。
对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。
DS18B20的主要特征:
·全数字温度转换及输出。
·先进的单总线数据通信。
·最高12位分辨率,精度可达土0.5摄氏度。
·12位分辨率时的最大工作周期为750毫秒。
·可选择寄生工作方式。
·检测温度范围为–55°C~+125°C(–67°F~+257°F)
·内置EEPROM,限温报警功能。
·64位光刻ROM,内置产品序列号,方便多机挂接。
·多样封装形式,适应不同硬件系统。
DS18B20芯片封装结构:
DS18B20引脚功能:
·GND电压地·DQ单数据总线·VDD电源电压·NC空引脚
DS18B20工作原理及应用:
DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。
其一个工作周期可分为两个部分,即温度检测和数据处理。
在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。
18B20共有三种形态的存储器资源,它们分别是:
ROM只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是doyoung19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。
数据在出产时设置不由用户更改。
DS18B20共64位ROM。
RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。
第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。
在上电复位时其值将被刷新。
第5个字节则是用户第3个EEPROM的镜像。
第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的同样也是内部温度转换、计算的暂存单元。
第9个字节为前8个字节的CRC码。
EEPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。
RAM及EEPROM结构图:
控制器对18B20操作流程:
1,复位:
首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。
当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。
2,存在脉冲:
在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。
至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。
如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。
3,控制器发送ROM指令:
双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。
ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。
其主要目的是为了分辨一条总线上挂接的多个器件并作处理。
诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:
此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。
ROM指令在下文有详细的介绍。
4,控制器发送存储器操作指令:
在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。
操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。
存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。
5,执行或数据读写:
一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。
如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。
如执行数据读写指令则需要严格遵循18B20的读写时序来操作。
数据的读写方法将有下文有详细介绍。
若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。
紧接着执行第二个周期复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。
其它的操作流程也大同小异,在此不多介绍。
DS18B20芯片与单片机的接口:
如图所示,DS18B20只需要接到控制器(单片机)的一个I/O口上,由于单总线为开漏所以需要外接一个4.7K的上拉电阻。
如要采用寄生工作方式,只要将VDD电源引脚与单总线并联即可。
但在程序设计中,寄生工作方式将会对总线的状态有一些特殊的要求。
DS28B20芯片ROM指令表:
ReadROM(读ROM)[33H](方括号中的为16进制的命令字)
这个命令允许总线控制器读到DS18B20的64位ROM。
只有当总线上只存在一个DS18B20的时候才可以使用此指令,如果挂接不只一个,当通信时将会发生数据冲突。
MatchROM(指定匹配芯片)[55H]
这个指令后面紧跟着由控制器发出了64位序列号,当总线上有多只DS18B20时,只有与控制发出的序列号相同的芯片才可以做出反应,其它芯片将等待下一次复位。
这条指令适应单芯片和多芯片挂接。
SkipROM(跳跃ROM指令)[CCH]这条指令使芯片不对ROM编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。
如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。
SearchROM(搜索芯片)[F0H]在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位ROM。
AlarmSearch(报警芯片搜索)[ECH]在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于TH或小于TL报警条件的芯片做出反应。
只要芯片不掉电,报警状态将被保持,直到再一次测得温度什达不到报警条件为止。
DS28B20芯片存储器操作指令表:
WriteScratchpad(向RAM中写数据)[4EH]这是向RAM中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警RAM之TH)和地址3(报警RAM之TL)。
写入过程中可以用复位信号中止写入。
ReadScratchpad(从RAM中读数据)[BEH]此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。
芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。
CopyScratchpad(将RAM数据复制到EEPROM中)[48H]此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。
此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。
在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。
doyoungConvertT(温度转换)[44H]收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。
此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。
在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。
RecallEEPROM(将EEPROM中的报警值复制到RAM)[B8H]此指令将EEPROM中的报警值复制到RAM中的第3、4个字节里。
由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。
另外,此指令将在芯片上电复位时将被自动执行。
这样RAM中的两个报警字节位将始终为EEPROM中数据的镜像。
ReadPowerSupply(工作方式切换)[B4H]此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。
2.3光耦合
pc817是常用的线性光藕,在各种要求比较精密的功能电路中常常被当作耦
合器件,具有上下级电路完全隔离的作用,相互不产生影响。
当输入端加电信号时,发光器发出光线,照射在受光器上,受光器接受光线后导通,产生光电流从输出端输出,从而实现了“电-光-电”的转换。
普通光电耦合器只能传输数字信号(开关信号),不适合传输模拟信号。
线性光电耦合器是一种新型的光电隔离器件,能够传输连续变化的模拟电压或电流信号,这样随着输入信号的强弱变化会产生相应的光信号,从而使光敏晶体管的导通程度也不同,输出的电压或电流也随之不同。
PC817光电耦合器不但可以起到反馈作用还可以起到隔离作用。
2.4MAX232
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。
引脚介绍:
第一部分是电荷泵电路。
由1、2、3、4、5、6脚和4只电容构成。
功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。
由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。
15脚GND、16脚VCC(+5v)。
主要特点:
1、符合所有的RS-232C技术标准
2、只需要单一+5V电源供电
3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压
4、功耗低,典型供电电流5mA
5、内部集成2个RS-232C驱动器
6、内部集成两个RS-232C接收器
max232引脚图及RS232引脚定义
max232是一种把电脑的串行口rs232信号电平(-10,+10v)转换为单片机所用到的TTL信号点平(0,+5)的芯片,这个芯片的价格比较贵大约要6元,下面我来介绍一下max232引脚图以及max232和电脑串口的连接电路,
《max232引脚图》
2.5显示部分
此系统采用6位数码管显示,前3位显示设定值,后3位显示实际值,数码管采用共阳极,用P0口做段选口,P2口作为位选口,显示数据能精确到小数点后一位
2.6输入部分(电路更改,采用4按钮直接输入电平,这部分作废)
输入部分采用3*4矩阵输入,其中包括0~9的数字输入、移位以及输入确定
2.7执行部分
执行部分是通过继电器的开合来控制灯泡的亮与灭,从而实现了温度的控制,并采用了光耦合电路保护了单片机,避免了单片机因继电器的瞬间关断而产生的感应电动势造成的烧坏。
2.8系统电路以及工作过程
通过3*4矩阵键盘输入温度给定值,给定值与一体化温度传感器DS18B20所采集的数据相比较,如果设定值大于实际值,则控制继电器开通,灯丝加热,直至温度实际值不小于给定值,这是,如果这是实际温度大于给定温度,则控制继电器关断,并启动声光报警,同时定时,5S后蜂鸣器停止报警,此后一直监视温度,如果由于热量散失,箱内温度低于设定值,则控制继电器开通,灯丝加热,如此往复(由于此次试验精度要求不高,故此系统为采用PID算法,只是通过简单的比较来控制开断)。
工作流程图如下:
第二章系统的应用软件设计
系统整体程序由主程序,温度设定子程序,显示程序,传感器子程序组成,下图为程序流程图。
3.1键盘管理模块(由于电路更改,此部分作废,改为4按键直接电平输入)
1、3×4矩阵键盘的编程方法:
1.1、先读取键盘的状态,得到按键的特征编码。
先从P1口的高四位输出低电平,低四位输出高电平,从P1口的低四位读取键盘状态。
再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。
将两次读取结果组合起来就可以得到当前按键的特征编码。
使用上述方法我们得到12个键的特征编码。
举例说明如何得到按键的特征编码:
假设“1”键被按下,找其按键的特征编码。
从P1口的高四位输出低电平,即P1.4-P1.7为输出口。
低四位输出高电平,即P1.0-P1.3为输入口。
读P1口的低四位状态为“1101”,其值为“0DH”。
再从P1口的高四位输出高电平,即P1.4-P1.7为输入口。
低四位输出低电平,即P10-P13为输出口,读P