1.串口初始化

void UART_Init(void)     //函数初始化。9600bps@11.0592MHz
{PCON &= 0x7F;     //波特率不倍速SCON = 0x50;       //8位数据,可变波特率//AUXR |= 0x40;        //定时器1时钟为Fosc,即1T(删除。高级的单片机才有这个选项)//AUXR &= 0xFE;        //串口1选择定时器1为波特率发生器(删除。高级的单片机才有这个选项)TMOD &= 0x0F;     //清除定时器1模式位TMOD |= 0x20;       //设定定时器1为8位自动重装方式TL1 = 0xFD;       //设定定时初值TH1 = 0xFD;        //设定定时器重装值ET1 = 0;     //禁止定时器1中断TR1 = 1;     //启动定时器1EA=1;      // CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。ES=1;     //串行口中断允许位,ES=1,允许串行口中断,ES=0,禁止串行口中断。
}

2.配置端口及驱动程序

sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;void stop()
{IN1=0;IN2=0;IN3=0;IN4=0;
}void forward()
{IN1=1;IN2=0;IN3=1;IN4=0;
}void back()
{IN1=0;IN2=1;IN3=0;IN4=1;
}void left()
{IN1=1;IN2=0;IN3=0;IN4=0;
}void right()
{IN1=0;IN2=0;IN3=1;IN4=0;
}

3.主函数

void main()
{UART_Init();while(1){}
}

4.中断函数

