用51单片机和蓝牙模块实现正向和逆向流水灯

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单片机和蓝牙模块实现正向和逆向流水灯的具体实现过程和代码了,希望我写明白了,也希望你看明白了哈哈

  • 11
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是彦歆呀嘻嘻哈哈

你的鼓励将是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值