基于单片机的温度控制系统设计与实现文档格式.docx
- 文档编号:20466262
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:28
- 大小:144.94KB
基于单片机的温度控制系统设计与实现文档格式.docx
《基于单片机的温度控制系统设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度控制系统设计与实现文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
1.2课题研究的内容及要求
本文所要研究的课题是基于单片机温度控制系统的设计与实现,主要是介绍了对温度的显示、控制及报警,实现了温度的实时显示及控制。
温度控制部分,提出了用DS18S20、MSC-51单片机及LED的硬件电路完成对温度的实时检测及显示,利用DS18S20与单片机连接由软件与硬件电路配合来实现对加热电阻丝的实时控制及超出设定的上下限温度的报警系统。
而炉内温度控制部分,采用一套PID闭环负反馈控制系统,由DS18S20检测炉内温度,用中值滤波的方法取一个值存入程序存取器内部一个单元作为最后检测信号,并在LED中显示。
控制器是用MSC-51单片机,用PID算法对检测信号和设定值的差值进行调节后输出控制信号给执行机构,去调节电阻炉的加热功率,从而控制炉内温度。
它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,特别适合于构成多点的温度测控系统,可直接将温度转化成串行数字信号供微机处理,而且每片DS18S20都有唯一的产品号,可以一并存入其ROM中,以便在构成大型温度测控系统时在单线上挂接任意多个DS18S20芯片。
从DS18S20读出或写入DS18S20信息仅需要一根口线,其读写及其温度变换功率来源于数据总线,该总线本身也可以向所挂接的DS18S20供电,而且不需要额外电源。
同时DS18S20能提供九位温度读数,它无需任何外围硬件即可方便地构成温度检测系统。
而且利用本次的设计主要实现温度测试,温度显示,温度门限设定,超过设定的门限值时自动启动报警功能。
而且还要以单片机为主机,使温度传感器通过一根口线与单片机相连接,再加上温度控制部分和人机对话部分来共同实现温度的监测与控制。
1.3课题的研究方案
温度控制系统是比较常见和典型的过程控制系统。
温度是工业生产过程中重要的被控参数之一,当今计算机控制技术在这方面的应用,已使温度控制系统达到自动化、智能化,比过去单纯采用电子线路进行PID调节的控制效果要好得多,可控性方面也有了很大的提高。
温度是一个非线性的对象,具有大惯性的特点,在低温段惯性较大,在高温段惯性较小。
对于这种温控对象,一般认为其具有以下的传递函数形式:
(1-1)
方案(见图1.2)
图1.2方案图
本方案采用89C51单片机系统来实现。
单片机软件编程灵活、自由度大,可用软件编程实现各种控制算法和逻辑控制。
单片机系统可以用数码管来显示温度的实际值,能用键盘输入设定值。
本方案选用了AT89C51芯片,不需要外扩展存储器,可使系统整体结构更为简单。
本方案是采用以单片机为控制核心的控制系统,尤其对温度控制,可达到模拟控制所达不到的效果,并且实现显示和键盘设定功能,大大提高了系统的智能化。
也使得系统所测得结果的精度大大提高。
第2章设计理论基础
2.1单片机的发展概况
1970年微型计算机研制成功之后,随之即出现了单片机(即单片微型计算机)—美国Intel公司1971年生产的4位单片机4004和1972年生产的雏形8位单片机8008,这也算是单片机的第一次公众亮相。
1976年Intel公司首先推出能称为单片机的MCS-48系列单片微型计算机。
它以体积小、功能全、价格低等特点,赢得了广泛的应用,同时一些与单片机有关公司都争相推出各自的单片机。
1978年下半年Motorola公司推出M6800系列单片机,Zilog公司相继推出Z8单片机系列。
1980年Intel公司在MCS-48系列基础上又推出高性能的MCS-51系列单片机。
这类单片机均带有串行I/O口,定时器/计数器为16位,片内存储容量(RAM,ROM)都相应增大,并有优先级中断处理功能,单片机的功能、寻址范围都比早期的扩大了,它们是当时单片机应用的主流产品。
1982年Mostek公司和Intel公司先后又推出了性能更高的16位单片机MK68200和MCS-96系列,NS公司和NEC公司也分别在原有8位单片机的基础上推出了16位单片机HPC16040和μPD783×
×
系列。
1987年Intel公司又宣布了性能比8096高两倍的CMOS型80C196,1988年推出带EPROM的87C196单片机。
由于16位单片机推出的时间较迟、价格昂贵、开发设备有限等多种原因,至今还未得到广泛应用。
而8位单片机已能满足大部分应用的需要,因此,在推出16位单片机的同时,高性能的新型8位单片机也不断问世。
纵观这短短的20年,经历了4次更新换代,单片机正朝着集成化、多功能、多选择、高速度、低功耗、扩大存储容量和加强I/O功能及结构兼容的方向发展
新一代的80C51系列单片机除了上述的结构特性外,其最主要的技特点是向外部口电路扩展,以实现微控制器(microcontroller)完善的控制功能为己任。
这一系列单片机为外部提供了相当完善的总线结构,为系统的扩展和配置打下了良好的基础。
由于80C51系列单片机所具有的一系列优越的特点,获得广泛使用指日可待。
下面我们就来重点介绍一下本毕业论文讨论的系统所用的AT89C51系列单片机。
2.2AT89C51系列单片机介绍
2.2.1AT89C51系列基本组成及特性
AT89C51是一种带4k字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
而在众多的51系列单片机中,要算ATMEL公司的AT89C51更实用,也是一种高效微控制器,因为它不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器,用户可以用电的方式达到瞬间擦除、改写。
而这种单片机对开发设备的要求很低,开发时间也大大缩短。
AT89C51基本功能描述如下:
AT89C51是一种低损耗、高性能、CMOS八位微处理器,而且在其片种还有4k字节的在线可重复编程快擦快写程序存储器,能重复写入/擦除1000次,数据保存时间为十年。
它与MCS-51系列单片机在指令系统和引脚上完全兼容,不仅可完全代替MCS-51系列单片机,而且能使系统具有许多MCS-51系列产品没有的功能。
AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低了系统成本。
只要程序长度小于4k,四个I/O口全部提供给用户。
可用5V电压编程,而且写入时间仅10毫秒,仅为8751/87C51的擦除时间的百分之一,与8751/87C51的12V电压擦写相比,不易损坏器件,没有两种电源的要求,改写时不拔下芯片,适合许多嵌入式控制领域。
AT89C51芯片提供三级程序存储器锁定加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。
另外,AT89C51还具有MCS-51系列单片机的所有优点。
128×
8位内部RAM,32位双向输入输出线,两个十六位定时器/计时器,5个中断源,两级中断优先级,一个全双工异步串行口及时钟发生器等。
AT89C51有间歇、掉电两种工作模式。
间歇模式是由软件来设置的,当外围器件仍然处于工作状态时,CPU可根据工作情况适时地进入睡眠状态,内部RAM和所有特殊的寄存器值将保持不变。
这种状态可被任何一个中断所终止或通过硬件复位。
掉电模式是VCC电压低于电源下限,当振荡器停止振动时,CPU停止执行指令。
该芯片内RAM和特殊功能寄存器值保持不变,一直到掉电模式被终止。
只有VCC电压恢复到正常工作范围而且在振荡器稳定振荡后,通过硬件复位、掉电模式可被终止。
2.2.2AT89C51系列单片机的功能单元
1.并行I/O接口:
单片机芯片内有一项主要功能就是并行I/O口。
51系列共有4个8位的并行I/O口,分别记作P0、P1、P2、P3每个口都包含一个锁存器,一个输出驱动器和输入缓冲器。
实际上,它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能。
在访问片外扩展存储器时,低八位地址和数据由P0口分时传送,高八位地址由P2口传送。
2.定时器/计数器
定时器/计数器(timer/counter)是单片机中的重要部件,其工作方式灵活、编程简单,使用它对减轻CPU的负担和简化外围电路都大有好处。
C51系列包含有两个16位的可编程定时器/计数器分别称为定时器/计数器T0和定时器/计数器T1;
在C51部分产品中,还包含有一个用做看门狗的8位定时器。
定时器/计数器的核心是一个加1计数引脚上施加器,其基本功能是加1功能。
在单片机的定时器T0或T1中,有一个定时器发生由0到1的跳变时,计数器增1,即为计数功能;
在单片机内部对机器周期或其分频进行计数,从而得到定时,这就是定时功能。
在单片机中,定时功能和计数功能的设定和控制都是通过软件来进行的。
定时器/计数器内部结构及其原理:
由定时器0、定时器1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。
当定时器/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周期,计数器加1,直至计满溢出。
定时器的定时时间与系统的振荡频率紧密相关,因为C51系列单片机的一个机器周期由12个振荡脉冲组成,所以,计数频率fc=fosc/12。
如果单片机系统采用12MHz晶振,则计数周期为:
(2-2)这是最短的定时周期,适当选择定时器的初值可获取各种定时时间。
当定时器/计数器设置为计数工作方式时,计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外部信号计数,外部脉冲的下降沿将触发计数。
在每个机器周期的S5P2期间采样引脚输入电平,若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。
新的计数值是在检测到输入引脚电平发生1到0的负跳变后,于下一个机器周期的S3P1期间装入计数器中的,可见,检测一个由1到0的负跳变需要两个机器周期,所以最高检测频率为振荡频率的1/24。
计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。
3.芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦除操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM、定时器、计数器、串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
4.中断系统
中断系统是单片机的重要组成部分。
实时控制、故障自动处理、单片机与外围设备间的数据传送往往采用中断系统。
中断系统大大提高了系统的效率。
C51系统有关中断的寄存器有4个,分别为中断源寄存器TCON和SCON、中断允许控制寄存器IE和中断优先级控制寄存器IP;
中断源有5个,分别为外部中断0请求INT0、外部中断1请求INT1、定时器0溢出中断请求TF0、定时器1溢出中断请求TF1和串行中断请求R1或T1。
5个中断源的排列顺序由中断优先级控制寄存器IP和顺序查询逻辑电路共同决定,5个中断源分别对应5个固定的中断入口地址。
中断的特点是分时操作,实时处理和故障处理。
简单介绍一下本次设计所需的单片机芯片AT89C51的中断系统中要用到的中断类型。
(1)外部中断源
AT89C51有INT0和INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或负边沿两种中断触发方式来输入中断请求信号。
AT89C51究竟工作于哪种中断触发方式,可由用户对定时器控制寄存器TCON中IT0和IT1位状态的设定来选取。
AT89C51在每个机器周期的S5P2时对INT0、线上中断请求信号进行一次检测,检测方式和中断触发方式的选取有关。
若AT89C51设定为电平触发方式(IT0=0或IT1=0),则CPU检测到INT0、INT1上低电平时就可认定其上中断请求有效;
若设定为边沿触发方式(IT0=1或IT1=1),则CPU需要两次检测INT0、INT1线上电平方能确定其上中断请求是否有效,即前一次检测为高电平和后一次检测为低电平时中断请求才有效。
(2)定时器溢出中断源
定时器溢出中断由AT89C51内部定时器分的中断源产生,故它们属于内部中断。
AT89C51内部有两个16位定时器/计数器,受内部定时脉冲(主脉冲经12分频后)或T0/T1引脚上输入的外部定时脉冲计数。
定时器T0/T1在定时脉冲作用下从全“1”变成全“0”时可以自动向CPU提出溢出中断请求,以表明定时器T0或T1的定时时间已到。
(3)串行口中断源
串行口中断由AT89C51内部串行口的中断源产生,也是一种内部中断。
串行口中断分为串行口发送中断和串行口接收中断两种。
在串行口进行发送/接收数据时,每当串行口发送/接收完一组串行数据时串行口电路自动使串行口控制寄存器SCON中的RI或TI中断标志位置位,并自动向CPU发出串行口中断请求,CPU响应串行口中断后便立即转入串行口中断服务程序执行。
因此,只要在串行口中断服务程序中安排一段对SCON中RI和TI中断标志位状态的判断程序,便可区分串行口发生了接收中断请求还是发送中断请求。
(4)中断标志
AT89C51在S5P2时检测(或接收)外部(内部)中断源发来的中断请求信号后先使相应中断标志位置位,然后便在下个机器周期检测这些中断标志位状态,以决定是否响应该中断。
2.3ADC0809模数转换器
ADC0809是位A/D转换芯片,它是采用逐次逼近的方法完成A/D转换的。
ADC0809由单+5V电源供电;
片内带有锁存功能的8路模拟多路开关,可对8路0~5V的输入模拟电压分时进行转换,完成一次转换约需100µ
S;
片内具有多路开关的地址译码器和锁存器、高阻抗斩波器、稳定的比较器,256电阻T型网络和树状电子开关以及逐次逼近寄存器。
ADC0809是引脚双列直插式封装,引脚及其功能(图2-2):
1.D7~D0:
8位数字量输出引脚。
2.IN0~IN7:
8路模拟量输入引脚。
3.VCC:
+5V工作电压。
4.GND:
接地。
5.REF(+):
参考电压正端。
6.REF(-):
参考电压负端。
7.START:
A/D转换启动信号输入端。
8.A、B、C:
地址输入端。
9.ALE:
地址锁存允许信号输入端。
10.EOC:
转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
11.OE:
输出允许控制端,用以打开三态数据输出锁存器。
12.CLK:
时钟信号输入端,译码后可选通IN0~IN7八个通道中的一个进行转换。
图2.3ADC0809的管脚图
2.4移位寄存器74LS164
移位寄存器74LS164的引脚如图2.4所示:
图2.4移位寄存器74LS164引脚图
74LS164为串行输入、并行输出移位寄存器,其引脚功能如下:
A、B——串行输入端;
Q0~Q7——并行输出端;
——清除端,低电平有效;
CLK——时钟脉冲输入端,上升沿有效。
多片74LS164串联,能实现多位LED静态显示。
每扩展一片164就可增加一位显示。
MR接+5V,不清除。
2.5数码显示管LED
图2.5数码显示管LED引脚图
LED显示器是单片机应用系统中常见的输出器件,而在单片机的应用上也是被广泛运用的。
如果需要显示的内容只有数码和某些字母,使用LED数码管是一种较好的选择。
LED数码管显示清晰、成本低廉、配置灵活,与单片机接口简单易行。
LED数码管作为显示字段的数码型显示器件,它是由若干个发光二极管组成的。
当发光二极管导通时,相应的一个点或一个笔画发亮,控制不同组合的二极管导通,就能显示出各种字符,常用的LED数码管有7段和“米”字段之分。
这种显示器有共阳极和共阴极两种。
共阴极LED显示器的发光二极管的阴极连在一起,通常此共阴极接地。
当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。
同样,共阳极LED显示器的发光二极管的阳极接在一起,通常此共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。
本次设计所用的LED数码管显示器为共阳极。
LED数码管的使用与发光二极管相同,根据材料不同正向压降一般为1.5~2V,额定电流为10MA,最大电流为40MA。
静态显示时取10MA为宜,动态扫描显示可加大脉冲电流,但一般不超过40MA。
2.6数字温度计DS18S20
在传统的模拟信号远距离的温度测量系统中,需要很好的解决引线误差补偿问题、多点切换误差问题和放大电路零点漂移误差问题等技术。
另外考虑到一般的测量现场的电磁环境非常的恶劣,各种干扰信号较强,模拟信号很容易受到干扰而产生测量误差,影响测量精度。
因此,在温度测量系统中,采用抗干扰能力较强的新型数字温度传感器是解决这些问题的最有效的方案。
在实际的温度测量过程中被广泛应用,同时也取得了良好的测量效果。
DS18S20数字温度计的主要特性:
1.DS18S20的适应电压范围更宽,其范围为:
3.0-5.5V,而且它能够直接由数据线获取电源(寄生电源),无需外部工作电源。
2.DS18S20提供了9位摄氏温度测量,具有非易失性、上下触发门限用户可编程的报警功能。
3.DS18S20通过1-Wire®
总线与中央微处理器通信,仅需要单根数据线(或地线)。
同时,在使用过程中,它不需要任何的外围的元件,全部的传感元件和转换电路集成在形状如一只三极管的集成电路内。
4.DS18S20具有-55°
C至+125°
C的工作温度范围,在-10°
C至+85°
C温度范围内精度为±
0.5°
C。
5.每片DS18S20具有唯一的64位序列码,这些码允许多片DS18S20在同一条1-Wire总线上工作,因而,可方便地使用单个微处理器控制分布在大范围内的多片DS18S20器件。
6.DS18S20的测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时还可以传送给CRC校验码,它具有极强的抗干扰纠错的能力。
7.DS18S20具有负载特性,当电源极性接反时,芯片不会因发热而烧毁,但是不能正常的工作。
根据以上这些特性而从中受益的应用包括:
HVAC环境控制、室内,设备或者机器内部的温度监测系统、过程监控和控制系统。
第3章电路设计
本设计采用按键作为输入控制,通过温度多采样单元采集温度信息,经过LM324放大器放大及ADC0809数模转换器将其转换,由主机AT89C51进行处理并将实际温度值和设定温度值分别显示在共阳极数码显示管LED上。
温度传感器DS18B20将模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,单片机将处理后的数据通过数码管显示出来,同时判断测得的温度和设置报警的温度限进行比较,超过限度则通过发光二极管发光报警。
3.1系统整体电路
图3.1系统电路
第4章软件设计
4.1系统的主程序设计
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:
一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
主程序流程见图4.1。
图4.1主程序流程图
4.2DS18B20初始化
DS18B20初始化流程图见图4.2。
图4.2DS18B20初始化流程图
初始化子程序:
voidInit_DS18B20(void)
{unsignedcharx=0;
DQ=1;
Delay(8);
//稍做延时
DQ=0;
//单片机将DQ拉低
Delay(80);
//精确延时,大于480us
//拉高总线
Delay(14);
x=DQ;
//稍做延时后,如果x=0则初始化成功,x=1则初始化失败
Delay(20);
}
/*****读一个字节*****/
unsignedcharReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;
i>
0;
i--)
{
//给脉冲信号
dat>
>
=1;
if(DQ)
dat|=0x80;
Delay(4);
}
return(dat);
/*****写一个字节*****/
voidWriteOneChar(unsignedchardat)
i>
i--)
DQ=dat&
0x01;
Delay(5);
da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 控制系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)