蓝牙hc-06控制单片机LED灯程序怎么写

蓝牙hc-06控制单片机LED灯程序怎么写,第1张

#include <reg52.h>//头文件调用,写程序时都要加上

#include <stdlib.h>

#define uint unsigned int //宏定义,为了后面定义变量书写简便

#define uchar unsigned char

code unsigned char LED[] ={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71}

void main (void)

{

SCON= 0x50 // SCON: 模式1, 8-bit UART, 使能接收

TMOD|= 0x20

TH1=0xfd //波特率9600 初值

TL1=0xfd

TR1=1

EA=1//打开总中断

ES=1//打开串口中断

while(1) //主循环不做任何动作

{

}

}

/******************************************************************/

/* 串口中断程序*/

/******************************************************************/

void UART_SER () interrupt 4

{

ucharn //定义临时变量

if(RI) //判断是接收中断产生

{

RI=0 /袜锋/标志位清零

n=SBUF//读入缓冲区的值

switch(n)

{

case'0':P2=~LED[0]break

case'1':P2=~LED[1]break

case'2':P2=~LED[2]break

case'3':P2=~LED[3]break

case'4'盯好岩:P2=~LED[4]break

case'5':P2=~LED[5]break

case'6':P2=~LED[6]break

case'7':P2=~LED[7]break

case'8':P2=~LED[8]break

case'9':P2=~LED[9]break

case'A':P2=~LED[10]break

case'B'凯御:P2=~LED[11]break

case'C':P2=~LED[12]break

case'D':P2=~LED[13]break

case'E':P2=~LED[14]break

case'F':P2=~LED[15]break

default: P2=~LED[0]

}

TI=1

SBUF=n//把接收到的值再发回

}

if(TI) //如果是发送标志位,清零

TI=0

}

您好,这样:

#include <iom16v.h>

#include <macros.h>

#define uchar unsigned char

#define uint unsigned int

//#define BIT(n) (1<<n)

#pragma interrupt_handler uart_recdata:12

#define mcuclk 8000000

uchar rdata

uchar flag=0

void delay(uint n)//10ms延时

{

uint i,j

for(i=0i<含肆ni++)

for(j=0j<1543j++)

}

void uart_init(uint baud)//串扒如口控制状态寄存器初始化,波特率设置

{

UCSRB=0x00

UCSRA=0x00 //控制寄存器清零

UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0) //选择UCSRC,异步模式,禁止

// 校验,1位停止谈此轿位,8位数据位

baud=mcuclk/16/baud-1 //波特率

UBRRL=baud

UBRRH=baud>>8 //设置波特率

UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE) //接收、发送使能,接收中断使能

SREG=BIT(7) //全局中断开放

DDRD|=0x02//配置TX为输出(很重要)

}

void uart_senddata(uchar data)

{

while(!(UCSRA&(BIT(UDRE))))//第五位UDRE为高,数据寄存器空,发数据至UDR

UDR=data

while(!(UCSRA&(BIT(TXC)))) //第六位TXC高, 发送结束

UCSRA|=BIT(TXC) //置位TXC

}

void uart_recdata()

{

UCSRB&=~BIT(RXCIE)

rdata=UDR

flag=1

UCSRB|=BIT(RXCIE)

}

void main()

{

// uchar i='A'

// uchar j=4

uart_init(19200)

while(1)

{

if(flag)

{

uart_senddata(rdata)

flag=0

}

}

}

现如今,每个人的手机都配有蓝牙功能,我们可以用蓝牙传输数据,连接耳机以及控制一些自带蓝牙功能的电子设备。我们也可以使用蓝牙模块配上单片机就可以轻松实现手机控制LED灯,电机,智能皮姿小车,机器人等各种设备。让我们的创作实现无线控制。

下面我们就来介绍一种性价比极高的蓝牙模块:HC-06从机蓝牙模块。

BLE蓝牙的角色有以下几种:广播者(Advertise)、扫描者(Scanner)、从设备(Slave)、主设备(Master)、发起者(Initiator),其中主设备是由发起者、扫描者转化而来,从设备则是由广播者转化而来;蓝牙模块通信是指两个蓝牙模块或蓝牙设备之间进行通信,进行数据通信的双方一个是主机,一个是从机。

主模式与从模式的区别:主机是指能够搜索别人并主动建立连接的一方,从机则不能主动建立连接,只能等别人连接自己。

HC-05是主从一体化的蓝牙串口模块,主从可指令切换,指令丰富齐全。

HC-06是主从一体化的蓝牙串口模块,主从可指令切换,指令少于HC-05,使用简单。

这次使用的是蓝牙HC-06是从模块,也就是从机模块,我们的手机就是主模块。主机可以与从机配对,从机不能和从机配对。如果要两个单片机通信,那就至少一个是有主机功能的,要是两个都是从机是通信不了的。

引脚定义:

重要提示:

下面我们就用一台手机控制一个点阵屏的亮暗和不同图案显示。

硬件设备:

接线图:

将点阵模块的DIN、CS、CLK分别连到Arduino10/11/12数字引脚上,连接电源和接地线;蓝牙模块的TXD:连接ArduinoRXD接收端;RXD连接ArduinoTXD发送端,连接电源和接地线。

下面是实物图;图中Arduino模块增加了扩展板,方便接线。

程序:

手机蓝牙通讯app:

在进行控制之前,我们需要在手机端安装蓝牙调试工具。在手机应用商店里搜索“蓝牙调试器”。我选择的是这款工具,体积小, *** 作简单,功能强大。

效果展示:

安装APP后,蓝牙连接HC-06模块;

我们选择按钮控橡姿制模式;将其中四个按键名词改为:关闭,打开, ,笑脸;并将按下按键的发送代码分别改为:0,1,2,3。

现在大功告成,分别按下:关闭、打开、 、笑脸,点阵屏就会按照对应的方式显示:

只要我们在加上不同的执行器,就可燃如绝以用手机蓝牙控制步进电机,舵机,灯等等,实现各种功能了。一起来试试吧。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12458700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存