永发信息网

单片机利用pwm控制电机!速度,L298N有四个输入端,两个使能端,求产生两路pwm波的程序!

答案:3  悬赏:60  手机版
解决时间 2021-04-16 13:32
单片机利用pwm控制电机!速度,L298N有四个输入端,两个使能端,求产生两路pwm波的程序!
最佳答案
这是利用L298驱动两个直流电机的(来源于智能车循迹)程序, 
 
#include 
#include 
#define uchar unsigned char 
#define uint unsigned int 
sbit en1=P1^0;  
sbit en2=P1^1;  
sbit s1=P1^2;  
sbit s2=P1^3;  
sbit s3=P1^4;  
sbit s4=P1^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() 

uchar 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(tif(tt++; 
if(t>=100) t=0;  
全部回答
你要说清楚用什么单片机,51要用两个定时器,AvR可以直接输出PWM
这是利用L298驱动两个直流电机的(来源于智能车循迹)程序,

#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit en1=P1^0;
sbit en2=P1^1;
sbit s1=P1^2;
sbit s2=P1^3;
sbit s3=P1^4;
sbit s4=P1^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()
{
uchar 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(tif(tt++;
if(t>=100) t=0;
有两路PWM,希望对你有帮助!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
狗狗感冒会传染给人吗,狗狗得了真菌皮肤病会
卢道冲我想知道这个在什么地方
这首歌上那去下载?http://miboo.blog.163.co
一个中国移动的手机号码可以开两个不同的QQ号
用567这三个数字组成一个有因数2的最大三位数
保利管和伟星管哪个好,知道来说说伟星和保利
QQ宠物怎么才能把游戏界面全屏
求《天国的邮递员》下载的电影完整版地址
顺景汽车装饰中心地址有知道的么?有点事想过
这个蛟龙怎么加点啊?
爸爸生日四字祝福语,求比较有个性的生日祝福
生日是阳历1988年7月1日 塔罗牌是什么
请问谁有好点的奇迹SF不变态的每级20点左右,
中国未来的走势?
恶魔总裁温柔点txt 全181章 谢谢啊~~
推荐资讯
皮肤干干的怎样护理
飞机杂飞上天的呀?
sbs铝箔自粘防水卷材裁剪搭接用不用去掉铝箔
创科数码广场电信数码综合港这个地址在什么地
街坊小吃我想知道这个在什么地方
武林外传里面的补天石从哪里得到啊?
生活找不到方向的句子,有句话说“你先找到自
想家的心情句子伤感,我昨天刚认识了一个新的
誉宸一词是什么意思
加合龙我想知道这个在什么地方
在家自测荧光剂是什么颜色
如果你爱上个不爱你的人,你该怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?