设计思路:
①:按下按钮1,实现正反转切换。
②:按下按钮2,按下的前三次,实现1/2/3档切换,第四次按下,风扇停止。
仿真元器件清单:
AT89C51
BUTTON
CAP
CRYSTAL
RES
CAP-ELEC
1N4007
TIP31
TIP32
2SC2547
MOTOR-DC
实现程序:
//功能:风扇控制程序(实现三档风速、正转/反转)
#include<reg51.h>
#include <stdio.h>
sbit DJA=P1^0; //电机控制A端
sbit DJB=P1^1; //电机控制B端
sbit K1=P3^2; //转向按键连接P3.2引脚
sbit K2=P3^3; //风速按键连接P3.3引脚
bit flag; //转向标志位,flag=0表示正转,flag=1表示反转
unsigned char number; //按下风速按键的次数,即风速档位
//函数名:delay
//函数功能:实现软件延时
void delay (unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
//函数名:pwm1
//函数功能:输出占空比为30%的脉宽调制信号(正转、弱风)
void pwm1()
{
DJB=1;
DJA=0; //电机转动
delay(720); //延时,调整电机转动时长
DJA=0; //电机停转
delay(1680); //延时,调整电机停转的时长
}
//函数名:pwm2
//函数功能:输出占空比为50%的脉宽调制信号(正转、正常风)
void pwm2()
{
DJB=1;
DJA=0; //电机转动
delay(1200); //延时,调整电机转动时长
DJA=1; //电机停转
delay(1200); //延时,调整电机停转的时长
}
//函数名:pwm3
//函数功能:输出占空比为70%的脉宽调制信号(正转、强风)
void pwm3()
{
DJB=1;
DJA=0;
delay(1680);
DJA=1;
delay(720);
}
//函数名:pwm4
//函数功能:输出占空比为30%的脉宽调制信号(反转、弱风)
void pwm4()
{
DJB=0;
DJA=1; //电机转动
delay(720); //延时,调整电机转动时长
DJB=1; //电机停转
delay(1680); //延时,调整电机停转的时长
}
//函数名:pwm5
//函数功能:输出占空比为50%的脉宽调制信号(反转、正常风)
void pwm5()
{
DJB=0;
DJA=1; //电机转动
delay(1200); //延时,调整电机转动时长
DJB=1; //电机停转
delay(1200); //延时,调整电机停转的时长
}
//函数名:pwm6
//函数功能:输出占空比为70%的脉宽调制信号(反转、强风)
void pwm6()
{
DJB=0;
DJA=1;
delay(1680);
DJB=1;
delay(720);
}
void main() //主函数
{
flag=0; //设置正转标志位
number= 0; //风速档置0,无风
DJA=1; //电机停转
DJB=1;
while(1)
{
if(K1==0) //第一次检测到转向开关K1按下
{
delay(1200); //延时10ms左右去抖动
if(K1==0) //再次检测到K1按下
{
while(!K1); //等待K1键释放
flag=~flag; //改变转向标志位,反转
}
}
if(K2==0) //第一次检测到风速开关K2按下
{
delay(1200); //延时10ms左右去抖动
if(K2==0) //再次检测到K2按下
{
while(!K2); //等待K2键释放
if (number<=3) //判断风速档位是否强风档
{
number++; //没到强风档位则风速加速 1 2 3
}
else
{
number=0x01; //已经是强风档位则风速回到弱风档位
}
}
}
if(!flag) //正转
{
switch(number)
{
case 0x01: pwm1();break; //风速1档,弱风
case 0x02: pwm2();break; //风速2档,舒适风
case 0x03: pwm3();break; //风速3档,强风
default: ;
}
}
else
{
switch(number)
{
case 0x01: pwm4();break; //风速1档,弱风
case 0x02: pwm5();break; //风速2档,舒适风
case 0x03: pwm6();break; //风速3档,强风
default: ;
}
}
}
}
注:上面代码复制,可能会有额外乱码,需要自行审查
实现仿真图:
Comments NOTHING