微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机接蓝牙模块

51单片机接蓝牙模块

时间:10-02 整理:3721RD 点击:
想用蓝牙模块接51单片机,实现手机控制灯的亮灭,要怎么做,请坛友给予帮助,谢谢

手上现在没有这样现成的案例,而且看你51的代码应该没什么问题啊。  你先不要用手机来控制,找个现成的蓝牙转串口的模块接在电脑上,用蓝牙跟你的51系统连接,上位机用串口助手发送指令试试能不能控制。如果可以那就是你手机端的程序问题。先定位问题点在哪里,然后再看怎么修改。
另外你能不能详细的说说你现在出问题的现象?可以的话配几张图片,方便大家了解情况,要不然只能靠蒙。

分两块内容:
手机端,设备端。二者通过蓝牙模块实现通信(串口透传就可以)
手机端要完成软件的内容:
1、侦听按键,按键操作触发后将发送的数据通过串口发送。
2、蓝牙串口透传。
设备端 的功能
1、蓝牙芯片(协议栈+串口透传)收到数据给到单片机
2、51单片机:

收到数据:A(代表按键按下)----控制灯点亮,B(代表按键松开)----控制灯熄灭

有点不明白,有没有可以借我参考的

看你的蓝牙有没有串口透传功能啊。

我是用hc-05的。

那应该没有问题啊

难道是程序出问题了?
#include<reg51.h>  
#define uchar unsigned char
#define uint unsigned int      
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
sbit led4=P1^4;
sbit led5=P1^5;
sbit led6=P1^6;
sbit led7=P1^7;
void delayms(uint ms)
{  
uchar i;  
while(ms--) for(i=0;i<120;i++);
}  
//主程序
void main()
{  
SCON=0x50; //串口模式1,允许接收
TMOD=0x20; //T1 工作模式2
PCON=0x00; //波特率不倍增
TH1=0xfe; //波特率9600
TL1=0xfe;
RI=0;
EA=1;
ES=1;
TR1=1;
P1=0xff;
while(1);
}  
void Serial_Int(void) interrupt 4
{  
uchar a;  
if(RI) //如收到则LED 闪烁   
{      
RI=0;  
a=SBUF;     
a=a&0x0f;
switch(a)  
{  
        case 0x00:
                            if(led0==1)      
                                {   
                                        delayms(10);
                                        if(led0==1);     
                                        led0=0;
                                }      
                                else led0=1;break;      
        case 0x01:      
                                if(led1==1)         
                                {   
                                        delayms(10);
                                        if(led1==1);
                                        led1=0;      
                                }      
                                else led1=1;break;  
        case 0x02:        
                                if(led2==1)     
                                {      
                                        delayms(10);
                                        if(led2==1);
                                        led2=0;   
                                }     
                                else led2=1;break;  
        case 0x03:      
                                if(led3==1)      
                                {        
                                        delayms(10);
                                        if(led3==1);
                                        led3=0;      
                                }      
                                else led3=1;break;      
        case 0x04:      
                                if(led4==1)         
                                {      
                                        delayms(10);
                                        if(led4==1);
                                        led4=0;      
                                }      
                                else led4=1;break;  
        case 0x05:        
                                if(led5==1)     
                                {      
                                        delayms(10);
                                        if(led5==1);
                                        led5=0;     
                                }     
                                else led5=1;break;  
        case 0x06:      
                                if(led6==1)         
                                {      
                                        delayms(10);
                                        if(led6==1);
                                        led6=0;      
                                }      
                                else led6=1;break;  
        case 0x07:        
                                if(led7==1)     
                                {
                                     delayms(10);
                                        if(led7==1);
                                        led7=0;     
                                }      
                                else led7=1;break;        
                                }      
        }   
}
这是程序

还真没看懂你串口中断里面要干什么,这里应该语句
尽量少把

小编是设计了7个灯,对应7个键值,不同键值点亮不同的灯

在中断里面延时10ms,还说没问题

厉害,这里确实不该这么写

已经弄好了,是程序串口那部分的问题。

竟然最佳答案不给我

呵呵,我加了延时没也没出现问题啊!加不加都可以的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top