找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17380|回复: 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)

评分

参与人数 4黑币 +18 收起 理由
1184253162 + 5 很给力!
六阿朱 + 5
qtx + 5 很给力!
Bylee + 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 单片机教程网

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