找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13012|回复: 13
打印 上一主题 下一主题
收起左侧

用手机控制的蓝牙小车制作教程与单片机源码及APP等资料

  [复制链接]
跳转到指定楼层
楼主
只是简单的用手机控制小车前进,后退,转弯
有什么不懂得请留言

电路原理图如下:


安卓app:


实物图:


蓝牙小车单片机源程序如下:
  1. #include <reg51.h>

  2. void UsartConfiguration();
  3. unsigned char num;


  4. void delay(unsigned int i)                //延时函数,下面我说的500毫秒,现实不是500毫秒,方便大家理解而已
  5. {
  6.         unsigned int k;
  7.         for (k=0;k<i;k++);
  8. }


  9. void main()                        //主函数
  10. {

  11.         UsartConfiguration();                                //调用蓝牙接受的参数

  12.         while(1)
  13.         {
  14. /**********************直走*************************************/
  15.                 if(num == 'q')                                //如果蓝牙接收到q字母,就执行下面的指令
  16.                 {
  17.                         delay(500);                                        //延时一下
  18.                         if(num == 'q')
  19.                         {                                                                                                        //p1        1 1 1 1                        分别对应1234号马达
  20.                                 P1=0x0f;                                                                //                0 0 0 0                        上面是高电平,下面是低电平,四个马达都会向前开
  21.                                 delay(500);                                                        //延时降速,如果L298N是接12V的电源,那么马达的电压是12v,速度太快了,需要降速
  22.                                 P1=0x00;                                                                //这里降速的原理是让马达转500毫秒,停一下,转500毫秒,停一下,转500毫秒,停一下,从而达到降速的效果
  23.                         }
  24.                 }
  25. /*****************************后退    ***************/
  26.                
  27.                 if(num == 'h')                        //如果蓝牙接收到h字母,就执行下面的指令
  28.                 {
  29.                         delay(500);
  30.                         if(num == 'h')
  31.                         {                                                                                                                                        //p1        0 0 0 0                        分别对应1234号马达
  32.                                 P1=0xf0;                                                                                                //                1 1 1 1                        上面是低电平,下面是高电平,四个马达都会向后开
  33.                                 delay(500);
  34.                                 P1=0x00;
  35.                         }
  36.                 }
  37. /*****************原地左转  原地左转  原地左转  原地左转  原地左转  原地左转  原地左转  原地左转  原地左转  *****************/
  38.                
  39.                 if(num == 'z')                                        //如果蓝牙接收到z字母,就执行下面的指令
  40.                 {
  41.                         delay(500);
  42.                         if(num == 'z')
  43.                         {                                                                                                                //p1  0 1 0 1                                马达2 4向前开,马达1 3向后开
  44.                                 P1=0x5a;                                                                        //    1 0 1 0
  45.                                 delay(500);
  46.                                 P1=0x00;
  47.                         }
  48.                 }
  49. /****************原地右转   ************************************/
  50.                 if(num == 'y')                                        //如果蓝牙接收到y字母,就执行下面的指令
  51.                 {
  52.                         delay(500);
  53.                         if(num == 'y')
  54.                         {                                                                                                                //P1 1 0 1 0                        马达13向前开,马达24向后开
  55.                                 P1=0xa5;                                                                        //         0 1 0 1
  56.                                 delay(500);
  57.                                 P1=0x00;
  58.                         }
  59.                 }
  60. /****************向左开  ******************************/
  61.                
  62.                 if(num == 'a')                                        //如果蓝牙接收到a字母,就执行下面的指令
  63.                 {
  64.                         delay(500);
  65.                         if(num == 'a')
  66.                         {
  67.                                 P1=0x5a;                                                //小车左转600毫秒
  68.                                 delay(600);
  69.                                 P1=0x0f;                                                //小车直行1200毫秒
  70.                                 delay(1200);
  71.                                 P1=0x00;        
  72.                                 
  73.                         }
  74.                 }
  75. /****************向右开*****************************/
  76.                 if(num == 'b')                                        //如果蓝牙接收到b字母,就执行下面的指令
  77.                 {
  78.                         delay(500);
  79.                         if(num == 'b')
  80.                         {
  81.                                 P1=0xa5;
  82.                                 delay(600);
  83.                                 P1=0x0f;
  84.                                 delay(1200);
  85.                                 P1=0x00;        
  86.                         }
  87.                 }
  88. /******************没指令的时候停车***************************/
  89.                
  90.                 if(num == '0')                                        //如果蓝牙接收到数字0,就执行下面的指令
  91.                 {
  92.                         P1=0x00;                                                        //p1的8个口都是低电平,小车停下来
  93.                 }
  94.         }

  95. }



  96. void UsartConfiguration()
  97. {

  98.         SCON=0x50;                //设置为工作方式1               

  99.         TMOD=0x20;                //设置为工作方式2

  100. //        PCON=0x80;                //波特率加倍

  101.         TH1=0xFD;                //计数器初值设置,波特率是4800

  102.         TL1=0xFD;

  103.         ES=1;                        //开中断

  104.         EA=1;                                                

  105.         TR1=1;                        //开计数器

  106. }

  107. void interrupt_uart() interrupt 4 //using1切换寄存器组到1,进入中断就要判断是发送中断TI,还是接收中断RI。
  108. {   
  109.     if(TI)  //判断是否为发送端TI中断,中断结束之后,只需发送端清零,表示发送完成。
  110.    {
  111.      TI = 0;
  112.      REN = 1;  // ******允许接收数据。 *******
  113.    }         
  114.    if(RI) //判断是否为接收端RI中断,中断结束之后,只需接收端清零,表示接收完成。
  115.    {
  116.      RI = 0; //只要数据接收端清零,就可以取出数据。
  117.            num = SBUF;         //SBUF取数据            
  118.            SBUF = num;         //*******把数据num从SBUF送出去。************
  119.            REN = 0;        //严谨的写法,发送数据的时候禁止接收数据。
  120.    }
  121.         //发送的时候不接收数据 ,发送完了再接收数据。            
  122. }
