51单片机通过蓝牙控制led小灯
Posted 飞天大司马
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机通过蓝牙控制led小灯相关的知识,希望对你有一定的参考价值。
51单片机通过蓝牙控制led小灯
本人第一次接触蓝牙模块,暂时从基础的地方做起。
目录目录@TOC
1.材料
2.接线
3.程序
4.展示结果
**
材料
**:①hc-05蓝牙模块(淘宝上有很便宜),hc-06应该也可以。
②主控:普中科技的stc89c52单片机开发板(51系列各种开发板大同小异不必过于担心和我的开发板不同)
③蓝牙app:spp蓝牙串口(网上有资源)
④杜邦线若干
**
接线
**
蓝牙RXD接单片机P3^0
蓝牙TXD接单片机P3^1
蓝牙GND接单片机GND
蓝牙vcc接单片机3.3v
配一张原理图更清楚
**
程序
**
#include<reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
sbit led0 = P2^0;//根据各位实际的单片机上的led灯位来设置
sbit led1 = P2^1;
sbit led2 = P2^2;
sbit led3 = P2^3;
sbit led4 = P2^4;
sbit led5 = P2^5;
sbit led6 = P2^6;
sbit led7 = P2^7;
uint pass = 0; //传递数据位
void UART_init() //设置串行通信 本晶振为11.0592MHZ
{
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd; //波特率9600
SM0 = 0;
SM1 = 1; // 串口工作方式1 10位异步
REN = 1; //串口允许接收
TR1 = 1;
EA = 1;
ES =1 ; //串口中断
}
int main()
{
UART_init(); //波特率9600
while(1)
{
if(pass == 0x30)//0的ascaII码是48,转换为16进制是30,即0x30 蓝牙通信都是发送ASCII码
{
pass++;//点亮第一个led灯0x31
}
if(pass==0x39)//输入八次后返回点亮第一个灯
{
pass=0x31;
}
switch (pass)
{
case 0x31:led0 = 0;break;
case 0x32:led1 = 0;break;
case 0x33:led2 = 0;break;
case 0x34:led3 = 0;break;
case 0x35:led4 = 0;break;
case 0x36:led5 = 0;break;
case 0x37:led6 = 0;break;
case 0x38:led7 = 0;break;
case 0x39:P2 = 0xfe;break;
default:P2 = 0xff;break;//输入其他P2接口全为高电平灯全灭
}
}
}
void UART_INTERRUPT() interrupt 4
{
pass = SBUF;
RI = 0;
SBUF = pass; //手机和蓝牙模块通讯时,我们可以打开电脑串口调试工具查看我们的发送值)
while(!TI);
TI = 0;
}
**
展示结果
**
①打开蓝牙app
②开始通信
输入0x31
第一个led灯亮
输入0x32
第二个led灯亮
输入0x36
第六个led灯亮
**
结束语
**
剩下的大家可自己尝试结果
以上是关于51单片机通过蓝牙控制led小灯的主要内容,如果未能解决你的问题,请参考以下文章