基于AT89C51单片机直流电机PWM调速程序分享
来源:jsp 发布时间:2018-10-25 分享至微信

这是一款AT89C51单片机直流电机PWM调速程序,程序可以直接用于AT89C52、AT89S51、AT89S51,STC89C51、STC89C52单片机中,单片机晶振采用11.0592M,直流电机由L298集成电路控制,产生的PWM的频率约为91Hz。L298各引脚已在程序中标明,原理图大家可以自己画一下,这里就不具给出。下面是源程序。


 


基于AT89C51单片机直流电机PWM调速程序分享


 


#include[reg52.h》//注意请把‘ [ ’换成 “《”,下同。否则编译时会出错。


#include [intrins.h》//


#define uchar unsigned char


#define uint unsigned int


sbit en1=P2^0;


sbit en2=P2^1;


sbit s1=P2^2;


sbit s2=P2^3;


sbit s3=P2^4;


sbit s4=P2^5;


uchar t=0;


uchar m1=0;


uchar m2=0;


uchar tmp1,tmp2;


void motor(uchar index, char speed)


{


if(speed》=-100 && speed《=100)


{


if(index==1)


{


m1=abs(speed);


if(speed《0)


{


s1=0;


s2=1;


}


else


{


s1=1;


s2=0;


}


}


if(index==2)


{


m2=abs(speed);


if(speed《0)


{


s3=0;


s4=1;


}


else


{


s3=1;


s4=0;


}


}


}


}


void delay(uint j)


{


for(j;j》0;j--);


}


void main()


{


char i;


TMOD=0x02;


TH0=0x9B;


TL0=0x9B;


EA=1;


ET0=1;


TR0=1;


while(1)


{


for(i=0;i《=100;i++)


{


motor(1,i);


motor(2,i);


delay(5000);


}


for(i=100;i》0;i--)


{


motor(1,i);


motor(2,i);


delay(5000);


}


for(i=0;i《=100;i++)


{


motor(1,-i);


motor(2,-i);


delay(5000);


}


for(i=100;i》0;i--)


{


motor(1,-i);


motor(2,-i);


delay(5000);


}


}


}


void timer0() interrupt 1


{


if(t==0)


{


tmp1=m1;


tmp2=m2;


}


if(t


if(t


t++;


if(t》=100) t=0;


}


[ 新闻来源:jsp,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!