学习STC51单片机21(芯片为STC89C52RCRC)
每日一言
与其焦虑未来,不如专注当下,把每件小事做到极致。
蓝牙模块
HC-08
蓝牙模块的话总结一句串口会了,蓝牙模块就会了
因为就我们这样的水平还是一个小卡拉米研究不了蓝牙的,研究蓝牙的都是高精尖的蓝牙的工程师,他们去做的
我们最多就连接一下,会简单使用就好了
我们怎么使用呢
杜邦线连接图如下:
简单的就是说5v对应vcc GND对应GDN 毋庸置疑, RXD对应TXD TXD对应RXD 因为串口连接是交叉的
然后这个HC08呢需要下载一个蓝牙助手APP去WWW.hc01.com下载就好了
进入软件后连接HC08蓝牙就好了
这个是页面显示,那么就说明成功了
然后我们可以发送 open 测试一下是否可以用蓝牙给单片机发送信息
原理就是手机上发信号,蓝牙模块收到信号后,蓝牙的TXD传信号给单片机的RXD 然后单片机去执行代码程序,实现了信息的交互,与之同时,单片机的TXD发送helloword到蓝牙模块的RXD ,蓝牙模块再发送到手机
,蓝牙模块再发送到手机,那么单片机收到了就执行相应的代码了
以上的单片机与蓝牙模块的 相互的TXD和RXD是同时进行的
那么我们又会发现诶??为什么pc端的串口助手的接收缓冲区也会有信息,而且是和蓝牙的一样的!为什么啊??
解释::
1. 核心原理:双向透传
蓝牙模块(如 HC-08)本质上是一个无线串口转换器,它的 RXD/TXD 引脚与单片机的串口直接相连,形成 “无线串口”:
- 双向透明传输:
- 手机→单片机:手机发送的数据被 HC-08 接收,通过 TXD 引脚传给单片机的 RXD。
- 单片机→手机:单片机通过 TXD 发送的数据,被 HC-08 的 RXD 接收,再通过蓝牙发给手机。
- 单片机→PC:单片机通过 TXD 发送的数据,同时通过串口线传给 PC 的串口调试助手(如 STC-ISP)。
2. 为什么两边都能看到数据?
(1)发送逻辑的 “广播” 特性:
你的代码中,单片机通过串口发送的任何数据(如sendString("helloworld"))都会同时被:
- HC-08 接收并转发给手机 APP。
- PC 串口接收并显示在 STC-ISP 中。
(2)接收数据的 “共享” 特性:
当手机 APP 发送数据时,数据通过 HC-08 到达单片机的 RXD 引脚。如果代码中有接收处理(如if(RI == 1)),单片机可能会根据指令执行操作,并通过 TXD回传响应(如"OK: LED ON"),这些响应同样会被两边接收。
3. 示意图
[手机APP] ←→ [蓝牙无线] ←→ [HC-08] ←→ [单片机串口] ←→ [PC串口(STC-ISP)]
↑ ↑
└─── 双向透传 ────────┘
- 关键点:
单片机的串口是 “共享” 的,任何通过它发送的数据都会被连接到该串口的所有设备(HC-08 和 PC)接收。
这个是HC08蓝牙模块的资料包
记住这一款蓝牙的晶振是11.0592Mhz 还有波特率初始值也是9600 所以非常适合我们的以往对单片机的设置,所以这也是蓝牙可以进行通信的重要手段
硬件:USB转TTL电平的ch340
这个硬件是干嘛的呢,是由于你现在没有单片机的环境,或者是单片机上没有ch340这个芯片,那么我们就需要买一个这个来进行连接,当然如果单片机上面有ch340且有单片机的环境,那么你也可以不用买这个USB转TTL模块,
这边我们是用这个模块直接连接蓝牙模块,比较简单也不用写程序...
PC输入AT指令修改蓝牙名字
以下是AT指令
只要发送完之后接收缓冲区显示oksetName那就是成功了,那么你的蓝牙名字就会改变成你想要的那个了
- PC 发送指令 → 通过串口(USB 转 TTL)将 AT 指令(如AT+NAME=SJT123)传输到蓝牙模块。
- 模块解析指令 → 蓝牙模块内部的 MCU 解析指令,执行对应操作(如修改名称、波特率等)。
- 模块返回结果 → 操作完成后,模块通过串口返回状态码(如OK表示成功,ERROR表示失败),部分指令会附带执行结果(如修改后的参数值)。
- PC 接收显示 → 串口工具将模块返回的数据显示在接收缓冲区。
我们修改后手机上的蓝牙名字就会修改了