51单片机 HC05蓝牙模块
一、注意事项
1、烧写程序时,要把蓝牙tx,rx信号线拔掉,对烧写程序有影响。
2、执行HC05集命令时,均以\r\n结尾。串口中断若选择“发送新行”时,不用添加\r\n。原理相同。
二、准备软硬件
1、硬件:单片机STC89C52RC开发板,蓝牙模块HC05
2、软件:串口工具SSCOM3.3,手机蓝牙客户端
手机蓝牙客户端链接:http://mobile.baidu.com/simple/item?docid=5014650&source=aladdin@wise_app_13@button&from=1015530c&ala=wise_app@strong@蓝牙串口调试助手&go_bfe=1action=content&action=content
三、蓝牙模块HC05端口定义(6引脚)
state——蓝牙连接状态,未连接输出低,连接后输出高
TX——信号发
RX——信号收
GND——地
+5V
EN——使能端,需要进入AT模式时接3.3V,接单片机i/o引脚即可,高电平
四、进入AT模式进行参数和状态的设置
两种工作模式:命令响应工作模式和自动连接工作模式
命令响应工作模式(AT模式)
state——接任意单片机i/o
rx——接usb转串口的tx端,P3^0
tx——接usb转串口的rx端,P3^1
gnd——接地
5v——接5V电
en——接任意单片机i/o,高电平
1、需要接通en,并给高电平
2、通信线路:电脑-->usb转串口-->hc05蓝牙模块(电脑与蓝牙模块间进行串口传输)
3、按住蓝牙模块的key键不松,单片机开发板上电,蓝牙模块指示灯进入慢闪状态,说明进入AT模式
4、通过电脑串口工具可以设置蓝牙的工作参数与状态
5、执行电脑串口工具SSCOM3.3,设置比特率38400,8位数据,1位停止位
6、发送测试指令AT\r\n,如果返回OK表示通信正常。
7、可以执行自己所需的命令了。
8、发送恢复默认状态指令AT+ORGL\r\n,如果返回OK表示设置成功。
出厂默认状态:
①.设备类:0
②.查询码:0x009e8b33
③.模块工作角色:Slave Mode
④.连接模式:指定专用蓝牙设备连接模式
⑤.串口参数:波特率—38400bits/s;停止位:1位;校验位:无
⑥.配对码:“1234”
⑦.设备名称:“H-C-2010-06-01”
..
9、设置波特率9600与单片机串口匹配,1停止位,0校验位
· 执行AT+UART=9600,1,0\r\n。返回OK
10、查看UART状态是否更改成功,执行AT+UART?,返回+UART:9600,1,0 OK
11、参数状态设置完毕,可断电,准备进入工作模式
五、进入自动连接工作模式进行蓝牙匹配
state——接任意单片机i/o
rx——接单片机的tx端,P3^1,与命令相应模式相反
tx——接单片机的rx端,P3^0
gnd——接地
5v——接5V电
en——可不接
1、不需要接通en
2、通信线路:手机蓝牙控制端-->hc05蓝牙模块-->单片机
3、单片机开发板上电,蓝牙模块指示灯进入快闪状态,说明进入自动连接工作模式
4、手机开蓝牙,即可搜到蓝牙模块,连接
5、打开手机端蓝牙串口工具,连接成功,蓝牙模块指示灯进入双闪状态
6、至此连接成功,准备发送数据
#include <reg52.h>
void main(void)
{
while(1);
}
设置参数状态,匹配测试用上述几行代码即可。
五、利用蓝牙向单片机发送数据
1、通信线路:手机蓝牙控制端输出字符‘0’-->hc05蓝牙模块-->单片机接收字符‘0’(单片机与蓝牙模块间进行串口传输)-->单片机控制灯1亮
2、通信线路:手机蓝牙控制端输出字符‘1’-->hc05蓝牙模块-->单片机接收字符‘1’(单片机与蓝牙模块间进行串口传输)-->单片机控制灯2亮
3、通信线路:手机蓝牙控制端输出其它字符-->hc05蓝牙模块-->单片机接收该字符(单片机与蓝牙模块间进行串口传输)-->单片机控制灯3亮
4、该程序源码
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
u8 r_buf; //蓝牙接收到的字符存储缓冲区
sbit led1 = P1^0; //灯1,当接收字符0时,灯1亮
sbit led2 = P1^1; //灯2,当接收字符1时,灯2亮
sbit led3 = P1^2; //灯2,当接收其它字符时,灯3亮
sbit led4 = P1^3; //蓝牙连接状态灯,当蓝牙连通时,灯4亮
sbit state = P3^6; //蓝牙连通的状态标志位
void delay(u16 z) //延迟函数
{
u16 x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void InitUART() //串口初始化9600
{
//初始化串口定时器9600
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
ES = 1;
EA = 1;
}
void SendOneByte(unsigned char c) //发送字符函数
{
SBUF = c;
while(!TI);
TI = 0;
}
void main(void)
{
InitUART();
led1 = 1;
led2 = 1;
led3 = 1;
led4 = 1;
r_buf = '2';
while(1)
{
if(state == 1)//蓝牙连通状态判断
{
led4 = 0; //如果蓝牙匹配成功,灯4亮
}
else
{
led4 = 1; //如果蓝牙匹配不成功,灯4不亮
}
}
}
void UARTInterrupt(void) interrupt 4 //串口接收字符
{
if(RI)
{
RI = 0;
//add your code here!
r_buf = SBUF;
if(r_buf == '0')//如果为字符‘0’,灯1亮
{
led1 = 0;
delay(1000);
led1 = 1;
}
if(r_buf == '1')//如果为字符‘1’,灯2亮
{
led2 = 0;
delay(1000);
led2 = 1;
}
else //如果为其它字符,灯3亮
{
led3 = 0;
delay(1000);
led3 = 1;
}
SendOneByte(r_buf);//回发该字符
}
}
51单片机 HC05蓝牙模块的更多相关文章
- Android单片机与蓝牙模块通信实例代码
Android单片机与蓝牙模块通信实例代码 参考路径:http://www.jb51.net/article/83349.htm 啦啦毕业了,毕业前要写毕业设计,需要写一个简单的蓝牙APP进行交互,通 ...
- HC-05蓝牙模块基本使用
1.进入AT模式 EN输入高电平+按住按键不放,然后上电,进入AT模式,不过AT指令只能输入一次,下次再输入AT需要重新进入 2.串口波特率设为38400,进行AT模式下的指令操作 3.基本AT指令 ...
- Arduino使用HC05蓝牙模块与手机连接
Arduino使用HC05蓝牙模块与手机连接 一切都是最好的选择 首先是线路连接,一定不要接错了 Arduino 代码 #include <SoftwareSerial.h> // Pin ...
- HC-05蓝牙模块配置与使用
蓝牙模块BT-HC05模块是一款高性能的蓝牙串口模块. 1.可用于各种带蓝牙功能的电脑.蓝牙主机.手机.PDA.PSP等智能终端配对. 2.宽波特率范围4800~1382400,并且模块兼容单片机系统 ...
- 两个HC-05蓝牙模块互相绑定构成无线串口模块
HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master).从(Slave)和回环(Loopback)三 ...
- 51单片机通过ESP8266模块与手机进行通讯(单片机)
相关连接和资料下载: 个人博客 资料下载 Step1:配置ESP8266 通过USB转TTL模块把ESP8266模块和电脑连接起来,如图: 把ESP8266模块的VCC,GND,CH_PD,UTXD, ...
- HC-05蓝牙模块使用教程
1.接线 蓝牙模块 与 USB转TTL模块的接线: 5V->5V GND->GND RX->TXD TX->RXD 2.调试 给蓝牙模块上电,手机端下载蓝牙串口助手SPP,手机 ...
- [51单片机] nRF24L01 无线模块 测试 按键-灯-远程控制
哈哈,穷吊死一个,自己做的一个超简单的板还没有电源提供,只得借助我的大开发板啦.其实这2个模块是完全可以分开的,无线嘛,你懂得!进入正题,这个实验的功能就是一个发送模块(大的那个板)连接4个按键,通过 ...
- 51单片机对无线模块nRF24L01简单的控制收发程序
它的一些物理特性如工作频段.供电电压.数据传输速率就不详细介绍了,直接上代码. 1.首先是发送端: // Define SPI pins #include <reg51.h> #defin ...
随机推荐
- VS2013 update4+Cocos2d-x 3.7 Win8下安装方法及配置
1.安装VS 2013 update4 7个G.自己就去网上找吧,一大堆,密钥问度娘. 2.安装及配置python 2.x 这里注意,一定要下载python 3.0下面的版本号. 配置:进行环境变量配 ...
- Excel实用技巧-如何批量提取excel工作表名称
Excel实用技巧-如何批量提取excel工作表名称 1. 打开Excel文件,点击“公式”栏,进而点击“定义管理器” 2. 在弹出的对话框中,点击新增按钮, 名称:“sheet”,引用位置:“=RE ...
- Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor
Webservice WCF WebApi 注明:改编加组合 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下, ...
- HDU 1398 Square Coins(母函数或dp)
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- springmvc学习笔记(18)-json数据交互
springmvc学习笔记(18)-json数据交互 标签: springmvc springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 加入json转换的依赖 ...
- 使用string实现一个用于储存那些太大而无法使用 long long 的数
类的定义: class stringInt { public: stringInt(); stringInt(string num); stringInt(int num); stringInt op ...
- 全志Android SDK编译详解(二)
注意要确定安装了jdk) 第一步: cd lichee; ./build.sh -p sun5i_elite -k 3.0 (apt-get install uboot-mkimage需要安装m ...
- (转)OutOfMemory时抓取heap 快照
转自:https://testerhome.com/topics/579 首先说一下,在程序没有崩溃的时候如何抓取heap快照.这个大家应该都知道,在ddms中自带此功能. 见上图首先我们选中一个 ...
- oracle的索引有几种?各有何用途?
1. b-tree索引Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名.CREATE INDEX语句时,默认就是在创建b-tree索引.没有特别规定 ...
- HttpServletRequestWrapper模拟实现分布式Session
HttpSession的内容都放在一个单独的Map中,模拟远程分布式Session. 1.使用HttpServletRequestWrapper创建自定义Request2.使用动态代理包装自定义Req ...