文件中Readme文件有连线方式,压缩包含程序源码,用keil打开口按照接线方式即可通行。
拿出来与大家分享,程序不复杂,只要有一点单片机的基础即可,,
能力有限,欢迎私聊讨论指出不足,不懂连线或其它地方也可私聊进行讨论学习。
MCU:STM32F103
1、通过手机APP发送数据
2、通过手机APP发送指令
指令1:led0 控制led0灯状态的反转
指令2:led1 控制led1灯状态的反转
指令3:beep 控制蜂鸣器的开关
指令4:lcdwrite lcd 显示一条标语 手机
可接收来自单片机的数据,也可发送数据给单片机,
蓝牙采用hc05从机模式接线方式:本程序采用usart3与蓝牙进行通信,蓝牙的RX引脚接usart3的TX,
蓝牙的Tx接usart3的rx引脚,VCC接3.3V电源,KEY引脚接PA4,STATE引脚接PA15(若使用51单片机,请选用一份调试好串口的程序,将该程序进行部分移植即可)
蓝牙指令:
AT OK
AT+VERSION? +VERSION:hc01.comV2.1
AT+NAME? +NAME:MrWang\r\n
at+name=MrWang OK
AT+ PSWD? +PSWD:123321
AT+ UART? +UART:9600,1,0
AT+UART=9600,1,0 OK
AT+RESET OK
AT+ ROLE? +ROLE:0
单片机源程序如下:
- //寄存器开发版本:原子开发板stm32f103
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "lcd.h"
- #include "key.h"
- #include "usart3.h"
- #include "HC05.h"
- #include "string.h"
- #include "lcd.h"
- #include "led.h"
- #include "beep.h"
- int main(void)
- {
- u16 reclen=0;
- Stm32_Clock_Init(9);
- delay_init(72);
- KEY_Init();
- HC05_Init(9600,36);
- uart_init(72,115200);
- LCD_Init();
- LED_Init();
- BEEP_Init();
- while(1)
- {
- if(USART3_RX_STA&0X8000) //说明接收到数据,不懂就看usart3的中断处理函数
- {
- reclen=USART3_RX_STA&0X7FFF; //得到数据长度
- USART3_RX_BUF[reclen]=0; //加入结束符
- //指令的匹配函数,没有应用到工程,这里就直接用if逐个判断了
- if(!strcmp("led0",(const char*)USART3_RX_BUF))
- {
- LED0=~LED0;
- }
- else if(!strcmp("led1",(const char*)USART3_RX_BUF))
- {
- LED1=~LED1;
- }
- else if(!strcmp("beep",(const char*)USART3_RX_BUF))
- {
- BEEP=~BEEP;
- }
- else if(!strcmp("lcdwrite",(const char*)USART3_RX_BUF))
- {
- POINT_COLOR=RED;
- BACK_COLOR=DARKBLUE;
- LCD_ShowString(30,160,200,16,16,(u8*)"blue templete .......");
- }
- u3_printf("【发送数据】:%s\r\n",USART3_RX_BUF); //回显函数
- USART3_RX_STA=0;
- }
- if(!KEY0)
- {
- SendData((u8*)"你好啊"); //做测试用
- }
- }
- }
复制代码
所有资料51hei提供下载:
BULE(HC05).rar
(1.23 MB, 下载次数: 96)
[官方]汇承HC-05蓝牙串口模块使用规格书(含指令集).pdf
(1.56 MB, 下载次数: 34)
|