基于AT89S52单片机的水温控制系统.docx
《基于AT89S52单片机的水温控制系统.docx》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的水温控制系统.docx(21页珍藏版)》请在冰豆网上搜索。
基于AT89S52单片机的水温控制系统
单片机系统开发与应用工程实习报告
选题名称:
基于AT89S52单片机的水温控制系统
系(院):
计算机工程学院
专业:
计算机科学与技术(嵌入式系统软件设计)
班级:
姓名:
学号:
指导教师:
学年学期:
2009~2010学年第2学期
2010年5月30日
摘要:
温度控制是很多企业常见的控制装置,如机械行业的零件热处理、塑料制品的注塑机上,粉末冶金行业烧结炉、还原炉等都有温度控制问题,尤以热处理加热炉的温度控制最为典型。
热处理加热炉是工厂热处理和高校热处理实验广泛使用的加热设备。
现在所使用的炉温控制方法很多仍是陈旧的动圈式两位指示调节仪(如XCT101型动圈式两位指示调节仪)。
这种炉温控制方法炉温波动范围大,保温时间靠人工计时,加热速度不能控制,温度不能全程动态跟踪显示。
这样的控制和显示方式不能满足日益发展的工业需求。
高校的发展同样要求用现代化手段提升现有的实验设备,为学生提供更多更好、更现代化的实验条件。
因此,我们就学校热处理实验用电阻加热炉进行现代化改革,将DS18B20测温传感器和AT89S52单片机优秀的实时控制功能、灵活的编程能力有机的结合起来,开发出热处理微机控制系统,实现温度控制的自动化。
不但能用于学校的实验教学及其它一些研究课题的开发,同样能用于工厂热处理、注塑机多点温度的控制,提高工业企业自动化水平。
关键字:
单片机AT89S52;传感器;控温;DS18B20
目录
1系统设计1
1.1项目概要1
1.2项目要求1
2硬件设计1
2.1硬件设计概要1
2.2单片机最小系统2
2.3温度检测电路4
2.3报警电路7
2.4控制电路及显示电路7
3软件设计9
3.1中断控制程序10
3.2显示程序11
3.3温度测量12
3.4温度处理18
总结20
参考文献21
1系统设计
1.1项目概要
水温控制系统无论是工业生产过程,还是日常生活都起着非常重要的作用,过低过高的水温都会使水资源失去应有的作用,从而造成水资源的极大浪费,给生活生产带来许多不利因素。
基于AT89S52的单片机水温控制系统与传统的水温控制器相比具有操作方便、价格便宜、精确度高和开展容易等优点,因此市场前景看好。
1.2项目要求
基于AT89S52单片机水温控制器晶振采用12MHZ,具体要求如下:
(1)初始温度设置为50度
(2)越限报警温度为70度
(3)控制精度为1度
(4)控制范围为环境温度室温到70度
2硬件设计
2.1硬件设计概要
根据需求,我的系统需要温度采集电路、控制电路、报警电路。
当然这些要一起工作我们就需要一块单片机来协调它们!
温度采集我们使用18B20,使用它可以是电路简化。
控制电路我们用外部中断来调节温度,为了使操作方便,我们加入了一个显示控制温度值的数码管,来便于使用。
报警电路,这个电路我们用一个三极管这为放大器去驱动一个喇叭。
所有电路结构如下
图2-1总体硬件设计示意图
2.2单片机最小系统
AT89S52是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S52单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
由于AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器。
器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
因此,本系统使用AT89S52单片机作为微处理器,
AT89S52引脚图如图2-2。
它主要具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作掉电模式冻结振荡器,因而可以保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
下面列出了AT89S52的一些性能参数:
·与MCS-51产品指令系统完全兼容
·4k字节在系统编程(ISP)Flash闪速存储器
·1000次擦写周期
·4.0-5.5V的工作电压范围
·全静态工作模式:
0Hz-33MHz
·三级程序加密锁
·128×8字节内部RAM
·32个可编程I/O口线
·2个16位定时/计数器
·6个中断源
·全双工串行UART通道
·低功耗空闲和掉电模式
·中断可从空闲模唤醒系统
·看门狗(WDT)及双数据指针
·掉电标识和快速编程特性
·灵活的在系统编程(ISP字节或页写模式)
图2-2AT89S52引脚图
图2-3微处理器电路图
整个单片机系统接口分配情况如下:
P0口复用于传输LED位数据以及值数据传输、P2口的P2.0-P2.1作为六位LED的公共端的控制信号、P1口分配做键盘接口、P3.0和P3.1分别用于串口通信的数据的接收端和发送端、P3.2用于温度数据接口。
2.3温度检测电路
DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20、DS1822“一线总线”数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS1822的精度较差为±2°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小。
DS18B20、DS1822的特性DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!
性能价格比也非常出色!
DS1822与DS18B20软件兼容,是DS18B20的简化版本。
省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。
继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。
DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如下:
图2-4DS18B20的管脚排列图
DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
表2-112位转化后得到的12位数据
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
温度检测控制电路图见图2-5。
图2-5温度检测控制电路图
DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。
(2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。
当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
(3)连接DS1820的总线电缆是有长度限制的。
试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。
当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。
这种情况主要是由总线分布电容使信号波形产生畸变造成的。
因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
(4)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。
这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。
测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。
2.3报警电路
报警电路我们只需要用一个三极管就可以控制一个喇叭了。
我们只要给这个口一个脉冲电平喇叭就会发出声音了。
如图2-6
图2-6报警电路
2.4控制电路及显示电路
我们通过2个外部来控制温度,只要在中断口接2个开关接地。
然后把调节后的温度显示出来。
我们通过数码管了显示。
LED显示器结构与原理:
LED显示器由7条发光二极管组成显示字段,有的还带有一个小数点dp将7段发光二极管阴极连在一起,成为共阴极接法,当某个字段的阳极为高电平时,对应的字段就点亮。
共阳极接法是将LED的所有阳极并接后就连到+5V上,当某一字段的阴极为0时,对应的字段就点亮。
静态串行显示器的结构图如2-7所示:
共阴极共阳极
图2-7静态串行显示器的结构图
点亮LED显示器有静态和动态两种方法。
所谓静态显示,就是显示某一字段时,相应的发光二极管恒定的导通或截止,这种方式,每一显示位都需要一个8位输出口控制,占用硬件较多,一般仅用于显示器位数较少的场合。
所谓动态显示,就是一位一位地轮流点亮各位显示器。
对每为显示器而言,每隔一段时间显示一次。
显示位的亮度既跟导通电流有关,也和点亮时间与间隔时间的比例有关。
动态显示器因硬件成本较低而被采用。
为了显示字符,要为LED显示器提供显示段码,组成一个“8”字形的7段,再加上1个小数点位,共计8段,因此提供LED显示器的显示段码为一个字节。
LED显示器与单片机的接线图:
本设计通过单片机P0口并经总线驱动器74LS245控制6位数码管的段码,通过位选线P2.0-2.1经三极管逐位逐位去控制数码管扫描显示。
由于采用动态显示,其优点是占用硬件资源少,功耗小。
但必须注意:
扫描周期必须控制在视觉停顿时间内,一般在20ms以内,否则会出现闪烁或跳动现象。
如图2-8所示为LED与单片机的接线图。
图2-8LED与单片机的接线图
显示器有四个LED数码管组成。
输入串行数据线DIN和位移信号CLK,四个串/并移位寄存器芯片74LS245连。
每片的并行输出作为LED数码管的码段。
采用74LS245是为了放大电压,在这边74LS245是这为放大电路。
74LS245的电路如图2-9
图2-974LS245电路示意图
3软件设计
总体设计:
我们的程序是控温,所以我们应该不断测温并控制。
如图3-1
图3-1程序总体设计流程图
3.1中断控制程序
我们先来设计控温的程序,因为它比较简单:
程序如下:
;外部中断1
KEY_1:
CLREA;关闭外部中断
INCDIS1;把个位加一
MOVA,DIS1
CJNEA,#10,KEY;判断个位是否为十
MOVDIS1,#0;是十把它置一
;显示并打开中断
KEY:
MOVA,DIS2
MOVB,#10
MULAB
ADDA,DIS1;求出调整后的温度
MOVTEMPER_CONFIG,A;保存调整后的温度
LCALLDISPLAY;显示调整后的温度
SETBEX0
SETBEX1
SETBEA打开中断
RETI返回
;外部中断2
KEY_2:
CLREA
INCDIS2
MOVA,DIS2
CJNEA,#10,KEY
MOVDIS2,#0
AJMPKEY
其中DIS1,DIS2是定义的变量,用来保存数码管的显示数字。
TEMPER_CONFIG也是定义变量用来保存设定温度值。
3.2显示程序
根据数码管的显示特点,我们知道要在现实一位后延时一会在显示一位。
下面是数码管显示代码:
;显示
DISPLAY:
MOVA,DIS2
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
SETBP2.1
DSDELY1:
MOVR6,#11
DJNZR6,$
DJNZR7,DSDELY1
MOVA,DIS1
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
SETBP2.0
MOVR7,#25
DSDELY2:
MOVR6,#11
DJNZR6,$
DJNZR7,DSDELY2
RET
3.3温度测量
这里需要对18B20要有一个很清楚的了解。
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
当主机收到DS18B20的响应信号后,便可以发出操作命令,这些命令可以分为ROM命令和RAM命令两种。
CPU的操作过程如图3-2所示。
由于DS18B20与单片机间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
操作时序主要有初始化时序、读时序和写0时序和写1时序四种,如图3-3所示。
在温度测量仪表中,对DS18B20的操作主要是复位、读数据和写数据三种,而两种操作又都是按位进行的,所以首先应该按照DS18B20的时序要求,编写读、写时间片的程序,其流程图如图3-4所示。
图3-2DS18B20操作过程
图3-3DS18B20操作时序
图3-4DS18B20操作程序流程图
根据上面的知识我们可以得到18B20的操作的3个函数
;初始化18B20
INIT_1820:
SETBDQ
NOP
CLRDQ
MOVR0,#06BH
TSR1:
DJNZR0,TSR1;延时
SETBDQ
MOVR0,#25H
TSR2:
JNBDQ,TSR3
DJNZR0,TSR2
LJMPTSR4;延时
TSR3:
SETBFLAG1;置标志位,表示DS1820存在
LJMPTSR5
TSR4:
CLRFLAG1;清标志位,表示DS1820不存在
LJMPTSR7
TSR5:
MOVR0,#06BH
TSR6:
DJNZR0,TSR6;延时
TSR7:
SETBDQ
RET
;把A的值写入18B20
WRITE_1820:
MOVR2,#8
CLRC
WR1:
CLRDQ
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR3,$
SETBDQ
NOP
DJNZR2,WR1
SETBDQ
RET
;读温度
READ_18200:
MOVR4,#2;将温度高位和低位从DS18B20中读出
MOVR1,#77H;低位存入77H(TEMPER_L),高位存入76H(TEMPER_H)
RE00:
MOVR2,#8
RE01:
CLRC
SETBDQ
NOP
NOP
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR3,#7
DJNZR3,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
应为读出的温度的格式是12位,TEMPER_L位前四位是整数部分后四位是小数,TEMLPER_H只有低四位是有效的。
所以我们要有一个处理温度的函数得到整数的温度。
;读出的温度转换成1个字节放入TEMPER_NUM
TEMPER_COV:
MOVA,#0F0H
ANLA,TEMPER_L;舍去温度低位中小数点后的四位温度数值
SWAPA
MOVTEMPER_NUM,A
MOVA,TEMPER_L
JNBACC.3,TEMPER_COV1;四舍五入去温度值
INCTEMPER_NUM
TEMPER_COV1:
MOVA,TEMPER_H
ANLA,#07H
SWAPA
ORLA,TEMPER_NUM
MOVTEMPER_NUM,A;保存变换后的温度数据
RET
最后我们写出读温度的过程:
;读温度到TEMPER_L和TEMPER_H
READ_TEMP:
MOVA,#0CCH
LCALLWRITE_1820
MOVA,#0BEH
LCALLWRITE_1820
LCALLREAD_18200
LCALLINIT_1820
MOVA,#0CCH
LCALLWRITE_1820
MOVA,#044H
LCALLWRITE_1820
RET
3.4温度处理
读出温度后我们要跟据温度做相应的事,根据题目要求我们可以画出对于的流程图:
图3-5温度处理流程图
代码:
;温度处理
TEMPER_WORK:
LCALLTEMPER_COV
MOVA,TEMPER_NUM
CLRC
SUBBA,#70
JNCTEMP_OVER
MOVA,TEMPER_NUM
CJNEA,TEMPER_CONFIG,TW
RET
TW:
JCOPEN_HA
SETBHA
RET
;温度超过70响喇叭,并停止加热
TEMP_OVER:
SETBHA
MOVR6,#128
BELL:
CLRWA
MOVR7,#100
DJNZR7,$
SETBWA
DJNZR6,BELL
RET
;加热
OPEN_HA:
CLRHA
RET
总结
我的课程设计是单片机的温度控制。
当我接到选题通知后,开始着手论文的准备工作。
开始的时候,我不知道要如何写起,要往哪方面着手。
这个时候我的老师给我很大的帮助,给我指明了设计的思路。
通过老师的指导与帮助,我就开始了第一步搜集资料的重要工作。
从搜集文献到硬件电路的完成,到软件程序的实现,到论文的完成。
每一次的进步都让我喜悦,每一次导师的指点都让我收获良多,每一次遇到困难都让我更我得学会挑战自我。
通过这次的设计,我实现了温度控制的硬件连接,了解了芯片的选用,模块的建立,都会遇到这样那样的问题,而每一次的冲破阻碍就会感到知识得到了升华。
硬件设计我分为了以下模块:
显示模块、报警模块、温度控制模块和温度传感器模块。
然后设计软件,编写程序调试硬件电路各个模块的功能。
最后对整个系统联调,实现设计要求。
最终结果表明:
我的设计是合理的,能很好的达到预期的效果和要求。
大学三年我从书本中学了很多知识,这是第一次自己动手完成一项任务。
以前虽然我也做过一些实验,但那都是简单、单一的任务,远远没有这次课程设计这样的系统。
通过这次系统的设计,我不但增强了编程的能力,更培养了分析问题和解决问题的能力。
而且是我的画图能力得到了进一步的提高,知道了很多以前不知道的技巧,让我明白了“实践出真知”的道理。
同时我在与同组同学的交流过程中,深刻地了解合作的重要性。
通过本次的课程设计让我对智能仪器有了更深入的了解,对Protell99SE软。
但是由于对软件的不熟悉在做的过程中花费了大量的时间,而且对于编程的不熟练,只能借助实验书上的程序为模块进行组合,所以在调试的时候改了不少的东西才调出正确的结果。
时至今日,论文基本完成。
从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。
遇到困难,我会觉得无从下手,不知从何写起;当困难解决了,我会觉得豁然开朗,思路打开了;当论文基本成形的时候,我感觉到了从没有过的成就感。
参考文献
1余锡存,曹国华.单片机原理及接口技术.西安:
西安电子科技大学出版,2007
2陈伟人.MCS-51系列单片机实用子程序集锦.北京:
清华大学出版社,1998
3张福学.传感器应用及其电路精选.北京:
北京电子工业出版社,1991
4康华光.电子技术基础——数字部分.北京:
高等教育出版社,2000
5李桂安,丁则信,田野.电工电子实践初步.南京:
东南大学出版社,1999
6余载泉,李玉和编著.PROTEL实战演练.北京:
人民邮电出版社,2000
7张卫平,张英儒编著.现代电子电路原理与设计.北京:
原子能出版社,1997
指导教师评语
学号
姓名
班级
选题
名称
序号
评价内容
权重(%)
得分
1
考勤记录、学习态度、工作作风与表现。
5