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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么我每次都想用按鍵來實現智能車功能的切換,但是每次都實現不了,究竟錯在哪里

[復制鏈接]
跳轉到指定樓層
樓主
ID:99359 發表于 2016-1-31 18:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
為什么我每次都想用按鍵來實現智能車功能的切換,但是每次都實現不了,我都改了N遍了,但還是不行,找不出代碼錯在哪里,希望大家能幫幫我,以下的程序是實現藍牙遙控和紅外避障功能的切換,按下按鍵1實現藍牙遙控功能,按鍵2 則是想紅外避障功能
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit a1=P1^0;
sbit a2=P1^1;
sbit a3=P1^2;
sbit a4=P1^3;

sbit y=P3^4;
sbit z=P3^5;

sbit key1=P3^2;
sbit key2=P3^3;
uchar a;//接收藍牙模塊發送的數據

void delayxms(uint z)//調節電機轉速
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void qian()
{
a1=1;
a2=0;
a3=1;
a4=0;  
}
void hou()
{        a1=0;
        a2=1;
        a3=0;
        a4=1;

}
void zuo()
{
    a1=0;
        a2=0;
        a3=1;
        a4=0;
}
void you()
{
         
           a1=1;
        a2=0;
        a3=0;
        a4=0;
}
void ting()
{
    a1=0;
        a2=0;
        a3=0;
        a4=0;
}

void lanya()
{
    TMOD=0x20;//定時器1工作方式2,8位自動重裝  
    TH1=0xFd; //11.0592M晶振,9600波特率    
    TL1=0xFd;
    SCON=0x50;//串口方式1 SM0 SM1 01 允許接收  
    PCON=0x00;//SMOD=0 16分頻
    TR1=1;//打開定時器1
        ES=1;//打開串口中斷   
    EA=1;//開總中斷  
    //以上跟串口通信初始化有關
}

void keyscan()
{
   if(key1==0)
   {
          delayxms(10);
          if(key1==0)
          {
               
                         lanya();
                         
          
                   
                   if(a=='A')
                   qian();
                   else if(a=='B')
                   hou();
                   else if(a=='C')
                   zuo();
                   else if(a=='D')
                   you();
                   else
                   ting();
                  
                 
                   while (!key1) ;
       
       
      }
   }
   if(key2==0)
   {
         delayxms(10);
         
         if(key2==0)
         {
            
           qian();
           while((z==0)&&(y==1))
           {
                 you();
           }
           while((z==1)&&(y==0))
           {
                zuo();
           }
       
          }
            while (!key2);
         }

}

void main()
{


        while(1)
        {  
                     keyscan();
        }
}       


void serial() interrupt 4//中斷子函數
{
        RI=0;//清0
        a=SBUF;
}

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

使用道具 舉報

沙發
ID:79544 發表于 2016-2-1 22:54 | 只看該作者
你的單個程序好用嗎?
回復

使用道具 舉報

板凳
ID:99359 發表于 2016-2-1 23:10 | 只看該作者
騰飛的龍 發表于 2016-2-1 22:54
你的單個程序好用嗎?

還可以,但是一并起來就不行了
回復

使用道具 舉報

地板
ID:79544 發表于 2016-2-2 11:07 | 只看該作者
你用的是那款手機藍牙APP,只能控制前后左右嗎?我在論壇里上傳了一個手機藍牙的APP,你下載。也是單字符的協議,手機發送0,1,2,3,4,5,6,7,8. 單片機收到就執行你下位機
回復

使用道具 舉報

5#
ID:79544 發表于 2016-2-2 11:48 | 只看該作者
應該設定個標志位,
回復

使用道具 舉報

