目录课题组名单及简介.........................................11设计之前的准备..........................................21.1系统基本方案选择及论证............................21.2研究内容..........................................51.3对单片机的学习....................................62系统功能及原理.........................................102.1概述.............................................102.218B20温度采集模块..............................132.3键盘模块.........................................182.4显示模块.........................................222.5热模块、加热模块和报警的控制.....................242.6主程序工作流程...................................273功能测试及结果分析.....................................283.1静态温度测量.....................................283.2动态温度测量....................................293.3测试结果分析....................................293.4硬件调试问题....................................303.5结论............................................30附件(程序及照片)......................................3111设计之前的准备1.1系统基本方案选择及论证本温度控制系统采用经典的自动控制控制原理,对水进行加热和制冷调节,很好地控制水的温度。根据题目要求系统可划分为:温度测量模块、显示电路模块、水温调节模块、控制模块、键盘输入模块为实现个模块功能,分别设想几种不同设计方案进行论证。(1)控制器模块根据题目要求,控制器主要用于对温度测量信号的接受和处理、控制加热器和制冷片,使其满足实验要求、控制显示电路对温度实时显示以及控制温度值的设定等。对控制器的选择有以下两种方案方案一:采用FPGA作为系统控制器。FPGA功能强大,可以实现各种复杂的逻辑功能,规模大,密度高,他将所有期间集成在一块芯片上,减少了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能扩展。FPGA系统处理速度快,适合大规模实时控制系统核心。由温度传感器送来的温度信号,经FPGA程序处理,控制加热、制冷装置动作。但本设计对数据处理速度要求不高,FPGA的高速处理有事得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂方案二:采用ATMEL公司的AT89C52作为系统控制器。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,对水温进行控制。并可附加显示、温度设定等功能。基于以上分析拟订方案二,由AT89C52作为控制核心对温度采集和实时显示以及控温装置进行控制。2(2)加热控制模块方案一:使用钨丝,但钨丝功率低,而且不宜放在水中。方案二:使用功率较大的热得快,对加热有明显效果,而且需要保温,需要间歇性加热,需要用到较大功率的加热装置。基于设计考虑加热采用方案二。(3)制冷装置根据题目要求,水温控制系统应具有全量程(10℃—70℃)内的升温、降温功能。当设定温度突变时,控制的最大动态误差≤±2℃,系统达到稳态的时间≤8min。因此我们对比了一下两种方案方案一:压缩机制冷。压缩机制冷速度快,最低温度低。但其不可短时间内反复启动,温度控制难,价格较高,且便携性差方案二:使用小风扇,小风扇功率小,容易控制,可以用三极管驱动,价格便宜,易于操作。考虑到成本,固拟定方案二。(4)温度采集模块题目要求温度静态误差小于等于0.2℃,温度信号为模拟信号,本设计要对温度进行控制和显示,所以要把模拟量转换为数字量。该温度采集模块有以下两种方案:方案一:采用温度传感器AD590K。AD590K具有较高精度和重复性,良好的非线性保证±0.1℃的测量精度。加上软件非线性补偿可以实现高精度测量。AD590将温度转化为电流信号,因此要加相应的调理电路,将电流信号转化为电压信号。送入8为A/D转换器,可以获得255级的精度,基本满足题目要求。方案二:采用数字温度传感器DS18B20。DS18B20为数字式温度3传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。基于以上分析和现有器件所限,温度采集模块选用方案二。他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。(5)键盘与显示模块根据题目要求,水温要由人工设定,并能实时显示温度值。对键盘和显示模块有下面两种方案:方案一:采用液晶显示屏和独立按键。液晶显示屏(LCD)具有功耗小、轻薄短小无辐射危险,平面直角显示以及影象稳定不闪烁,可视面积大,画面效果好,抗干扰能力强等特点。但需要利用控制芯片创建字符库,编程工作量大,控制器资源占用较多,其成本也偏高。方案二:采用三位LED七段数码管分别显示温度的十位、个位和小数位。按键采用独立按键进行温度设定。数码管具有:低能耗、低损耗、低压、寿命长、耐老化,对外界环境要求较低。同时数码管采用BCD编码显示数字,程序编译容易,资源占用较少。但其只能输出3位数字,数据不直观。根据以上论述,采用方案二。资源占用少,成本低。(6)系统各模块的最终方案根据以上分析,结合器件和设备等因素,确定如下方案:1.采用AT89C52单片机作为控制器,分别对温度采集、七段数码管、温度设定、控温设备控制。2.温度测量模块采用数字温度传感器DS18B20。此器件经软件设4置可以实现高分辨率测量。3.使用热得快。4.显示用七段数码管1.2研究内容本研究主要目的是以89C51单片机为核心实现对水的温度的控制,因此在查阅大量的资料和学习了相关的课程。了解了有关89C51单片机的组成及原理,学习了汇编语言,能够对单片机进行编程并进行相关的控制。由于汇编语言是直接面向机器的语言,因而在学习和练了使用汇编语言在实验板上对单片机进行控制以后,对单片机的工作有了进一步的了解和能够从机器层次根深一步的了解程序的运行过程。但只学习单片机的相关知识是不够的,因为它只是整个系统的控制部分,它的作用是实现数据的处理以及控制信号的接受和发出,虽然在整个系统当中起着最为重要的作用但是只有它的存在显然是是不能完成任何工作的。因此在学习完核心控制部件的相关知识后,接下来是学习其外围的接口电路。接口的学习是一项技术的学习,它其中有很多的经验的东西,因而需要多在试验箱进行试验,好在指导老师和我院其他老师给予帮助,提供了在学校实验室进行实验的机会,这一经历使我们受益匪浅,对以后的阶段的立项工作很有帮助,这是我们在以后的工作当中体会到的。鉴于我们的立项项目有温度的采集、温度的显示、以及用键盘实现对温度的范围的设定,此外还有蜂鸣器报警,散热风扇的驱动,加热棒的控制(这一部分是用弱电控制强的的部分,由于带有危险性,因为在设计和调试过程中有特别关注)等问题,因此在学习接口时特别关注了这些问题。从数码显示管的静态显示到数码显示管的动态显5示,从独立键盘的使用到那个矩阵键盘的设计我们都进行了认真的学习和练习,同时实验了用单片机的引脚电平控制了蜂鸣器的发声,风扇的启停和加热装置的启停。这些都对我们以后整个程序的设计有着重要的作用。在随后的设计过程当中我们发现使用汇编语言编写程序繁琐并且不易调试,因而在借助汇编语言对单片机的工作原理进行深入的理解之后我们使用C语言取代了汇编语言来实现整个程序的控制。在我们看来这是十分可取的。虽然利用C语言来编程在经过编译以后生成的可下载文件与完成相同功能的汇编语言编译生成的文件相比,它会占用更多的存储空间,但是我们在设计过成当中使用的是89C52单片机作为控制的核心,它有足够的空间去存储程序代码,这无疑对我们来说提供了极大的方便,使我们节约了部分的时间去做其它相关的事情,对我们在相对较短的时间内按时完成我们的科研立项工作极为有利。1.3对单片机的学习单片机是整个系统的核心部件,对单片机的学习过程是最重要同时也是最艰难的。针对本系统的要求我们重点学习了一些相关的内容,也是我们实际应用的重点,同时也连带学习一些必备的知识作为学习的重点。(1)存储器组织的特点89C52系列的单片机存储器组织特点是程序存储器与数据存储器在逻辑上分离。程序存储器和数据存储器有各自的存储区域。程序存储器用于存储生成的二进制文件。我们选用52单片机就是因为它比C51有更大的程序存储空间,而运用C语言编程生成的二进制文件相对于运用汇编语言生成的二进制文件会占用更多的存储空间,选用6C52就加有优势了。另外,上述谈及的程序存储器均为片内存储器,如果有需要可以接入片外程序存储器,进一步扩展功能。单片机上电或者手动复位之后,CPU从0000H单元开始执行程序。在程序存储器当中,有专门存放中断如空地址的空间。中断服务单元的间隔是8B,外部中断0入口时0003H,定时器0入口是000BH,外部中断1为0013H,定时器中断为001BH。如果中断子程序足够短,可以把子程序放到中断入口之后的空间当中,否子有用跳转指令转到别处执行。一般情况下,中断子程序不易写的太长,能够紧跟中断入口为宜。运用C语言编程不需对单片机的数据存储器有很深入的了解,单片机的出局存储器大致可分为3个区域即为存储器体区域、可为寻址区域和普通存储区。寄存器区有4组寄存器,每组有8个寄存器。这些寄存器可以作为不同的寄存器存取变量。比4个寄存器组高的16个字节的地址空间可以由于位寻址,即可以直接对其中的某一位进行操作。普通的RAM区可以进可以一字节的单位进行读写操作,一般用于数据区或者堆栈区。特殊功能寄存器空间包括端口的锁存器空间、定时器苏旭寄存器空间以及与外设控制有关的空间,他们位于数据寄存器最高的地址。程序的运行过程,就是对指令的分析以及执行过程。通过读取ROM空间当中的指令代码,对寄存器,数据存储器和和特殊功能存储器进行相应的操作,CPU在访问这些存储器的同时需要地址总线的配合,这些动作都是经过CPU分析指令之后控制的。因为了解存储器的组织结构对,进一步认识,程序的运行及工作过程会有更深一步的认识。(2)指令系统的认识7不同的机型都有各自的指令系统,同一系列的机型在不断地升级之后他的指令系统也在不断地升级,在升级至后的指令系统对更低一级的指令系统应该是兼容的。我们开始学习汇编语言是从学习8086系列的CPU的指令系统开始的,而在接触到80386甚至更高档的CPU指令系统后,它对8086的指令系统是兼容的。学习8086的指令系统对学习C52的指令系统很有帮助,因为他们很相似。指令系统给出了CPU所有能够完成的工作,程序员就是白这些指令进行有序的组合,是CPU能够完成一定任务的工作。指令系统又不能从表面上完全表达CPU的全部动作,很多指令有隐含的动作,这些都是需要程序员记忆的。但我认为在程序与真正认识了指令系统,这些隐含的动作将给我们带来一些方便,而且积极这些隐含的动作不是分笨的负担。至于伪指令,它们虽然包含在汇编语言当中,但它们不是机器的指令系统,他只给编译器提供某些信息,这些指令时接触不到机器本身的。指令系统,是我们在设计过程中不断认识的,对它的