久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

循跡小車源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:202296 發表于 2017-6-4 18:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int

sbit ENA=P0^5;   //右側電機使能端
sbit ENB=P0^0;   //左側電機使能端

sbit IN2=P0^4;        //右側電機正端
sbit IN1=P0^3;        //右側電機負端
sbit IN4=P0^2;        //左側電機正端
sbit IN3=P0^1;        //左側電機負端

sbit you1=P1^3;         //循跡模塊定義
sbit you2=P1^2;         
sbit zuo2=P1^1;         
sbit zuo1=P1^0;

uchar speed;
uchar t;         
unsigned int k=50;
unsigned int i;                                   
void T0_init()
   {
           TMOD|=0x01;          //設置16位定時器方式
           TH0=0xD8;                 // 65535-55535=10000                0XD8EF=55535       
           TL0=0xEF;
           ET0=1;
           EA=1;
           TR0=1;
   }

void qianjin()  //前進程序
   {
      IN1=1;
          IN2=0;
          IN3=1;
          IN4=0;
           {
           t++;
           if(t>=10)
              {
                      t=0;
              }
           if(t<k)
              {
                      ENA=ENB=1;
              }
           else if(t>=k)
              {
                      ENA=ENB=0;
              }       
   }
   }
void houtui()  //后退程序
   {
      IN1=0;
          IN2=1;
          IN3=0;
          IN4=1;
   }
void tingzhi() //停止程序
   {
      IN1=0;
          IN2=0;
          IN3=0;
          IN4=0;
   }
void zuozhuan()        //da左轉程序
   {
      IN1=0;
          IN2=1;
          IN3=1;
          IN4=0;
           {
           t++;
           if(t>=10)
              {
                      t=0;
              }
           if(t<k)
              {
                      ENA=ENB=1;
              }
           else if(t>=k)
              {
                      ENA=ENB=0;
              }       
   }
   }
  void xiaozuozhuan()        //xiao左轉程序
   {
      IN1=0;
          IN2=0;
          IN3=1;
          IN4=0;
   }
void youzhuan()        //da右轉程序
   {
      IN1=1;
          IN2=0;
          IN3=0;
          IN4=1;
           {
           t++;
           if(t>=10)
              {
                      t=0;
              }
           if(t<k)
              {
                      ENA=ENB=1;
              }
           else if(t>=k)
              {
                      ENA=ENB=0;
              }       
   }
   }

   void xiaoyouzhuan()        //xiao右轉程序
   {
      IN1=1;
          IN2=0;
          IN3=0;
          IN4=0;         

   }

void delay_nus(unsigned int i)  //延時:i>=12 ,i的最小延時單12 us
   {
       i=i/14;
       while(--i);
   }
void delay_nms(unsigned int n)  //延時n ms
   {
       n=n+1;
       while(--n)  
       delay_nus(10);         //延時 1ms,同時進行補償
   }

void ControlCar(unsigned char ConType)    //定義電機控制子程序
   {
       tingzhi();
       switch(ConType)       //判斷用戶設定電機形式
          {
              case 1:  //判斷用戶是否選擇形式1
                 {
                     qianjin();         //前進
                     break;
                 }
              case 2: //判斷用戶是否選擇形式2
                 {
                     houtui();  //后退
                     break;
                 }
              case 3:    //判斷用戶是否選擇形式3
                 {
                                     zuozhuan(); //da左轉
                         break;
                 }
                                 case 4:
                                 {
                                     xiaozuozhuan(); //xiao左轉
                         break;
                 }

              case 5:   //判斷用戶是否選擇形式4
                 {
                     youzhuan();   //da右轉  
                     break;
                 }
                                 case 6:   //判斷用戶是否選擇形式4
                 {
                     xiaoyouzhuan();   //xiao右轉  
                     break;
                 }
                               
              case 8:    //判斷用戶是否選擇形式8
                 {
                     tingzhi();        //停止
                         break;   //退出當前選擇
                 }
          }
   }

