找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 1784|回復: 0
打印 上一主題 下一主題
收起左側(cè)

發(fā)布一些做循跡小車的程序,用單片機做的

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:221828 發(fā)表于 2017-7-28 13:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/***********************************************************************/
void UartInit()  //9600bps@11.0592MHz
{
SCON=0x50;   //設(shè)置為工作方式1
TMOD=0x11;   //設(shè)置計數(shù)器工作方式2
PCON=0x00;   //SMOD=1,波特率不加倍
TH1=0;   //計數(shù)器設(shè)置初值
TL1=0;
TH0=0xfe;
    TL0=0x33;    //11.0592MZ晶振,0.5ms
/*IE=0x9A; */
ES=1;
ET1=1;
ET0=1;
EA=1;
    TR0=1;                 //定時器開始
}
/************************************************************************************/
void UartInit2()  //9600bps@11.0592MHz
{
SCON=0x50;   //設(shè)置為工作方式1
TMOD=0x20;   //設(shè)置計數(shù)器工作方式2
PCON=0x00;   //SMOD=1,波特率不加倍
TH1=0xfd;   //計數(shù)器設(shè)置初值
TL1=0xfd;
ES=1;
EA=1;
TR1=1;
}  
/***********************************************************************/
void Time0_Int() interrupt 1 //T0中斷程序
{
  TH0=0xfe;             //重新賦值
  TL0=0x33;
  if(count< jd)              //判斷0.5ms次數(shù)是否小于角度標識
      pwm=1;                  //確實小于,PWM輸出高電平
   else
      pwm=0;                  //大于則輸出低電平
   count=(count+1);          //0.5ms次數(shù)加1
   count=count%40;     //次數(shù)始終保持為40 即保持周期為20ms
}
/*********************************************************************/
void timer0() interrupt 3 //T1中斷
{
}
/***********************************************************************/
void Count1() //計算左側(cè)超聲波距離的函數(shù)
{
while(!RX1); //當RX1為零時等待
TR1=1; //開啟計數(shù)
while(RX1); //當RX1為1計數(shù)并等待
TR1=0; //關(guān)閉計數(shù)
time=TH1*256+TL1;
TH1=0;
TL1=0;
s1=(time*1.7)/100; //算出來是CM
}
/***********************************************************************/
void delay(int i)//延時
{
  int j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}
/***********************************************************************/
/*void keyscan()              //按鍵掃描
{
   if(jia==0)               //角度增加按鍵是否按下
  {
    delay(10);              //按下延時,消抖
    if(jia==0)              //確實按下
     {
      jd=jd+2;                 //角度標識加1
      count=0;              //按鍵按下 則20ms周期從新開始
      if(jd==7)
        jd=5;               //已經(jīng)是180度,則保持
      while(jia==0);        //等待按鍵放開
     }
  }
  if(jian==0)                //角度減小按鍵是否按下
  {
    delay(10);
    if(jian==0)
     {
      jd=jd-2;                 //角度標識減1
      count=0;
      if(jd==-1)
        jd=1;               //已經(jīng)是0度,則保持
      while(jian==0);
     }
  }
} */
/************************************************************************/
void cej()
{
      TX1=1;   /*開啟超聲波1探測*/
        delay(1);
        TX1=0;
     Count1(); //測距
}
void main()
{
    jd=3;
    count=0;
delay(10);
while(1)
{
  if(P27==0)
  {
   delay(10);
   if(P27==0)
   {  
    UartInit();   
          delay(10000);
       while(1)
    {
     cej();
     if(s1<=16)
         {
       tingz();
         delay(10);
       jd=5;
      delay(10000);
   
      cej();
      s2=s1;
      jd=1;
      delay(10000);
   
      cej();
      s3=s1;
      if(s2>=s3)
      {
       zuoz();
      }
      if(s2<s3) youz();
      delay(50000);
      jd=3;
         delay(10000);
         }
        if(s1>10)
       {
         qianj();//前進
        }
     if(P26==0)
     {
      delay(10);
               if(P26==0) break;
     }
      }
   }
  }
  
  
  if(P26==0)
  {
   delay(10);
   if(P26==0)
   {
    UartInit2();
    delay(1000);
    while(1)
    {
     if(a==zhuanhuan)
          {
        if(P33==0&&P34==1) zuoz();
      else if(P33==1&&P34==0) youz();
      else if(P33==0||P34==0) qianj();
       }
   
   
      
       if(a==Go) qianj();//前進
          if(a==Back) hout();//后退
             if(a==Left) zuoz();//左轉(zhuǎn)
          if(a==Right) youz();//右轉(zhuǎn)
                if(a==Stop) tingz();//停止
       if(P27==0)
       {
         delay(10);
      if(P27==0) break;
       }
         jd=3;
         
              
    }
   }
  }
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

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