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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

遙控模塊控制四驅小車c程序代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:129080 發(fā)表于 2016-7-7 17:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  #include <reg52.h>
#define uint  unsigned int   
#define uchar unsigned char


sbit D0 = P0^0;       
sbit D1 = P0^1;       
sbit D2 = P0^2;
sbit D3 = P0^3;       
//sbit VT = P0^4;
sbit MD_L1 = P1^0;         
sbit MD_L2 = P1^1;
sbit MD_L3 = P1^2;
sbit MD_L4 = P1^3;
sbit MD_R1 = P1^4;         
sbit MD_R2 = P1^5;
sbit MD_R3 = P1^6;
sbit MD_R4 = P1^7;         
sbit LENA  = P2^0;
sbit LENB  = P2^1;
sbit RENA  = P2^2;
sbit RENB  = P2^3;


uchar pwm,num = 0, duty = 0, speed = 0,x=0, x1=0,x2=0,x3=0;


void delay(uint ms)
{
        uchar i;
    while(ms--)
        {
        for(i=0;i<200;i++);
        }
}
void advance()
{
    MD_L1=1;
               
    MD_L2=0;
               
        MD_L3=1;
               
        MD_L4=0;
               
        MD_R1=1;
       
        MD_R2=0;
       
        MD_R3=1;
       
        MD_R4=0;
}


void back()       
{
    MD_L1=0;
               
    MD_L2=1;
               
        MD_L3=0;
               
        MD_L4=1;
               
        MD_R1=0;
       
        MD_R2=1;


        MD_R3=0;
       
        MD_R4=1;






}
void left()                 
{
    MD_L1=0;
               
    MD_L2=0;
               
        MD_L3=0;
               
        MD_L4=0;
               
        MD_R1=1;
       
        MD_R2=0;
       
        MD_R3=1;
       
        MD_R4=0;






}
void left1()       
{
    MD_L1=0;
               
    MD_L2=1;
               
        MD_L3=0;
               
        MD_L4=1;
               
        MD_R1=0;
       
        MD_R2=0;
       
        MD_R3=0;
       
        MD_R4=0;


}
void left2()       
{
    MD_L1=0;
               
    MD_L2=1;
               
        MD_L3=0;
               
        MD_L4=1;
               
        MD_R1=1;
       
        MD_R2=0;
       
        MD_R3=1;
       
        MD_R4=0;
}
void right()  
{
    MD_L1=1;
               
    MD_L2=0;
               
        MD_L3=1;
               
        MD_L4=0;
               
        MD_R1=0;
       
        MD_R2=0;
       
        MD_R3=0;
       
        MD_R4=0;




}
void right1()  
{
    MD_L1=0;
               
    MD_L2=0;
               
        MD_L3=0;
               
        MD_L4=0;
               
        MD_R1=0;
       
        MD_R2=1;
       
        MD_R3=0;
       
        MD_R4=1;
}
void right2()  
{
    MD_L1=1;
               
    MD_L2=0;
               
        MD_L3=1;
               
        MD_L4=0;
               
        MD_R1=0;
       
        MD_R2=1;
       
        MD_R3=0;
       
        MD_R4=1;
}
void stop()  
{
    MD_L1=0;
               
    MD_L2=0;
               
        MD_L3=0;
               
        MD_L4=0;
               
        MD_R1=0;
       
        MD_R2=0;
       
        MD_R3=0;
       
        MD_R4=0;




}
void keyscan()
{
   if(D0==0)
   {
     delay(5);
         if(D0==50)
         {
          if(pwm<32)
          {
            pwm++;
                delay(100);
          }
         }
   }
         if(D1==0)
   {
     delay(50);
         if(D1==0)
         {
          if(pwm>1)
          {
            pwm--;
                delay(100);
          }
         }
   }
  if(D2==0)
   {
     delay(50);
         if(D2==0)
         {
          if(pwm<32)
          {
            pwm++;
                delay(100);
          }
         }
   }
         if(D3==0)
     {
     delay(50);
         if(D3==0)
         {
          if(pwm>1)
          {
            pwm--;
                delay(100);
          }
         }
   }
}
void main(void)
{


    TMOD =0x01;
        TH0=(65536-500)/256;
    TL0=(65536-500)%256;                       
    EA = 1;                           
    ET0=1;
        TR0=1;                  


    while(1)
    {
     
   
                if(D0==1)
                {
                 advance();
               
                }   
            else if(D1==1)
                {
                back();
       
                }
                else if(D2==1)
                {
               
                left();
               
                }
                else if(D3==1)
                {
                right();
       
                }
                else if(D0&D2==1)
                {
                 
                 void left2();
         
                }
                else if(D0&D3==1)
                {


                void right2();
                 
                }
                else if(D1&D2==1)
                {
                back();
                left();
                }
                else if(D1&D3==1)
                {
                 back();
                 right();
                }
                        else
                {
                stop();
                }  
               
        }
   
}
   
