基于STC89C52单片机的温度控制电路设计要点_第1页
基于STC89C52单片机的温度控制电路设计要点_第2页
基于STC89C52单片机的温度控制电路设计要点_第3页
基于STC89C52单片机的温度控制电路设计要点_第4页
基于STC89C52单片机的温度控制电路设计要点_第5页
已阅读5页,还剩20页未读, 继续免费阅读

下载本文档

kok电子竞技权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

kok电子竞技:文档简介

德州学院物理与电子信息学院2011级电子信息科学与技术电子系统设计考查kok电子竞技基于温度传感器的单片机温控电路设计设计分析在各行业中广泛应用的温度控制器及仪器仪表主要具有如下的特点:一是在复杂的温度控制系统中能够适应于大惯性、大滞后的控制;二是在受控系统数学模型难以建立的情况下,得到控制;三是在受控系统中,能够被控制过程很复杂且参数时变的温度控制系统控制;五是温度控制系统普遍具有参数自检功能,借助计算机技术,能控制对象和参数,并且具有特性进行自动调整的功能等特点[1]。本次电子工艺实训旨在练习实用单片机系统的设计与安装,掌握典型51系列单片机最小系统及外围电路设计、常用电子元器件的识别、万用板焊接电路的方法、巩固常用电子仪表测量与调试电路参数的方法,培养创新实践动手能力,为下学期单片机、电子系统设计等课程奠定理论和实践基础。具体要求如下:自行设计以STC89C52RC40单片机为控制核心的实用单片机控制系统的硬件电路,实现至少一个环境参量信息采集、数值显示、报警功能。根据设计,利用万用板焊接硬件电路,并做简单调试。要求模块化设计,单片机最小系统模块、显示模块、信息采集报警模块、键盘模块,主要贵重器件用排座插接,电阻、电容、按键等元器件要求布局合理、排列整齐,无虚焊。设计方案本文设计是以单片机为核心,实现温度实时测控和显示。确定电路中的一些主要参数,了解温度控制电路的结构,工作原理,对该控制电路性能进行测试。具体设计方案:(1)本设计是用来测控温度的,可以利用热敏电阻的感温效应,将被测温度变化的模拟信号,电压或电流的采集过来,首先进行放大和滤波后,再通过A/D转换,将得到的数字量送往单片机中去处理,用数码管将被测得的温度值显示出来。但是这种电路的设计需要用到放大滤波电路,A/D转换电路,感温电路等一系列模拟电路,设计起来较麻烦[2]。(2)本设计采用单片机做处理器,可以考虑使用温度传感器,采用由达拉斯公司研制的DS18B20型温度传感器,此传感器可以将被测的温度直接读取出来,并进行转换,这样就很容易满足设计要求。从上面的两种方案,可以很容易看出来,虽然方案(2)软件部分设计复杂点,但是电路比较简单且精度高,故采用方案(2)。单单片机最小系统显示模块显示模块设置模块设置模块采集模块采集模块图1.总体方框图系统硬件设计据设计的需求,分析单片机的工作原理,可以大体得出来温度控制电路设计的总体方框图,主处理器采用单片机STC89C52RC40,温度采集部分采用温度传感器,用4位LED显示数码管作为显示部分,用来将温度显示出来。系统硬件电路部分由四大模块组成:温度采集模块、温度显示模块、报警模块、键盘模块和单片机最小系统模块[3]。(一)单片机最小系统模块在课题设计的温度控制系统设计中,控制核心是STC89C52单片机,该单片(1)系统的特性:测温范围为-55℃~+125℃,测温精度为士0.5℃;温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越。鄹褚苍嚼丛降。(3)系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ,外供电源线VDD,共用地线GND。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短。(三)报警模块设计中的报警装置电路用到了发光二级管、三极管、10K的电阻。将发光二级管的一端接地,另一端接三极管的发射极,三极管的基极通过电阻接在三极管上,三极管的集电极电源。图5.报警器(四)键盘模块键盘实际是就是很多案件的一种组合,按键的按下与否形成一个高低电平,主控芯片CPU通过高低电平来识别所需信号,进而使程序进行下一步的操作。键盘操作的软硬件的设计有以下几个方面的问题:对于此设计来说我们要准确的显示我们所要对应的信息,每按一次按键要显示所要显示的信息。这按键是主要用来控制温度而设计的。这样比键盘操作方便,也比较实惠。按键电路采用中断模式。图6.键盘输入(五)显示、指示模块本模块用的是0.56英寸2位数码管红色共阳数码管5261BS,一般正向压降的都是1.5~2V,额定电流为10mA,通过最大的电流为40mA。根据各种不同管接线的方式,可将数码管分成共阴极型和共阳极型。图7.数码管(六)系统总电路图系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主控电路等,通过AltiumDesigner可画出如图所示的电路图[4][5][6]图8.系统总电路图系统硬件制作(一)硬件电路制作方法1.按照电路图插接面包板,连接线路。2.电路焊接,将各元件焊接到面包板上。硬件电路制作过程1.准备好各类器件以及工具。2.按电路图插接好面包板,先焊接小器件及简单电路.3.用电线连接距离较远的器件,进行焊接.4.焊接完成后用万用表进行电路测试,确保没有短路。五、系统软件设计软件设计思路及流程图主控制程序的主要是用来实时控制当前所要测控的环境温度,并读出由DS18B20测量的经过处理的当前环境的温度值,同时检查温度是否在限度之内,否则报警,同时调整温度值。其主控制程序流程图如9所示。开始STC89C52开始STC89C52初始化DS18B20初始化温度是否到达设定限度温度显示结束红灯亮温度在显示范围内YNYNY发温度转换命令发DS18B20复位命令发跳过读序列号命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY 图9主程序流程图图10读温度流程图1.读温度子程序读温度子程序的功能主要是用来将随机存储器中的9个字节读出,在读出字节时侯,需要进行冗余码校验。在校验到有错误的时侯,所测得的温度数据就会不进行改写。其读温度子程序流程图如10所示。2.温度转换子程序温度转换命令子程序的功能主要是用来发送温度开始转换命令,让温度转换自动进行,其温度转换命令子程序流程图如11所示。发DS18B20复位命令发DS18B20复位命令发跳过读序列号命令发温度转换开始命令结束图11温度转换流程图3.计算温度子程序计算温度子程序的功能主要将随机存储器中的温度数值读取出来,将取得的温度数值的每一位经过计算分别取出来,放入指定的字节中,并进行温度值数正负的判定。计算温度子程序流程图如12所示。开始开始温度零下?温度值取补码置“—”标志取出小数位的温度值取出整数位的温度值结束置“+”标志NY 图12.计算温度流程图图12.计算温度流程图图3-4计算温度流程图4.温度显示子程序温度显示子程序的功能主要是对显示数据寄存器中的数据反复进行刷新操作。如果最高位显示是0时的时候,就将符号显示位立即移入下一位字节中。温度显示子程序流程图如13所示。温度数据移入显示寄存器温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号)结束NNYY图13.温度显示数据刷新流程图图13.温度显示数据刷新流程图(二)程序源代码#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitp34=P2^4;sbitp35=P2^5;sbitp36=P2^6;sbitdp=P0^7;sbitp37=P2^7;sbitDQ=P2^2;//定义DS18B20总线I/OsbitSET=P3^1;//定义选择报调整警温度上限和下限(1为上限,0为下限)sbitLING=P2^0;//定义闪烁signedcharm;//温度值全局变量bitsign=0;//外部中断状态标志signedcharshangxian=38;//上限报警温度,默认值为38signedcharxiaxian=5;//下限报警温度,默认值为5ucharcodeLEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};/*****延时子程序*****/voidDelay(uinti){while(i--);}/*****初始化DS18B20*****/voidInit_DS18B20(void){unsignedcharx=0;DQ=1;Delay(8);//稍做延时DQ=0;//单片机将DQ拉低Delay(80);//精确延时,大于480usDQ=1;//拉高总线Delay(14);x=DQ;//稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay(20);}/*****读一个字节*****/unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;Delay(4);}return(dat);}/*****写一个字节*****/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;}}voidTmpchange(void)//发送温度转换命令{Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换}/*****读取温度*****/unsignedintReadTemperature(void){unsignedchara=0;unsignedcharb=0;unsignedintt=0;floattt=0;Tmpchange();Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器a=ReadOneChar();//读低8位b=ReadOneChar();//读高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t=tt*100+0.5;//放大100倍输出并四舍五入return(t);}/*****显示开机初始化等待画面*****/Disp_init(){P0=0x80;//显示-p34=1;p35=0;p36=0;p37=0;Delay(200);P0=0x80;p34=0;p35=1;p36=0;p37=0;Delay(200);P0=0x80;p34=0;p35=0;p36=1;p37=0;Delay(200);P0=0x80;p34=0;p35=0;p36=0;p37=1;Delay(200);P0=0x80;}/*****显示温度子程序*****/Disp_Temperature()//显示温度{uinta,b,c,d,e;e=ReadTemperature();//获取温度值a=e/1000;//计算得到十位数字b=e/100-a*10;//计算得到个位数字d=e%10;//计算得到小数点后两位c=(e%100)/10;//计算得到小数点后一位m=e/100;if(m>shangxian||m<xiaxian)LING=1;//温度不在范围内报警elseLING=0;p34=0;p35=0;p36=0;p37=0;P0=LEDData[d];//显示小数点后两位p34=1;p35=0;p36=0;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0=LEDData[c];//显示小数点后一位p34=0;p35=1;p36=0;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0=LEDData[b];//显示个位dp=0;p34=0;p35=0;p36=1;p37=0;Delay(300);p34=0;p35=0;p36=0;p37=0;P0=LEDData[a];//显示十位p34=0;p35=0;p36=0;p37=1;Delay(300);p34=0;p35=0;p36=0;p37=0;//关闭显示}disptiaozheng(){ucharf,g,j,k;f=shangxian/10;g=shangxian%10;j=xiaxian/10;k=xiaxian%10;p34=0;p35=0;p36=0;p37=0;P0=0xc0;//显示0p34=1;p35=0;p36=0;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;P0=0xc0;//显示0p34=0;p35=1;p36=0;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;if(SET==1){P0=LEDData[g];dp=0;//显示上限温度个位}else{ P0=LEDData[k];dp=0;}p34=0;p35=0;p36=1;p37=0;Delay(200);p34=0;p35=0;p36=0;p37=0;if(SET==1)P0=LEDData[f];//显示上限温度十位else{if(f==0)P0=0x00;//不显示下限温度十位elseP0=LEDData[j];//显示下限温度十位}p34=0;p35=0;p36=0;p37=1;Delay(200);p34=0;p35=0;p36=0;p37=0;//关闭显示Delay(20);}/*****外部中断0服务程序*****/voidint0(void)interrupt0{EX0=0;//关外部中断0sign=1;if(SET==1)shangxian++;elsexiaxian++;Delay(500);EX0=1;}/*****外部中断1服务程序*****/voidint1(void)interrupt2{EX1=0;//关外部中断0sign=1;if(SET==1)shangxian--;elsexiaxian--;Delay(500);EX1=1;}/*****主函数*****/voidmain(void){uintz;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;ReadTemperature();LING=0;for(z=0;z<100;z++){Disp_init();}while(1){Disp_Temperature(); if(sign==1) { for(z=0;z<300;z++) disptiaozheng(); sign=0; }}}六、系统调试(一)调试方法单片机应用系统样机组装好以后,便可进入系统的在线(联仿真器)调试,其主要任务是排除样机硬件故障,并完善其硬件结构,试运行所设计的程序,排除程序错误,优化程序结构,使系统达到期望的功能,进而固化软件,使其产品化。单片机应用系统的硬件和软件调试是交叉进行的,但通常是先排除样机中明显的硬件故障,尤其是电源故障,才能安全地和仿真器相连,进行综合调试。本设计调试过程中所用的调试方法有:静态测试、联仿真器在线调试等。软件调试所使用的方法有:计算程序的调试方法、I/O处理程序的调试法、综合调试法等。(二)调试过程及现象计算程序的错误是一种静态的固定的错误,因此主要用单拍或断点运行方式来调试。根据计算程序的功能,事先准备好一组测试数据。调试时,用防真器的写命令,将数据写入计算程序的参数缓冲单元,然后从计算程序开始运行到结束,运行的结果和正确数据比较,如果对有的测试数据进行测试,都没有发生错误,则该计算程序调试成功;如果发现结果不正确,改用单步运行方式,即可检查出错误所在。计算程序的修改视错误性质而定。若是算法错误,那是根本性错误,应重新设计该程序;若是局部的指令有错,修改即可。如果用于测试的数据没有全部覆盖实际计算的原始数据的类型,调试没有发现错误可能在系统运行过程中暴露出来。对于A/D转换一类的I/O处理程序是实时处理程序,因此一般用全速断点运行方式或连续运行方式进行调试。在完成了各个模块程序(或各个任务程序)的调试工作以后,便可进行系统的综合调试。综合调试一般采用全速断点运行方式,这个阶段的主要工作社排除系统中遗留的错误以提高系统的动态性能和精度。在综合调试的最后阶段,应在目标系统的晶振频率工作,使系统全速运行目标程序,实现了预定功能技术指标后,便可将软件固化,然后在运行固化的目标程序,成功后目标系统便可脱机运行。一般情况下,这样一个应用系统就算研制成功了。七、设计总结通过本次实训,我们学会了怎样把所学的书本知识应用于实践中去,并学会了如何去思考整个控制系统的软硬件设计。实践过程中我们遇到了一些困难,但在解决问题的过程中,我们学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。(1)本次基于单片机温控电路的温度传感器的设计经过了整体分析、模块化分析、整体与模块的仿真分析这样三个步骤,实现了温度的显示以及报警显示功能。。(2)本次设计可以说达到了预期的要求,但尚有需要改进的地方。随着温度采集现场的复杂程度加大,如果依然用一个传感器来采集温度,必然反映不了真实的现场情况,这时一个很好的解决办法就是在总线上挂多个传感器,实行多路采集并且还可以加上时钟控制电路,实现实时温度控制。目前,国内外温度控制系统及仪表正朝着高精度、智能化、小型化等方面快速发展。现如今计算机的高速数据处理能力,和它丰富的利用资源,以及强大的逻辑功能,能够根据自己设计的实际需求进行灵活的资源采集分配,适当的增加或者减少其控制信号,输出的路数,这样就能够合理的设置温度控制的范围与路数,给以后的实际应用提供了可靠的、有力的控制系统解决方案。此次课程设计不仅增强了我们学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。参考文献[1]刘娟,梁卫文,程莉等.单片机C语言与Protues仿真技能实训.北京:中国电力出kok电子竞技社,2010,119-176.[2]余孟尝主编.数字电子技术基础简明教程(第二kok电子竞技)[M].北京:高等教育出kok电子竞技社,2000,8:45-56.[3]童诗白、华成英主编.模拟电子技术基。ǖ谒膋ok电子竞技)[M].北京:高等教育出kok电子竞技社,2006,5328-415.[4]赵福按.电子电路设计与实践[M].山东:山东科学出kok电子竞技社,2001,110-118.[5]陈金平.电子系统设计[M].北京:国防工业出kok电子竞技社,2007,18-30.[6]康华光.电子技术基。ㄊ植糠郑本:高等教育出kok电子竞技社,1998,140-160。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论