空调制冷系统案例_第1页
空调制冷系统案例_第2页
空调制冷系统案例_第3页
空调制冷系统案例_第4页
空调制冷系统案例_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、案例 单片机控制空调制冷系统设计设计一个空调制冷控制系统,要求该系统能够自动控制制冷压缩机的运行和停止(制冷压缩机工作,则将空气热量带走,环境温度下降),使环境温度保持在人们设定的温度上(调温范围为1030)。控制系统要控制的是空气温度,是通过压缩机的运行、停止控制的,实际上单片机直接控制的是压缩机的工作状态。该系统要实现以下功能。1)根据环境温度控制压缩机工作。控制参数是温度,被控参数是压缩机电路通、断的工作状态。2)设置希望的环境温度值。由人手动控制。3)显示设定的温度值和当前环境温度值。该系统设计如下。1确定任务 见上述案例描述单 片 机温度传感器升温按钮降温按钮预置温度M指示灯继电器压

2、缩机当前温度2总体设计 可选用AT89C52单片机,其总体设计示意图如图1所示。图1 制冷控制系统总体方案示意图3硬件设计 空调制冷控制系统电路如图2所示。(1)该制冷控制系统可由AT89C52单片机最小系统即可实现(当然也可以用其他芯片,如AT89S51等),采用内部时钟电路。(2)温度设置信号由脉冲电路产生,为简化系统,通过导线分别与单片机INT0、INT1引脚相连,以中断方式工作。(3)两位预置的温度由P0口驱动2个数码管显示(带BCD码)。图2 空调制冷控制系统电路图开 始预置温度30在数码管上显示30初始化外中断0、1设置初始化定时器T0设置启动中断等 待(4)温度传感器选用数字温度

3、传感器DS18B20。数字温度传感器产生的串行信号由P3.6口输入,设置的温度由P1驱动4个数码管显示(动态显示),读取温度的时间延迟由T0实现,考虑到预置温度的显示问题,延时时间可设置为10ms(延时时间不能太短,太短的话,预置温度设置与显示将会不正常),当然可以使用热敏电阻式温度传感器来检测环境温度。(5)利用电磁继电器控制制冷压缩工作状态,压缩机可由+12V直流电源提供,继电路由P3.7驱动。 图3 主程序框图4软件设计 根据硬件设计可将软件设计成为以下几个模块。 (1)主程序模块:主要包括设置、显示默认调节温度为30的进行系统初始化工作。流程图如图3所示,源程序清单如下,包括全局变量定

4、义、头文件设置等。小技巧: 这里除了定义09的字段码外,还考虑到温度是负值时要显示“-”,而温度是正值时不显示符号,因此在该数组中多定义了两个符号的编码。#include <reg51.h>#include <intrins.h>sbit LE = P25;sbit DQ = P36;sbit DC = P37;unsigned char setTemp;unsigned char seg = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40, 0x00;/字段数组定义了12个元素,其中第11个元素是负号&qu

5、ot;-"的字段码,第12个元素为不显示的字段码,用于显示正温度值unsigned char buf4;unsigned int temperature;void main() unsigned char t10,t; setTemp = 30; t10 = setTemp/10; t=setTemp%10; P0 = (t10<<4)|(t&0x0f); DC = 1; ReadTemperature(); delay(50000); delay(50000); TMOD=0x01; TH0= -10000<<8; TL0= -10000; TR0=

6、1; IT0=IT1=1; IE = 0x87; while(1);(2)温度设置与显示模块:包括“升温”和“降温”两段程序,并将2位预置温度转换成BCD码,直接送往P0口,它们的内容相仿。参见任务九的案例示范,源程序清单如下。void isr_int0() interrupt 0 unsigned char t10,t; if(setTemp<30) setTemp+; t10=setTemp/10;t=setTemp%10; P0 = (t10<<4)|(t&0x0f);void isr_int1() interrupt 2 unsigned char t10,t

7、; if(setTemp>20) setTemp-; t10=setTemp/10;t=setTemp%10; P0 = (t10<<4)|(t&0x0f);(4)定时读取环境温度模块:该模块是完成控制系统的核心工作,利用DS18B20定时检测环境温度,根据环境温度控制压缩机启动与否,源程序清单如下。void delay(unsigned int time) /延时函数 while(time-);unsigned char Init_Ds18b20() /DS18B20初始化函数 unsigned char status; DQ = 1; delay(8); DQ =

8、 0;delay(90); DQ = 1;delay(5); status = DQ;delay(60); return status;unsigned char read() /读字节函数 unsigned char i = 0; unsigned char dat = 0; DQ=1;_nop_(); for(i=8; i>0; i-) DQ = 0;dat >>= 1;DQ = 1;_nop_();_nop_(); if(DQ) dat |=0x80; delay(30); DQ = 1; return(dat);void write(unsigned char dat

9、) /写字节函数 unsigned char i; for(i=8;i>0;i-) DQ = 0; DQ = dat & 0x01; delay(5); DQ=1; dat >>=1; void ReadTemperature() unsigned char tempL=0; unsigned char tempH=0; if(Init_Ds18b20() = 0) write(0xcc);write(0x44); Init_Ds18b20(); write(0xcc);write(0xbe); tempL = read(); tempH = read(); temp

10、erature = (tempH<<8)|tempL; void dispute() unsigned int temp,temp1; /用于中途的数据转换 /以下if语句用于处理负温度值,因为保存的是温度值的补码 if(temperature & 0xf800) = 0xf800) temperature = temperature+1; buf0=10; else buf0= 11;小技巧:这个if语句用于保证0时不出现负号“-”。方法是让当前的温度值与0.1进行比较,如果小于则表明目前温度是0,不必显示负号。 temp=temperature/16.0*100; /转

11、换成实际温度值并放大100倍,用于对百分位四舍五入 if(temp <10) buf0 = 11; else temp1 = temp % 10; if(temp1>=5) /四舍五入 temp += 10; temp /= 10 ; /去掉温度值的百分位 if(temp >= setTemp*10) && (buf0!=10) DC = 0; else DC = 1; if(temp>=1000) /如果温度>=100度,则显示四位 buf0=temp/1000; buf1=temp/100%10; buf2=temp/10%10; buf3=t

12、emp%10; else buf1=temp/100; buf2=temp/10%10; buf3=temp%10; void display() /显示子程序. int i,j; unsigned char temp=0xfe; for(j=0;j<40;j+)小技巧: 由于数码管采用动态显示,因此这些必须显示温度值的程序段必须多次循环才能保证显示正常,这些很关键! temp=0xfe; for(i=0;i<4;i+) LE=0; P2=temp; if(i=2) P1=segbufi+0x80; else P1=segbufi; LE=1;LE=0; delay(10); temp=(temp<<1)|1; P2=temp; /关显示,进行下一次测试 void tim

温馨提示

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

评论

0/150

提交评论