• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STC51单片机为啥向PC发送汉字会出现乱码?

sjsjling 2019-09-11 浏览量:1308
程序:(这是网上下载的,刚开始我的程序也这样,排查不出来原因,直接在网上下载了一个,还是这样,求大神指点。_下面还有串口接收的信息。)
//#include <reg52.h>
#include <stdio.h>
#include <stc89.h>

#define uint unsigned int
#define uchar unsigned char


//毫秒级延时函数定义
void delay(uint z)
{
        uint xy;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);                 
}


//串口初始化
void UARTInit()
{
        SM0 = 0;        SM1 = 1;//串口工作方式18位UART波特率可变
        TR1 = 1;//启动定时器1
        TMOD = 0x20;//定时器1,工作模式2 8位自动重装
        TH1 = 0xfd;
        TL1 = 0xfd;//设置比特率9600
}


void main()
{
        UARTInit(); //串口初始化
        while(1)
        {
                TI = 1;//发送请求标志位
                puts("大家好!欢迎学习单片机");//发送的汉字
                while(!TI);//判断是否发送完成  发送完成出循环
                TI = 0;
                delay(1000);//延迟1秒
        }        
}
串口接收内容:
大家好!欢?暗テ?
大家好!欢迎学习单片??
大家好!欢迎学习单片机
大家好!欢迎学习单片机
大家?茫』队暗テ?机


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:2
  • 检查晶振频率,如果不合适,波特率不对就会导致乱码,还有检查上位机的波特率和一样格式接收和发送,用hex格式就要统一。

  • 网上下载的程序,你不知道人家晶振的频率是多少。

    所以你最好是根据你的晶振频率计算一下 定时器初值。

    另外STC 是有代码生成工具的的,可以直接生成串口C语言代码

相关问题

问题达人换一批

STC51单片机为啥向PC发送汉字会出现乱码?