void int0() interrupt 1
{
    num ++;
        duty ++;                           
        x++;
        x1++;
        x2++;
        x3++;
    if(num <=50)
    {
      
           RENA=1;
           RENB=1;
    }
    else  
    {
           RENA=0;
           RENB=0;
    }                                                                                                                                                                                  


    if(num >=52)          
    {
       num = 0;


    }
            if(x3 <= 100)
    {
      
           LENA=1;
           LENB=1;
    }
    else  
    {
       LENA=0;
           LENB=0;
    }                                                                                                                                                                                  


    if(x3 >= 100)          
    {
       x3 = 0;


    }
if(D0&D2==1)
{         
    if(duty<=60)
        {
           RENA=1;
           RENB=1;
       
        }
        else
        {
           RENA=0;
           RENB=0;
       
        }  
   if(duty >= 65)
    {
       duty = 0;
    }
          if(x<=20)
        {
           LENA=1;
           LENB=1;
        }
        else
        {
           LENA=0;
           LENB=0;
        }  
   if(x >= 30)
    {
       x = 0;
    }
         }
          if(D0&D3==1)
{         
    if(x1<=60)
        {
           LENA=1;
           LENB=1;
        }
        else
        {
           LENA=0;
           LENB=0;
        }  
   if(x1 >= 100)
    {
       x1 = 0;
    }
   if(x2<=20)
        {          
           RENA=1;
           RENB=1;
       
        }
        else
        {
           RENA=0;
           RENB=0;
       
        }  
   if(x2>= 100)
    {
       x2 = 0;
    }
         }        
}


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:79544 發(fā)表于 2016-7-8 17:14 | 只看該作者
整的這么復雜啊。
回復

使用道具 舉報

板凳
ID:129080 發(fā)表于 2016-7-10 08:26 | 只看該作者
謝謝你們
回復

使用道具 舉報

地板
ID:129080 發(fā)表于 2016-7-10 14:43 | 只看該作者

要不你來個簡單的我看一下
回復

使用道具 舉報

5#
ID:129080 發(fā)表于 2016-7-10 14:44 | 只看該作者

求高手,
回復

使用道具 舉報

6#
ID:79544 發(fā)表于 2016-7-11 19:19 | 只看該作者
4鍵無線遙控小車程序
  1. /**********************************************
  2.         功能:4鍵無線遙控小車程序
  3.         單片機:STC12C5A60S2
  4.         晶振  :11.0592M
  5.         注釋 : 遙控器就是普通的4鍵315M遙控器加接收模塊。
  6.                         電機驅動用LM298或者LM293D,驅動板的電機使能端接5v。
  7. ********************************************/

  8. #include <reg52.h>
  9. #include <intrins.h>
  10. #define uint unsigned int
  11. #define uchar unsigned char

  12. #define A   P3_4 //遙控按鍵A  
  13. #define BB  P3_5 //遙控按鍵B   
  14. #define C   P3_6 //遙控按鍵C     
  15. #define D   P3_7 //遙控按鍵D  
  16. sbit in1=P1^0; //小車端口
  17. sbit in2=P1^1; //小車端口
  18. sbit in3=P1^2; //小車端口
  19. sbit in4=P1^3; //小車端口
  20. sbit P3_4=P3^4;//遙控按鍵A
  21. sbit P3_5=P3^5;//遙控按鍵B
  22. sbit P3_6=P3^6;//遙控按鍵C
  23. sbit P3_7=P3^7;//遙控按鍵D
  24. sbit xj_l=P2^0;//循跡或避障左傳感器
  25. sbit xj_r=P2^1;//循跡或避障右傳感器
  26. void delay10ms(uint z)   
  27. {
  28.         uint a,b;
  29.     for(a=z;a>0;a--)
  30.       for(b=425;b>0;b--);
  31. }
  32. void qianjin()
  33. {
  34.         in1 = 0 ;
  35.     in2 = 1 ;
  36.     in3 = 0;
  37.     in4 = 1;
  38.         delay10ms(100);
  39. }
  40. void houtui()
  41. {
  42.         in1 = 1 ;
  43.     in2 = 0 ;
  44.     in3 = 1;
  45.     in4 = 0;
  46.         delay10ms(100);
  47. }
  48. void zuozhuan()
  49. {
  50.         in1 = 0 ;
  51.     in2 = 1 ;
  52.     in3 = 1;
  53.     in4 = 0;
  54.         delay10ms(100);
  55. }
  56. void youzhuan()
  57. {
  58.         in1 = 1 ;
  59.     in2 = 0 ;
  60.     in3 = 0;
  61.     in4 = 1;
  62.         delay10ms(100);
  63. }
  64. //********************************************************

  65. //********************************************************
  66. void main()
  67. {
  68.     while(1)               
  69.     {
  70.                
  71.         //循跡或避障功能,循跡的時候把傳感器朝下安裝
  72.         //避障的時候把傳感器安裝在車的前面朝前安裝
  73.         if(xj_l==1&&xj_r==1)
  74.                 qianjin();
  75.         if(xj_l==0&&xj_r==1)
  76.                 youzhuan();
  77.         if(xj_l==1&&xj_r==0)
  78.                 zuozhuan();
  79.         if(xj_l==0&&xj_r==0)
  80.                 houtui();
  81.                 delay10ms(1500);
  82.         //無線遙控功能
  83.         /*        in1 = 0;
  84.                 in2 = 0 ;
  85.                 in3 = 0 ;
  86.                 in4 = 0;                     
  87.         if(A)  //前進
  88.         {                              
  89.             in1 = 0 ;
  90.             in2 = 1 ;
  91.             in3 = 0;
  92.             in4 = 1;
  93.                         delay10ms(100);
  94.         }
  95.         if(BB) //后退
  96.         {
  97.            in1 = 1;
  98.            in2 = 0 ;
  99.            in3 = 1 ;
  100.            in4 = 0;
  101.                         delay10ms(100);
  102.         }

  103.        if(C) //左轉
  104.        {
  105.            in1 = 0;
  106.            in2 = 1 ;
  107.            in3 = 1 ;
  108.            in4 = 0;
  109.                 delay10ms(100);
  110.        }
  111.        if(D) //右轉
  112.        {
  113.                in1 = 1 ;
  114.                in2 = 0 ;
  115.                in3 = 0 ;
  116.                in4 = 1;
  117.                         delay10ms(100);                     
  118.        }*/
  119.         }
  120. }
