找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 2189|回復(fù): 4
收起左側(cè)

萌新求助,為什么單片機(jī)串口接收的都是亂碼?

[復(fù)制鏈接]
ID:885834 發(fā)表于 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)        //寫入發(fā)送緩沖,指針+1
{
        TX1_Buffer[TX1_write] = dat;        //裝發(fā)送緩沖
        if(++TX1_write >=Lenth)        TX1_write = 0;

        if(TX1_Busy == 0)                //空閑
        {  
                TX1_Busy = 1;                //標(biāo)志忙
                TI = 1;                                        //觸發(fā)中斷
        }
}

void PrintString1(u8 *puts)
{
    for (; *puts != 0;        puts++)
             TX1_write2buff(*puts);         //遇到停止符0結(jié)束
}
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:波特率沒選錯(cuò),9600,

回復(fù)

使用道具 舉報(bào)

ID:287575 發(fā)表于 2021-3-18 01:15 | 顯示全部樓層
上述串口設(shè)置是在11.0592M的晶振設(shè)置,看看你的單片機(jī)是不是選的11.0592
回復(fù)

使用道具 舉報(bào)

ID:752974 發(fā)表于 2021-3-18 08:37 | 顯示全部樓層
如果通信正常只是顯示亂碼的話:1.檢查通信兩機(jī)的波特率;
                                             2.注意ASCII碼和HEX碼。  
回復(fù)

使用道具 舉報(bào)

ID:390416 發(fā)表于 2021-3-18 09:29 | 顯示全部樓層
串口1打印程序 可以打印3個(gè)十六位的變量 波特率9600 http://www.torrancerestoration.com/bbs/dpj-201660-1.html

串口發(fā)送 不需要while死等 串口接收?qǐng)?zhí)行軟件復(fù)位 http://www.torrancerestoration.com/bbs/dpj-200927-1.html
回復(fù)

使用道具 舉報(bào)

ID:280000 發(fā)表于 2021-3-19 23:49 | 顯示全部樓層
串口波特率是否計(jì)算正確
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表