风扇调速系统说明.docx

上传人:b****5 文档编号:4808225 上传时间:2022-12-09 格式:DOCX 页数:12 大小:168.55KB
下载 相关 举报
风扇调速系统说明.docx_第1页
第1页 / 共12页
风扇调速系统说明.docx_第2页
第2页 / 共12页
风扇调速系统说明.docx_第3页
第3页 / 共12页
风扇调速系统说明.docx_第4页
第4页 / 共12页
风扇调速系统说明.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

风扇调速系统说明.docx

《风扇调速系统说明.docx》由会员分享,可在线阅读,更多相关《风扇调速系统说明.docx(12页珍藏版)》请在冰豆网上搜索。

风扇调速系统说明.docx

风扇调速系统说明

智能风扇调速系统

总体设计框图

系统电路设计总体设计方框图所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用2位LED数码管以串口传送数据实现温度显示。

总体设计方框图

主控制器

单片机AT89S52具有低电压供电和体积小等特点,四个端就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。

状态显示

显示风扇调速系统处于的工作状态,状态有三种分别是低速状态、中速状态和高速状态,此系统以发光二极管指示作演示。

LED显示

本系统共使用的三个共阳极七段数码管分别显示,当前的温度和设定定时的倒计时时间。

温度以标准摄氏度为单位。

时间以分钟为单位。

数码管采用单片机P0口并行数据输出,P2口数据扫描控制显示,三极管8550做数码管的驱动。

键盘控制

有一组键盘控制倒计时温度的设定加与减。

另一组控制系统处于的三种状态,分别对应的是低速状态、中速状态和高速状态,此系统以发光二极管指示作演示。

还有一个开关按键是控制系统是处于自动状态和手动状态的开关。

温度传感器

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

DS18B20的性能特点如下:

●独特的单线接口仅需要一个端口引脚进行通信;

●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;

●无须外部器件;

●可通过数据线供电,电压范围为3.0~5.5V;

●零待机功耗;

●温度以9或12位数字;

●用户可定义报警设置;

●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;

●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;

系统复位

系统单片机采用的是上电复位,当复位键按下时,系统会变为,开始的初始状态。

时钟振荡

系统单片机使用的是外部时钟振荡,振荡频率为标准的11.0592MHZ。

主要参数

序号

参数

数值

备注

1

电源电压

220V

交流

2

工作电压

4V~6V

直流

3

功率

<8W

4

设定值

0~9分钟

5

低速

30度~32度

6

中速

32度~34度

7

高速

34度以上

8

误差范围

精度误差小于0.5℃

主要元器件

序号

名称

作用

个数

1

AT89S52单片机

运算处理

1

2

DS1802传感器

温度测量

1

3

数码管LG5011BSR

温度显示

4

4

蜂鸣器

温度报警

1

5

变压器

变压

1

6

整流桥

交流变直流

1

7

三端稳压器7805

稳定电压值

1

8

AT24C02

掉电存储器

元件清单

元件名称

单位(只)

型号

参数

备注

温度传感器

1

DS18B20

-55~100度5V

单片机

1

AT89S52

变压器

1

220V变9V

9V/8W

整流桥

1

1安

C1,C2

2

30P

C3,C6

2

22UF/25V

C4

1

220UF/25V

C5

1

2.2UF/25

R1~R6

7

100欧姆

1/8W

R7~R9

3

510欧姆

1/8W

R10

1

10K

1/8W

R11~R15

5

4.7K

1/8W

R16~R21

6

510欧姆

1/8W

D1

1

发光二极管

发红

电源指示

D2~D6

5

发光二极管

发红

按下指示

D7

1

发光二极管

白发白

低速指示

D8

1

发光二极管

白发蓝

中速指示

D9

1

发光二极管

白发红

高速指示

稳压管

1

LM7805

Y1

1

晶震

11.0592HZ

S1~S6

6

按键

S1-1

1

开关

Q1~Q3

4

8550

NPN

U10~U12

3

LG5011BSR

7段数码管

电路板

2块

电源线

1条

风扇调速系统使用说明书

1.接通交流220伏电源,电源指示灯亮。

2.按下启动电源开关,系统开始运行。

3.当手动/自动按键弹起时,为手动状态,温度显示为当前温度,时间显示为零,加,减键不起作用。

4.分别按下,低速至高速按键,相应的指示灯亮。

5.当手动/自动按键按下时,为自动状态,温度显示为当前温度,时间显示为零,加,减键起作用。

每次加1或减1。

系统处于倒计时状态。

6.分别按下,低速至高速按键,相应的指示灯亮。

7.当系统处于自动状态时,如果温度大于30度,低速灯自动点亮。

如果温度大于32度,中速灯自动点亮。

如果温度大于34度,高速灯自动点亮。

风扇调速最终程序

#include

codeunsignedcharseg7code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,

0x82,0xf8,0x80,0x90,0x40};//显示段码

sbitTMDAT=P3^1;//DS18B20的数据输入/输出脚DQ,根据情况设定

sbitP2_7=P2^7;

sbitP2_6=P2^6;

sbitP2_5=P2^5;

