logo资料库

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

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
单片机直流电机PWM调速程序分享 调速程序分享 基于基于AT89C51单片机直流电机 这是一款AT89C51单片机直流电机PWM调速程序,程序可以直接用于AT89C52、AT89S51、 AT89S51,STC89C51、STC89C52单片机中,单片机晶振采用11.0592M,直流电机由L298集成电路控制,产 生的PWM的频率约为91Hz。L298各引脚已在程序中标明,原理图大家可以自己画一下,这里就不具给出。下 面是源程序。 #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(spe 这是一款AT89C51单片机直流电机PWM调速程序,程序可以直接用于AT89C52、AT89S51、AT89S51,STC89C51、 STC89C52单片机中,单片机晶振采用11.0592M,直流电机由L298集成电路控制,产生的PWM的频率约为91Hz。L298各引 脚已在程序中标明,原理图大家可以自己画一下,这里就不具给出。下面是源程序。 #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); }
} } voidtimer0() interrupt 1 { if(t==0) { tmp1=m1; tmp2=m2; } if(t if(t t++; if(t》=100) t=0; }
分享到:
收藏