51单片机串口通信乱码。。。闹不清什么问题= =

超级冷兔 超级冷兔 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
串口显示的应该是“0123456789jiuehskdjfHSKLJsdla47547237836876357425687361463543”,但是当MemoryModel在data里时收到的是“0123456789jiuehskdjfHSKLcdlA4794723w:3w876357425687361463543”,在pdata里收到的是“0123456789jiuehskdjfHSKLJsdla47547x>ëòêòéòäýüx>âû?1463543”,在xdata里收到的是”?å‚)õ‚åƒ:õƒä“"Óï?“,在send_ARRAY里加延时也不行。。。这是怎么回事呢??应该怎样避免?
#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char

uchar array[]="0123456789jiuehskdjfHSKLJsdla47547237836876357425687361463543";

void init(void)
{
PCON=0x00;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
//IT0=1;
EA=1;
ES=1;
//EX0=1;
}

void delayms(uint t)
{
uint i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}

void send_BYTE(uchar ch)
{
SBUF=ch;
while(!TI);
TI=0;
}

void send_ARRAY(uchar *a)
{
uint i=0;
while(a[i]!='\0')
{
send_BYTE(a[i]);
i++;
//delayms(1);
}
}

void main()
{
delayms(300);
init();
delayms(300);
send_ARRAY(array);
while(1);
}
...全文

相关推荐

51单片机串口发送汉字显示乱码问题

二、51单片机串口发送汉字显示乱码问题在使用51单片机进行串口通信时,发送汉字时常出现乱码问题。这种问题的出现是由于编译器的BUG造成的。

weixin_38737980

51单片机串口通信的程序实现与Proteus仿真

一、51单片机的串口通信 关于51单片机串口通信的讲解的博客有很多,这里就不再详细讲解。下面给出程序 1.uart.h #ifndef __UART__ #define __UART__ typedef unsigned char u8; void UART_Init(); void UART_Send_Data(u8 byte); u8 UART_Receive_Data(); #endif 2.uart.c #include "reg52.h" #include "uart.h" //串口初始化

星水天河

51单片机串口通信(UART)

text{溢出率} = \frac{\text{系统时钟频率}}{12 \times (256 - \text{TH1})}\text{波特率} = \frac{2^{\text{SMOD}} \times \text{定时器1溢出率}}{32}掌握UART通信后,可实现单片机与PC、传感器、蓝牙/WiFi模块等设备的灵活交互,是嵌入式开发的核心技能之一。

车载诊断工程师-小白

51单片机串口打印乱码的解决方法

在51单片机开发过程中,串口通信是常见的数据传输方式,然而在实际操作中,用户可能会遇到串口打印乱码的问题。

weixin_38732811

51串口发送汉字乱码问题解决方案

### 51单片机串口发送汉字乱码问题解决方案#### 一、问题背景与现象在使用51单片机进行串口通信时,可能会遇到一个常见问题:通过串口发送汉字时,接收端接收到的是乱码而不是正常的汉字。

bless0203
评论 15
收藏 已收藏
分享
返回顶部
超级冷兔
单片机/工控 27,522 成员 28,796 内容