復制代碼
回復

使用道具 舉報

7#
ID:129080 發(fā)表于 2016-7-12 09:41 | 只看該作者
騰飛的龍 發(fā)表于 2016-7-11 19:19
4鍵無線遙控小車程序

謝謝大神,還有我現(xiàn)在一個尋黑線,就是尋跡的程序總是搞不出來幫我看看,有四個尋跡紅外,中間有兩個。
我寫的程序是這樣的,大神幫我改一改試一下,多謝大神#include<AT89X52.H>                            //reg52.h
#define uchar unsigned char
#define uint unsigned int
sbit QL1 =  P1^0;
sbit QL2 =  P1^1; // 前面左邊 前進(正轉)
sbit HL1 =        P1^2; // 前面左邊 后退(反轉)
sbit HL2 =  P1^3;
sbit QR1 =  P1^4;
sbit QR2 =  P1^5;
sbit HR1 =        P1^6;  
sbit HR2 =  P1^7;

sbit EN1 =        P2^0;   // 高電平使能
sbit EN2 =  P2^1;        // 高電平使能
sbit EN3 =        P2^2;   // 高電平使能
sbit EN4 =  P2^3;        // 高電平使能
                  
#define Left_go      {QL1=1,QL2=0,HL1=1,HL2=0;}        //左邊電機向前走
#define Left_back    {QL1=0,QL2=1,HL1=0,HL2=1;}        //左邊電機向后走
#define Left_Stop    {QL1=1,QL2=1,HL1=1,HL2=1;}          //左邊電機停轉                     
#define Right_go     {QR1=1,QR2=0,HR1=1,HR2=0;}        //右邊電機向前走
#define Right_back   {QR1=0,QR2=1,HR1=0,HR2=1;}        //右邊電機向后走
#define Right_Stop   {QR1=1,QR2=1,HR1=1,HR2=1;}          //右邊電機停轉

#define XL    P2_3         // 左傳感器
#define XML   P2_4         // 中左傳感器      
#define XMR   P2_5         // 中右傳感器      
#define XR    P2_6         // 右傳感器
                                                 
#define Left_pwm1          P2_0         //PWM信號端
#define Left_pwm2          P2_1         //PWM信號端
#define Right_pwm1          P2_2          //PWM信號端
#define Right_pwm2          P2_3          //PWM信號端

uchar pwmleft  =0;//變量定義
uchar pushleft1 =0;// 左電機1占空比N/20
uchar pushleft2 =0;// 左電機2占空比N/20
uchar pwmright =0;
uchar pushright1=0;// 右電機1占空比N/20
uchar pushright2=0;// 右電機2占空比N/20
bit Right_stop=1;

bit Left_stop =1;

uint  time=0;


