标题: 求助:52单片机蓝牙接收数据后只发回0x82 是波特率错了吗? [打印本页]

作者: czm23    时间: 2019-12-9 11:06
标题: 求助:52单片机蓝牙接收数据后只发回0x82 是波特率错了吗?
最近在做的一个小玩意,基于单片机的智能光控系统,老师要求加上蓝牙控制,各位大佬帮我看看是不是模式和波特率设计出错了

3.png (21.29 KB, 下载次数: 59)

3.png

2.jpg (120.14 KB, 下载次数: 57)

2.jpg

1.png (23.92 KB, 下载次数: 57)

1.png

作者: czm23    时间: 2019-12-15 09:45
后来发现晶振是12M的, 要如何修改程序  有没有大佬啊
作者: wulin    时间: 2019-12-16 06:52
czm23 发表于 2019-12-15 09:45
后来发现晶振是12M的, 要如何修改程序  有没有大佬啊

12M晶振的波特率不要超过2400,最高4800但要设置加倍,否则误差太大不能正常通讯。
  1. void UartInit(void)        //2400bps@12.000MHz
  2. {
  3.         PCON= 0x00;                //波特率不倍速
  4.         SCON= 0x50;                //8位数据,可变波特率
  5.         TMOD= 0x20;                //设定定时器1为8位自动重装方式
  6.         TL1 = 0xF3;                //设定定时初值
  7.         TH1 = 0xF3;                //设定定时器重装值
  8.         ET1 = 0;                //禁止定时器1中断
  9.         TR1 = 1;                //启动定时器1
  10.     EA = 1;                        //使能总中断
  11.     ES = 1;                        //使能串口中断
  12. }
  13. void UartInit(void)        //4800bps@12.000MHz
  14. {
  15.         PCON= 0x80;                //使能波特率倍速位SMOD
  16.         SCON= 0x50;                //8位数据,可变波特率
  17.         TMOD= 0x20;                //设定定时器1为8位自动重装方式
  18.         TL1 = 0xF3;                //设定定时初值
  19.         TH1 = 0xF3;                //设定定时器重装值
  20.         TR1 = 1;                //启动定时器1
  21.         ET1 = 0;                //禁止定时器1中断
  22.     EA = 1;                        //使能总中断
  23.     ES = 1;                        //使能串口中断
  24. }
复制代码





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1