6#
ID:79544 發表于 2016-2-2 12:01 | 只看該作者
給你個我用的藍牙小車程序,手機APP在論壇里。
  1. /************************************************
  2. //藍牙控制小車 加舵機 加避障 可以調速 正確的程序
  3.         單片機: STC12C5608AD
  4. //        晶振  :           11.0592M晶振
  5.         作者  :蘇義江
  6.         時間  :2016-1-8
  7. ***************************************************/
  8. #include <reg52.h>
  9. #include<intrins.h>
  10. #define uint unsigned int
  11. #define uchar unsigned char
  12. //sfr  T2MOD=0xc9;
  13. sbit in1  =P1^0; //電機1端口
  14. sbit in2  =P1^1;
  15. sbit ina  =P1^2;  //電機PWM-A

  16. sbit in3  =P1^3;//電機2端口
  17. sbit in4  =P1^4;
  18. sbit inb  =P1^5;//電機PWM-B

  19. sbit bz_l =P2^0;  //避障左
  20. sbit bz_z =P2^1;  //避障右
  21. sbit bz_r =P2^2;  //避障右

  22. sbit moto_pwm =P3^4;//PWM輸出腳控制舵機
  23. sbit yan      =P3^5;//頭燈光

  24. sbit landeng =P3^2;//藍前大燈
  25. sbit hondeng =P3^3;//紅前大燈
  26. sbit yinyue  =P3^7;//音樂端口

  27. sbit wela    =P1^6;//位碼
  28. sbit dula    =P1^7;//段碼
  29. uchar code table[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,
  30.                                                 0x82,0xF8,0x80,0x90,0xBF,0xff};
  31. uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  32. //uchar disbuff[4] ={ 0,0,0,0,};//數碼管全顯示 0
  33. uint tt = 0;//變量定義
  34. uint num=0;//變量定義

  35. uchar pwm_lefr=0;//定義 定時器自加1變量
  36. //uchar pwm_lefr1=0;//定義 定時器自加1變量
  37. uchar duojiguizhong=14;//舵機歸中1.5ms
  38. uchar duojiguizhong1=14;//舵機歸中1.5ms
  39. uchar tmp,w,sudu; //變量w 定義PWM值

  40. void init() ;
  41. void delay1(uint z)//延時函數
  42. {
  43.         uint x,y;
  44.         for(x=z;x>0;x--)
  45.                 for(y=120;y>1;y--);
  46. }
  47. void delay(uint z)
  48. {
  49.         uint x,y;
  50.         for(x=0;x<z;x++)
  51.         for(y=0;y<1000;y++);
  52.        
  53. }

  54. /*void xianshi(uchar num)//顯示
  55. {  
  56.   uchar gw,sw,bw,qianw;
  57.         qianw=num/1000%100;
  58.    bw=num%1000/100;   
  59.    sw=num%100/10;   
  60.    gw=num%10;
  61.             
  62.    P2=0xfe;   
  63.    wela=1;     
  64.    _nop_();_nop_();   
  65.    wela=0;     
  66.    P2=table[qianw];
  67.     dula=1;     
  68.    _nop_();_nop_();   
  69.    dula=0;   
  70.    delay1(2);

  71.    P2=0xfd;
  72.    wela=1;     
  73.    _nop_();
  74.    _nop_();   
  75.    wela=0;     
  76.    P2=table[bw];
  77.     dula=1;     
  78.    _nop_();
  79.    _nop_();   
  80.    dula=0;   
  81.    delay1(2);

  82.         P2=0xfb;   
  83.    wela=1;     
  84.    _nop_();_nop_();   
  85.      wela=0;     
  86.    P2=table[sw];   
  87.    dula=1;     
  88.    _nop_();_nop_();   
  89.    dula=0;
  90.    delay1(2);
  91.                 P2=0xf7;   
  92.    wela=1;     
  93.    _nop_();_nop_();   
  94.      wela=0;     
  95.    P2=table[gw];   
  96.    dula=1;     
  97.    _nop_();_nop_();   
  98.    dula=0;
  99.    delay1(2); //顯示個 十 百 千

  100. }  */

  101. void pwmmaic()//產生PWM
  102. {
  103.         if(pwm_lefr<=duojiguizhong)       
  104.                 moto_pwm=1;
  105.                 else
  106.                 moto_pwm=0;
  107.                 if(pwm_lefr>=200)
  108.                 pwm_lefr=0;               
  109. }

  110. void duoji_kz()//舵機控制
  111. {
  112.         yan=0;
  113.         duojiguizhong=9;
  114.        
  115.         delay(800);
  116.         yan=0;
  117.         duojiguizhong=16;
  118.        
  119.         delay(800);
  120.         yan=0;
  121.         duojiguizhong=24;
  122.        
  123.         delay(800);
  124.         yan=0;
  125.         duojiguizhong=16;
  126.        
  127.         delay(800);
  128.         yan=0;
  129.         delay(1500);
  130.         yan=1;       
  131. }
  132. void lankong()        //藍色LED
  133. {
  134.         landeng=0;
  135.         delay1(80);
  136.         landeng=1;
  137.         delay1(80);
  138. }
  139. void hongkong()        //紅色LED
  140. {
  141.         hondeng=0;
  142.         delay1(80);
  143.         hondeng=1;
  144.         delay1(80);
  145. }
  146. void qianjin()
  147. {
  148.         in1=1;in2=0;in3=0;in4=1;
  149.         w=40;
  150.         yan=0;landeng=0;hondeng=0;yinyue=0;       
  151. }   
  152. void houtui()
  153. {
  154.         in1=0;in2=1;in3=1;in4=0;
  155.         w=40;
  156.         yan=1;hondeng=0;yinyue=0;       
  157. }  
  158. void zuozhuan()
  159. {
  160.         in3=1;in4=0;
  161.         w=40;
  162.         lankong();yinyue=1;
  163. }
  164. void youzhuan()
  165. {
  166.         in1=0;in2=1;
  167.         w=40;
  168.         hongkong();yinyue=1;
  169. }  
  170. void tingzhi()
  171. {
  172.         in1=0;in2=0;in3=0 ;in4=0;
  173.         hongkong();lankong();yinyue=1;
  174. }
  175. void zhuanquan()
  176. {
  177.         in1=1;in2=0;in3=1;in4=0;
  178.         w=40;
  179.         lankong();yinyue=1;
  180. }
  181. void bizhang()        //避障
  182. {
  183.          if(bz_l==1&&bz_z==1)
  184.          qianjin();
  185.           if(bz_l==0&&bz_z==1)
  186.          zuozhuan();
  187.           if(bz_l==1&&bz_z==0)
  188.          youzhuan();
  189.           if(bz_l==0&&bz_z==0)
  190.           {
  191.                  tingzhi();
  192.                 delay(100);
  193.                  zuozhuan();
  194.                  delay(400);
  195.                  qianjin();       
  196.                  }
  197.         /*
  198.     if(bz_l==1&&bz_z==1&&bz_r==1)
  199.          qianjin();
  200.         if(bz_l==0&&bz_z==1&&bz_r==1)
  201.          zuozhuan();
  202.          if(bz_l==0&&bz_z==0&&bz_r==1)
  203.          zuozhuan();
  204.          if(bz_l==1&&bz_z==1&&bz_r==0)
  205.          youzhuan();
  206.          if(bz_l==1&&bz_z==0&&bz_r==0)
  207.          youzhuan();
  208.          if(bz_l==1&&bz_z==0&&bz_r==1)
  209.          {
  210.                  tingzhi();
  211.                 delay(100);
  212.                 houtui();
  213.                 delay(500);
  214.                 zuozhuan();
  215.                 delay(200);
  216.                 qianjin();
  217.          }
  218.          if(bz_l==0&&bz_z==0&&bz_r==0)
  219.          {       
  220.                  tingzhi();
  221.                 delay(100);
  222.                 houtui();
  223.                 delay(500);
  224.                 zuozhuan();
  225.                 delay(200);
  226.                 qianjin();
  227.          }         */
  228. }
  229. void init()   //串口初始化
  230. {                                                                       //關中斷
  231.     SCON =0x50; //串口模式1,允許接收                  
  232.     TMOD =0x20;//定時器1為模式2 8-bit自動裝載方式用于產生波特率
  233.     PCON=0x00;//波特率不倍增
  234.         TH1=0xfd;//波特率9600  11.0592M
  235.         TL1=0xfd;
  236.         TH0=0xfd;
  237.         TH0=0xae;
  238.         EA=1;
  239.         ES=1;
  240.         ET0=1; //        T0中斷允許
  241.         TR0=1; //        啟動T0定時器
  242.         TR1=1; //        啟動T1定時器
  243.         duojiguizhong=16;
  244.         duojiguizhong1=16;
  245. }
  246. void ctrl() //接收處理函數
  247. {
  248.    switch(tmp)
  249.    {        
  250.             case 1:qianjin(); break;                                                    
  251.      case 2: houtui();break;                                                                            
  252.      case 3:zuozhuan(); break;
  253.      case 4:youzhuan();break;  
  254.          case 0:tingzhi(); break;
  255.          case 7:duoji_kz();break;        //舵機         C
  256.          case 8: bizhang(); break;        //避障        D
  257.          
  258.    /*case 1:duoji_kz();qianjin(); break;                                                    
  259.      case 2:duoji_kz(); houtui();break;                                                                            
  260.      case 3:zuozhuan(); break;
  261.      case 4:youzhuan();break;  
  262.          case 0:tingzhi(); break;  */
  263.    }
  264. }
  265. void tiaosu () //調速
  266. {
  267.         switch(sudu)
  268.         {
  269.                 case 5: zhuanquan();        break;         //A
  270.                 case 6: w=75; break;         //B               
  271.         }
  272. }
  273. void main()
  274. {
  275.    init();         
  276.    while(1)
  277.    {
  278. //        xianshi( num ); //顯示函數  
  279.         ctrl();
  280.         tiaosu();  
  281.    }
  282. }
  283. void time0() interrupt 1
  284. {  
  285.     TH0=0xfd;
  286.     TL0=0xae;
  287.         tt++;
  288.         pwm_lefr++;
  289. //        pwm_lefr1++;
  290.         pwmmaic();
  291.         if(tt<w)
  292.         {
  293.                 ina=1;
  294.                 inb=1;
  295.         }
  296.         else
  297.         {
  298.                 ina=0;
  299.                 inb=0;
  300.         }
  301.         if(tt==100)
  302.         {tt=0;
  303.        
  304.         num++;
  305.         if(num==9999)num=0;       
  306.         }
  307. }
  308. void ckzd() interrupt 4
  309. {
  310.         ES=0;
  311.         RI=0;
  312.         tmp=SBUF;
  313.         sudu=SBUF;
  314.         ES=1;
  315. }
