找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3117|回复: 18
收起左侧

stc15单片机程序蓝牙通讯不了

  [复制链接]
ID:687992 发表于 2020-3-7 10:54 | 显示全部楼层 |阅读模式
就是波特率调好了,RXD和TXD也没接反,还是通讯不了。。。。
#include <reg51.h>
sbit motor1_1=P0^0;
sbit motor1_2=P0^1;
sbit motor2_1=P0^2;
sbit motor2_2=P0^3;
unsigned char i;
void dangk(unsigned char m);

void main()
{
TMOD = 0X20;
SCON=0X50;   //蓝牙
  PCON=0X00;  //蓝牙
TH1=0xfd;
TL1=0xfd;
EA=1;  //开启总中断
ET1=1;  //允许T1中断
ES=1;  //允许串口中断
TR1=1;
  while(1);
}
void dangk(unsigned char m)
{
   switch(m)
  {
   case'q':
    motor1_1=1;
    motor1_2=0;
    motor2_1=1;
    motor2_2=0;
    break;
   
   case'w':
    motor1_1=1;
    motor1_2=0;
    motor2_1=0;
    motor2_2=1;
    break;
   
   case'e':
    motor1_1=0;
    motor1_2=1;
    motor2_1=1;
    motor2_2=0;
    break;
  }
}
void zhongduan() interrupt 4
{
i=SBUF;
RI=0;
dangk(i);
SBUF=i;
while(!TI);
TI=0;
}

求指点谢谢
回复

使用道具 举报

ID:691449 发表于 2020-3-7 15:38 | 显示全部楼层
是不是蓝牙模块没有连接上?或者单片机时钟频率不对?
还有,你的蓝牙模块是不是5v电压不稳,电压不稳也可能出问题,
回复

使用道具 举报

ID:456690 发表于 2020-3-7 15:51 | 显示全部楼层
void main()
{
TMOD = 0X20;
SCON=0X50;   //蓝牙
  PCON=0X00;  //蓝牙
TH1=0xfd;
TL1=0xfd;
TR1=1;//启动定时器
REN=1;//允许串口接收
SM0=0;//设定串口工作方式1
SM1=1;//设定串口工作方式1
EA=1;  //开启总中断
ES=1;  //允许串口中断
  while(1);
}
改成上面代码看看好用吗
回复

使用道具 举报

ID:687992 发表于 2020-3-7 16:08 | 显示全部楼层
baidi77 发表于 2020-3-7 15:51
void main()
{
TMOD = 0X20;

还是没反应
回复

使用道具 举报

ID:687992 发表于 2020-3-7 16:41 | 显示全部楼层
xianming 发表于 2020-3-7 15:38
是不是蓝牙模块没有连接上?或者单片机时钟频率不对?
还有,你的蓝牙模块是不是5v电压不稳,电压不稳也可 ...

蓝牙是连接上了,那个时钟频率我是搬得别人的,电压的话我之前连接OLED的时候可以正常运行,应该没有问题吧
回复

使用道具 举报

ID:691449 发表于 2020-3-8 13:35 | 显示全部楼层
T3不是大腿 发表于 2020-3-7 16:41
蓝牙是连接上了,那个时钟频率我是搬得别人的,电压的话我之前连接OLED的时候可以正常运行,应该没有问题 ...

时钟频率和串口波特率不一样,定时器初值也不一样
还有,你的蓝牙模块连接的是什么,除了发送,接收也可能有问题
回复

使用道具 举报

ID:687992 发表于 2020-3-8 19:23 | 显示全部楼层
xianming 发表于 2020-3-8 13:35
时钟频率和串口波特率不一样,定时器初值也不一样
还有,你的蓝牙模块连接的是什么,除了发送,接收也可 ...

我蓝牙RXD  TXD接的P30和P31,其他的接了个电机模块测试效果用的,电机模块没有问题。
回复

使用道具 举报

ID:241554 发表于 2020-3-8 20:24 | 显示全部楼层
我之前调试的时候出现过电压超过5.2v就不能正常使用。也可能因为模块不同有区别,建议看看商家给的手册
回复

使用道具 举报

ID:687992 发表于 2020-3-9 09:23 | 显示全部楼层
yss415108040 发表于 2020-3-8 20:24
我之前调试的时候出现过电压超过5.2v就不能正常使用。也可能因为模块不同有区别,建议看看商家给的手册

商家给的手册只有写AT指令的,电压倒是没有提到。不过我去找了下他的那个宝简介,说工作电压是3-3.6V.我是直接插到了开发板上的扩展VCC口,不会是电压高了吧,我看灯什么的好像都还好使啊
回复

使用道具 举报

ID:674113 发表于 2020-3-9 09:58 | 显示全部楼层
蓝牙时钟和单片机时钟确定下,是否匹配
回复

使用道具 举报

ID:687992 发表于 2020-3-9 13:39 | 显示全部楼层
一只小龙猫 发表于 2020-3-9 09:58
蓝牙时钟和单片机时钟确定下,是否匹配

蓝牙我改的9600波特率,时钟我上网查的9600匹配的是TH1=0XFD,但TL1我不知道是什么,上网抄的
回复

使用道具 举报

ID:280000 发表于 2020-3-9 22:06 | 显示全部楼层
单片机串口配置好了吗
回复

使用道具 举报

ID:687992 发表于 2020-3-10 09:17 | 显示全部楼层
湖南 发表于 2020-3-9 22:06
单片机串口配置好了吗

P3.0和P3.1是蓝牙的RXD 和TXD。
P0.0和P0.1是电机1
P0.2和P0.3是电机2
其他没了
回复

使用道具 举报

ID:699194 发表于 2020-3-10 09:53 | 显示全部楼层
波特率有没有一致??




回复

使用道具 举报

ID:705704 发表于 2020-3-10 12:11 | 显示全部楼层
你的串口配置函数 UsartConfiguration()中 的TMOD=0X20; 这句中把定时器0关掉了;改成 TMOD|=0X20; 就行了
回复

使用道具 举报

ID:383204 发表于 2020-6-9 21:56 来自手机 | 显示全部楼层
楼主好了吗
回复

使用道具 举报

ID:759974 发表于 2020-7-6 00:14 | 显示全部楼层
据说STC15单片机的串口有个AUXR辅助寄存器需要设置一下:
回复

使用道具 举报

ID:421803 发表于 2020-7-6 08:59 | 显示全部楼层
建议使用STC-ISP里的波特率计算器自动生成的代码来配置串口,排查方法建议:
1.先检查单片机串口是否正常,可借助电脑,将电脑发送过来的数据直接转发出去,在电脑上的现象是发送什么接收什么,或者固定发送0x55,用示波器观察波形;
2.排查模块是否正常,用USB转串口工具接模块,根据手册向模块发送AT指令,验证OK后再接单片机调试;
3.若以上两个都没问题,可调换TX和RX线序试一试
回复

使用道具 举报

ID:608600 发表于 2020-7-7 11:58 | 显示全部楼层
波特率要一致,定时器工作方式改一下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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