找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 77|回复: 0
打印 上一主题 下一主题
收起左侧

stc8g1k08a单片机串口返回数据终于无乱码了 波特率9600正常显示

[复制链接]
跳转到指定楼层
楼主
ID:1167140 发表于 2026-1-31 09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "STC8G.H"

// 串口发送"你好世界"的GB2312编码对照表:
// "你"的GB2312编码:0xC4, 0xE3
// "好"的GB2312编码:0xBA, 0xC3  
// "世"的GB2312编码:0xCA, 0xC0
// "界"的GB2312编码:0xBD, 0xE7

void main()
{
    unsigned int i;
   
    // 配置P3.1引脚模式(串口TXD引脚,推挽输出)
    P3M0 = 0x02;
   
    // 串口初始化配置
    SCON = 0x40;  // 串口工作模式1(8位UART,波特率可变)
    TMOD = 0x20;  // 定时器1工作模式2(8位自动重装)
    TH1 = 0xE8;   // 定时器1重装值,对应1200波特率(11.0592MHz晶振)
    TL1 = 0xE8;
    TR1 = 1;      // 启动定时器1(作为串口波特率发生器)
   
    // 上电延时,确保硬件稳定
    for(i = 0; i < 60000; i++);
   
    while(1)
    {
        // 发送"你"(GB2312双字节编码)
        SBUF = 0xC4; while(!TI); TI = 0;
        SBUF = 0xE3; while(!TI); TI = 0;
        
        // 发送"好"(GB2312双字节编码)
        SBUF = 0xBA; while(!TI); TI = 0;
        SBUF = 0xC3; while(!TI); TI = 0;
        
        // 发送"世"(GB2312双字节编码)
        SBUF = 0xCA; while(!TI); TI = 0;
        SBUF = 0xC0; while(!TI); TI = 0;
        
        // 发送"界"(GB2312双字节编码)
        SBUF = 0xBD; while(!TI); TI = 0;
        SBUF = 0xE7; while(!TI); TI = 0;
        
        // 发送回车+换行符,优化串口显示格式
        SBUF = '\r'; while(!TI); TI = 0;
        SBUF = '\n'; while(!TI); TI = 0;
        
        // 延时约1秒,控制发送频率
        for(i = 0; i < 12000; i++);
    }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表