復制代碼
回復

使用道具 舉報

7#
ID:99359 發表于 2016-2-2 17:12 | 只看該作者
騰飛的龍 發表于 2016-2-2 12:01
給你個我用的藍牙小車程序,手機APP在論壇里。

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

sbit a1=P1^0;//電機控制口
sbit a2=P1^1;
sbit a3=P1^2;
sbit a4=P1^3;

uchar a;//接收藍牙模塊發送的數據

void delayxms(uint z)//調節電機轉速
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void qingj()//前進
{
        a1=1;
        a2=0;
        a3=1;
        a4=0;       
}

void hout()//后退
{
        a1=0;
        a2=1;
        a3=0;
        a4=1;       
}

void youz()//右轉
{
        a1=0;
        a2=0;
        a3=1;
        a4=0;
        delayxms(9);       
        a1=0;
        a2=0;
        a3=0;
        a4=0;
        delayxms(1);       
}

void zuoz()//左轉
{
        a1=1;
        a2=0;
        a3=0;
        a4=0;
        delayxms(9);       
        a1=0;
        a2=0;
        a3=0;
        a4=0;
        delayxms(1);       
}

void tingz()//停止
{
        a1=0;
        a2=0;
        a3=0;
        a4=0;
}

void main()
{
        TMOD=0x20;//定時器1工作方式2,8位自動重裝  
    TH1=0xFd; //11.0592M晶振,9600波特率 
    TL1=0xFd;
    SCON=0x50;//串口方式1 SM0 SM1 01 允許接收  
    PCON=0x00;//SMOD=0 16分頻
    TR1=1;//打開定時器1
        ES=1;//打開串口中斷   
    EA=1;//開總中斷  
    //以上跟串口通信初始化有關
        while(1)
        {
                if(a=='A') qingj();//前進

                else if(a=='B') hout();//后退
               
                else if(a=='C') zuoz();//左轉
               
                else if(a=='D') youz();//右轉

                else tingz();//停止               
        }
}

