C51单片机利用HC-05蓝牙模块实现手机点灯

article/2025/10/11 22:22:51

蓝牙通信,实现手机端远程(15米)控制单片机,这听起来对于初学者的我来说,是那么不可思议,经过不断地实验,阅读其他大佬的文章,终于实现了。

在有基础的通信原理知识的前提下,知,HC-05蓝牙模块与51的通信其实很简单,就是蓝牙模块的RXD(接收端)接单片机的TXD(发送端),同样,TXD接RXD。

51单片机的P3^0为其R XD,P3^1为其TXD。

接线如图所示:

手机端我推荐使用SPP蓝牙串口,界面简单清晰,适合初次使用HC-05的同学,长这样:

给蓝牙模块接上电后就可以在这个软件上找到它的信号了,可以直接连接。(接电后未连接的情况下模块会持续闪烁,连接成功后后闪烁频率降低)。

原理图:(不好意思,画图能力有限),功能实现的原理大致就是手机端通过软件控制HC-05蓝牙模块,手机端发送数据给蓝牙模块,实际就成为蓝牙模块发送数据给单片机,同样单片机也能发送数据给蓝牙模块,即双方通过TXD,RXD都能发送和接收。

利用此原理,我们就可以这样编写代码来设计单片机:当接收到什么数据的时候,做出什么反应,就可以实现手机点灯了。

dat为接收到的数据
switch(dat)
{case 1:......//当dat=1时case 2:......//当dat=2时case 3:......//..................
}

数据的发送与接收是通过串口通信实现的,所以我们需对串口初始化,写中断函数。

工程总代码如下:

