蓝牙模块和51单片机的串口通信
蓝牙模块和51单片机的串口通信
运行环境:
❤ 操作系统:Windows 10 x64、安卓手机(含蓝牙APP)
❤ 实验板:普中51-单核-A2单片机(STC89C52RC-40I-PDIP40)
❤ 蓝牙模块:HC-05
❤ IDE:Keil uVision4
❤ 仿真器:setup_x64_2.8.exe
实验目的:通过手机端蓝牙APP控制51单片机D1的亮灭
一、蓝牙通讯#
蓝牙通讯工作原理请参考...
二、蓝牙模块和51单片机的接线#
蓝牙模块 | 51单片机 | 备注 |
---|---|---|
RXD | P31(即P3.1 TXD) | |
TXD | P30(即P3.0 RXD) |
三、51单片机串口通信#
❤ 51单片机串口通讯代码
/*-----------------------------------------------------------------------------
* 实验说明 : 单片机串口接收数据控制灯亮灭
* 连接方式 :
* 注 意 : 该试验使用的晶振是11.0592
*******************************************************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar PuZh[20] = "This is ok";
//--定义使用的IO--//
sbit LED=P2^0;
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
void Com_Int(void) interrupt 4
{
uchar i;
uchar receive_data;
EA = 0;
if(RI == 1) //当硬件接收到一个数据时,RI会置位
{
RI = 0;
receive_data = SBUF;//接收到的数据
if(receive_data == '1')
{
LED =0;//接收到字符'1'亮灯
}
else
{
LED =1; //其他情况灯灭
}
}
for(i=0; i<20; i++)
{
SBUF = PuZh[i]; //将要发送的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
Delay_1ms(1);
}
EA = 1;
}
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1,8位数据,可变波特率
TMOD=0X20; //设置计数器工作方式2
PCON=0X00; //波特率不加倍
TH1=0XFd; //计数器初始值设置,9600@11.0592MHz
TL1=0XFd;
TR1=1; //打开计数器
ES = 1; //开串口中断
EA = 1; //开总中断
}
void main()
{
UsartConfiguration();//初始化串口
while(1);
}
❤ 在Keil uVision4中编译后得到.hex
文件,利用烧写工具将其烧录到51单片机
四、实验结果#
操作过程:手机端蓝牙APP发送字符'1',观察51单片机情况;发送其他字符,观察51单片机情况
注意:给51单片机和蓝牙模块供电
❤ 手机端蓝牙APP控制
❤ 51单片机实物结果:
当手机端蓝牙APP发出字符'1'时,以下图片是实验现象

由实验结果可知,实验现象符合实验目的,实验成功
作者:caojun97
出处:https://www.cnblogs.com/caojun97/p/16841641.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
分类:
STC89C52RC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具