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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

大神幫我看下我的智能車代碼哪里出錯,很急

[復制鏈接]
跳轉到指定樓層
樓主
ID:99359 發表于 2016-1-24 10:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大神幫我看下我的智能車代碼哪里出錯,很急,按下按鍵1實現藍牙遙控功能,按下按鍵2則實現魔幻手功能,以下是我的代碼,但是遙控也遙控不了,也實現不了魔幻手功能,不知道哪里出錯,希望大家指點指點

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

sbit EX=P2^0;
sbit TX=P2^1;

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

uchar a;//接收藍牙模塊發送的數據
uchar flag;
uint time,distance,valA;
unsigned long S=0;

void delayxms(uint z)//調節電機轉速
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void delay20us()//短延時函數,用于起聲波傳感器延時
{
        uchar a;
        for(a=0;a<150;a++);
}

void delaym(int z)//延時函數,調節電機轉速
{
    int i,j;
        for(i=2;i>0;i--)
        for(j=z;j>0;j--);        
}

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 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 chao()
{
     TMOD=0x01;//設T0為方式1,GATE=1;
    EA=1;//開啟總中斷
    TH0=0;
    TL0=0;         
    ET0=1;//允許T0中斷        
               
}

void keyscan()
{
        if(key1==0)
        delayxms(10);
        if(key1==0)
        {
            lanya();
                while(!key1);
    }

        if(key2==0)
        delayxms(10);
        if(key2==0)
        {
                 chao();
                while(!key2);
        }
}

void chaoshengbo()
{
        TX=1;//初始化Trig引腳,啟動一次模塊
        delay20us();
        TX=0;

//        for(valA=100;valA>0;valA--)//for循環是防止發射信號對回響信號的影,響根據實際情況是否用
// {
                if(EX==1)//判斷Exho是否為高電平
                {

                        TR0=1;                            //開啟計數
                        while(EX);                        //當RX為1計數并等待
                        TR0=0;                                //關閉計數
                        
                        time=TH0*256+TL0;   //計算整個距離的時間
                        TH0=0;
                        TL0=0;
                        TX=0;

                        S=((time*2)/100)-3;     //計算距離,算出來是CM  3是盲區 (time*1.7)/100;
                }
//        }
}

void main(void)
{
   keyscan();
        while(1)
        {         
               if(key1==0)
            {
                   if(a=='A') qingj();//前進

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

                else tingz();//停止        
                }

                if(key2==0)
                {
                        chaoshengbo();//超聲波初始化
            
                        if(S>=20) qingj();
                        else hout();
        
        }
        }
}

void zd0() interrupt 1         //T0中斷用來計數器溢出,超過測距范圍
{
    flag=1;        //中斷溢出標志
        EX=0;
}

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

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

使用道具 舉報

沙發
ID:79544 發表于 2016-1-24 21:23 | 只看該作者
程序肯定不行,再好好找找別的程序試試。你那個藍牙不是程序只是初始化。
回復

使用道具 舉報

板凳
ID:99359 發表于 2016-1-25 18:37 | 只看該作者
騰飛的龍 發表于 2016-1-24 21:23
程序肯定不行,再好好找找別的程序試試。你那個藍牙不是程序只是初始化。

你會幫我改改上面的程序嗎
回復

使用道具 舉報

地板
ID:79544 發表于 2016-1-26 21:23 | 只看該作者
你先試試單個功能看看行不行
回復

使用道具 舉報

5#
ID:79544 發表于 2016-1-26 21:27 | 只看該作者
這是個單字符的藍牙控制的小車程序
  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. }
復制代碼
回復

使用道具 舉報

6#
ID:79544 發表于 2016-1-26 21:28 | 只看該作者
里面數碼管和舵機以及避障和PWM你可以屏蔽掉
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费在线一区二区 | 亚洲精品在线免费 | 成人免费在线电影 | 一级毛片视频免费观看 | 91爱啪啪 | 精品成人一区二区 | 一区二区三区亚洲 | 日韩欧美三级电影在线观看 | 精品无码三级在线观看视频 | 99国内精品久久久久久久 | 亚洲精品99| 欧美一级二级在线观看 | wwww.8888久久爱站网 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 日韩精品一区二区三区在线观看 | 97高清国语自产拍 | 欧美精品久久久久久久久老牛影院 | 国产精品久久久久久婷婷天堂 | 亚洲精品中文字幕在线观看 | 一区二区三区精品在线视频 | 91国内在线观看 | 日韩一级精品视频在线观看 | 请别相信他免费喜剧电影在线观看 | 欧美a v在线 | 欧美视频第三页 | 中文字幕一区二区三区日韩精品 | 国产精品一区二区免费 | 国产一卡二卡三卡 | 激情毛片| 午夜在线精品 | 日日夜夜操天天干 | 自拍亚洲| 亚洲97| 99热首页| 精品少妇一区二区三区在线播放 | 免费观看黄色片视频 | 久久精品亚洲精品 | 免费不卡一区 | 人人看人人爽 | 欧美日韩在线一区二区三区 | 美女爽到呻吟久久久久 |