//延時函數(shù)       
   void delay(unsigned int k)
{   
     unsigned int x,y;
         for(x=0;x<k;x++)
           for(y=0;y<2000;y++);
}
   
   
//go
     void  run(void)
{
     pushleft1=7;         //速度調節(jié)變量 0-20,0最小,20最大
         pushleft2=7;
         pushright1=7;
         pushright2=7;
         Left_go ;   //左電機往前走
         Right_go ;  //右電機往前走
}



//left
     void  leftrun(void)
{         
     pushleft1=7;
         pushleft2 =7;
         pushright1=7;
         pushright2=7;
         Right_go ;  //右電機往前走
     Left_Stop ;  //左電機停止
}

//right
     void  rightrun(void)
{
         pushleft1=7;
         pushleft2=7;
         pushright1=7;
         pushright2=7;
     Left_go;   //左電機往前走
         Right_Stop;  //右電機往前走       
}


                       

//                    左電機調速                                       
//調節(jié)push_val_left的值改變電機轉速,占空比           
void pwm_out_left(void)
{  
   if(Left_stop&&Left_stop)
   {
    if(pwmleft<=pushleft1&&pwmleft<=pushleft2)
               {
                     Left_pwm1=1;
                         Left_pwm2=1;

                   }
        else
               {
                 Left_pwm1=0;
                         Left_pwm2=0;

                   }
        if(pwmleft>=20)
               pwmleft=0;
   }
   else   
          {
           Left_pwm1=0;
                   Left_pwm2=0;

                  }
}

//    右電機調速         
   void pwm_out_right(void)
{
  if(Right_stop)
   {
    if(pwmright<=pushright1&&pwmright<=pushright2)
              {
               Right_pwm1=1;
                   Right_pwm2=1;
                   }
        else
              {
                   Right_pwm1=0;
                   Right_pwm2=0;
                  }
        if(pwmright>=20)
               pwmright=0;
   }
   else   
          {
           Right_pwm1=0;
                   Right_pwm2=0;

              }
}
      




void main(void)
{       

       
    P1=0X00;
        delay(100);
        run();
       
        TMOD=0X01;
    TH0= 0XFc;                  //1ms定時
    TL0= 0X18;
    TR0= 1;
    ET0= 1;
        EA = 1;                           //開總中斷

        while(1)       
         {
              //有信號為0  沒有信號為1
       if(XL==0&&XR==0&&XML==0&&XMR==0)
              run();   
                  else
                   {                          
                        if(XL==1&&XR==0)          //左邊檢測到黑線
                                 {
                                         leftrun();                  
                                }
                         if(XR==1&&XL==0)      //右邊檢測到黑線
                                     {          
                                        rightrun();                  
                                      }
                        }         
         }
}



//TIMER0中斷服務子函數(shù)產生PWM信號
        void timer0()interrupt 1   using 2
{
     TH0=0XFc;          //1Ms定時
         TL0=0X18;
         time++;
         pwmleft++;
         pwmright++;
         pwm_out_left();
         pwm_out_right();
}        C:\Documents and Settings\Administrator\桌面
回復

使用道具 舉報

8#
ID:312000 發(fā)表于 2018-4-19 21:00 | 只看該作者
您這遙控是用的藍牙嗎
回復

使用道具 舉報

9#
ID:46065 發(fā)表于 2018-4-19 21:24 | 只看該作者
單片新手 發(fā)表于 2018-4-19 21:00
您這遙控是用的藍牙嗎

4鍵遙控就可以,某報上10元以內
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月婷婷亚洲 | 一级片免费在线观看 | 中文久久| 99精品在线| 影音先锋欧美资源 | 人人鲁人人莫人人爱精品 | 日本精品视频在线观看 | 欧美一级久久 | 亚洲精品福利在线 | 日本小电影在线 | 久久青 | 亚洲社区在线 | 午夜合集 | 欧美亚洲视频在线观看 | 国产精品成人一区二区三区 | 亚洲+变态+欧美+另类+精品 | 国产精品欧美一区二区三区不卡 | 久久国产精品一区二区三区 | 国产欧美精品一区二区 | 国产精品免费一区二区三区四区 | 91夜色在线观看 | 欧美色性 | 一本岛道一二三不卡区 | 亚洲人久久 | 国产激情在线 | 日韩成人一区 | 美女毛片免费看 | 国产 日韩 欧美 中文 在线播放 | 午夜视频一区二区 | 精品毛片视频 | 欧美区在线 | 91大神在线资源观看无广告 | 日本高清视频在线播放 | 免费黄视频网站 | 日韩中文字幕在线视频 | 欧美日韩国产高清 | 99re国产视频 | 黄色高清视频 | 国内精品久久久久久久影视简单 | 成人国产精品一级毛片视频毛片 | 国产91精品网站 |