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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機藍牙控制小車程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:405955 發(fā)表于 2018-10-6 21:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機藍牙控制小車程序

單片機源程序如下:
  1. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器

  2. typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
  3. typedef unsigned char u8;

  4. sbit IN1=P1^0;               
  5. sbit IN2=P1^1;
  6. sbit IN3=P1^2;                                                                                       
  7. sbit IN4=P1^3;

  8. sbit PWM_L=P2^6;         
  9. sbit PWM_R=P2^7;

  10. #define CAR_SPEED_MAX 10

  11. #define up       'A'
  12. #define down     'B'
  13. #define left     'C'
  14. #define right    'D'
  15. #define stop     'E'
  16. #define ALL                 'F'
  17. #define speed5         '2'
  18. #define speed10         '8'

  19. #define L_go            IN1=0;IN2=1 //左輪前進
  20. #define L_back          IN1=1;IN2=0 //左輪后退   
  21. #define L_stop          IN1=0;IN2=0 //左輪停止,兩個輸出1也可以
  22. #define R_go            IN3=0;IN4=1 //右輪前進
  23. #define R_back          IN3=1;IN4=0 //右輪后退
  24. #define R_stop          IN3=0;IN4=0 //右輪停止,兩個輸出1也可以

  25. #define car_go               L_go;R_go                  //小車前進
  26. #define car_back             L_back;R_back              //小車后退
  27. #define car_left             R_go;L_stop                //小車左轉彎
  28. #define car_right            L_go;R_stop                //小車右轉彎
  29. #define car_stop             L_stop;R_stop              //小車停車
  30. #define car_left_360         R_go;L_back                //小車向左360度轉,是大轉彎
  31. #define car_right_360        L_go;R_back                //小車向右360度轉,是大轉彎


  32. u8 HighRH = 0;
  33. u8 HighRL = 0;
  34. u8 LowRH = 0;
  35. u8 LowRL = 0;

  36. bit  flag_REC=0;
  37. bit  flag=0;
  38. u8   i=0;
  39. u8   dat=0;
  40. u8   buff[5]=0; //接收緩沖字節(jié)

  41. /*******************************************************************************
  42. * 函數(shù)名         :UsartInit()
  43. * 函數(shù)功能                   :設置串口
  44. * 輸入           : 無
  45. * 輸出                  : 無
  46. *******************************************************************************/
  47. void UsartInit()
  48. {
  49.         SCON=0X50;                        //設置為工作方式1
  50.         TMOD=0X20;                        //設置計數(shù)器工作方式2
  51.         PCON=0X00;                        //波特率加倍
  52.         TH1=0XFd;                                //計數(shù)器初始值設置,注意波特率是9600的
  53.         TL1=0XFd;
  54.         ES=1;                                                //打開接收中斷
  55.         EA=1;                                                //打開總中斷
  56.         TR1=1;                                        //打開計數(shù)器
  57. }

  58. void ConfigPWM(unsigned int fr, unsigned char dc)
  59. {
  60.         unsigned long tmp;
  61.         unsigned int high, low;

  62.         tmp = 11059200/12/fr;
  63.         high = (tmp*dc)/100;
  64.         low = tmp - high;
  65.         high = 65536 - high + 12;
  66.         low = 65536 - low + 12;
  67.         HighRH = (unsigned char)(high >>8);
  68.         HighRL = (unsigned char)high;
  69.         LowRH = (unsigned char)(low >> 8);
  70.         LowRL = (unsigned char)low;
  71.         TMOD &= 0xF0;
  72.         TMOD |= 0x01;
  73.         TH0 = HighRH;
  74.         TL0 = HighRL;
  75.         ET0 = 1;
  76.         TR0 = 1;
  77.         PWM_L = 1;
  78.         PWM_R = 1;
  79.         EA = 1;
  80. }


  81. void ControlCar()
  82. {
  83.              if(flag_REC==1)                                    //
  84.            {
  85.           
  86.                 flag_REC=0;
  87.                 if(buff[0]=='O'&&buff[1]=='N')        //第一個字節(jié)為O,第二個字節(jié)為N,第三個字節(jié)為控制碼
  88.                 switch(buff[2])
  89.              {
  90.                       case up:                                                        // 前進
  91.                              car_go;                            
  92.                              break;
  93.                       case down:                                                // 后退
  94.                              car_back;
  95.                              break;
  96.                       case left:                                                // 左轉
  97.                              car_left;
  98.                              break;
  99.                       case right:                                                // 右轉
  100.                              car_right;
  101.                              break;
  102.                       case stop:                                                // 停止
  103.                              car_stop;
  104.                              break;
  105.                           case speed5:                          
  106.                          ConfigPWM(100,30);
  107.                              break;                                      
  108.                            case speed10:                     
  109.                                ConfigPWM(100,60);
  110.                              break;
  111.                           case ALL:                                                // 停止
  112.                              car_stop;
  113.                              break;                                      
  114.              }
  115.                                          
  116.          }
  117. }
  118. /*******************************************************************************
  119. * 函 數(shù) 名       : main
  120. * 函數(shù)功能                 : 主函數(shù)
  121. * 輸    入       : 無
  122. * 輸    出             : 無
  123. *******************************************************************************/
  124. void main()
  125. {       
  126.         UsartInit();  //        串口初始化
  127.         ConfigPWM(100,40);
  128.         while(1)
  129.         {
  130.                 ControlCar();
  131.         }               
  132. }


  133. void InterruptTimer0() interrupt 1
  134. {
  135.     if (PWM_L == 1&&PWM_R == 1)  //當前輸出為高電平時,裝載低電平值并輸出低電平
  136.     {
  137.         TH0 = LowRH;
  138.         TL0 = LowRL;
  139.         PWM_L  = 0;
  140.                 PWM_R  = 0;
  141.     }
  142.     else              //當前輸出為低電平時,裝載高電平值并輸出高電平
  143.     {
  144.         TH0 = HighRH;
  145.         TL0 = HighRL;
  146.         PWM_L  = 1;
  147.                 PWM_R  = 1;
  148.     }
  149. }

  150. /*******************************************************************************
  151. * 函數(shù)名         : Usart() interrupt 4
  152. * 函數(shù)功能                  : 串口通信中斷函數(shù)
  153. * 輸入           : 無
  154. * 輸出                  : 無
  155. *******************************************************************************/
  156. void sint() interrupt 4          //中斷接收3個字節(jié)
  157. {

  158.     if(RI)                         //是否接收中斷
  159.     {
  160.        RI=0;
  161.        dat=SBUF;
  162.        if(dat=='O'&&(i==0)) //接收數(shù)據(jù)第一幀
  163.          {
  164.             buff[i]=dat;
  165.             flag=1;        //開始接收數(shù)據(jù)
  166.          }
  167.        else
  168.       if(flag==1)
  169.       {
  170.        i++;
  171.        buff[i]=dat;
  172.        if(i>=2)
  173.        {
  174.               i=0;
  175.                   flag=0;
  176.                   flag_REC=1;
  177.            }  // 停止接收
  178.       }
  179.         }
  180. }
