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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

藍牙無線遙控避障

[復制鏈接]
跳轉到指定樓層
樓主
ID:79748 發表于 2015-5-12 15:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /******************************************
  2. *******************************************
  3.                 程序名稱:藍牙無線遙控避障
  4. ******************************************
  5. *******************************************/
  6. #include <at89x51.h>
  7. #include <stdio.h>
  8. #include <PWM.h>  //包含前面講到的PWM頭文件,此頭文件導入后能產生1KHZ的PWM信號
  9. #include <intrins.h>

  10. #define Forward_L_DATA  200
  11. #define Forward_R_DATA  200      
  12. #define Back_L_DATA  190
  13. #define Back_R_DATA  190      
  14. #define Turn_Left_L_DATA  230
  15. #define Turn_Left_R_DATA  230
  16. #define Turn_Right_L_DATA  230
  17. #define Turn_Right_R_DATA  230
  18. /***自定義一些數據,這些數據對應軟件上的數據設置**/      
  19. #define leftdata    0x11
  20. #define rightdata   0x22
  21. #define forwarddata 0x33
  22. #define backdata    0x44
  23. /*******L293D邏輯電平口定義******/
  24. sbit L293D_IN1=P1^5;
  25. sbit L293D_IN2=P1^6;
  26. sbit L293D_IN3=P1^1;
  27. sbit L293D_IN4=P1^0;
  28. sbit L293D_EN1=P1^3;
  29. sbit L293D_EN2=P1^4;
  30. /*****左傳感器和右傳感器接線定義***/
  31. sbit Left_InSen=P2^3;      
  32. sbit Right_InSen=P2^0;
  33. /******寄存器地址賦值******/
  34. sfr AUXR=0x8e;
  35. sfr BRT=0x9c;
  36. /******全局變量定義******/
  37. unsigned char SBUF_DATA,flag1,flag2,flag3,flag4,Last_SBUF_DATA;
  38. unsigned int count1=0;
  39. unsigned int speed;
  40. char s[10];                 //存放速度值的緩沖區
  41. /*******函數聲明*******/
  42. void SendString(unsigned char *pt);
  43. void Send_Char(unsigned char DATA);

  44. //—————————————延時1ms函數————————————
  45. void Delay1ms(unsigned int i)
  46. {
  47.         unsigned char j,k;
  48.         do{
  49.                 j = 44;
  50.                 do{
  51.                         k = 100;
  52.                         do{ _nop_(); }while(--k);                              
  53.                 }while(--j);
  54.         }while(--i);
  55. }
  56. /*************************電機控制函數******************/
  57. void Forward(unsigned char Speed_Right,unsigned char Speed_Left)//前進
  58. {
  59.          L293D_IN1=1;
  60.          L293D_IN2=0;
  61.          L293D_IN3=1;
  62.          L293D_IN4=0;
  63.      PWM_Set(255-Speed_Right,255-Speed_Left);
  64. }
  65. void Back(unsigned char Speed_Right,unsigned char Speed_Left)//后退
  66. {
  67.          L293D_IN1=0;
  68.          L293D_IN2=1;               
  69.          L293D_IN3=0;
  70.          L293D_IN4=1;
  71.      PWM_Set(255-Speed_Right,255-Speed_Left);
  72. }
  73. void Turn_Left(unsigned char Speed_Right,unsigned char Speed_Left)//左轉
  74. {
  75.     L293D_IN1=1;
  76.         L293D_IN2=0;
  77.         L293D_IN3=0;
  78.         L293D_IN4=1;
  79.         PWM_Set(255-Speed_Right,255-Speed_Left);

  80. }
  81. void Turn_Right(unsigned char Speed_Right,unsigned char Speed_Left)//右轉
  82. {
  83.     L293D_IN1=0;
  84.         L293D_IN2=1;
  85.         L293D_IN3=1;
  86.         L293D_IN4=0;
  87.         PWM_Set(255-Speed_Right,255-Speed_Left);
  88. }
  89. void Stop(void)        //停止
  90. {
  91.      L293D_IN1=0;
  92.          L293D_IN2=0;
  93.          L293D_IN3=0;
  94.          L293D_IN4=0;
  95.          PWM_Set(0,0);
  96. }

  97. /****************發送字符串函數****************/
  98. void SendString(unsigned char *pt)
  99. {
  100.     while(*pt)
  101.                 Send_Char(*(pt++));
  102. }
  103. /****************發送字符函數****************/
  104. void Send_Char(unsigned char DATA)
  105. {
  106.      ES=0;//關閉串口中斷
  107.          flag1=0;
  108.      SBUF=DATA; //將數據發送出去,可以在電腦串口工具的接收區觀察
  109.      while(!TI);//數據發送完畢之后,T1會置1
  110.      TI=0;
  111.      ES=1;//重新允許串口中斷      
  112. }
  113. /****************************串口中斷函數****************************/
  114. void serial() interrupt 4
  115. {
  116.         flag1=1;//如果產生了中斷,說明單片機串口接收到數據,串口中斷標志置1      
  117.         SBUF_DATA=SBUF;        //存放接收到的數據
  118.         RI=0;//中斷標志
  119. }
  120. /****************************障礙檢測函數**************************/
  121. void jiance(void)
  122. {
  123.         if(Left_InSen==0&& Right_InSen==1) //如果左邊傳感器檢測到物體,提示左邊有障礙物
  124.           {
  125.                  if(flag2!=1)
  126.                    {
  127.                           Delay1ms(500);
  128.                           flag2=1;
  129.                           SendString("\r\n左方有障礙物...\r\n\r\n");      
  130.                    }
  131.           }
  132.         else
  133.           {
  134.                  flag2=0;
  135.           }
  136.         if(Left_InSen==1&& Right_InSen==0) //如果右邊傳感器檢測到物體,提示右邊有障礙物
  137.           {
  138.                  if(flag3!=1)
  139.                    {
  140.                           Delay1ms(500);
  141.                           flag3=1;
  142.                       SendString("\r\n右方有障礙物...\r\n\r\n");      
  143.                    }
  144.           }
  145.         else
  146.           {
  147.                  flag3=0;
  148.           }
  149.         if(Left_InSen==0&& Right_InSen==0) //如果前方傳感器檢測到物體,提示前方有障礙物
  150.           {
  151.                  if(flag4!=1)
  152.                    {
  153.                           Delay1ms(500);
  154.                           flag4=1;
  155.                           SendString("\r\n前方有障礙物...\r\n\r\n");      
  156.                    }
  157.           }
  158.         else
  159.           {
  160.                  flag4=0;
  161.           }
  162. }
