单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:18500|回复:30

51单片机蓝牙Android安卓控制小车 带APP 下位机源码

 [复制链接]
ID:202299发表于 2017-5-26 10:58|显示全部楼层
分享一个51单片机做的蓝牙Android控制的智能小车 有安卓APP和单片机下位机的代码 详细内容见附件

版权所有:厦门智控

给出发送控制命令字符,大家都可以二次开发,欢迎使用
0.png

Android安卓小车连接教程(完整版请下载附件)
0.png
0.png
0.png
0.png

单片机源程序如下:
  1.      /****************************************************************************
  2.        简单寻迹程序:接法
  3.       
  4.      EN1 EN2 PWM输入端,本程序不输入PWM,直接使插上跳线帽,使能输出,这样就能全速运行

  5.        无线摇控模块与单片机连接
  6.        无线模块GND +5取自于单片机板的5V输出
  7.        P0_7 与无线模块D0相连
  8.        P0_6 与无线模块D1相连
  9.        P0_5 与无线模块D2相连
  10.        P0_4 与无线模块D3相连

  11.      P1_0 P1_1 接IN1  IN2   当 P1_0=1,P1_1=0; 时左上电机正转     左上电机接驱动板子输出端(蓝色端子OUT1 OUT2)
  12.        P1_0 P1_1 接IN1  IN2   当 P1_0=0,P1_1=1; 时左上电机反转    

  13.        P1_0 P1_1 接IN1  IN2   当 P1_0=0,P1_1=0; 时左上电机停转    

  14.        P1_2 P1_3 接IN3  IN4   当 P1_2=1,P1_3=0; 时左下电机正转     左下电机接驱动板子输出端(蓝色端子OUT3 OUT4)
  15.        P1_2 P1_3 接IN3  IN4   当 P1_2=0,P1_3=1; 时左下电机反转  

  16.        P1_2 P1_3 接IN3  IN4   当 P1_2=0,P1_3=0; 时左下电机停转    

  17.        P1_4 P1_5 接IN5  IN6   当 P1_4=1,P1_5=0; 时右上电机正转     右上电机接驱动板子输出端(蓝色端子OUT5 OUT6)
  18.        P1_4 P1_5 接IN5  IN6   当 P1_4=0,P1_5=1; 时右上电机反转

  19.        P1_4 P1_5 接IN5  IN6   当 P1_4=0,P1_5=0; 时右上电机停转

  20.        P1_6 P1_7 接IN7  IN8   当 P1_6=1,P1_7=0; 时右下电机正转     右下电机接驱动板子输出端(蓝色端子OUT7 OUT8)
  21.        P1_6 P1_7 接IN7  IN8   当 P1_6=0,P1_7=1; 时右下电机反转

  22.        P1_6 P1_7 接IN7  IN8   当 P1_6=0,P1_7=0; 时右下电机停转
  23.   

  24.      P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1
  25.      P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2    
  26.      P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3
  27.        P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4
  28.        四路寻迹传感器有信号(白线)为0  没有信号(黑线)为1
  29.        四路寻迹传感器电源+5V GND 取自于单片机板靠近液晶调节对比度的电源输出接口

  30.                                                                                               
  31.        关于单片机电源:本店驱动模块内带LDO稳压芯片,当电池输入6V时时候可以输出稳定的5V
  32.        分别在针脚标+5 与GND 。这个输出电源可以作为单片机系统的供电电源。
  33.      ****************************************************************************/
  34.     
  35.     
  36.      #include<AT89x51.H>

  37.    #define Left_1_led       P3_4       //P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1
  38.      #define Left_2_led       P3_5       //P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2    

  39.    #define Right_1_led     P3_6       //P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3
  40.      #define Right_2_led     P3_7       //P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4

  41.      #define Left_moto_go     {P1_0=1,P1_1=0,P1_2=1,P1_3=0;}   //左边两个电机向前走
  42.      #define Left_moto_back   {P1_0=0,P1_1=1,P1_2=0,P1_3=1;}     //左边两个电机向后转
  43.      #define Left_moto_Stop   {P1_0=0,P1_1=0,P1_2=0,P1_3=0;}   //左边两个电机停转              
  44.      #define Right_moto_go     {P1_4=1,P1_5=0,P1_6=1,P1_7=0;}     //右边两个电机向前走
  45.      #define Right_moto_back   {P1_4=0,P1_5=1,P1_6=0,P1_7=1;}     //右边两个电机向前走
  46.      #define Right_moto_Stop   {P1_4=0,P1_5=0,P1_6=0,P1_7=0;}     //右边两个电机停转  

  47.      #define left     'C'
  48.    #define right   'D'
  49.      #define up     'A'
  50.    #define down     'B'
  51.      #define stop     'F'

  52.      char code str[] =  "收到指令,向前!\n";
  53.      char code str1[] = "收到指令,向后!\n";
  54.      char code str2[] = "收到指令,向左!\n";
  55.      char code str3[] = "收到指令,向右!\n";
  56.      char code str4[] = "收到指令,停止!\n";

  57.      bit  flag_REC=0;
  58.      bit  flag   =0;  
  59.     

  60.      unsigned char  i=0;
  61.      unsigned char  dat=0;
  62.    unsigned char  buff[5]=0; //接收缓冲字节


  63.   
  64. /************************************************************************/    
  65. //延时函数    
  66.    void delay(unsigned int k)
  67. {  
  68.      unsigned int x,y;
  69.        for(x=0;x<k;x++)
  70.        for(y=0;y<2000;y++);
  71. }

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

  99.                void send_str2( )
  100.              // 传送字串
  101.    {
  102.          unsigned char i = 0;
  103.          while(str2[i] != '\0')
  104.        {
  105.          SBUF = str2[i];
  106.          while(!TI);                 // 等特数据传送
  107.          TI = 0;                     // 清除数据传送标志
  108.          i++;                     // 下一个字符
  109.        }    
  110.    }    
  111.             
  112.                void send_str3()
  113.              // 传送字串
  114.    {
  115.          unsigned char i = 0;
  116.          while(str3[i] != '\0')
  117.        {
  118.          SBUF = str3[i];
  119.          while(!TI);                 // 等特数据传送
  120.          TI = 0;                     // 清除数据传送标志
  121.          i++;                     // 下一个字符
  122.        }    
  123.    }    

  124.          void send_str4()
  125.              // 传送字串
  126.    {
  127.          unsigned char i = 0;
  128.          while(str4[i] != '\0')
  129.        {
  130.          SBUF = str4[i];
  131.          while(!TI);                 // 等特数据传送
  132.          TI = 0;                     // 清除数据传送标志
  133.          i++;                     // 下一个字符
  134.        }    
  135.    }    
  136.             
  137.             
  138. /************************************************************************/
  139. //前速前进
  140.      void  run(void)
  141. {
  142.   
  143.        Left_moto_go ;   //左电机往前走
  144.        Right_moto_go ;  //右电机往前走
  145. }

  146. //前速后退
  147.      void  backrun(void)
  148. {
  149.   
  150.        Left_moto_back ;   //左电机往前走
  151.        Right_moto_back ;  //右电机往前走
  152. }

  153. //左转
  154.      void  leftrun(void)
  155. {
  156.   
  157.        Left_moto_back ;   //左电机往前走
  158.        Right_moto_go ;  //右电机往前走
  159. }

  160. //右转
  161.      void  rightrun(void)
  162. {
  163.   
  164.        Left_moto_go ;   //左电机往前走
  165.        Right_moto_back ;  //右电机往前走
  166. }
  167. //STOP
  168.      void  stoprun(void)
  169. {
  170.   
  171.        Left_moto_Stop ;   //左电机往前走
  172.        Right_moto_Stop ;  //右电机往前走
  173. }
  174. /************************************************************************/
  175. void sint() interrupt 4       //中断接收3个字节
  176. {

  177.    if(RI)                 //是否接收中断
  178.    {
  179.      RI=0;
  180.      dat=SBUF;
  181.      if(dat=='O'&&(i==0)) //接收数据第一帧
  182.        {
  183.          buff[i]=dat;
  184.          flag=1;       //开始接收数据
  185.        }
  186.      else
  187.      if(flag==1)
  188.      {
  189.      i++;
  190.      buff[i]=dat;
  191.      if(i>=2)
  192.      {i=0;flag=0;flag_REC=1 ;}  // 停止接收
  193.      }
  194.        }
  195. }
  196. /*********************************************************************/          
  197. /*--主函数--*/
  198.      void main(void)
  199. {
  200.      TMOD=0x20;  
  201.    TH1=0xFd;             //11.0592M晶振,9600波特率
  202.    TL1=0xFd;
  203.    SCON=0x50;  
  204.    PCON=0x00;
  205.    TR1=1;
  206.      ES=1;  
  207.    EA=1;  
  208.       
  209.      while(1)                             /*无限循环*/
  210.      {
  211.        if(flag_REC==1)                     //
  212.        {
  213.          flag_REC=0;
  214.          if(buff[0]=='O'&&buff[1]=='N')     //第一个字节为O,第二个字节为N,第三个字节为控制码
  215. ……………………

  216. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png
所有资料51hei提供下载:
Android 控制小车实例.zip(2.7 MB, 下载次数: 325)

评分

黑币 +18
收起理由
+ 5
很给力!
+ 5
qtx
+ 5
很给力!
+ 3
共享资料的黑币奖励!

查看全部评分

ID:204748发表于 2017-5-27 13:04来自手机|显示全部楼层
谢谢分享。谢谢奉献。谢谢楼主。
ID:209421发表于 2017-6-11 06:24|显示全部楼层
很好的学习资料,主义很详细,适合新手。
ID:216521发表于 2017-7-4 11:33|显示全部楼层
大神这个控制单片机小车有安卓app源码么 想要学习一下呀
ID:221764发表于 2017-7-25 11:51|显示全部楼层
楼主 请问下那个蓝牙模块怎么设置
ID:225338发表于 2017-8-7 04:53来自手机|显示全部楼层
蓝牙很好设置,就是程序比较好
ID:229832发表于 2017-8-29 11:16|显示全部楼层
很好的哈哈哈哈
ID:230930发表于 2017-9-4 17:15|显示全部楼层
学习一下
ID:242216发表于 2017-10-24 16:09|显示全部楼层
请问HC—05蓝牙可以吗
ID:243972发表于 2017-10-29 18:59|显示全部楼层
支持一下呵呵
ID:246533发表于 2017-11-8 14:18|显示全部楼层
学习一下,谢谢楼主。请问怎么用蓝牙模块。。小白
ID:252185发表于 2017-11-22 10:53|显示全部楼层
哇一个小白看不懂
ID:261712发表于 2017-12-14 19:59|显示全部楼层
很棒!
ID:265963发表于 2017-12-24 12:07|显示全部楼层
楼主我设置后也是未连接 但要怎么连接上
ID:291431发表于 2018-3-13 18:59|显示全部楼层
蓝牙很好设置,就是程序比较好
ID:65956发表于 2018-4-3 10:39|显示全部楼层
不错啊,下载下来学习学习了,谢谢
ID:213231发表于 2018-4-7 09:45|显示全部楼层
很完整啊,学习到了
ID:302480发表于 2018-4-8 12:10|显示全部楼层
非常不错的帖子,顶 赞 楼主。666666666666666
ID:240002发表于 2018-4-9 23:19|显示全部楼层
谢谢楼主,学习到了,
ID:310550发表于 2018-4-19 11:53|显示全部楼层
谢谢楼主
ID:310550发表于 2018-4-19 23:26|显示全部楼层
请问楼主,app界面的数字 1 2 3 4 5 6 7 8 9 0有什么作用?求帮解答。。。。万分感谢楼主
ID:313021发表于 2018-4-21 13:28|显示全部楼层
进行学习,可是积分不够
ID:148934发表于 2018-5-8 17:34|显示全部楼层
回复字吃一下 感谢分享
ID:344560发表于 2018-6-4 12:17来自手机|显示全部楼层
挺牛的,我感觉这个很有趣
ID:347672发表于 2018-6-8 21:57|显示全部楼层

楼主我设置后也是未连接 但要怎么连接上
ID:409293发表于 2018-10-15 01:32来自手机|显示全部楼层
多谢多谢!
ID:409824发表于 2018-10-15 11:02来自手机|显示全部楼层
很好的学习资料,主义很详细,适合新手。
ID:130231发表于 2018-10-30 00:54|显示全部楼层
要是有语音识别控制就好了,请问楼主可做吗
ID:457189发表于 2019-2-12 00:52|显示全部楼层
还是很不错的
ID:457189发表于 2019-2-12 00:54|显示全部楼层
要是给Android源代码就好了

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

Powered by 单片机教程网