void main()       //主程序入口
   {
       bit RunFlag=1;   //定義小車運行標志位
          //Ru nShow=0;  //初始化顯示狀態

       ControlCar(8);   //初始化小車運行狀態
       T0_init();
          // speed=8;
           while(1)                                //程序主循環
          {
             Start:
             if(zuo1==0&&zuo2==0&&you1==0&&you2==0) //四個循跡都沒有檢測到     
                {
                    ControlCar(1);   
                    delay_nms (5);
                        goto NextRun;
                }

                         if(zuo1==1&&zuo2==1&&you1==1&&you2==1) //四個循跡都檢測到     
                {
                    ControlCar(1);   
                    delay_nms (5);
                        goto NextRun;
                }
                          if(zuo1==1&&zuo2==1&&you2==1&&you1==0) //da zuo
                           {
                           ControlCar(3);                     
                           delay_nms (5);
                   goto NextRun;
                           }
                          if(you1==1&&you2==1&&zuo2==1&&zuo1==0) //da you
                          {
                          ControlCar(5);                     
                          delay_nms (5);
                  goto NextRun;
                          }
                          if(you1==1&&you2==1&&zuo2==0&&zuo1==1)
                           {
                          ControlCar(8);                     
                          delay_nms (5);
                  goto NextRun;
                          }
                         if(you1==1&&you2==0&&zuo2==1&&zuo1==1)
                           {
                          ControlCar(8);                     
                          delay_nms (5);
                  goto NextRun;
                          }
                          if(you1==1&&zuo1==1&&you2==0&&zuo2==0)//liang bian jian ce
                           {
                          ControlCar(8);                     
                          delay_nms (5);
                  goto NextRun;
                          }

                            if(zuo2==1&&you2==1&&you1==0&&zuo1==0) //中間兩個循跡都檢測到     
                {
                    ControlCar(4);            //xiao zuo
                    delay_nms (5);
                        goto NextRun;
                }

                                if(you1==1&&you2==1&&zuo2==0&&zuo1==1)        //you bian liang ge jian ce
                                {
                                ControlCar(5);
                                delay_nms (5);
                                goto NextRun;
                                }
                                if(zuo1==1&&zuo2==1&&you1==0&&you2==0) //zuo bian liang ge jian ce
                                {
                                ControlCar(3);                     
                                delay_nms (5);
                    goto NextRun;
                                }
                                if(zuo1==1&&zuo2==0&&you1==0&&you2==0) //zuo 1  jian ce
                                {
                                ControlCar(4);                     
                                delay_nms (5);
                    goto NextRun;
                                }
                                 if(zuo1==0&&zuo2==0&&you1==1&&you2==0) //you1 jian ce
                                {
                                ControlCar(6);                     
                                delay_nms (5);
                    goto NextRun;
                                }


             goto Start;
             NextRun:

             ControlCar(1);
         }
   }

void Timer0() interrupt 1
   {
           t++;
           if(t>=10)
              {
                      t=0;
              }
           if(t<speed)
              {
                      ENA=ENB=1;
              }
           else if(t>=speed)
              {
                      ENA=ENB=0;
              }       
   }

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色综合天天天天做夜夜夜夜做 | 国产精品美女久久久久久免费 | 日本一区二区三区在线观看 | 国产一二三区在线 | 免费一区二区 | 视频一二三区 | 老司机精品福利视频 | 久久久久精 | 欧美一区免费 | 国产精品成人在线播放 | 日韩在线小视频 | 日本又色又爽又黄又高潮 | 天天天操 | 爱爱视频网 | 中文字幕高清av | 久久新视频 | 在线欧美亚洲 | 天堂色区 | 伊人久久在线观看 | 天堂在线91 | 美女毛片| 亚洲精品大片 | av大全在线观看 | www.五月天婷婷 | 罗宾被扒开腿做同人网站 | 麻豆视频国产在线观看 | 精品一区二区免费视频 | 亚洲日本欧美日韩高观看 | 久久三级av | 一区二区三区精品视频 | 黄色免费看 | 日本精品一区二区三区在线观看视频 | 美女午夜影院 | av片在线观看 | 97久久久 | 日本不卡视频在线播放 | 国产精品久久久久久中文字 | 紧缚调教一区二区三区视频 | 天天综合干 | 成年人免费在线视频 | 国内精品久久久久久 |