复制代码


所有资料51hei提供下载:
蓝牙小车教程.rar (7.76 MB, 下载次数: 343)


评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏16 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:192020 发表于 2018-10-16 13:03 | 只看该作者
谢谢分享
回复

使用道具 举报

板凳
ID:413883 发表于 2018-10-23 10:43 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

地板
ID:351567 发表于 2018-11-16 21:21 | 只看该作者
app在哪下载
回复

使用道具 举报

5#
ID:429579 发表于 2018-11-19 22:55 | 只看该作者
想学习一下,但是不懂编程
回复

使用道具 举报

6#
ID:435149 发表于 2018-11-28 20:10 | 只看该作者
小车用的什么芯片
回复

使用道具 举报

7#
ID:383374 发表于 2018-12-10 22:30 | 只看该作者
白白下,根本就是没有用的东西

评分

参与人数 1黑币 +10 收起 理由
lxa0 + 10 赞一个!

查看全部评分

回复

使用道具 举报

8#
ID:383374 发表于 2018-12-10 22:31 | 只看该作者
没用,蓝牙源代码都没有
回复

使用道具 举报

9#
ID:546398 发表于 2019-5-24 17:01 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

10#
ID:706455 发表于 2020-3-11 16:03 | 只看该作者
还不错噢!!!!
回复

使用道具 举报

11#
ID:707033 发表于 2020-3-12 15:05 | 只看该作者
果断收藏赞
回复

使用道具 举报

12#
ID:702057 发表于 2020-3-13 11:07 | 只看该作者
谢谢分享
回复

使用道具 举报

13#
ID:618406 发表于 2020-4-27 13:46 | 只看该作者
果断收藏赞
回复

使用道具 举报

14#
ID:74784 发表于 2021-3-8 23:54 | 只看该作者
白白下,根本就是没有用的东西!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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