标题: 单片机串口发送字符串出现乱码 晶振12MHZ 波特率4800 求大佬指出问题 [打印本页]

作者: 无意之罪    时间: 2021-5-30 16:48
标题: 单片机串口发送字符串出现乱码 晶振12MHZ 波特率4800 求大佬指出问题
  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. }
复制代码

作者: npn    时间: 2021-5-30 17:05
串口要用11.0592Mhz的晶振
作者: wulin    时间: 2021-5-30 17:31
串口接收方用文本模式试试
作者: 96317    时间: 2021-5-30 19:11
12M晶振的话使用波特率加倍可以,同时要注意串口上的波特率要跟程序一致




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