#include <REGX52.H>
#include <stdlib.h>
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;
sbit LED6=P2^5;
sbit LED7=P2^6;
sbit LED8=P2^7;
unsigned char dat;
void UART_init()    //设置串行通信 本晶振为11.0592MHZ
{TMOD = 0x20;TH1 = 0xfd;TL1 = 0xfd;  //波特率9600SM0 = 0;  SM1 = 1;   // 串口工作方式1 10位异步REN = 1;  //串口允许接收TR1 = 1;EA = 1;ES =1 ;  //串口中断
}void UART_SendByte(unsigned char Byte)  //字节的发送
{SBUF = Byte;while(TI == 0);//当数据发送完成时,TI会变为一TI = 0; 
}void main()
{UART_init();LED1=1,LED2=1,LED3=1,LED4=1,LED5=1,LED6=1,LED7=1,LED8=1;while(1){switch(dat){case 1 :{LED1=0;break;}case 2 :{LED2=0;break;}case 3 :{LED3=0;break;}case 4 :{LED4=0;break;}case 5 :{LED5=0;break;}case 6 :{LED6=0;break;}case 7 :{LED7=0;break;}case 8 :{LED8=0;break;}}}}void UART_INTERRUPT() interrupt 4{      if(RI==1)//RI=1时表示接收到了数据{dat = SBUF;//创建变量dat接收缓存区的数据,实现接收。RI = 0;  UART_SendByte(SBUF);//或SBUF = dat; 将数据放于缓冲位实现发送。}}

这样就可以实现了。

现象如下:

文章如有不对的地方,期待您的指正。


http://chatgpt.dhexx.cn/article/bB6P0cWg.shtml

相关文章

基于C51单片机的ESP8266Wifi模块(ESP-01s)编程(详细)

1、模块简介 ESP-01S 是由安信可科技开发的 Wi-Fi 模块&#xff0c;该模块核心处理器为ESP8266。ESP8266 拥有完整的且自成体系的 Wi-Fi 网络功能&#xff0c;既能够独立应用&#xff0c;也可以作为从机搭载于其他主机 MCU 运行。当 ESP8266 独立应用时&#xff0c;能够直接从外…

(可远程)开源手机app控制c51单片机,附微信小程序控制

开源手机app控制c51单片机 第一 、先上效果图第二、原理讲解第三、下载程序到c51第四 app inventor 开发第五、微信小程序开发第六 可能遇到的一些小问题 第一 、先上效果图 第二、原理讲解 原理简述&#xff1a;利用发布订阅模式。第一步&#xff0c;新建主题&#xff0c;第二…

java实例内部类

内部类&#xff1a;可以将一个类定义在另一个类或者一个方法的内部。描述一个事物的一个完整结构的描述。内部类包括&#xff1a;实例内部类&#xff08;普通内部类&#xff09;&#xff0c;静态内部类&#xff0c;局部内部类&#xff08;定义在方法里&#xff0c;几乎不用&…

Java内部类介绍 - 局部内部类和匿名内部类

文章目录 内部类局部内部类匿名内部类匿名内部类介绍常见的使用形式开发中使用场景 内部类 局部内部类 局部内部类 &#xff08;鸡肋语法&#xff0c;了解即可&#xff09; 局部内部类, 在方法、代码块、构造器等执行体中创建一个类, 称为为局部内部类(但是我们一般都不会这样…

夯实Java基础系列8:深入理解Java内部类及其实现原理

本系列文章将整理到我在GitHub上的《Java面试指南》仓库&#xff0c;更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star、Fork、Watch三连哈&#xff0c;感谢你的支持。 文章首发于我的个人博客&#xff1a; www.how2playlife.c…

初识JAVA内部类

1 内部类概述 如果一个类存在的意义就是为指定的另一个类&#xff0c;可以把这个类放入另一个类的内部。 就是把类定义在类的内部的情况就可以形成内部类的形式。 A类中又定义了B类&#xff0c;B类就是内部类,B类可以当做A类的一个成员看待: 2 特点 1) 内部类可以直接访问外…

java 内部类怎么调用成员变量_JAVA内部类之成员内部类

JAVA有一个特殊的类形式——内部类(这个词有点为难普通话不好的南方朋友)。今天我们就来聊聊内部类的一种&#xff1a;成员内部类。 如何定义成员内部类 那要如何定义成员内部类呢。 既然叫成员内部类&#xff0c;说明和成员变量是有类似的地方。从代码的层次结构上来看他是和成…

Java内部类(匿名内部类)

Java内部类&#xff08;匿名内部类&#xff09; 一、内部类二、静态内部类三、成员内部类四、局部内部类&#xff08;了解即可&#xff09;五、匿名内部类&#xff08;重要&#xff09; 一、内部类 1、概述 内部类就是一个定义在一个类里面的类&#xff0c;里面的类可以理解为…

Java 内部类的四种实现方式

Java 内部类的四种实现方式 前言 今天的话我将为大家介绍Java的四种内部类&#xff0c;他们分别是普通内部类&#xff0c;静态内部类&#xff0c;局部内部类&#xff0c;匿名内部类。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、内部类是什么&…

Java内部类

Java内部类 内部类成员内部类局部内部类匿名内部类静态内部类常规面试案例内部类实例化对象重名变量的引用 内部类 是什么&#xff1f; 字面意思&#xff0c;在类的内部编写的类就叫内部类&#xff01; 为了方便区分、学习、理解我们一般将内部类分为以下几种&#xff01; 内部…

java内部类赋值_详解 Java 内部类

内部类在 Java 里面算是非常常见的一个功能了,在日常开发中我们肯定多多少少都用过,这里总结一下关于 Java 中内部类的相关知识点和一些使用内部类时需要注意的点。 从种类上说,内部类可以分为四类:普通内部类、静态内部类、匿名内部类、局部内部类。我们来一个个看: 普通…

java new 一个内部类_java内部类

java内部类的几种类型:成员内部类,静态内部类,方法内部类,匿名内部类。 成员内部类:成员内部类是类内部的非静态类。成员内部类不能定义静态方法和变量(final修饰的除外)。这是因为成员内部类是非静态的,类初始化的时候先初始化静态成员,如果允许成员内部类定义静态变量…

java中的内部类

java中的内部类主要分为两类四种&#xff1a; 第一类&#xff1a;定义在外部类局部位置上&#xff0c;分为局部内部类( 有 类名)、匿名内部类(没有类名)。 第二类&#xff1a;定义在外部类的成员位置上&#xff0c;分为成员内部类(没有static修饰)、静态内部类(使用static修饰…

java内部类最全详解

1、成员内部类 内部类与外部类的关系 a.成员内部类的创建需要依赖于外部类对象-&#xff08;成员方法必须通过对象调用&#xff09;&#xff0c;在没有外部类实例之前无法创建成员内部类对象 b.内部类与外部类相对独立&#xff0c;不是is a 的关系&#xff08;发动机-汽车&am…

Java内部类详解(含:成员内部类、局部内部类、匿名内部类、静态内部类)

内部类是什么&#xff1f; 字面意思&#xff0c;在类的内部编写的类就叫内部类&#xff01;即一个类的内部又完整的嵌套了另一个类结构&#xff0c;被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。 内部类是类的第五大成员→【提示:类的五大成员…

分享15款很棒的 JavaScript 开发工具javascript

在开发中,借助得力的工具可以事半功倍。今天,这篇文章向大家分享最新收集的15款非常有用的 javascript 开发工具。 testswarm: continious & distributed js testing testswarm是mozilla实验室推出的一个开源项目,它旨在为开发者提供在多个浏览器版本上快速轻松测试自己j…

27 个面向开发人员的最佳 Vue.js 开发工具

英文 | https://javascript.plainenglish.io/best-27-vuejs-development-tools-for-developers-bd972bb5f573 01、BootstrapVue 地址&#xff1a;https://bootstrap-vue.org/ 一个用于 Vue.js 构建引导接口的开源库。 02、Vuex 地址&#xff1a;https://vuex.vuejs.org/ Vue.js…

15 款非常有用的 JavaScript 开发工具

开发者有个趁手的工具将事半功倍。今天这篇文章分享给大家最新的15款非常有用的JavaScript 开发工具。 列表如下&#xff1a; TestSwarm: Continious & Distributed JS Testing TestSwarm提供分布式的JavaScript持续集成测试。最初它的创造者John Resig只是将它作为…

03【WebStorm开发工具】

上一篇&#xff1a;02【HTML快速入门】 下一篇&#xff1a;04【】 目录&#xff1a;【HTML5系列教程】 文章目录 三、WebStorm开发工具3.1 WebStorm简介3.2 WebStorm安装3.3 WebStorm基本使用3.3.1 创建项目3.3.2 调整字体大小3.3.3 代码自动补全3.3.4 WebStorm常用快捷键 三…

web开发者工具 js

作为Web开发人员&#xff0c;我为什么喜欢Google Chrome浏览器 【原文地址&#xff1a;http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.html 】 在Google Chrome浏览器出来之前&#xff0c;我一直使用FireFox&#xff0c;因为FireFox的插件非常丰富&#xff0c;更…