找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1853|回复: 8
收起左侧

求大神指点,51单片机蓝牙模块串口通信一直发送00

[复制链接]
ID:1003269 发表于 2022-4-5 08:19 来自手机 | 显示全部楼层 |阅读模式
100黑币
51单片机和hc蓝牙模块波特率都是9600,蓝牙模块在电脑和手机端正常通信,51单片机+蓝牙模块发送到手机上一直接收到16进制的00,这是什么原因啊

回复

使用道具 举报

ID:979299 发表于 2022-4-5 11:06 | 显示全部楼层
不是程序有错误就是线接反了,得仔细排查
回复

使用道具 举报

ID:1003269 发表于 2022-4-5 20:30 来自手机 | 显示全部楼层
兴安xa 发表于 2022-4-5 11:06
不是程序有错误就是线接反了,得仔细排查

线没有接反,具体程序是这样的,求大神指点
#include“STC12C5A60S2.h"
#include“hc04.h
//串口初始化,晶振11.0592,波特率9600
void UartInit(void //9600bps@11.0592MHz
{SCON =0x50: //8位数据,可变波特率
AUXR=0×40: //定时器1时钟为Fosc,即1T
AUXR &= OxFE: /第口1选择定时器1为波特率发生器
TMOD&= 0x0F; //设定定时器1为16位自动重装方式
TL1 0xE0: /设定定时初值
TH1 =OxFE; /设定定时初值
ET1 = 0· //禁止定时器1中断
TR1=1; //启动定时器1

EA=1://开总中断
ES=1://开串口中断

//向串口发送一个字符
void putchar(char ch)
{SBUF = ch;
while(!TI):TI=0;
//向串口发送一段字符串

void prints(char *s)
{
while(*s!='\0')//发送字符串,直到遇到0才结束
SBUF =*S++;
while(!TI);
TI =0;

//串口中断处理函数
void uart_Interrupt() interrupt 4
{unsigned char UartData://单字节串口数据 if(RI)
RI = 0;
UartData = SBUF;
SBIF = UartData:
TI=0;//向PC返回接收的数据


回复

使用道具 举报

ID:1003269 发表于 2022-4-5 20:36 来自手机 | 显示全部楼层
兴安xa 发表于 2022-4-5 11:06
不是程序有错误就是线接反了,得仔细排查

线没接反,程序具体是这样的,求大神指点
#include“STC12C5A60S2.h"
#include“hc04.h
//串口初始化,晶振11.0592,波特率9600
void UartInit(void //9600bps@11.0592MHz
{SCON =0x50: //8位数据,可变波特率
AUXR=0×40: //定时器1时钟为Fosc,即1T
AUXR &= OxFE: /第口1选择定时器1为波特率发生器
TMOD&= 0x0F; //设定定时器1为16位自动重装方式
TL1 0xE0: /设定定时初值
TH1 =OxFE; /设定定时初值
ET1 = 0· //禁止定时器1中断
TR1=1; //启动定时器1

EA=1://开总中断
ES=1://开串口中断

//向串口发送一个字符
void putchar(char ch)
{SBUF = ch;
while(!TI):TI=0;
//向串口发送一段字符串

void prints(char *s)
{
while(*s!='\0')//发送字符串,直到遇到0才结束
SBUF =*S++;
while(!TI);
TI =0;

//串口中断处理函数
void uart_Interrupt() interrupt 4
{unsigned char UartData://单字节串口数据 if(RI)
RI = 0;
UartData = SBUF;
SBIF = UartData:
TI=0;//向PC返回接收的数据


回复

使用道具 举报

ID:161164 发表于 2022-4-5 21:59 | 显示全部楼层
可能是STC的输出电压太高,加個10k的可变电阻把STC TxD讯号电压由5V分压为3.3V
回复

使用道具 举报

ID:310441 发表于 2022-4-6 07:15 来自手机 | 显示全部楼层
单片机波特率计算错了吧
回复

使用道具 举报

ID:1003269 发表于 2022-4-6 07:40 来自手机 | 显示全部楼层
lkc8210 发表于 2022-4-5 21:59
可能是STC的输出电压太高,加個10k的可变电阻把STC TxD讯号电压由5V分压为3.3V

好,我今晚试试,感谢给的可能性
回复

使用道具 举报

ID:1003269 发表于 2022-4-6 12:17 来自手机 | 显示全部楼层
DoneDone 发表于 2022-4-6 07:15
单片机波特率计算错了吧

我是用ISP烧录程序里的波特率计算器生成的头文件,应该没错,我的单片机用的是STC12c5a60s2
回复

使用道具 举报

ID:491577 发表于 2022-4-11 17:10 | 显示全部楼层
检查一下“;”。有很多处错误。例如:while(*s!='\0')//发送字符串,直到遇到0才结束;ET1 = 0· //禁止定时器1中断;
{SCON =0x50: //8位数据,可变波特率
AUXR=0×40: //定时器1时钟为Fosc,即1T
AUXR &= OxFE: /第口1选择定时器1为波特率发生器
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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