我做了个循迹小车,但是速度太快,改掉PWM数值后,小车的停顿的时间就变长了,是不是要改下定时器的数值?该怎么改?而且我的循迹小车不够灵敏,程序也容易跑飞....怎么办
times New Roman">#include<reg51.h>#define uchar unsigned char#define uint unsigned intunsigned char zkb1=0 ; //**左边电机的占空比**//unsigned char zkb2=0 ; //**右边电机的占空比**//unsigned char t=0; //**定时器中断计数器**//sbit RSEN1=P1^0; // 右光对管1sbit RSEN2=P1^1; //右光对管2sbit LSEN1=P1^2; //左光对管1sbit LSEN2=P1^3; //左光对管2sbit IN1=P0^0;sbit IN2=P0^1;sbit IN3=P0^2;sbit IN4=P0^3;sbit ENA=P0^4;sbit ENB=P0^5;//****************延时函数****************//void delay(int z) { while (z--); }//**********初始化定时器,中断***********//void init(){ TMOD=0x01; TH0=(65536-100)/256; TL0=(65536-100)%256; EA=1; ET0=1; TR0=1; }//***********中断函数+脉宽调制***********//void timer0() interrupt 1{ if(t<zkb1) ENA=1; else ENA=0; if(t<zkb2) ENB=1; else ENB=0; t++; if(t>=100) {t=0;}}//******************直行******************//void qianjin(){ zkb1=30; zkb2=30;}//***************左转函数1***************//void turn_left1(){ zkb1=0; zkb2=50;}//***************左转函数2***************//void turn_left2(){ zkb1=0; zkb2=60;}//***************右转函数1***************//void turn_right1(){ zkb1=50; zkb2=0;}//***************右转函数2***************//void turn_right2(){ zkb1=60; zkb2=0;}//***************循迹函数*****************//void xunji() { uchar flag; if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1)) { flag=0; }//*******直行*******// else if((RSEN1==0)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1)) { flag=1;} //***左偏1,右转1***// else if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1)) { flag=2;} //***左偏2,右转2***// else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==1)) { flag=3; }//***右偏1,左转1***// else if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0)) { flag=4; }//***右偏2,左转2***// switch (flag) { case 0:qianjin(); break; case 1:turn_right1(); break; case 2:turn_right2(); break; case 3:turn_left1(); break; case 4:turn_left2(); break; default: break; }}//****************主程序****************//void main(){ init(); zkb1=30; zkb2=30; while(1) { IN1=1; //******给电机加电启动******// IN2=0; IN3=1; IN4=0; ENA=1; ENB=1; while(1) { xunji(); //*********寻迹**********// } }}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我降低了那个占空比,但是程序容易跑飞。您能帮我检查下这个程序吗?
这个可能不是程序的问题吧,可能是硬件或是电机的问题,我也遇到过这种情况
一周热门 更多>