标题: 循迹小车代码及电路图 [打印本页]

作者: 帅帅的小伙    时间: 2018-5-29 20:59
标题: 循迹小车代码及电路图
这个循迹小车的用的是占空比控制速度,如果使用的是舵机。那就将控制速度的代码换成可以控制舵机转向角度的函数。不知为什么没法上传代码,那我就发文字。写的很简单,反应的话我用的是89C51和12MHz的晶振没有什么问题。

#include<reg52.h>
# define uint unsigned int
# define uchar unsigned char

sbit ENB=P2^2;   
sbit ENA=P2^5;          
sbit IN1=P2^4;   
sbit IN2=P2^3;          
sbit IN3=P2^0;   
sbit IN4=P2^1;          
sbit right3=P1^0;
sbit right2=P1^1;
sbit right1=P1^2;
sbit middle=P1^3;
sbit left1=P1^4;
sbit left2=P1^5;
sbit left3=P1^6;

uchar zkbENA=0;
uchar zkbENB=0;
uchar t=0;
uchar k=0;

void T0_time() interrupt 1
{
        t++;
        k++;
        if(t<zkbENA)        ENA=1;
        else        ENA=0;
        if(k<zkbENB)        ENB=1;
        else        ENB=0;
        if(k>100)  t=0;k=0;       
        if(t>101)        t=0,k=0;
        TH0=(65536-80)/256;
        TL0=(65536-80)%256;               
  }                                            

  void main()                                               
{  
        IN1=1;
        IN2=0;
        IN3=1;
        IN4=0;
          TMOD=0x01;
          TH0=(65535-100)/256;
          TL0=(65535-100)%256;
          EA=1;
          ET0=1;
          TR0=1;

          while(1)
          {               
        if(middle==0)
                {zkbENB=100;zkbENA=100;}       
        else if(right3==0)
                {zkbENA=0;zkbENB=80;}
        else if(left3==0)
                {zkbENA=80;zkbENB=0;}
        else if(right2==0)
                {zkbENA=20;zkbENB=90;}
        else if(left2==0)
                {zkbENA=90;zkbENB=20;}
        else if(right1==0)
                {zkbENA=70;zkbENB=100;}
        else if(left1==0)
                {zkbENA=100;zkbENB=70;}
        }
}  


如果需要面对更加复杂的有要求处理速度的情况,建议用机器指令写

171ECF399448052A56BE6177560791AB_0..jpg (16.21 KB, 下载次数: 54)

171ECF399448052A56BE6177560791AB_0..jpg

BE144D1324B441C145929985620BF15C_0..jpg (24.89 KB, 下载次数: 49)

BE144D1324B441C145929985620BF15C_0..jpg





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1