蓝牙小风扇

蓝牙小风扇

主控:

STC89C52RC

所需模块:

蓝牙模块HC-08、继电器、电池、直流电机(马达)

接线:

在这里插入图片描述

程序:

将程序下载到单片机后,打开手机HC蓝牙助手,连接到HC-08的蓝牙,然后就可以发送“open”字符串吸合继电器,然后直流电机通电就开始转动,小风扇开启;发送“close”断开继电器,小风扇关闭

后续可将串口部分的代码单独写成一个源文件,供主函数调用

注意:这里有个bug,如果在中断处理函数中再将字符串发送回去,无论是Usart_SendChar(rec[p])还是Usart_SendString(rec),通过串口发送到电脑时显示的字符会缺失,如发送“open”,会显示“ope”,暂时不知是什么原因

如果在发送区发送“ope\n”,则可以正常显示“open”,如果发送“clo\s\e”,则可以正常显示“close”

#include <REGX52.H>
#include <string.h>

#define SIZE 20
#define ON 0
#define OFF 1

sbit relay = P1^0;			//继电器
sbit LED = P3^7;
unsigned char rec[SIZE];
/**
  * @brief串口初始化
  * @param无
  * @retval无
  */
void Uart_Init()		//9600
{
	PCON &= 0x7F;		//波特率不倍增
	SCON  = 0x50;		//工作方式1,8位UART,REN=1,允许串行接收控制位
	TMOD &= 0x0F;		//高位清0
	TMOD |= 0x20;		//定时器1为8位自动重装载
	TH1 = 0xFD;			//波特率9600
	TL1 = 0xFD;
	ET1 = 0;			//禁止定时器1中断
	TR1 = 1;			//开启定时器1
	EA = 1;				//开启总中断
	ES = 1;				//开启串行中断
}

/**
  * @brief串口发送一个字符
  * @param要发送的字符
  * @retval无
  */
void Uart_SendChar(unsigned char dat)
{
	SBUF = dat;
	while(!TI);
	TI = 0;
}

/**
  * @brief串口发送一个字符串
  * @param要发送的字符串
  * @retval无
  */
void Uart_SendString(char* str)
{
	while(*str != '\0')
	{
		Uart_SendChar(*str);
		str++;
	}
}

//串口中断处理函数
void Uart_Rountine() interrupt 4
{
	static unsigned int p = 0;
	if(RI)
	{
		RI = 0;
		rec[p] = SBUF;
		//Uart_SendChar(rec[p]);
		p++;
		if(p == SIZE)
		{
			p = 0;
		}
		if(strstr(rec,"op"))		//判断接收到的数据里是否有“op”字符
		{
			LED = ON;				//LED灯亮
			relay = ON;				//继电器吸合
			p = 0;
			memset(rec,'\0',SIZE);	//清空数据,为下次接收做准备
		}
		if(strstr(rec,"clo"))		//判断接收到的数据里是否有“clo”字符
		{
			LED = OFF;				//LED灯灭
			relay = OFF;			//继电器断开
			p = 0;
			memset(rec,'\0',SIZE);	//清空数据,为下次接收做准备
		}
	}
}

void main()
{
	Uart_Init();
	while(1)
	{
	}
}

蓝牙助手发送控制信息

手机安装HC-08蓝牙模块配套的蓝牙助手后打开

点击连接蓝牙

在这里插入图片描述

连接成功后可以在通信界面里直接发送"open"和"close"控制信息,也可以将这两个控制信息写到自定义按钮里,方便发送

在这里插入图片描述

按钮OPEN

在这里插入图片描述

按钮CLOSE

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值