求毕业设计:基于AT89C51的智能电风扇控制系统

LHSIX 2009-05-23 04:37:07

本设计以MCS51单片机为核心,通过温度传感器对环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动变换档位,实现“温度高,风力大,温度低,风力弱”的性能。另外,通过键盘控制面板,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动。

本设计主要内容如下:
① 风速设为从高到低5个档位,可由用户通过键盘手动设定。
② 当温度每降低2℃则电风扇风速自动下降一个档位。
③ 当温度每升高2℃则电风扇风速自动上升一个档位。
④ 用户可设定电风扇最低工作温度,当低于该温度时,电风扇自动停转。
...全文
535 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingfeng200634 2010-04-24
  • 打赏
  • 举报
回复
楼上很强大 很好。。。
lingyun3429 2010-04-24
  • 打赏
  • 举报
回复
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag=0;
uchar flad=0;
uchar flau=0;
uchar flav=0;
sbit P20=P2^0;
uint key=0;
uint th0l,th0h,tl0l,tl0h;
uint th1l,th1h,tl1l,tl1h;
void delay(uint n)
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
void init()
{
TMOD=0x11;
TH1=0x3c;
TL1=0xb0;
TH0=0xfc;
TL0=0x18;
ET1=1;
ET0=1;
TR1=1;
TR0=1;
EA=1;
P20=1;
key=0;
}

void rupt1()interrupt 3
{
if(!flav)
{
P21=0;
TH1=th1h;
TL1=th1l;
}
else
{
P21=1;
TH1=tl1h;
TL1=tl1l;
}
flav=!flav;
}
void rupt0()interrupt 1
{
if(!flag)
{
P20=1;
TH0=th0h;
TL0=th0l;
}
else
{
P20=0;
TH0=tl0h;
TL0=tl0l;
flad=0;
}
flag=!flag;
}
void main()
{
init();
do{
if(!flad)
{
switch(key)
{
case(7): th0h=0xfc;th0l=0xe0;tl0h=0xb5;tl0l=0x00; flad=1;break;//0.8ms
case(6): th0h=0xfc;th0l=0x7c;tl0h=0xb5;tl0l=0x64; flad=1;break; //0.9ms
case(5): th0h=0xfc;th0l=0x18;tl0h=0xb5;tl0l=0xc8; flad=1;break; //1.0ms
case(4): th0h=0xfb;th0l=0xb4;tl0h=0xb6;tl0l=0x2c; flad=1;break; //1.1ms
case(3): th0h=0xfb;th0l=0x50;tl0h=0xb6;tl0l=0x90; flad=1;break; //1.2ms
case(2): th0h=0xfa;th0l=0xec;tl0h=0xb6;tl0l=0xf4; flad=1;break; //1.3ms
case(1): th0h=0xfa;th0l=0x88;tl0h=0xb7;tl0l=0x58; flad=1;break; //1.4ms
case(0): th0h=0xfa;th0l=0x24;tl0h=0xb7;tl0l=0xbc; flad=1;break; //1.5ms
case(11): th0h=0xf9;th0l=0xc0;tl0h=0xb8;tl0l=0x20; flad=1;break; //1.6ms
case(12): th0h=0xf9;th0l=0x5c;tl0h=0xb8;tl0l=0x84; flad=1;break; //1.7ms
case(13): th0h=0xf8;th0l=0xf8;tl0h=0xb8;tl0l=0xe8; flad=1;break; //1.8ms
case(14): th0h=0xf8;th0l=0x94;tl0h=0xb9;tl0l=0x4c; flad=1;break; //1.9ms
case(15): th0h=0xf8;th0l=0x30;tl0h=0xb9;tl0l=0xb0; flad=1;break; //2.0ms
case(16): th0h=0xf7;th0l=0xcc;tl0h=0xba;tl0l=0x14; flad=1;break; //2.1ms
case(17): th0h=0xf7;th0l=0x68;tl0h=0xba;tl0l=0x78; flad=1;break; //2.2ms
case(18): th0h=0xf7;th0l=0x04;tl0h=0xba;tl0l=0xdc; flad=1;break;// 2.3ms
case(19): th0h=0xf6;th0l=0xa0;tl0h=0xbb;tl0l=0x40; flad=1;break; // 2.4ms
case(20): th0h=0xf6;th0l=0x3c;tl0h=0xbb;tl0l=0xa4; flad=1;break;// 2.5ms时舵机(从正面看)向左转到快到极限。
default:break;
}
}
}while(1);
if(!flau)
{
switch(key)
{
case(7): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(6): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(5): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(4): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(3): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(2): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(1): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(0): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(11): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(12): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(13): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(14): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(15): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(16): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(17): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(18): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(19): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
case(20): th1l=,th1h=,tl1l=,tl1h=;flau=1;break;
}
}
}
很简单,看懂以上程序也许会对你有所帮助。
nhcxc 2010-04-24
  • 打赏
  • 举报
回复
楼主能出多少的RMB?温度能不能降,不一定。。但是肯定能包通过您的毕业设计。。保证满意!~
galle 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lbing7 的回复:]
风扇这种东西想让温度降2度,太难了

搞不好得吹上半天

因为,丫是在一个开放的区域里面进行的

没有热交换的过程,谁想的这个题的?

太想当然了
[/Quote]
只是说明一个温度,并没有让它降温,lz的说法有误,应该是温度和设定值间的温差,
出这个题的人脑子有问题,典型的学究派!
galle 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dongfanghuazi 的回复:]
谁会做冰箱温控器???
[/Quote]
机械的还是电子的!
zyulove 2010-04-21
  • 打赏
  • 举报
回复
吹风扇是不会改变室温的 根据能量守恒,反倒增加温度 你没有想到吧!
东方华子 2009-06-01
  • 打赏
  • 举报
回复
谁会做冰箱温控器???
ChinaRocLee 2009-05-30
  • 打赏
  • 举报
回复
让风扇降温这想法简直就是疯狂啊,没听说风扇可以大范围降温的!当热到一定程度,风扇就不起认可作用了!
hy5154 2009-05-30
  • 打赏
  • 举报
回复
加我Q:1140596378,我可以帮你做,做好后给你讲解,包你满意。。。
hy5154 2009-05-30
  • 打赏
  • 举报
回复
加我QQ:1140596378,我可以帮你做,包你满意,速度快!有意,Q上聊
风雪点 2009-05-28
  • 打赏
  • 举报
回复
18b20是够了,就和楼上说的一样,你想把温度用风扇降2度,????有点难度啊
edwardYang 2009-05-27
  • 打赏
  • 举报
回复
用AVR的芯片可以直接用内置的ADC功能,更简单
tftfttff 2009-05-25
  • 打赏
  • 举报
回复
我觉得采集还是用590或者1820之类的吧
lbing7 2009-05-25
  • 打赏
  • 举报
回复
风扇这种东西想让温度降2度,太难了

搞不好得吹上半天

因为,丫是在一个开放的区域里面进行的

没有热交换的过程,谁想的这个题的?

太想当然了
Soyokaze 2009-05-23
  • 打赏
  • 举报
回复
首先是温度检测,选用普通二极管就可以了。PN结通恒定电流,结电压在常温的一定范围内,与温度变化基本是显性关系。
根据这个,加一级运放,把输出的电压ADC,然后就可以交给51处理了。注意最好选用精密的基准电压源(受环境温度影响要小)给运放和ADC提供参考电压。
程序可以采用查询的方式,具体实现起来没什么难度。

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