復制代碼

所有資料51hei提供下載:
藍牙程序-小車.rar (29.35 KB, 下載次數(shù): 28)


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

使用道具 舉報

沙發(fā)
ID:508963 發(fā)表于 2019-4-10 17:35 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区91精品张津瑜 | 乱码av午夜噜噜噜噜动漫 | www.久久.com | 亚洲不卡在线观看 | 久久69精品久久久久久久电影好 | 成人在线观看免费 | 免费一级做a爰片久久毛片潮喷 | 亚洲最大成人综合 | 国产精品亚洲成在人线 | 欧美大片黄 | 日日干干 | 男插女下体视频 | 特级毛片| 中文字幕在线一区 | 亚洲视频在线一区 | 日韩成人在线免费视频 | 久久久久国产一区二区三区不卡 | 久久国产婷婷国产香蕉 | www狠狠干 | 久久久久久国产精品 | 久久国内精品 | 请别相信他免费喜剧电影在线观看 | 国产成人精品高清久久 | 国产成人jvid在线播放 | 亚洲综合一区二区三区 | 久久久蜜桃一区二区人 | 91精品在线播放 | 欧美在线视频免费 | 精品99久久久久久 | 国产欧美精品一区 | 噜噜噜色网 | 久久精品一区二区三区四区 | 日韩精品免费视频 | 久久国产精品-久久精品 | 久久久一区二区三区四区 | 国产精品视频一区二区三区四蜜臂 | 日韩精品无码一区二区三区 | 亚洲永久免费观看 | 久久伊| 欧美一级免费看 | 亚州中文|