sbitjia=P2^4;

sbitjian=P2^3;

sbitdi=P2^2;

sbitzh=P2^1;

sbitga=P2^0;

unsignedintz=0;

sbitq=P1^7;

unsignedintsdata;//测量到的温度的整数部分

//unsignedcharxiaoshu1;//小数第一位

//unsignedcharxiaoshu2;//小数第二位

//unsignedcharxiaoshu;//两位小数

bitfg=1;//温度正负标志

//////////*显示延时程序*///////////////

voidDelay(unsignedinttc)

{while(tc!

=0)

{unsignedinti;

for(i=0;i<80;i++);

tc--;}

}

////////////延时部分///////////////

voidyanshi(unsignedintcount)

{

unsignedchari;

while(count--)

{for(i=0;i<115;i++);}

}

/////////////发送复位///////////////

voidfashong(void)

{

unsignedchari;

TMDAT=0;for(i=0;i<103;i++);

TMDAT=1;for(i=0;i<4;i++);

}

bittmrbit(void)//读一位//

{

unsignedinti;

bitdat;

TMDAT=0;

i++;

TMDAT=1;

i++;i++;//微量延时//

dat=TMDAT;

for(i=0;i<8;i++);

return(dat);

}

unsignedchartmrbyte(void)//读一个字节

{

unsignedchari,j,dat;

dat=0;

for(i=1;i<=8;i++)

{j=tmrbit();dat=(j<<7)|(dat>>1);}

return(dat);

}

voidtmwbyte(unsignedchardat)//写一个字节

{

unsignedcharj,i;

bittestb;

for(j=1;j<=8;j++)

{testb=dat&0x01;

dat=dat>>1;

if(testb)

{TMDAT=0;//写0

i++;i++;

TMDAT=1;

for(i=0;i<8;i++);}

else

{TMDAT=0;//写0

for(i=0;i<8;i++);

TMDAT=1;

i++;i++;}

}

}

voidtmstart(void)//发送ds1820开始转换

{

fashong();//复位

yanshi

(1);//延时

tmwbyte(0xcc);//跳过序列号命令

tmwbyte(0x44);//发转换命令44H,

}

voidtmrtemp(void)//读取温度

{

unsignedchara,b;

fashong();//复位

yanshi

(1);//延时

tmwbyte(0xcc);//跳过序列号命令

tmwbyte(0xbe);//发送读取命令

a=tmrbyte();//读取低位温度

b=tmrbyte();//读取高位温度

if(b>0x7f)//最高位为1时温度是负

{a=~a;b=~b+1;//补码转换,取反加一

fg=0;//读取温度为负时fg=0

}

sdata=a/16+b*16;//整数部分

//xiaoshu1=(a&0x0f)*10/16;//小数第一位

//xiaoshu2=(a&0x0f)*100/16%10;//小数

//xiaoshu=xiaoshu1*10+xiaoshu2;//小数

}

voidDS18B20PRO(void)

{

tmstart();

//yanshi(5);//如果是不断地读取的话可以不延

tmrtemp();//读取温度,执行完毕温度将存于

}

voidLed()

{

if(fg==1)//温度为正时显示的数据

{

P2_7=0;

P0=seg7code[sdata/10];//输出十位

Delay(8);P2=P2|0xf0;

P2_6=0;

P0=seg7code[sdata%10]|0x80;//输出个位

Delay(8);P2=P2|0xf0;

P2_5=0;

P0=seg7code[z%10]|0x80;//输出延时位

Delay(4);P2=P2|0xf0;

if(sdata>30)

{P1=0xfe;}

if(sdata>32)

{P1=0xfd;}

if(sdata>34)

{P1=0xfb;}

}

}

voidbuzidong()

{

voidDS18B20PRO();

voidLed();

DS18B20PRO();

Led();

if(di==0)

{Delay(200);P1=0xfe;}

if(zh==0)

{Delay(200);P1=0xfd;}

if(ga==0)

{Delay(200);P1=0xfb;}

}

voidzidong()

{

while(z--)

{

voidDS18B20PRO();

voidLed();

unsignedchari,k;

//for(y=30;y>0;y--)

for(i=12;i>0;i--)

//for(j=80;j>0;j--)

for(k=248;k>0;k--)

{

if(jia==0)

{Delay(200);z++;}

if(jian==0)

{Delay(200);z--;}

DS18B20PRO();

Led();

if(di==0)

{Delay(200);P1=0xfe;}

if(zh==0)

{Delay(200);P1=0xfd;}

if(ga==0)

{Delay(200);P1=0xfb;}

/*

if((di==0)||(sdata>30))

{Delay(200);P1=0xfe;}

if((zh==0)||(sdata>32))

{Delay(200);P1=0xfd;}

if((ga==0)||(sdata>34))

{Delay(200);P1=0xfb;}

*/

};

}

}

voidmain()

{

fg=1;

while

(1)

{

//if(jia==0)

//{Delay(200);z++;}

//if(jian==0)

//{Delay(200);z--;}

//zidong();

buzidong();

if(q==0)

{z++;zidong();P1=0xff;}

}

}

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

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1