恒温控制系统.ppt

上传人:本田雅阁 文档编号:2928950 上传时间:2019-06-07 格式:PPT 页数:38 大小:608.02KB
返回 下载 相关 举报
恒温控制系统.ppt_第1页
第1页 / 共38页
恒温控制系统.ppt_第2页
第2页 / 共38页
恒温控制系统.ppt_第3页
第3页 / 共38页
恒温控制系统.ppt_第4页
第4页 / 共38页
恒温控制系统.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《恒温控制系统.ppt》由会员分享,可在线阅读,更多相关《恒温控制系统.ppt(38页珍藏版)》请在三一文库上搜索。

1、单片机任务报告设计,任务:基于单片机智能控制的恒温系统 专业:智能电子 姓名:欧阳志勇 2013年4月9日,任务分析: 本设计以STC89C52单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机处理。并显示在LED12864液晶显示屏上,报警温度范围可调,文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路、单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:LCD12864显示程序、键盘扫描及按键处理程序、温度信号处理程序、继电器控制程序、超温报警程

2、序、直流电机控制程序。 关键词:STC89C52单片机;温度控制;DS18B20;LED12864液晶显示屏;,目 录 1 引言4 2 设计要求5 3 工作原理6 3.1工作原理7 4 方案设计.8 4.1 温度方案测量 .8 4.2 主控制方案. .10 5 各单元的设计. 13 5.1 键盘单元13 5.2 电源. 14 5.3蜂鸣器报警电路14 5.4白炽灯加热控制电路. 15 5.5电机控制电路. 16 5.6LED12864液晶显示电路.17 5.7总原理图.18 6 程序设计20 6.1 程序结构分析. 21 6.2 程序框图. 22 6.3 总程序. 24 7. 测试. 35 附

3、录A程序清单 37 心得体会 38,1 引言 温度控制系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。传统的继电器调温电路简单实用 ,但由于继电器动作频繁 ,可能会因触点不良而影响正常工作。控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数

4、调整不便仍是普遍存在的问题。而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。更能串接多个数字温度传感器DS18B20进行范围的温度检测。,2 设计要求 设计基于单片机的温度控制器,用于控制温度。具体要求如下: 1. 温度控制范围连续可调,测量

5、范围为085; 2. LED12864显示; 3. 温度误差5; 4. 具有稳定的温度控制及报警装置;,3 工作原理 温度传感器 DS18B20 在设备环境采集温度,单片机 STC89C512获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动直流电机风扇向外通风降温,当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备 (白炽灯) ,同时蜂鸣器报警。 3.1硬件框图: STC89C52 CPU芯片、键盘扫描、DS18B20 温度

6、芯片测量、LED12864显示、温度控制模块、电源;,AT89S51 CPU,键盘扫描电路,DS18B20 温度芯片数据传输,输入电源,LED1286数据显示,超温报警,直流电机风扇,控制白炽灯,4 方案设计 4.1温度测量方案 由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。 DS18B20特性; 独特的单线接口仅需一个端口引脚进行通讯 简单的多点分布应用 无需外部器件 可通过数据线供电 零待机功耗 测温范围-55+125,以0.5递增。华氏器件

7、-67+2570F,以0.90F 递增 温度以9 位数字量读出 温度数字量转换时间200ms(典型值) 用户可定义的非易失性温度报警设置 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统,4.2 主控制部分方案 对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。因此我们选Atmel公司STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory

8、)的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 主要功能特性 兼容MCS51指令系统 8K可反复擦写Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源共6个中断源2个读写中断口线 3级加密位低 功耗空闲和掉电模式 软件设置睡眠和唤醒功能,单片机最小系统原理图,1.复位电路 2.时钟电路,STC89C52引脚如下: 主电源引脚(2根) VCC(Pin40):电源输

9、入,接5V电源 GND(Pin20):接地线 外接晶振引脚(2根) XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 控制引脚(4根) RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。 可编程输入/输出引脚(32根) STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口

10、,每个口有8位(8根引脚),共32根。 PO口(Pin39Pin32):8位双向I/O口线,名称为P0.0P0.7 P1口(Pin1Pin8):8位准双向I/O口线,名称为P1.0P1.7 P2口(Pin21Pin28):8位准双向I/O口线,名称为P2.0P2.7 P3口(Pin10Pin17):8位准双向I/O口线,名称为P3.0P3.7,5 各单元的设计 5.1按键单元 单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键都是以开关状态来设置控制功能或输入数据。 按键开关状态的可靠输入 :为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程

11、序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响。 在这里我们用到S1,S2,S3,S4,S5对我们的温度进行调节; 按键功能; S1:对应的数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同时导通Q

