- 博客(0)
- 资源 (1)
空空如也
电机的双向转动
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define unit unsigned int
sbit EN1=P1^0;
sbit EN2=P1^1;
sbit F1=P1^2;
sbit F2=P1^3;
sbit F3=P1^4;
sbit F4=P1^5;
sbit S1=P2^0;
sbit S2=P2^1;
sbit S3=P2^2;
sbit S4=P2^3;
sbit S5=P2^4;
uchar t=0; //中断计数器
uchar Cycle=100; //确定PWM周期
uchar speed2=50; //电动机速度值
/*T0初始化*/
T0_ini()
{
TMOD=0x02;
TH0=0xA3;
TL0=0xA3;
EA=1;
ET0=1;
TR0=1;
}
/*电动机控制*/
void main()
{
EN1=1;EN2=1; //使能端有效
T0_ini(); //T0初始化
while(1)
{
if(S1==0){speed2=50;} //停
if(S2==0){speed2=60;} //加
if(S3==0){speed2=50;} //减
if(S4==0){speed2=60;} //正
if(S5==0){speed2=40;} //反
}
}
/*T0中断程序,产生PWM信号,控制电机*/
void timer0()interrupt 1
{
if(t<speed2){F3=1;F4=0;} // 产生电动机2的PWM信号,控制转速方向
else{F3=0;F4=1;}
t++;
if(t>=Cycle)t=0; //1个PWM信号由100次中断产生 1个PWM周期为0.1ms*100=10ms
}
2018-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人