C51 单片机开发蓝牙模块发送数据

共 1929字,需浏览 4分钟

 ·

2024-07-22 07:30

公众号文章同步阅读网址:www.netor0x86.com

闲话1:有很多知识,在跟着学的时候可能只能去记结果,为什么这么做可能讲的人也不知道。问其原理,讲的人也只能说“遇到这个,这么做就行了”。直到有一天,无意中看到了相关理论,理论可能很复杂,还理解不了,但是当你想起当时只能跟着做的东西后,会醍醐灌顶的感觉!

闲话2:嵌入式的内容整理了不少了,打算再发一些嵌入式的内容后,开始整理一些关于 C 语言的内容,有留言和加好友的朋友提过这个事情,我之前也有所打算。我会整理一些关于 Linux 下 C 语言和 Windows 下的 C 语言的内容,其实 C 语言的语法是一样的。区分 Windows 和 Linux 是一些系统调用或 API 不太一样吧。还有就是关于编译器也有一些差异。看情况吧!

上篇文章整理了关于超声波测距传感器 HC-SR04 这个模块,本篇文章来完成一个它的基本编程。

0x01:蓝牙模块的连线

在上篇文章中已经介绍过,蓝牙模块的收发数据分别是 TX 和 RX 针脚。而接线的方式,是单片机的 RX 接蓝牙模块的 TX,单片机的 TX 接蓝牙模块的 RX。这种方式称为交叉连接。

我们看一下连接的情况,如下图:


图片不是很清楚,但是从连线可以看出,橙色的线在蓝牙模块接的是 RXD,橙色的线在单片机上接的是 TXD,黄色的线在蓝牙模块接的是 TXD,黄色的线在单片机上接的是 RXD。

这就是交叉连接。

0x02:手机连接蓝牙模块

手机连接蓝牙模块也比较简单,因为有现成的 APP 可以使用。这里使用蓝牙模块带的 APP 来进行连接,如下图所示。

从图中可以看到,第二个就是 HC-08 蓝牙模块,点击就可以进行连接。

连接后竟然有神奇的一幕发生了。如下图所示。

可以看到,在 APP 的窗口中已经收到数据了,还是 Hello World。这么神奇吗?

为什么这么神奇?因为单片机中烧录的仍然是上次串口通信的代码。那为什么上次串口通信的代码可以通过蓝牙把数据发送到手机呢?我就不解释了,问问某个 AI 助手吧!

C51单片机发往SBUF(串行通信特殊功能寄存器)的内容能够通过蓝牙模块发送出去,是因为蓝牙模块与C51单片机之间建立了串口通信连接。这种连接允许数据在单片机和蓝牙模块之间双向传输。具体来说,当C51单片机想要发送数据时,它会将数据写入到SBUF寄存器中。由于蓝牙模块与单片机的串口相连,并且蓝牙模块已经配置为适当的通信模式(例如,作为从设备等待数据),因此当数据写入SBUF时,它会被串口硬件自动发送到连接的蓝牙模块。蓝牙模块接收到来自单片机的数据后,会将其转换为无线信号并通过蓝牙协议发送出去。在接收端,另一个蓝牙设备(如智能手机、平板电脑或其他蓝牙模块)可以接收并解析这些无线信号,从而获取原始数据2。需要注意的是,为了使蓝牙模块能够正确地接收和发送数据,需要确保蓝牙模块与C51单片机的串口配置参数(如波特率、数据位、停止位等)相匹配。此外,还需要根据蓝牙模块的具体型号和文档进行正确的初始化和配置12。总之,C51单片机发往SBUF的内容能够通过蓝牙模块发送出去,是因为蓝牙模块与单片机之间建立了串口通信连接,并且蓝牙模块被配置为能够接收和发送数据。

而且,在发给蓝牙模块的时候,还可以发给 PC,打开 STC-ISP 可以进行查看,这里就不贴图了。


0x03:用手机控制 LED 灯

既然单片机中烧录的代码仍然是以前的代码,那么是不是通过 open 和 close 可以控制板子上的灯呢?是可以的!

原来蓝牙的使用这么简单!掌握了串口通信的代码,就掌握了蓝牙通信!


我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!

我的网站:https://www.netor0x86.com

我录制的视频课程:

1. 入门级栈溢出分析

2. WEB端获取MAC地址真实项目案例

3. PHP扩展模块开发之DLL编写与调用

4. C语言零基础入门教程

5. PE 文件结构初识与二进制手写可执行程序

浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报