文章目录
1.首先需要确保你有以下软件和实物
1)手机上需要下载蓝牙串口app
2)电脑上安装了可以用来写51单片机代码的Keil编译软件:Keil4或者Keil5和stc-isp烧录软件
3)蓝牙模块
4)焊有多个LED灯的51单片机
2.有了这些软件和实物之后,下面我们开始用51单片机和蓝牙模块实现正向和逆向流水灯
1)先新建一个工程
如下图所示(如果有朋友不知道如何新建工程的,可以参考我之前的一篇博客https://blog.csdn.net/weixin_45870610/article/details/104372952)
2)因为我们这里需要对蓝牙模块进行初始化等操作,为了减轻main.c文件的负担,并且使代码更加清晰,下面我们会 新建一个BLUETOOTH文件夹.
(1)
(2)
然后就完成BLUETOOTH文件夹的新建啦:
(3)建立bluetooth.c和bluetooth.h文件(Ctrl+N---->Ctrl+S)
(4)我们需要把bluetooth.c和bluetooth.h文件加到BLUETOOTH文件夹里面:
3)加入.c文件之后我们可以需要先写好main.c、bluetooth.c和bluetooth.h的代码,最后再把.h文件加到BLUETOOTH
以下是 main.c的代码内容
#include <reg52.h>
#include <bluetooth.h>
sbit LED1 = P1^0;
extern uchar tempbuf;
void main()
{
unsigned int a;
BLUETOOTH_Init();
while(1)
{
while(tempbuf=='0')
{
P1 = P1 << 1;
a = 500; //可以随意定,可以改变两个LED灯亮的时间间隔
while(a--);//软件延时
if(P1 == 0)
{
P1 = 0xff;//不能写二进制,这里全部是1,熄灭,转换为十六进制
a = 500;
while(a--);//软件延时
}
}
while(tempbuf=='1')
{
P1 = P1 >> 1;
a = 500;
while(a--);//软件延时
if(P1 == 0)
{
P1 = 0xff;//不能写二进制,这里全部是1,熄灭,转换为十六进制
a = 500;
while(a--);//软件延时
}
}
}
}
以下是bluetooth.c的代码内容
#include <bluetooth.h>
unsigned char tempbuf; //存储接收到的信息
void BLUETOOTH_Init(void) //
{
TH1 = 0xFD; //晶振12 波特率设为9600
TL1 = TH1;
TMOD |= 0x20; //定时器1方式2
SCON = 0x50; //串口接收使能
ES = 1; //串口中断使能
TR1 = 1; //定时器1使能,启动定时器
TI = 1; //发送中断标记位,必须设置
EA = 1;
}
void Serial(void) interrupt 4
{
tempbuf = SBUF;
RI = 0; //读标志清零
}
对以上的定时器和中断的相关知识陌生的朋友可以参考我之前的一篇博客https://blog.csdn.net/weixin_45870610/article/details/104374799
以下是bluetooth.h的代码内容
#ifndef __BLUETOOTH_H__
#define __BLUETOOTH_H__
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void BLUETOOTH_Init(void);
#endif
4)最后再添加.h文件
编译之后的可以看到以下画面啦:
5)编译成功之后需要生成hex文件,连接好51单片机和蓝牙模块之后进行烧录(忘记怎么生成hex文件的朋友可以参考我之前的一篇博客https://blog.csdn.net/weixin_45870610/article/details/104372952)
6)打开手机上的蓝牙串口app,根据代码可以知道,当我从手机上发送数字0时会实现正向流水灯,发送数字1时可以实现逆向流水灯。
以上就是用51单片机和蓝牙模块实现正向和逆向流水灯的具体实现过程和代码了,希望我写明白了,也希望你看明白了哈哈