找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1434|回复: 3
收起左侧

单片机串口发送字符串出现乱码 晶振12MHZ 波特率4800 求大佬指出问题

[复制链接]
回帖奖励 1 黑币 回复本帖可获得 1 黑币奖励! 每人限 1 次
ID:866745 发表于 2021-5-30 16:48 | 显示全部楼层 |阅读模式
  1. #include <STC15F2K60S2.h>

  2. unsigned char send_str[7]={"abcdef"};

  3. void UartInit(void)                //4800bps@12.000MHz
  4. {
  5.         PCON &= 0x7F;                //波特率不倍速
  6.         SCON = 0x50;                //8位数据,可变波特率
  7.         AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
  8.         AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
  9.         TMOD &= 0x0F;                //清除定时器1模式位
  10.         TMOD |= 0x20;                //设定定时器1为8位自动重装方式
  11.         TL1 = 0xB2;                //设定定时初值
  12.         TH1 = 0xB2;                //设定定时器重装值
  13.         ET1 = 0;                //禁止定时器1中断
  14.         TR1 = 1;                //启动定时器1
  15. }

  16. void close()
  17. {
  18.   P2 =(P2&0x1f)|0x80;P0=0xff;
  19.         P2 =(P2&0x1f)|0xa0;P0=0x00;
  20. }

  21. void send_string()
  22. {
  23.   unsigned char i;
  24.         for(i=0;i<6;i++)
  25.         {
  26.     SBUF = send_str[i];
  27.                 while(!TI);
  28.                 TI=0;
  29.   }
  30. }

  31. void main()
  32. {
  33.   close();
  34.   UartInit();
  35.         EA=1;
  36. while(1)
  37. {
  38.   send_string();
  39. }
  40. }
复制代码
回复

使用道具 举报

ID:57657 发表于 2021-5-30 17:05 | 显示全部楼层
串口要用11.0592Mhz的晶振
回复

使用道具 举报

ID:213173 发表于 2021-5-30 17:31 | 显示全部楼层
串口接收方用文本模式试试
回复

使用道具 举报

ID:570093 发表于 2021-5-30 19:11 | 显示全部楼层
12M晶振的话使用波特率加倍可以,同时要注意串口上的波特率要跟程序一致
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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