小车循迹壁障等流程图

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include#include#define uchar unsigned char#define uint unsigned

int sbit en1=P1^0;/*L298的Enable A*/sbit en2=P1^1;/*L298的Enable B*/sbit

s1=P1^2;/*L298的Input1*/sbit s2=P1^3;/*L298的Input2*/sbit s3=P1^4;/*L298

的Input3*/sbit s4=P1^5;/*L298的Input4*/uchar t=0;/*中断计数器*/uchar

m1=0;/*电机1速度值*/uchar m2=0;/*电机2速度值*/uchar tmp1,tmp2;/*电机当

前速度值*//*电机控制函数index-电机号(1,2);speed-电机速度(-100—100)*/void

motor(uchar index,char speed){if(speed>=-100&&speed<=100){if(index==1)/*

电机1的处理*/{m1=abs(speed);/*取速度的绝对值*/if(speed<0)/*速度值为负

则反转*/{s1=0;s2=1;}else/*不为负数则正转*/{s1=1;s2=0;}}

if(index==2)/*电机2的处理*/{m2=abs(speed);/*电机2的速度控制*/

if(speed<0)/*电机2的方向控制*/{s3=0;s4=1;}else{s3=1;s4=0;}}}} void delay(uint j)/*简易延时函数*/{for(j;j>0;j--);}void main(){uchar i;

TMOD=0x02;/*设定T0的工作模式为2*/TH0=0x9B;/*装入定时器的初值*/

TL0=0x9B;EA=1;/*开中断*/ET0=1;/*定时器0允许中断*/TR0=1;/*启动定时

器0*/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()interrupt1/*T0中断

服务程序*/{if(t==0)/*1个PWM周期完成后才会接受新数值*/{tmp1=m1;

tmp2=m2;}if(t

en2=1;else en2=0;/*产生电机2的PWM信号*/t++;if(t>=100)t=0;/*1个PWM信号

由100次中断产生*/有两路PWM,希望对你有帮助!

#include"reg52.H" #include"MyType.h" //=============L298端口定义

=============== sbit ENA=P3^6;//左轮驱动使能sbit IN1=P0^3;//左轮黑线(-)

sbit IN2=P0^4;//左轮红线(+)sbit IN3=P0^5;//右轮红线(-)sbit IN4=P0^6;//右轮

黑线(+) sbit ENB=P3^7;//右轮驱动使能//=============PWM================

#define PWM_COUST100//PWM细分等份100 uchar MOTO_speed1;//左边电机转速

uchar MOTO_speed2;//右边电机转速uchar PWM_abs1;//左边电机取绝对值后占空比

uchar PWM_abs2;//左边电机取绝对值后占空比uchar PWM_var1=20;//左边电机直

走速度(不同的电机,此参数不同)uchar PWM_var2=20;//右边电机直走速度uchar PWMAnd=0;//PWM自增变量

/****************************************************************** 名称:

motor(char speed1,char speed2);功能:同时调节电机的转速参数:speed1:电机1的

PWM值;speed2:电机2的PWM值speed>0.正转;speed<0.反转(-100~100)调

用:extern int abs(int val);取绝对值返回:

/******************************************************************/void

motor(char speed1,char speed2) { //==============左边电机============= if

(speed1>0) { IN1=0;IN2=1;//正转}else if(speed1<0) { IN1=1;IN2

=0;//反转} //==============右边电机============= if(speed2>0) {

IN3=1;IN4=0;//正转} else if(speed2<0) { IN3=0;IN4=1;//反转} }

/****************************************************************** 名称:

相关文档
最新文档