找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2881|回复: 0
收起左侧

单片机蓝牙遥控小车程序及app下载

[复制链接]
ID:842962 发表于 2020-11-30 10:56 | 显示全部楼层 |阅读模式
  1.    
  2.         //注意程序只做参考之用,要达到最理想的效果,还需要师兄们细心调试。       
  3.         //注意蓝牙模块接线,急性之人经常接错线,烧坏模块,请一定要核对好再通电试验
  4.         /****************************************************************************
  5.          硬件连接
  6.          蓝牙有4条线定义:
  7.           VCC
  8.       GND
  9.           TDX
  10.           RXD
  11.          把蓝牙插入单片机J7接口中         --注意不要接错线,否则烧坏蓝牙模块
  12.         ****************************************************************************/

  13. #include<AT89x51.H>

  14.         //HL-1小车驱动接线定义
  15.     #define Left_moto_go     {P1_2=0,P1_3=1;}    //左边电机向前走
  16.         #define Left_moto_back    {P1_2=1,P1_3=0;}    //左边电机向后转
  17.         #define Left_moto_Stop    {P1_2=0,P1_3=0;}    //左边电机停转                     
  18.         #define Right_moto_go     {P1_6=1,P1_7=0;}        //右边电机向前走
  19.         #define Right_moto_back   {P1_6=0,P1_7=1;}        //右边电机向后走
  20.         #define Right_moto_Stop   {P1_6=0,P1_7=0;}        //右边电机停转   

  21.         #define left     'C'
  22.     #define right    'D'
  23.         #define up       'A'
  24.     #define down     'B'
  25.         #define stop     'F'

  26.         char code str[] =  "收到指令,向前!\n";
  27.         char code str1[] = "收到指令,向后!\n";
  28.         char code str2[] = "收到指令,向左!\n";
  29.         char code str3[] = "收到指令,向右!\n";
  30.         char code str4[] = "收到指令,停止!\n";

  31.         bit  flag_REC=0;
  32.         bit  flag    =0;  
  33.        

  34.         unsigned char  i=0;
  35.         unsigned char  dat=0;
  36.     unsigned char  buff[5]=0; //接收缓冲字节


  37.    
  38. /************************************************************************/       
  39. //延时函数       
  40.    void delay(unsigned int k)
  41. {   
  42.      unsigned int x,y;
  43.          for(x=0;x<k;x++)
  44.            for(y=0;y<2000;y++);
  45. }

  46. /************************************************************************/
  47. //字符串发送函数
  48.           void send_str( )
  49.                    // 传送字串
  50.     {
  51.             unsigned char i = 0;
  52.             while(str[i] != '\0')
  53.            {
  54.                 SBUF = str[i];
  55.                 while(!TI);                                // 等特数据传送
  56.                 TI = 0;                                        // 清除数据传送标志
  57.                 i++;                                        // 下一个字符
  58.            }       
  59.     }
  60.        
  61.                   void send_str1( )
  62.                    // 传送字串
  63.     {
  64.             unsigned char i = 0;
  65.             while(str1[i] != '\0')
  66.            {
  67.                 SBUF = str1[i];
  68.                 while(!TI);                                // 等特数据传送
  69.                 TI = 0;                                        // 清除数据传送标志
  70.                 i++;                                        // 下一个字符
  71.            }       
  72.     }       

  73.                           void send_str2( )
  74.                    // 传送字串
  75.     {
  76.             unsigned char i = 0;
  77.             while(str2[i] != '\0')
  78.            {
  79.                 SBUF = str2[i];
  80.                 while(!TI);                                // 等特数据传送
  81.                 TI = 0;                                        // 清除数据传送标志
  82.                 i++;                                        // 下一个字符
  83.            }       
  84.     }       
  85.                    
  86.                           void send_str3()
  87.                    // 传送字串
  88.     {
  89.             unsigned char i = 0;
  90.             while(str3[i] != '\0')
  91.            {
  92.                 SBUF = str3[i];
  93.                 while(!TI);                                // 等特数据传送
  94.                 TI = 0;                                        // 清除数据传送标志
  95.                 i++;                                        // 下一个字符
  96.            }       
  97.     }       

  98.               void send_str4()
  99.                    // 传送字串
  100.     {
  101.             unsigned char i = 0;
  102.             while(str4[i] != '\0')
  103.            {
  104.                 SBUF = str4[i];
  105.                 while(!TI);                                // 等特数据传送
  106.                 TI = 0;                                        // 清除数据传送标志
  107.                 i++;                                        // 下一个字符
  108.            }       
  109.     }       
  110.                    
  111.                    
  112. /************************************************************************/
  113. //前速前进
  114.      void  run(void)
  115. {
  116.    
  117.          Left_moto_go ;   //左电机往前走
  118.          Right_moto_go ;  //右电机往前走
  119. }

  120. //前速后退
  121.      void  backrun(void)
  122. {
  123.    
  124.          Left_moto_back ;   //左电机往前走
  125.          Right_moto_back ;  //右电机往前走
  126. }

  127. //左转
  128.      void  leftrun(void)
  129. {
  130.    
  131.          Left_moto_back ;   //左电机往前走
  132.          Right_moto_go ;  //右电机往前走
  133. }

  134. //右转
  135.      void  rightrun(void)
  136. {
  137.    
  138.          Left_moto_go ;   //左电机往前走
  139.          Right_moto_back ;  //右电机往前走
  140. }
  141. //STOP
  142.      void  stoprun(void)
  143. {
  144.    
  145.          Left_moto_Stop ;   //左电机往前走
  146.          Right_moto_Stop ;  //右电机往前走
  147. }
  148. /************************************************************************/
  149. void sint() interrupt 4          //中断接收3个字节
  150. {

  151.     if(RI)                         //是否接收中断
  152.     {
  153.        RI=0;
  154.        dat=SBUF;
  155.        if(dat=='O'&&(i==0)) //接收数据第一帧
  156.          {
  157.             buff[i]=dat;
  158.             flag=1;        //开始接收数据
  159.          }
  160.        else
  161.       if(flag==1)
  162.      {
  163.       i++;
  164.       buff[i]=dat;
  165.       if(i>=2)
  166.       {i=0;flag=0;flag_REC=1 ;}  // 停止接收
  167.      }
  168.          }
  169. }
  170. /*********************************************************************/                 
  171. /*--主函数--*/
  172.         void main(void)
  173. {
  174.         TMOD=0x20;  
  175.     TH1=0xFD;           //FD           //11.0592M晶振,9600波特率
  176.     TL1=0xFD;    //FD
  177.     SCON=0x50;  
  178.     PCON=0x00;
  179.     TR1=1;
  180.         ES=1;   
  181.     EA=1;   
  182.          
  183.         while(1)                                                        /*无限循环*/
  184.         {
  185.           if(flag_REC==1)                                    //
  186.            {
  187.                 flag_REC=0;
  188.                 if(buff[0]=='O'&&buff[1]=='N')        //第一个字节为O,第二个字节为N,第三个字节为控制码
  189.                 switch(buff[2])
  190.              {
  191.                       case up :                                                    // 前进
  192.                           send_str( );
  193.                           run();
  194.                           break;
  195.                       case down:                                                // 后退
  196.                            send_str1( );
  197.                           backrun();
  198.                           break;
  199.                       case left:                                                // 左转
  200.                            send_str3( );
  201.                           leftrun();
  202.                           break;
  203.                       case right:                                                // 右转
  204.                           send_str2( );
  205.                           rightrun();
  206.                           break;
  207.                       case stop:                                                // 停止
  208.                            send_str4( );
  209.                           stoprun();
  210.                           break;

  211.              }
  212.       
  213.                                          
  214.          }
  215.         }
  216. }       
复制代码
51hei.png

全部资料51hei下载地址:
智能小车蓝牙无线控制.zip (868.33 KB, 下载次数: 38)
51hei浏览器截图20201130105207.png

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表