void UART_Routine() interrupt 4    //8个中断请求源中的串口中断。
{unsigned char S;       //定义一个S存放 SBUF中的数据。if(RI==1)                  //判断接收中断请求标志位,TI为1 表示用开始可以开始接收了。{stop();             //电机控制,先停止再执行指令。S=SBUF;             //手机蓝牙信号发送指令 储存在SBUF中。从SBUF里面 拿出指令赋给S。switch(S)         {case ('1'):      //判断S中是不是指令“1”forward();break;case ('2'):     //判断S中是不是指令“2”back();break;case ('3'):left();break;case ('4'):right();break;case ('0'):stop();break;} RI=0;          //单片机接收中断请求标志位,接收完之后自动变为1,接收完成之后要手动置为0。为0下次才可以接收。}

注意:

1.中断函数里面的1,2,3,4,0要在手机蓝牙APP中设置。

2.手机蓝牙APP中设置,按下按键/松开按键,电机转动的。

或者按下按键电机转动,松开按键 电机停止等。


完整代码:

#include <REGX52.H>sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;void stop()
{IN1=0;IN2=0;IN3=0;IN4=0;
}void forward()
{IN1=1;IN2=0;IN3=1;IN4=0;
}void back()
{IN1=0;IN2=1;IN3=0;IN4=1;
}void left()
{IN1=1;IN2=0;IN3=0;IN4=0;
}void right()
{IN1=0;IN2=0;IN3=1;IN4=0;}void UART_Init(void)
{PCON &= 0x7F;     SCON = 0x50;       TMOD &= 0x0F;      TMOD |= 0x20;      TL1 = 0xFD;    TH1 = 0xFD;        ET1 = 0;       TR1 = 1;       EA=1;      ES=1;
}void main()
{UART_Init();while(1){}
}void UART_Routine() interrupt 4
{unsigned char S;if(RI==1)  {stop();S=SBUF;switch(S)     {case ('1'):      forward();break;case ('2'):       back();break;case ('3'):left();break;case ('4'):right();break;case ('0'):stop();break;}   RI=0;}
}

接线:

51单片机蓝牙小车接线(L298N供电,分别电源供电)

51单片机蓝牙小车程序详解相关推荐

  1. 51单片机蓝牙小车(精要版)

    51单片机蓝牙小车(精要版) 实现:通过手机与小车的蓝牙通信,实现手机控制小车前后左右的移动. 这是博主学了51单片机第一次做的单片机项目,选择了许多人喜欢的蓝牙小车作为第一个项目. 准备材料: 1. ...

  2. MATLAB与51单片机进行串口通信详解

    目录 一.51单片机与电脑进行串口通信 二.MATLAB串口通信函数 三.串口属性 四.示例Demo 4.1 MATLAB接收单片机发来的数据 4.2 MATLAB向单片机发送数据控制LED 五.总结 ...

  3. 单片机 rs232 c语言,完全手册 51单片机C语言开发详解系列之第8章 串口通讯实战—RS232...

    完全手册 51单片机C语言开发详解系列 技术凝聚实力 专业创新出版 第8章 串口通讯实战-RS232接口电路与软件设计 本章主要通过实际的例子讲解AT89S51单片机的RS232串行通讯接口设计. 随 ...

  4. 硬件篇:手把手教你制作属于你的遥控车(51单片机蓝牙小车)

    重要声明 本人为软件工程专业,硬件不是本专业的学习范畴,因为本人对硬件感兴趣,自学了部分51单片机知识,这个小车是20年上半年因为疫情被困在家中突发奇想做的,现在有空闲时间就想着写一篇博客,分享给同样 ...

  5. ws2812b程序51单片机_51单片机串口通信程序详解

    串口通信简介 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件.一般完成这种功能的电路,我们称为串行接口电路 ...

  6. 基于51单片机蓝牙小车

    文章目录 接线 电机控制模块接线(需要额外电源) 单片机接线 实物图 代码相关 目录树 .c文件 main.c Serial.c(不会参考我写的串口文章) CarTurn.c(车的相关操作) dela ...

  7. 51单片机定时器初值计算详解

    前言: 本文详细介绍了51单片机学习过程中定时器的初值计算问题以及相关概念,力求把每一个学习过程中的可能会遇到的难点说清楚,并举相关的例子加以说明.学习完毕,又顺手利用刚学到定时器的相关知识写了一个& ...

  8. 51单片机读写内部EEPROM详解

    文档共包含三个程序. 第一个程序最简单易懂,看懂了基本就会读写51单片机内部EEPROM了. 第二个程序和第一个读写EEPROM原理差不多,包含有LCD1602操作方法,有写字符串的方法. 第三个程序 ...

  9. c语言流水灯程序详细讲解,用c语言编写单片机流水灯程序详解

    用C语言编写的单片机流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. ? 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组 ...

  10. 单片机c语言程序编写步骤,用c语言编写单片机流水灯程序详解

    用C语言编写的流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组I/O口, ...

最新文章

  1. 在接触到服务器时破解密码、及改ssh端口
  2. [转]带宽计算-大B与小b的区别
  3. 赛门铁克公告:解密Kneber恶意软件
  4. 我的秋招之路之c++中static的用法
  5. repeater 的解释说明 用法
  6. python 词云手把手_手把手教你用python制作属于你的第一个词云
  7. 正文获取摘要 去除html标记
  8. 家里也是不知不觉就电脑有不能开启了
  9. Spring第三篇【Core模块之对象依赖】
  10. python 和 iphone 通过socket传数据注意
  11. Java进阶:SpringMVC文件上传
  12. jchdl - GSL实例 - LogicalLeft
  13. 数据统计学习的5个基本流程
  14. 想自学编程?这么多编程自学网站,总有一个适合你吧!
  15. 初学html 的重要知识点
  16. github官网连接超时解决方案(图解版,亲测成功)
  17. php离线bt下载,transmission + nginx = 离线BT下载站
  18. QT技巧系列(5)按时间顺序列出目录下所有的文件名
  19. 79元限抢Jeep专柜「冰丝速干裤」!穿上它让你“胯下生风”,比裸奔还爽!
  20. 最新友价T5仿虚拟交易商城网站源码+PHP内核

热门文章

  1. 【016】随缘画-根据输入文字随机生成艺术画(带算法)
  2. 4G+5G多卡聚合(弱网通信)路由器视频传输最佳选择
  3. linux卸载rpm包的命令,Linux RPM包安装、卸载和升级(rpm命令)
  4. 千万别说你会Python!如果不知道这10个Python包!
  5. 123个微信小程序源码分享(附下载)
  6. 永磁同步电机矢量控制(六)——MTPA最大转矩电流比控制
  7. SQL Server2008详细安装步骤(超详细步骤)
  8. 形式语言与自动机第一课
  9. 计算机视觉教程0-3:为何拍照会有死亡视角?详解相机矩阵与畸变
  10. 微信公众号如何开通支付功能?