《《恒温控制系统》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《恒温控制系统》PPT课件.ppt(38页珍藏版)》请在三一办公上搜索。
1、单片机任务报告设计,任务:基于单片机智能控制的恒温系统专业:智能电子姓名:欧阳志勇 2013年4月9日,任务分析:本设计以STC89C52单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机处理。并显示在LED12864液晶显示屏上,报警温度范围可调,文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路、单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:LCD12864显示程序、键盘扫描及按键处理程序、温度信号处理程序、继电器控制程序、超温报警程序、直
2、流电机控制程序。关键词:STC89C52单片机;温度控制;DS18B20;LED12864液晶显示屏;,目 录1 引言42 设计要求53 工作原理6 3.1工作原理74 方案设计.8 4.1 温度方案测量.8 4.2 主控制方案.105 各单元的设计.13 5.1 键盘单元13 5.2 电源.14 5.3蜂鸣器报警电路14 5.4白炽灯加热控制电路.15 5.5电机控制电路.16 5.6LED12864液晶显示电路.17 5.7总原理图.186 程序设计.20 6.1 程序结构分析.21 6.2 程序框图.22 6.3 总程序.247.测试.35附录A程序清单 37心得体会.38,1 引言温度
3、控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,常用的控制电路根据应用场合和所要求的性能指标有所不同,在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用,但由于继电器动作频繁,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。而采用数字温度传感器DS18B20
4、,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行范围的温度检测。,2 设计要求 设计基于单片机的温度控制器,用于控制温度。具体要求如下:1.温度控制范围连续可调,测量范围为085;2.LED12864显示;3.温度误差5;4.具有稳
5、定的温度控制及报警装置;,3 工作原理温度传感器 DS18B20 在设备环境采集温度,单片机 STC89C512获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动直流电机风扇向外通风降温,当采集的温度经处理后低于设定温度的下时,单片机通过三极管驱动继电器开启升温设备(白炽灯),同时蜂鸣器报警。3.1硬件框图:STC89C52 CPU芯片、键盘扫描、DS18B20 温度芯片测量、LED12864显示、温度控制模块、电源;,AT89S51CPU,键盘扫描电路,D
6、S18B20 温度芯片数据传输,输入电源,LED1286数据显示,超温报警,直流电机风扇,控制白炽灯,4 方案设计4.1温度测量方案由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。DS18B20特性;独特的单线接口仅需一个端口引脚进行通讯简单的多点分布应用无需外部器件可通过数据线供电零待机功耗测温范围-55+125,以0.5递增。华氏器件-67+2570F,以0.90F 递增温度以9 位数字量读出温度数字量转换时间200ms(典型值)用户可定义的非
7、易失性温度报警设置报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件应用包括温度控制、工业系统、消费品、温度计或任何热感测系统,4.2 主控制部分方案对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。因此我们选Atmel公司STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory)的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-
8、51指令集和输出管脚相兼容。主要功能特性兼容MCS51指令系统8K可反复擦写Flash ROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能,单片机最小系统原理图,1.复位电路 2.时钟电路,STC89C52引脚如下:主电源引脚(2根)VCC(Pin40):电源输入,接5V电源GND(Pin20):接地线外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端控
9、制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。PO口(Pin39Pin32):8位双向I/O口线,名称为P0.0P0.7P1口(Pin1Pin8):8位准双向I/O口线,名称为P1.0P
10、1.7 P2口(Pin21Pin28):8位准双向I/O口线,名称为P2.0P2.7 P3口(Pin10Pin17):8位准双向I/O口线,名称为P3.0P3.7,5 各单元的设计 5.1按键单元单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键都是以开关状态来设置控制功能或输入数据。按键开关状态的可靠输入:为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响。在这里我们用到S1,S2,S3,S4,S5对我们的温度进行调节;按键功能;S1:对
11、应的数1;S2:对应的数 1;S3:左移一位;S4:确认;S5:调节温度范围键;,5.2电源电路,通过USB线+5V供电;,5.3蜂鸣器报警电路,5.4白炽灯加热控制电路,I/O:P2.0口输出低电平通过继电器吸合控制白炽灯的亮灭;,5.5 电机H桥控制电路,通过PW1,PW2输出电平的高低,控制电机的正反转,当PWM1为低电平,通过对PWM2输出占空比不同的矩形波使三极管Q1、Q6同时导通Q5截止,从而实现电机正向转动以及转速的控制;同理,当PWM2为高电平,通过对PWM1输出占空比不同的矩形波使三极管Q1、Q6同时导通,Q6截止,从而实现电机反向转动以及转速的控制。,5.6 12864液晶
12、显示电路,5.7总原理图,PCB板,6.程序设计,6.1:程序结构分析,总的思路:我们要采集温度并通过单片机处理显示在我们的led12864液晶显示屏上;并要设置初始的上限温度和下限温度范围;并能通过我们的按键可以调节温度的上限和下限值;同时当我们的温度超过上限值;直流电机散热;低于下限值白炽灯加热;首先我们的对DS18B20初始化;采集温度函数;LED12864液晶显示屏初始化;写地址函数,写数据函数,CPU处理;显示在LED液晶显示屏上,按键扫描函数;主函数;,12864,DS18B20,T0定时器初始化,读温度temp,判断temp,上限值,电机转 散热,下限值,白炽灯亮 加热,按键扫描
13、,键值处理,调节上,下限值,蜂鸣器报警,LED12864显示,6.2 程序框图,main,6.3 总程序,bit lcd_busy()/读忙状态函数 bit result;LCD_RS=0;LCD_RW=1;_nop_();_nop_();_nop_();_nop_();LCD_EN=1;_nop_();_nop_();_nop_();_nop_();result=(bit)(P1,LED12864显示函数,void lcd_wcmd(UINT8 cmd)/写地址函数 while(lcd_busy();LCD_RS=0;LCD_RW=0;_nop_();_nop_();_nop_();_nop
14、_();LCD_EN=0;_nop_();_nop_();P1=cmd;Delayus(50);LCD_EN=1;Delayus(50);LCD_EN=0;,void lcd_wdat(UINT8 dat)/写数据函数 while(lcd_busy();LCD_RS=1;LCD_RW=0;_nop_();_nop_();_nop_();_nop_();LCD_EN=0;_nop_();_nop_();P1=dat;Delayus(50);LCD_EN=1;Delayus(50);LCD_EN=0;,void Lcd_Init(void)/LCD液晶初始化函数Delayms(100);LCD_R
15、ST=0;Delayms(40);/等待复位40MSLCD_RST=1;Delayms(5);lcd_wcmd(0 x30);/lcd_wcmd(0 x30);lcd_wcmd(0 x0c);lcd_wcmd(0 x01);lcd_wcmd(0 x06);,void Dis_Str(UINT8 X,UINT8 Y,UINT8*str)/写入地址*str和数据X,Y;并显示 UINT8 pos;if(X=0)X=0 x80;else if(X=1)X=0 x90;else if(X=2)X=0 x88;else if(X=3)X=0 x98;pos=X+Y;lcd_wcmd(pos);/显示地址
16、 _nop_();_nop_();_nop_();_nop_();while(*str!=0)/未结束 lcd_wdat(*str+);Delayms(5);,void ds1820rst()/*ds1820复位*/UINT8 x=0;DQ=1;/DQ复位delay_18B20(4);/延时DQ=0;/DQ拉低delay_18B20(100);/精确延时大于480usDQ=1;/拉高delay_18B20(40);,DS18B20子函数,UINT8 ds1820rd()/*读数据*/UINT8 i=0;UINT8 dat=0;for(i=8;i0;i-)DQ=0;/给脉冲信号 dat=1;DQ
17、=1;/给脉冲信号 if(DQ)dat|=0 x80;delay_18B20(10);return(dat);,void ds1820wr(UINT8 wdata)/*写数据*/UINT8 i=0;for(i=8;i0;i-)DQ=0;DQ=wdata,UINT16 read_temp(void)/*读取温度值并转换*/UINT8 a,b;UINT16 tvalue;ds1820rst();/复位ds1820wr(0 xcc);/*跳过读序列号*/ds1820wr(0 x44);/*启动温度转换*/ds1820rst();/复位 ds1820wr(0 xcc);/*跳过读序列号*/ds1820
18、wr(0 xbe);/*读取温度*/a=ds1820rd();/读低8位b=ds1820rd();/读高8位if(b,UINT8 scan_key(void)UINT8 key;if(P0,按键扫描,void INT0_time()interrupt 2UINT8 num1=0,KEY;spk=0;Delayms(100);spk=1;KEY=scan_key();while(KEY!=S4)KEY=scan_key();switch(KEY),case S1:if(num1=0)flog+;elseif(flogflog1)flog1+;else flog1=flog1;break;case
19、 S2:if(num1=0)flog-;if(flogflog1)flog-;else flog=flog;elseflog1-;break;case S3:num1+;num1%=2;break;spk=0;Delayms(50);spk=1;,用中断方式调节温度函数,void main(void)/主函数int temp;UINT8 dispstr116=恒温控制系统;UINT8 dispstr216=“室温;Delayms(100);Lcd_Init();Delayms(100);int0_timer();Dis_Str(0,0,dispstr1);while(1)temp=read_t
20、emp();dispstr28=temp/100%10+0 x30;dispstr29=temp/10%10+0 x30;dispstr210=.;dispstr211=temp%10+0 x30;Dis_Str(1,0,dispstr2);Dis_Str(2,0,dispstr3);Dis_Str(3,0,dispstr4);,if(temp=(flog*10)|temp=(flog*10)pw1=0;pw2=1;Delayms(10);elseTR1=0;led=0;elseTR1=0;spk=1;pw1=0;pw2=0;led=1;led=1;fen=0;mis=0;shi=0;Dela
21、yms(100);,void INT_time1()interrupt 3static UINT16 num=0;TH1=0 x3c;TL1=0 xb0;num+;if(num=20)num=0;mis+;if(mis=60)mis=0;fen+;if(fen=60)fen=0;shi+;shi%=24;,T0=mis;T1=fen;T2=shi;dispstr46=T2/10+0 x30;dispstr47=T2%10+0 x30;dispstr48=:;dispstr49=T1/10+0 x30;dispstr410=T1%10+0 x30;dispstr411=:;dispstr412=
22、T0/10+0 x30;dispstr413=T0%10+0 x30;,通风和加热定时时间函数,7.测试,4k7R4AXIAL0.35K1J2SIP910KR1AXIAL0.310RR3AXIAL0.310uFC3C10/2511.0592MHzY1XTAL1133pFC1c10433pFC2c104102C7C102104C6c104104C4c104200R2AXIAL0.3470RP1AXIAL0.3CON2JP2SIP2CON3JP3POWER3DDC-05VK1DCDIODED2DIODE0.4DIODED5DIODE0.4DIODED4DIODE0.4DIODED3DIODE0.4,DS18B20J3DS18B20J4LED12864SIP20NPNQ4NPNNPNQ3NPNNPNQ6NPNNPNQ5NPNPNPQ28550PNPQ18550PNPQ78550PNPQ88550SPEAKERLS1SPKSTC89C52U1DIP40SW-PBS5SW4SW-PBS3SW4SW-PBS2SW4SW-PBS4SW4SW-PBS6SW4SW DPDTPOWER1POWER1-6USBJP1USB复位按键SR1SW4,附录A程序清单,心得体会,沉着.冷静.思考.坚持就是胜利!,