復制代碼




/****************************主函數***********************/
void main(void)
{
    PWM_ini();

        TMOD|=0x10;
        TMOD&=0x1F;
        TH1=(65536-36815)/256;
        TL1=(65536-36815)%256;          // 20ms
        TR1=1;
        ET1=1;

        EX0=1;
        IT0=1; //

        SCON=0x50;//設置串口工作在方式1,允許串口接收數據
        BRT=0xff;
        AUXR=0x11;
               
        ES=1;  //允許串行中斷
        EA=1; //開總中斷
        SendString("已經進入藍牙無線控制模式,\r\n\r\n請按下對應的鍵盤按鍵,無線遙控小車。\r\n");

while(1)
{
jiance();
if(flag1==1)        //如果產生過中斷,證明串口接收到了數據
{                        
        flag1=0;
        if(SBUF_DATA!=Last_SBUF_DATA)
        {
        switch(SBUF_DATA)
        {
                case leftdata: SendString("小車正在左轉...\r\n\r\n");break;
                case rightdata: SendString("小車正在右轉...\r\n\r\n");break;
                default: break;
                }
               
        }
         switch(SBUF_DATA)
        {
        case leftdata: Turn_Left(Turn_Left_R_DATA,Turn_Left_L_DATA);break;
        case rightdata: Turn_Right(Turn_Right_R_DATA,Turn_Right_L_DATA);break;
        case forwarddata: Forward(Forward_R_DATA,Forward_L_DATA);SendString("小車正在前進...\r\n\r\n");SendString(s); break;
case backdata: Back(Back_R_DATA,Back_L_DATA);SendString("小車正在后退...\r\n\r\n");SendString(s);break;
                                         default: break;
                }
                        
         Last_SBUF_DATA = SBUF_DATA;
        Delay1ms(30);
        }
                    else Stop();
}
}  

void int0() interrupt 0
{
        count1++;
}

void timer1() interrupt 3
{
        static unsigned char n=0;
        TH1=(65536-36815)/256;
        TL1=(65536-36815)%256;          // 20ms
        n++;
        if(n>=50)
        {               
                n=0;
                speed=(float)count1*1.0053096;        
                count1=0;
                sprintf(s,"speed:%3dcm/s\r\n\r\n",(unsigned short)speed);//將速度轉化為字符串送到S數組中
        }
}

小車通訊部分原理圖.pdf

19.71 KB, 下載次數: 7, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發
ID:79782 發表于 2015-5-12 19:30 | 只看該作者
可以實現嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 涩涩视频在线观看免费 | 久久99一区二区 | 亚洲精品久久久蜜桃 | 国产精品99久久久久久www | 日本在线你懂的 | 羞羞视频网| 亚洲网在线 | 国产高清在线精品 | 国产精品视频一二三区 | 久久国产婷婷国产香蕉 | 日韩免费视频一区二区 | 成人av一区二区在线观看 | 日日草天天干 | 国产精品一区在线观看 | 国产在线一区二 | 99精品久久久久久中文字幕 | 国产精品无 | h视频在线观看免费 | 欧美亚州 | 久久久久一区二区三区 | 亚洲一区二区三区四区五区中文 | 二区三区av | 国产精品久久久久久久久久三级 | 午夜精品一区 | 蜜桃视频在线观看免费视频网站www | 色视频网站免费 | 久草精品在线 | 天天干天天操 | 国产农村妇女毛片精品久久麻豆 | 一区二区日韩 | 一级黄色av电影 | 成人在线视频网站 | 日日操夜夜操天天操 | 亚洲 自拍 另类 欧美 丝袜 | 国产一区二区 | 午夜精品一区二区三区免费视频 | 欧美日韩亚洲视频 | 欧美成年网站 | 欧美成视频| 精品一区二区三区在线观看国产 | 欧美日韩精品一区二区天天拍 |