用51单片机产生PWM控制直流小电机

发布网友 发布时间:2022-04-25 16:29

我来回答

3个回答

热心网友 时间:2023-11-08 20:49

PWM是从IN1,IN2输入

给你张图,不晓得看得清不

C程序等有空心情好再给你写

还有单片机带PCA的话不用定时器的

有自带PWM模块的

热心网友 时间:2023-11-08 20:50

#define setbit(x,y) (x|=(1<<y))
#define clrbit(x,y) (x&=~(1<<y))
#define getbit(x,y) (x&(1<<y))
void forward(unsigned char speedl,unsigned char speedr)
{
unsigned char j;
setbit(P0,4);
clrbit(P0,3);
setbit(P0,7);
clrbit(P0,5);
for(j=0;j<=100;j++)
{
if (j<speedl) {setbit(P0,2);}
if (j<speedr) {setbit(P0,6);}
if (j>=speedl) {clrbit(P0,2);}
if (j>=speedr) {clrbit(P0,6);}
delayus(2);
}
}
void back(unsigned char speedl,unsigned char speedr)
{
unsigned char j;
setbit(P0,3);
clrbit(P0,4);
setbit(P0,5);
clrbit(P0,7);
for(j=0;j<=100;j++)
{
if (j<speedl) {setbit(P0,2);}
if (j<speedr) {setbit(P0,6);}
if (j>=speedl) {clrbit(P0,2);}
if (j>=speedr) {clrbit(P0,6);}
delayus(2);
}
}
/*
P0.2,P0.6接L298N的ENA、ENB;P0.3,P0.4,P0.5,P0.7接L298N的IN1A,IN1B,IN2A,IN2B;
就是用软件模拟PWM,以100个循环为周期,当数量小于你设定的速度数值的时候,电机通,反之,电机断。
*/

热心网友 时间:2023-11-08 20:50

#define
setbit(x,y)
(x|=(1<<y))
#define
clrbit(x,y)
(x&=~(1<<y))
#define
getbit(x,y)
(x&(1<<y))
void
forward(unsigned
char
speedl,unsigned
char
speedr)
{
unsigned
char
j;
setbit(P0,4);
clrbit(P0,3);
setbit(P0,7);
clrbit(P0,5);
for(j=0;j<=100;j++)
{
if
(j<speedl)
{setbit(P0,2);}
if
(j<speedr)
{setbit(P0,6);}
if
(j>=speedl)
{clrbit(P0,2);}
if
(j>=speedr)
{clrbit(P0,6);}
delayus(2);
}
}
void
back(unsigned
char
speedl,unsigned
char
speedr)
{
unsigned
char
j;
setbit(P0,3);
clrbit(P0,4);
setbit(P0,5);
clrbit(P0,7);
for(j=0;j<=100;j++)
{
if
(j<speedl)
{setbit(P0,2);}
if
(j<speedr)
{setbit(P0,6);}
if
(j>=speedl)
{clrbit(P0,2);}
if
(j>=speedr)
{clrbit(P0,6);}
delayus(2);
}
}
/*
P0.2,P0.6接L298N的ENA、ENB;P0.3,P0.4,P0.5,P0.7接L298N的IN1A,IN1B,IN2A,IN2B;
就是用软件模拟PWM,以100个循环为周期,当数量小于你设定的速度数值的时候,电机通,反之,电机断。
*/

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com