51单片机串口通信乱码。。。闹不清什么问题= =
串口显示的应该是“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);
}
#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单片机串口通信的程序实现与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单片机串口打印乱码的解决方法
我使用的是stc的89c52rc型号,晶振是12m。是因为买的最小系统就是这个频率。使用波特率位9600,将TL、TH都设置成0xfd后不管是英文还是中文的都是乱码。
51串口发送汉字乱码问题解决方案
51单片机串口发送汉字显示乱码问题


单片机/工控
