《单片机系统开发与应用工程实习报告基于AT89S52单片机的水温控制系统.doc》由会员分享,可在线阅读,更多相关《单片机系统开发与应用工程实习报告基于AT89S52单片机的水温控制系统.doc(25页珍藏版)》请在三一办公上搜索。
1、单片机系统开发与应用工程实习报告选题名称: 基于AT89S52单片机的水温控制系统 系(院): 计算机工程学院 专 业: 计算机科学与技术(嵌入式系统软件设计)班 级: 姓 名: 学 号: 指导教师: 学年学期: 2009 2010 学年 第 2 学期2010年 5 月 30 日摘要:温度控制是很多企业常见的控制装置,如机械行业的零件热处理、塑料制品的注塑机上,粉末冶金行业烧结炉、还原炉等都有温度控制问题,尤以热处理加热炉的温度控制最为典型。热处理加热炉是工厂热处理和高校热处理实验广泛使用的加热设备。现在所使用的炉温控制方法很多仍是陈旧的动圈式两位指示调节仪(如XCT101 型动圈式两位指示调
2、节仪) 。这种炉温控制方法炉温波动范围大,保温时间靠人工计时,加热速度不能控制,温度不能全程动态跟踪显示。这样的控制和显示方式不能满足日益发展的工业需求。高校的发展同样要求用现代化手段提升现有的实验设备,为学生提供更多更好、更现代化的实验条件。因此,我们就学校热处理实验用电阻加热炉进行现代化改革,将DS18B20测温传感器和AT89S52单片机优秀的实时控制功能、灵活的编程能力有机的结合起来,开发出热处理微机控制系统,实现温度控制的自动化。不但能用于学校的实验教学及其它一些研究课题的开发,同样能用于工厂热处理、注塑机多点温度的控制,提高工业企业自动化水平。关键字:单片机AT89S52;传感器;
3、控温;DS18B20目 录1 系统设计11.1 项目概要11.2 项目要求12 硬件设计12.1 硬件设计概要12.2 单片机最小系统22.3 温度检测电路42.3 报警电路72.4 控制电路及显示电路73 软件设计93.1 中断控制程序103.2 显示程序113.3 温度测量123.4 温度处理18总 结20参考文献211 系统设计1.1 项目概要水温控制系统无论是工业生产过程,还是日常生活都起着非常重要的作用,过低过高的水温都会使水资源失去应有的作用,从而造成水资源的极大浪费,给生活生产带来许多不利因素。基于AT89S52的单片机水温控制系统与传统的水温控制器相比具有操作方便、价格便宜、精
4、确度高和开展容易等优点,因此市场前景看好。1.2 项目要求基于AT89S52单片机水温控制器晶振采用12MHZ,具体要求如下:(1)初始温度设置为50度(2)越限报警温度为70度(3)控制精度为1度(4)控制范围为环境温度室温到70度2 硬件设计2.1 硬件设计概要根据需求,我的系统需要温度采集电路、控制电路、报警电路。当然这些要一起工作我们就需要一块单片机来协调它们!温度采集我们使用18B20,使用它可以是电路简化。控制电路我们用外部中断来调节温度,为了使操作方便,我们加入了一个显示控制温度值的数码管,来便于使用。报警电路,这个电路我们用一个三极管这为放大器去驱动一个喇叭。所有电路结构如下图
5、2-1 总体硬件设计示意图2.2 单片机最小系统AT89S52是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S52单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。由于AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system pro
6、grammable)的可反复擦写1000次的Flash只读程序存储器。器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。因此,本系统使用AT89S52单片机作为微处理器,AT89S52引脚图如图2-2。它主要具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2
7、个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作掉电模式冻结振荡器,因而可以保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。下面列出了AT89S52的一些性能参数:与MCS-51产品指令系统完全兼容 4k字节在系统编程(ISP)Flash闪速存储器1000次擦写周期4.05.5V的工作电压范围全静态工作模式:0Hz33MHz三级程序加密锁1288字节内部RAM32个可编程IO口线2个16位定时计数器
8、6个中断源全双工串行UART通道低功耗空闲和掉电模式中断可从空闲模唤醒系统看门狗(WDT)及双数据指针掉电标识和快速编程特性灵活的在系统编程(ISP字节或页写模式)图2-2 AT89S52引脚图图2-3 微处理器电路图整个单片机系统接口分配情况如下:P0口复用于传输LED位数据以及值数据传输、P2口的P2.0-P2.1作为六位LED的公共端的控制信号、P1口分配做键盘接口、P3.0和P3.1分别用于串口通信的数据的接收端和发送端、P3.2用于温度数据接口。2.3 温度检测电路DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体
9、公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 “一线总线”数字化温度传感器 同DS1820一样,DS18B20也 支持“一线总线”接口,测量温度范围为 -55C+125C,在-10+85C范围内,精度为0.5C。DS1822的精度较差为 2C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电
10、压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为2C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的
11、新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下: 图2-4 DS18B20的管脚排列图DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面
12、56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。表2-1 12位转化后得到的12位数据这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0
13、.0625即可得到实际温度。例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。温度检测控制电路图见图2-5。图2-5 温度检测控制电路图DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: (1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最
14、好采用汇编语言实现。 (2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。 (3)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18
15、20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。 (4)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。2.3 报警电路报警电路我们只需要用一个三极管就可以控制一个喇叭了。我们只要给这个口一个脉冲电平喇叭就会发出声音了。如图2-6图2-6 报警电路2.4 控制电路及显
16、示电路我们通过2个外部来控制温度,只要在中断口接2个开关接地。然后把调节后的温度显示出来。我们通过数码管了显示。LED显示器结构与原理:LED显示器由7条发光二极管组成显示字段,有的还带有一个小数点dp将7段发光二极管阴极连在一起,成为共阴极接法,当某个字段的阳极为高电平时,对应的字段就点亮。共阳极接法是将LED的所有阳极并接后就连到+5V上,当某一字段的阴极为0时,对应的字段就点亮。静态串行显示器的结构图如2-7所示:共阴极 共阳极图2-7 静态串行显示器的结构图点亮LED显示器有静态和动态两种方法。所谓静态显示,就是显示某一字段时,相应的发光二极管恒定的导通或截止,这种方式,每一显示位都需
17、要一个8位输出口控制,占用硬件较多,一般仅用于显示器位数较少的场合。所谓动态显示,就是一位一位地轮流点亮各位显示器。对每为显示器而言,每隔一段时间显示一次。显示位的亮度既跟导通电流有关,也和点亮时间与间隔时间的比例有关。动态显示器因硬件成本较低而被采用。为了显示字符,要为LED显示器提供显示段码,组成一个“8”字形的7段,再加上1个小数点位,共计8段,因此提供LED显示器的显示段码为一个字节。 LED显示器与单片机的接线图:本设计通过单片机P0口并经总线驱动器74LS245控制6位数码管的段码,通过位选线P2.0-2.1经三极管逐位逐位去控制数码管扫描显示。由于采用动态显示,其优点是占用硬件资
18、源少,功耗小。但必须注意:扫描周期必须控制在视觉停顿时间内,一般在20ms以内,否则会出现闪烁或跳动现象。如图2-8所示为LED与单片机的接线图。图2-8 LED与单片机的接线图显示器有四个LED数码管组成。输入串行数据线DIN和位移信号CLK,四个串/并移位寄存器芯片74LS245连。每片的并行输出作为LED数码管的码段。采用74LS245是为了放大电压,在这边74LS245是这为放大电路。74LS245的电路如图2-9图2-9 74LS245电路示意图3 软件设计总体设计:我们的程序是控温,所以我们应该不断测温并控制。如图3-1图3-1 程序总体设计流程图3.1 中断控制程序我们先来设计控
19、温的程序,因为它比较简单:程序如下:;外部中断1KEY_1:CLR EA ;关闭外部中断INCDIS1 ;把个位加一MOVA,DIS1 CJNEA,#10,KEY ;判断个位是否为十MOVDIS1,#0 ;是十把它置一;显示并打开中断KEY:MOVA,DIS2 MOVB,#10MULABADDA,DIS1 ;求出调整后的温度MOVTEMPER_CONFIG,A ;保存调整后的温度LCALL DISPLAY ;显示调整后的温度SETB EX0 SETB EX1SETB EA 打开中断RETI 返回;外部中断2KEY_2:CLR EAINC DIS2MOV A,DIS2CJNE A,#10,KEY
20、MOV DIS2,#0AJMP KEY其中DIS1,DIS2是定义的变量,用来保存数码管的显示数字。TEMPER_CONFIG也是定义变量用来保存设定温度值。3.2 显示程序根据数码管的显示特点,我们知道要在现实一位后延时一会在显示一位。下面是数码管显示代码:;显示DISPLAY:MOVA,DIS2MOVDPTR,#TABLEMOVC A,A+DPTR MOVP0,ASETB P2.1DSDELY1:MOVR6,#11DJNZ R6,$DJNZ R7,DSDELY1MOVA,DIS1MOVDPTR,#TABLEMOVC A,A+DPTRMOVP0,ASETB P2.0MOVR7,#25DSDE
21、LY2:MOVR6,#11DJNZ R6,$DJNZ R7,DSDELY2RET3.3 温度测量这里需要对18B20要有一个很清楚的了解。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。当主机收到DS18B20的响应信号后,便可以发出操作命令,这些命令可以分为ROM命令和RAM命令两种。CPU的操作过程如图3-2所示。由于DS18B20与单片机间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否
22、则将无法读取测温结果。操作时序主要有初始化时序、读时序和写0时序和写1时序四种,如图3-3所示。在温度测量仪表中,对DS18B20的操作主要是复位、读数据和写数据三种,而两种操作又都是按位进行的,所以首先应该按照DS18B20的时序要求,编写读、写时间片的程序,其流程图如图3-4所示。图3-2 DS18B20操作过程图3-3 DS18B20操作时序图3-4 DS18B20操作程序流程图根据上面的知识我们可以得到18B20的操作的3个函数;初始化18B20INIT_1820:SETBDQNOPCLRDQMOVR0,#06BHTSR1:DJNZR0,TSR1; 延时SETBDQMOVR0,#25H
23、TSR2:JNBDQ,TSR3DJNZR0,TSR2LJMPTSR4; 延时TSR3:SETBFLAG1; 置标志位,表示DS1820存在LJMPTSR5TSR4:CLRFLAG1; 清标志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#06BHTSR6:DJNZR0,TSR6; 延时TSR7:SETBDQRET;把A的值写入18B20WRITE_1820:MOVR2,#8CLRCWR1:CLRDQMOVR3,#6DJNZR3,$RRCAMOVDQ,CMOVR3,#23DJNZR3,$SETBDQNOPDJNZR2,WR1SETBDQRET;读温度READ_18200:MOV
24、 R4,#2; 将温度高位和低位从DS18B20中读出MOV R1,#77H; 低位存入77H(TEMPER_L),高位存入76H(TEMPER_H)RE00:MOV R2,#8RE01:CLR CSETB DQNOPNOPCLR DQNOPNOPNOPSETB DQMOV R3,#7DJNZ R3,$MOV C,DQMOV R3,#23DJNZ R3,$RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RET应为读出的温度的格式是12位,TEMPER_L位前四位是整数部分后四位是小数,TEMLPER_H只有低四位是有效的。所以我们要有一个处理温度的函数得到
25、整数的温度。;读出的温度转换成1个字节放入TEMPER_NUMTEMPER_COV:MOV A,#0F0HANL A,TEMPER_L; 舍去温度低位中小数点后的四位温度数值SWAP AMOV TEMPER_NUM,AMOV A,TEMPER_LJNB ACC.3,TEMPER_COV1; 四舍五入去温度值INC TEMPER_NUMTEMPER_COV1:MOV A,TEMPER_HANL A,#07HSWAP AORL A,TEMPER_NUMMOV TEMPER_NUM,A; 保存变换后的温度数据RET最后我们写出读温度的过程:;读温度到TEMPER_L和TEMPER_HREAD_TEM
26、P:MOV A,#0CCHLCALL WRITE_1820MOV A,#0BEHLCALL WRITE_1820LCALL READ_18200LCALL INIT_1820MOV A,#0CCHLCALL WRITE_1820MOV A,#044HLCALL WRITE_1820RET3.4 温度处理读出温度后我们要跟据温度做相应的事,根据题目要求我们可以画出对于的流程图:温度70报警低于设定值加热OverYY图3-5 温度处理流程图代码:;温度处理TEMPER_WORK:LCALL TEMPER_COVMOV A,TEMPER_NUMCLR CSUBB A,#70JNCTEMP_OVERM
27、OVA,TEMPER_NUMCJNE A,TEMPER_CONFIG,TWRETTW:JC OPEN_HASETB HARET;温度超过70响喇叭,并停止加热TEMP_OVER:SETB HAMOVR6,#128BELL:CLRWAMOVR7,#100DJNZ R7,$SETB WADJNZ R6,BELLRET;加热OPEN_HA:CLR HARET总 结我的课程设计是单片机的温度控制。当我接到选题通知后,开始着手论文的准备工作。开始的时候,我不知道要如何写起,要往哪方面着手。这个时候我的老师给我很大的帮助,给我指明了设计的思路。通过老师的指导与帮助,我就开始了第一步搜集资料的重要工作。从搜
28、集文献到硬件电路的完成,到软件程序的实现,到论文的完成。每一次的进步都让我喜悦,每一次导师的指点都让我收获良多,每一次遇到困难都让我更我得学会挑战自我。通过这次的设计,我实现了温度控制的硬件连接,了解了芯片的选用,模块的建立,都会遇到这样那样的问题,而每一次的冲破阻碍就会感到知识得到了升华。硬件设计我分为了以下模块:显示模块、报警模块、温度控制模块和温度传感器模块。然后设计软件,编写程序调试硬件电路各个模块的功能。最后对整个系统联调,实现设计要求。最终结果表明:我的设计是合理的,能很好的达到预期的效果和要求。大学三年我从书本中学了很多知识,这是第一次自己动手完成一项任务。以前虽然我也做过一些实
29、验,但那都是简单、单一的任务,远远没有这次课程设计这样的系统。通过这次系统的设计,我不但增强了编程的能力,更培养了分析问题和解决问题的能力。而且是我的画图能力得到了进一步的提高,知道了很多以前不知道的技巧,让我明白了“实践出真知”的道理。同时我在与同组同学的交流过程中,深刻地了解合作的重要性。通过本次的课程设计让我对智能仪器有了更深入的了解,对Protell99SE软。但是由于对软件的不熟悉在做的过程中花费了大量的时间,而且对于编程的不熟练,只能借助实验书上的程序为模块进行组合,所以在调试的时候改了不少的东西才调出正确的结果。时至今日,论文基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐
30、渐的清晰,整个写作过程难以用语言来表达。遇到困难,我会觉得无从下手,不知从何写起;当困难解决了,我会觉得豁然开朗,思路打开了;当论文基本成形的时候,我感觉到了从没有过的成就感。参考文献1 余锡存,曹国华.单片机原理及接口技术.西安:西安电子科技大学出版,2007 2 陈伟人. MCS-51系列单片机实用子程序集锦.北京:清华大学出版社,1998 3 张福学.传感器应用及其电路精选.北京:北京电子工业出版社,1991 4 康华光.电子技术基础数字部分.北京:高等教育出版社,20005 李桂安,丁则信,田野.电工电子实践初步.南京:东南大学出版社,19996 余载泉,李玉和编著.PROTEL实战演
31、练.北京:人民邮电出版社,20007 张卫平,张英儒编著.现代电子电路原理与设计.北京:原子能出版社,1997指导教师评语学号姓名班级选题名称序号评价内容权重(%)得分1考勤记录、学习态度、工作作风与表现。52自学情况:上网检索机时数、文献阅读情况(笔记)。103论文选题是否先进,是否具有前沿性或前瞻性。54成果验收:是否完成设计任务;能否运行、可操作性如何等。205报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。306文献引用是否合理、充分、真实。57答辩情况: 自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。25合计指导教师(签章): 年 月 日