标题: 萌新求助,为什么单片机串口接收的都是乱码? [打印本页]

作者: 落十一s    时间: 2021-3-17 20:51
标题: 萌新求助,为什么单片机串口接收的都是乱码?
#include "STC15F2K60S2.H"

#define Lenth 64
sbit k1=P1^0;
typedef unsigned char u8;
u8 xdata RX1_Buffer[Lenth];
u8 xdata TX1_Buffer[Lenth];
u8 TX1_c;
u8 RX1_c;
u8 TX1_write;
u8 TX1_read;
bit TX1_Busy;

void TX1_write2buff(u8 dat)        //写入发送缓冲,指针+1
{
        TX1_Buffer[TX1_write] = dat;        //装发送缓冲
        if(++TX1_write >=Lenth)        TX1_write = 0;

        if(TX1_Busy == 0)                //空闲
        {  
                TX1_Busy = 1;                //标志忙
                TI = 1;                                        //触发中断
        }
}

void PrintString1(u8 *puts)
{
    for (; *puts != 0;        puts++)
             TX1_write2buff(*puts);         //遇到停止符0结束
}
void main()
{
        TX1_Busy=0;
        RX1_c=0;
        TX1_c=0;
        TX1_write=0;
  TX1_read=0;
        SCON = 0x50;                //
        AUXR |= 0x01;                /
        AUXR |= 0x04;                //
        T2L = 0xE0;                //
        T2H = 0xFE;                //
        AUXR |= 0x10;                //
        REN = 1;        //允许接收
        ES  = 1;        //允许中断
        EA = 1;                //允许全局中断
        
        while(1)
        {
               
        if(k1==0)
        {
           PrintString1("你好世界\n\r");
        }
}
}
void UART_1() interrupt 4
{
        if(RI)
        {
                RI=0;
        RX1_Buffer[RX1_c]=SBUF;
        if(++RX1_c>=Lenth) RX1_c=0;
        }
        
        if(TI)
        {
                TI=0;
                if(TX1_read!=TX1_write)
                {
                SBUF=TX1_Buffer[TX1_read];
                if(++TX1_read>=Lenth) TX1_read=0;
                }
                TX1_Busy=0;
        }
}



Ps:波特率没选错,9600,


作者: zhangxiaozi    时间: 2021-3-18 01:15
上述串口设置是在11.0592M的晶振设置,看看你的单片机是不是选的11.0592
作者: munuc_w    时间: 2021-3-18 08:37
如果通信正常只是显示乱码的话:1.检查通信两机的波特率;
                                             2.注意ASCII码和HEX码。  
作者: 人人学会单片机    时间: 2021-3-18 09:29
串口1打印程序 可以打印3个十六位的变量 波特率9600 http://www.51hei.com/bbs/dpj-201660-1.html

串口发送 不需要while死等 串口接收执行软件复位 http://www.51hei.com/bbs/dpj-200927-1.html
作者: 湖南    时间: 2021-3-19 23:49
串口波特率是否计算正确




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