找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1886|回复: 5
打印 上一主题 下一主题
收起左侧

想用51单片机控制蓝牙模块HC-05控制LED灯的状态,但不知道为什么不行?

[复制链接]
跳转到指定楼层
楼主
ID:487449 发表于 2019-8-3 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想用51控制蓝牙模块HC-05控制LED的状态。但不知道为什么不行,只有led3会亮和灭。好像只执行了send函数里的内容,led3会随着每发送一个字节就亮灭的状态变化,switch里的现象没有出现。
#include <reg52.h>
#include <intrins.h>
unsigned char tmp;
unsigned int c=0;

sbit led1=P2^2;                  
sbit led2=P2^3;               
sbit led3=P2^4;               

void init();
void send(unsigned char a);
void ctrl()

void main()
{
                init();
          while(1)
          {         
                  if(RI==1)                  
                  {
                   RI = 0;
                  tmp = SBUF;               
                                  ctrl();
                                  }      
          }
}

void init()        //′®¿ú3õê¼»ˉ
{
                   ES=0;                                                               
                  SCON = 0x50;                     
                  TMOD = 0x20;                     
          TH1=TL1=0xFD;                    

          PCON &= 0x7f;                  
          TR1 = 1;                                                        
                                                                                
                  TI=0;                                                               
                  RI=0;
                  
                  //EA=0;
              ES=1;


          led1=0;                                
                  led2=0;
                  led3=0;
}

void send(unsigned char a
{                                                
        TI=0;        
        SBUF=a;
        while(TI==0);
        TI=0;

        if(c%2)                                
         led3=1;
        else
         led3=0;
        c++;
}

void ctrl()                          
{
                                    switch(tmp)
                                  {
                                          case '1':
                                                led1=1;                              
                                                send(tmp);
                                                break;                                       
                                        case '2':                                
                                                 led2=1;
                                                 send(tmp);
                                                 break;
                                        case '3':                                 
                                                 led1=0;
                                                 led2=0;
                                                 send(tmp);
                                                 break;
                                        case '4':                                
                                                  led1=1;
                                                  led2=1;
                                                  send(tmp);
                                                  break;
                                        case '5':                                
                                                led3=0;
                                                send(tmp);
                                                break;
                                        default:                  
                                                  led1=1;
                                                  led2=1;
                                                  led3=1;
                                                  send(tmp);
                                  }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2019-8-4 08:00 | 只看该作者
先试不用蓝牙用串口能否正常控制,再加蓝牙试,一步步来。
回复

使用道具 举报

板凳
ID:487449 发表于 2019-8-4 10:25 | 只看该作者
xuyaqi 发表于 2019-8-4 08:00
先试不用蓝牙用串口能否正常控制,再加蓝牙试,一步步来。

测试了,串口通信是正常的。但它不能执行switch里面的内容,不能根据我发送的内容执行让led1,led2改变状态。但它执行了send里的内容,led3会随着我发送字节而出现亮灭交替。
回复

使用道具 举报

地板
ID:595180 发表于 2019-8-4 20:38 | 只看该作者
case '1' 指的是 ASCII 1, 改成  case 1 就能收到了
回复

使用道具 举报

5#
ID:94031 发表于 2019-8-5 09:50 | 只看该作者
时光荏苒。。。 发表于 2019-8-4 10:25
测试了,串口通信是正常的。但它不能执行switch里面的内容,不能根据我发送的内容执行让led1,led2改变状 ...

那就先直接用串口把功能调正常
回复

使用道具 举报

6#
ID:918467 发表于 2021-6-8 19:05 | 只看该作者
xuyaqi 发表于 2019-8-5 09:50
那就先直接用串口把功能调正常

请问我想将HC-05接在5V工作电压的STC89C52单片机上,是可以直接接,还是需要降压处理,资料里说需要LDO处理,请大神指导,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表