找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我用蓝牙模块HC-05与STC90C51连接,手机发送字符,点亮led灯

  [复制链接]
跳转到指定楼层
楼主
ID:91350 发表于 2015-10-29 12:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题:单片机能接收到手机发送的字符,但没有识别出那个字符是什么('A'为点亮,'B'为熄灭),模块没有问题,如何解决?

代码:
/*******************************************************************************
* 实验名                           : 蓝牙HC-05模块驱动实验
* 使用的IO                   : P3.0,P3.1,P0.0,P0.1
* 实验效果             : 手机发送字符给单片机点亮或熄灭led灯
*        注意                       :
*******************************************************************************/
#include<reg51.h>
#define uchar unsigned char
uchar receiveData;
sbit led = P0^0;
sbit led2 = P0^1;
void UsartConfiguration();

void main()
{
        UsartConfiguration();
        led = 0;
        led2 = 0;           //检测是否接收到字符,即是否进入串行口中断
        TI = 0;
        while(1)
        {
                if(receiveData == 'A')
                   led = 1;  //点亮
                if(receiveData == 'B')
                   led = 0;  //熄灭
        }
}
/*******************************************************************************
* 函数名         :UsartConfiguration()
* 函数功能                   :设置串口
* 输入           : 无
* 输出                  : 无
*******************************************************************************/

void UsartConfiguration()
{
        SCON=0X50;                        //设置为工作方式1
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                    //计数器初始值设置,注意波特率是4800的(晶振为12.0MHz)
        TL1=0XF3;
        ES=1;                                                //打开接收中断
        EA=1;                                                //打开总中断
        TR1=1;                                        //打开计数器
}

void Usart() interrupt 4                        //串行口中断
{
        receiveData=SBUF;    //出去接收到的数据
        led2 = 1;                         //手机发送字符时,此灯点亮
        RI = 0;              //清除接收中断标志位
        SBUF=receiveData;    //将接收到的数据放入到发送寄存器
        while(!TI);                         //等待发送数据完成
        TI=0;                             //清除发送完成标志位 */
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:93852 发表于 2015-10-30 12:32 | 只看该作者
明显的波特率有误,也不明白楼主的端口配置

按楼主约定好的波特率    先用串口收下LC-05,然后再模拟LC-05从PC发给控制端    测试是否正常

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:119047 发表于 2016-5-7 16:13 | 只看该作者
手机发送字符用的什么软件啊

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:110935 发表于 2016-7-18 21:17 | 只看该作者
蓝牙串口助手貌似可以发送字符
回复

使用道具 举报

5#
ID:94991 发表于 2016-7-19 21:53 | 只看该作者
9600  4800
回复

使用道具 举报

6#
ID:219350 发表于 2017-7-14 18:28 | 只看该作者
串口发送是一次只能发一个字节吗
回复

使用道具 举报

7#
ID:219388 发表于 2017-7-15 15:45 | 只看该作者
手机蓝牙发数据的时候,需要一次性发送两个,比如0a,0b,单独发送一个a,b发送不过去
回复

使用道具 举报

8#
ID:95059 发表于 2022-5-16 09:57 | 只看该作者
发送 0  或 者 1 不就好了嘛,干嘛要多此一举呢? 小伙子  “高电平为1,低电平为0” 它不香吗?还要去识别A/B
回复

使用道具 举报

9#
ID:1013529 发表于 2022-5-16 21:04 | 只看该作者
我觉着波特率设置有问题,然后主函数里面的T0=0;进入中断后应该也不会执行其他的代码(个人见解)
回复

使用道具 举报

10#
ID:1026496 发表于 2022-5-16 22:59 | 只看该作者
第一先检查  led = 1; led = 0; 再不加 判断的时候能否实现你的预期,然后再调试串口的收的数据,至于收到的显示不对的需要检查下发送的波特率对不对,可以用一个串口小板按照你程序上的设置的4800来发送字符A 或者B;在观察,或许答案就再其中。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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