说明 小车运动通过独立按键控制,通过按键调节不同车轮的速度,从而实现左转或右转,L298驱动电机
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
#include <reg51.h>
#define uchar unsigned char
sbit IN1 = P2^0;
sbit IN2 = P2^1;
sbit IN3 = P2^2;
sbit IN4 = P2^3;
sbit ENA = P2^4;
sbit ENB = P2^5;
sbit LeftUp = P1^0;
sbit LeftDown = P1^1;
sbit RightUp = P1^2;
sbit RightDown = P1^3;
//**×óóòÂÖ×óËù¶èμ÷½ú±äá¿
uchar numL,numR;
//***********************
void init_time()
{
TMOD=0X01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
ET0=1;
TR0=1;
}
void time0() interrupt 1 using 1
{
static uchar num;
num++;
if(num==numR) ENB=~ENB;
if(num==numL) ENA=~ENA;
if(num==100){ENA=~ENA;ENB=~ENB;num=0;}
TH0=(65536-500)/256;
TL0=(65536-500)%256;
}
void main()
{
numL=70;numR=20;
ENA=ENB=1;
IN1=IN3=1;IN2=IN4=0;
init_time();
while(1)
{
if(!LeftUp) { while(!LeftUp); numL+=5;
if(numL>100)numL=0;}
if(!LeftDown) { while(!LeftDown); numL-=5;
if(numL>100)numL=0;}
if(!RightUp) { while(!RightUp); numR+=5;
if(numR>100)numR=0;}
if(!RightDown){ while(!RightDown);numR-=5;
if(numR>100)numR=0;}
}
}
全部资料51hei下载地址:
控制小车的运动.zip
(124.18 KB, 下载次数: 218)
|