找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3232|回復: 8
收起左側

求大神指點,51單片機藍牙模塊串口通信一直發(fā)送00

[復制鏈接]
ID:1003269 發(fā)表于 2022-4-5 08:19 來自觸屏版 | 顯示全部樓層 |閱讀模式
100黑幣
51單片機和hc藍牙模塊波特率都是9600,藍牙模塊在電腦和手機端正常通信,51單片機+藍牙模塊發(fā)送到手機上一直接收到16進制的00,這是什么原因啊

回復

使用道具 舉報

ID:979299 發(fā)表于 2022-4-5 11:06 | 顯示全部樓層
不是程序有錯誤就是線接反了,得仔細排查
回復

使用道具 舉報

ID:1003269 發(fā)表于 2022-4-5 20:30 來自觸屏版 | 顯示全部樓層
興安xa 發(fā)表于 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為波特率發(fā)生器
TMOD&= 0x0F; //設定定時器1為16位自動重裝方式
TL1 0xE0: /設定定時初值
TH1 =OxFE; /設定定時初值
ET1 = 0· //禁止定時器1中斷
TR1=1; //啟動定時器1

EA=1://開總中斷
ES=1://開串口中斷

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

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

//串口中斷處理函數
void uart_Interrupt() interrupt 4
{unsigned char UartData://單字節(jié)串口數據 if(RI)
RI = 0;
UartData = SBUF;
SBIF = UartData:
TI=0;//向PC返回接收的數據


回復

使用道具 舉報

ID:1003269 發(fā)表于 2022-4-5 20:36 來自觸屏版 | 顯示全部樓層
興安xa 發(fā)表于 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為波特率發(fā)生器
TMOD&= 0x0F; //設定定時器1為16位自動重裝方式
TL1 0xE0: /設定定時初值
TH1 =OxFE; /設定定時初值
ET1 = 0· //禁止定時器1中斷
TR1=1; //啟動定時器1

EA=1://開總中斷
ES=1://開串口中斷

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

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

//串口中斷處理函數
void uart_Interrupt() interrupt 4
{unsigned char UartData://單字節(jié)串口數據 if(RI)
RI = 0;
UartData = SBUF;
SBIF = UartData:
TI=0;//向PC返回接收的數據


回復

使用道具 舉報

ID:161164 發(fā)表于 2022-4-5 21:59 | 顯示全部樓層
可能是STC的輸出電壓太高,加個10k的可變電阻把STC TxD訊號電壓由5V分壓為3.3V
回復

使用道具 舉報

ID:310441 發(fā)表于 2022-4-6 07:15 來自觸屏版 | 顯示全部樓層
單片機波特率計算錯了吧
回復

使用道具 舉報

ID:1003269 發(fā)表于 2022-4-6 07:40 來自觸屏版 | 顯示全部樓層
lkc8210 發(fā)表于 2022-4-5 21:59
可能是STC的輸出電壓太高,加個10k的可變電阻把STC TxD訊號電壓由5V分壓為3.3V

好,我今晚試試,感謝給的可能性
回復

使用道具 舉報

ID:1003269 發(fā)表于 2022-4-6 12:17 來自觸屏版 | 顯示全部樓層
DoneDone 發(fā)表于 2022-4-6 07:15
單片機波特率計算錯了吧

我是用ISP燒錄程序里的波特率計算器生成的頭文件,應該沒錯,我的單片機用的是STC12c5a60s2
回復

使用道具 舉報

ID:491577 發(fā)表于 2022-4-11 17:10 | 顯示全部樓層
檢查一下“;”。有很多處錯誤。例如:while(*s!='\0')//發(fā)送字符串,直到遇到0才結束;ET1 = 0· //禁止定時器1中斷;
{SCON =0x50: //8位數據,可變波特率
AUXR=0×40: //定時器1時鐘為Fosc,即1T
AUXR &= OxFE: /第口1選擇定時器1為波特率發(fā)生器
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表