欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2195|回復: 2
打印 上一主題 下一主題
收起左側

為啥我的單片機循跡小車程序燒錄進去之后不能循跡啊 就一直按著直線走?

[復制鏈接]
跳轉到指定樓層
樓主
ID:1029445 發表于 2022-5-24 23:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
幫忙看看謝謝大家
單片機源程序如下:
#include <reg52.h>#define uint unsigned int
#define uchar unsigned char
sbit IN11=P1^6;    //左前輪
sbit IN12=P1^7;
sbit IN13=P1^4;     //右前輪
sbit IN14=P1^5;
sbit IN21=P1^0;     // 左后輪
sbit IN22=P1^1;
sbit IN23=P1^2;     //右后輪
sbit IN24=P1^3;
sbit S1=P0^3;       //速度
sbit S2=P0^2;
sbit S3=P0^1;
sbit S4=P0^0;
sbit D1=P2^3;       //循跡
sbit D2=P2^2;
sbit D3=P2^1;
sbit D4=P2^0;
uchar counter,compare;
void a ()          //左輪前進
{
  IN11=1;      
  IN12=0;
        IN21=1;
        IN22=0;
}
void aa ()          //左輪后退
{
  IN11=0;      
  IN12=1;
        IN21=0;
        IN22=1;
}
void b ()
{
        IN13=0;     //右輪前進
  IN14=1;
        IN23=0;
        IN24=1;
}
void bb ()
{
        IN13=1;     //右輪后退
  IN14=0;
        IN23=1;
        IN24=0;
}
void car_stop ()     //停止
{
        IN11=1;
        IN12=1;
        IN13=1;
        IN14=1;
        IN21=1;   
  IN22=1;
        IN23=1;
        IN24=1;
}

void Timer0_Init()                //100微秒@11.0592MHz
{

        TMOD &= 0xF0;                //設置定時器模式
        TMOD |= 0x01;                //設置定時器模式
        TL0 = 0xA4;                //設置定時初始值
        TH0 = 0xFF;                //設置定時初始值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
        ET0=1;      //定時器0中斷允許開關
        EA=1;      //定時器總開關
        PT0=0;    //定時器0中斷優先級
}
void Timer0_Routine() interrupt 1 //中斷函數
{
        TL0 = 0xA4;               
        TH0 = 0xFF;               
  compare=6;
        counter++;
        if(counter>=20)
  {
                counter=0;
  }
  if(counter<compare)
  {
          S1=1;
          S2=1;
          S3=1;
          S4=1;
  }
  else
  {
          S1=0;
          S2=0;
          S3=0;
          S4=0;
  }
}
void car_go()   //小車向前
{
        compare=5;
        a();
        b();
}
void car_back()//小車向后
{
  compare=5;
        aa();
  bb();
}
void car_leftgo()//左拐
{                        
        compare=5;
        aa();
        b();
}
void car_rightgo()  //右拐
{
        compare=5;
  a();
  bb();        
}
void delayms (uint x)
{
        int i,j;
        for(i=x;i>0;i--)
  for(j=110;j>0;j--);
}
void xunji ()
{
if(D1==1&&D2==1&&D3==1&&D4==1)  //全檢測到黑線
{
   car_go ();
}
if(D1==0&&D2==1&&D3==0&&D4==0)  //中間右側檢測到黑線,小車偏左,小車向右移動
{
  car_rightgo ();
  if(D1==0&&D2==0&&D3==0&&D4==0)
  {
          car_go ();
        }
}
if(D1==0&&D2==0&&D3==1&&D4==0)  //中間左側檢測到黑線,小車偏右,小車向左移動
{
  car_leftgo ();
  if(D1==0&&D2==0&&D3==0&&D4==0)
  {
          car_go ();
        }
}
if(D1==0&&D2==0&&D3==1&&D4==1)  //直角左拐
{
  car_go ();
  delayms(500);
  if(D1==0&&D2==0&&D3==0&&D4==0)
  {
   car_stop();
   delayms(500);
   car_leftgo ();
  }
}
if(D1==1&&D2==1&&D3==0&&D4==0)  //直角右拐
{
  car_go ();
  delayms(500);
  if(D1==0&&D2==0&&D3==0&&D4==0)
  {
   car_stop();
   delayms(500);
   car_rightgo ();
  }
}
if((D1==0&&D2==0&&D3==0&&D4==1)||(D1==0&&D2==1&&D3==0&&D4==1)||(D1==0&&D2==1&&D3==1&&D4==1))  //銳角左拐
{
  car_go ();
  delayms(500);
  delayms(500);
  if(D1==0&&D2==0&&D3==0&&D4==0)
  {
   car_stop();
   delayms(500);
   car_leftgo();
  }
}
if((D1==1&&D2==0&&D3==0&&D4==0)||(D1==1&&D2==0&&D3==1&&D4==0)||(D1==1&&D2==1&&D3==1&&D4==0))  //銳角右拐
{
  car_go ();
  delayms(500);
  delayms(500);
  if(D1==0&&D2==0&&D3==0&&D4==0)
  {
   car_stop();
   delayms(500);
   car_rightgo();
  }
}
if(D1==0&&D2==1&&D3==1&&D4==0)
{
   car_go();
}

}
void main ()
{
Timer0_Init();
car_go ();
while (1)
{
   xunji ();
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:844772 發表于 2022-5-25 09:39 | 只看該作者
1.調整好紅外模塊,基本每次上場都要調的。
2.確認你模塊邏輯,你程序認為在黑線上是1,平時是0,確認一下是不是真這樣?
3.循跡程序有問題,發現黑線后,車轉向需要時間,可能會有一個過線的情況,你馬上跟了判斷全白的程序,來不及執行轉向就收到直行命令了。建議你先做簡單判斷尋線程序,成功后再逐步增加特殊情況。
回復

使用道具 舉報

板凳
ID:979299 發表于 2022-5-25 11:48 | 只看該作者
程序看上去沒什么問題,只有倒車函數未調用,檢查硬件正常工作了沒有,有沒有插錯,接反和損壞之類的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表