void serial() interrupt 4//中斷子函數
{
        RI=0;//清0
        a=SBUF;
}
這是我藍牙小車的程序
回復

使用道具 舉報

8#
ID:79544 發表于 2016-2-3 11:09 | 只看該作者
你直接用藍牙控制。把超聲波的程序放在 比如else if(a=='D') chaoshengb();//超聲波。哦你要加返回語句:break; if(a=='A') qingj();breakl//前進
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人精品一区二区三区在线 | 日韩一区二区三区在线 | 91伊人| 久久99精品久久久久久国产越南 | 日韩毛片在线免费观看 | 国产精品区二区三区日本 | 婷婷99| 欧美一区二区三区在线视频 | 欧美日韩一区在线观看 | 日韩精品一区二区不卡 | 国产亚洲一区二区精品 | 91亚洲国产成人久久精品网站 | 狠狠久久久 | 成人黄色在线观看 | 国产精品视频久久 | 日韩视频―中文字幕 | 国产午夜视频 | 欧美 日韩 中文 | 国产精品一区二区在线播放 | 狠狠躁18三区二区一区 | 国产精品99久久久久久宅男 | 婷婷久久久久 | 日本福利在线观看 | 亚洲成人自拍 | 欧美日韩一 | 亚洲综合一区二区三区 | 久久久久久免费看 | 亚洲欧美成人在线 | 高清av一区 | 在线精品亚洲欧美日韩国产 | 亚洲 中文 欧美 日韩 在线观看 | 国产一区二区三区欧美 | 日本精品一区二区三区在线观看视频 | 日韩中文字幕在线视频 | 国产一级在线观看 | 国产精品成人一区二区 | 久久99精品久久久久蜜桃tv | 欧美成人免费在线视频 | 超碰成人免费 | 久久午夜国产精品www忘忧草 | 国产在线观看网站 |