l298n芯片的电机PWM控制问题
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit s1=P2^0;
sbit s2=P2^1;
sbit in1=P1^0;
sbit in2=P1^1;
sbit ena=P1^2;
uchar NUM;
uchar PWM;
void delay(uint t)
{
uint x,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--);
}
void keyscan()
{
if(s1==0)
{
if(PWM!=0x20)
{
PWM++;
delay(250);
}
else
PWM=PWM;
}
if(P2^1==0)
{
if(PWM!=0x01)
{
PWM--;
delay(250);
}
else
PWM=PWM;
}
}
void init_t0()
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=0;
TR0=1;
}
void t0() interrupt 1
{
TR0=0;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
NUM++;
if(NUM==33)
{
NUM=0;
}
if(NUM>PWM)
{
ena=0;
}
else
ena=1;
in1=1;
in2=0;
TR0=1;
}
void main()
{
PWM=16;
NUM=0;
init_t0();
while(1)
{
keyscan();
}
}
这是我所用程序,在仿真过程中P1口始终未高电平,这是为什么呢?
[img]file:///C:\Users\men\AppData\Roaming\Tencent\Users\821340984\QQ\WinTemp\RichOle\~J)NHOX~SU2XB~V]U53][RL.jpg[/img]
#define uchar unsigned char
#define uint unsigned int
sbit s1=P2^0;
sbit s2=P2^1;
sbit in1=P1^0;
sbit in2=P1^1;
sbit ena=P1^2;
uchar NUM;
uchar PWM;
void delay(uint t)
{
uint x,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--);
}
void keyscan()
{
if(s1==0)
{
if(PWM!=0x20)
{
PWM++;
delay(250);
}
else
PWM=PWM;
}
if(P2^1==0)
{
if(PWM!=0x01)
{
PWM--;
delay(250);
}
else
PWM=PWM;
}
}
void init_t0()
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=0;
TR0=1;
}
void t0() interrupt 1
{
TR0=0;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
NUM++;
if(NUM==33)
{
NUM=0;
}
if(NUM>PWM)
{
ena=0;
}
else
ena=1;
in1=1;
in2=0;
TR0=1;
}
void main()
{
PWM=16;
NUM=0;
init_t0();
while(1)
{
keyscan();
}
}
这是我所用程序,在仿真过程中P1口始终未高电平,这是为什么呢?
[img]file:///C:\Users\men\AppData\Roaming\Tencent\Users\821340984\QQ\WinTemp\RichOle\~J)NHOX~SU2XB~V]U53][RL.jpg[/img]
仿真图
L298的端口没有控制
谢谢分享,运行可以