12、5截止,从而实现电机正向转动以及转速的控制;同理,当PWM2为高电平,通过对PWM1输出占空比不同的矩形波使三极管Q1、Q6同时导通,Q6截止,从而实现电机反向转动以及转速的控制。,5.6 12864液晶显示电路,5.7总原理图,PCB板,6.程序设计,6.1:程序结构分析,总的思路:我们要采集温度并通过单片机处理显示在我们的led12864液晶显示屏上;并要设置初始的上限温度和下限温度范围;并能通过我们的按键可以调节温度的上限和下限值;同时当我们的温度超过上限值;直流电机散热;低于下限值白炽灯加热; 首先我们的对DS18B20初始化;采集温度函数;LED12864液晶显示屏初始化;写地址函数

13、,写数据函数,CPU处理;显示在LED液晶显示屏上,按键扫描函数;主函数;,12864,DS18B20,T0定时器初始化,读温度temp,判断temp,上限值,电机转 散热,下限值,白炽灯亮 加热,按键扫描,键值处理,调节上,下限值,蜂鸣器报警,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_(); r

14、esult = (bit)(P1 ,LED12864显示函数,void lcd_wcmd(UINT8 cmd) /写地址函数 while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; _nop_(); _nop_(); _nop_(); _nop_(); 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

15、 = 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_RST=0; Delayms(40);/等待复位40MS LCD_RST=1; Delayms(5); lcd_wcmd(0x30);/ lcd_wcmd(0x30); lcd_wcmd(0x0c); lcd_wcmd(0x01);

16、lcd_wcmd(0x06); ,void Dis_Str(UINT8 X,UINT8 Y,UINT8 *str) /写入地址*str和数据X,Y;并显示 UINT8 pos; if (X=0) X=0x80; else if (X=1) X=0x90; else if (X=2) X=0x88; else if (X=3) X=0x98; pos = X+Y ; lcd_wcmd(pos); /显示地址 _nop_(); _nop_(); _nop_(); _nop_(); while(*str!=0) /未结束 lcd_wdat(*str+); Delayms(5); ,void ds18

17、20rst()/*ds1820复位*/ UINT8 x=0; DQ = 1; /DQ复位 delay_18B20(4); /延时 DQ = 0; /DQ拉低 delay_18B20(100); /精确延时大于480us DQ = 1; /拉高 delay_18B20(40); ,DS18B20子函数,UINT8 ds1820rd()/*读数据*/ UINT8 i=0; UINT8 dat = 0; for (i=8;i0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat)

18、; ,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(0xcc);/*跳过读序列号*/ ds1820wr(0x44);/*启动温度转换*/ ds1820rst(); /复位 ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd(); /读低

19、8位 b=ds1820rd(); /读高8位 if(b ,UINT8 scan_key(void) UINT8 key; if(P0 ,按键扫描,void INT0_time() interrupt 2 UINT8 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+; else if(flogflog1)flog1+; else flog1=flog1; break; case S2:if(num1

20、=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); whi

21、le(1) temp=read_temp(); dispstr28=temp/100%10+0x30; dispstr29=temp/10%10+0x30; dispstr210=.; dispstr211=temp%10+0x30; 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); else TR1=0; led=0; else TR1=0; spk=1; pw1=0; pw2=0; l

22、ed=1; led=1; fen=0; mis=0; shi=0; Delayms(100); ,void INT_time1() interrupt 3 static UINT16 num=0; TH1=0x3c; TL1=0xb0; 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+0x30; dispstr47=T2%10+0x30; dispstr48=:; dispstr49=T1

23、/10+0x30; dispstr410=T1%10+0x30; dispstr411=:; dispstr412=T0/10+0x30; dispstr413=T0%10+0x30;,通风和加热定时时间函数,7.测试,4k7 R4 AXIAL0.3 5K1 J2 SIP9 10K R1 AXIAL0.3 10R R3 AXIAL0.3 10uF C3 C10/25 11.0592MHz Y1 XTAL11 33pF C1 c104 33pF C2 c104 102 C7 C102 104 C6 c104 104 C4 c104 200 R2 AXIAL0.3 470 RP1 AXIAL0.3

24、 CON2 JP2 SIP2 CON3 JP3 POWER3 DDC-05V K1 DC DIODE D2 DIODE0.4 DIODE D5 DIODE0.4 DIODE D4 DIODE0.4 DIODE D3 DIODE0.4,DS18B20 J3 DS18B20 J4 LED12864 SIP20 NPN Q4 NPN NPN Q3 NPN NPN Q6 NPN NPN Q5 NPN PNP Q2 8550 PNP Q1 8550 PNP Q7 8550 PNP Q8 8550 SPEAKER LS1 SPK STC89C52 U1 DIP40 SW-PB S5 SW4 SW-PB S3 SW4 SW-PB S2 SW4 SW-PB S4 SW4 SW-PB S6 SW4 SW DPDT POWER1 POWER1-6 USB JP1 USB 复位按键 SR1 SW4,附录A程序清单,心得体会,沉着.冷静.思考. 坚持就是胜利!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1