登录/注册

stc15w204s串口通信

更多

针对STC15W204S单片机的串口通信(UART),以下是使用中文的详细操作指南,包含关键步骤、寄存器配置和示例代码:


一、硬件连接

  1. 串口引脚
    • P3.0 (RXD):接收数据 (连接USB转TTL的TX)
    • P3.1 (TXD):发送数据 (连接USB转TTL的RX)
  2. 电平转换
    芯片为TTL电平,需通过USB转TTL模块连接电脑,或使用MAX232芯片连接RS232设备。

二、关键寄存器配置

STC15系列使用定时器Timer1或Timer2作为波特率发生器(常用Timer1)。需配置以下寄存器:

寄存器 功能 推荐设置
SCON 串口控制 0x50 (模式1,允许接收)
AUXR 辅助寄存器 0x40 (Timer1使用1T模式) 或 0x00 (12T模式)
TMOD 定时器模式 0x20 (Timer1模式2:8位自动重载)
PCON 波特率加倍 0x80 (SMOD=1,波特率加倍) 或 0x00
TH1/TL1 波特率初值 根据公式计算

三、波特率计算

公式
[ \text{波特率} = \frac{\text{定时器时钟}}{\frac{32}{SMOD} \times (256 - \text{TH1})} ]

常用波特率对应TH1值(假设系统时钟为11.0592MHz):

? 注意:建议使用11.0592MHz晶振以兼容标准波特率。


四、初始化代码示例(模式1,9600波特率)

#include <STC15.H>

void UART_Init() {
    // 设置串口模式
    SCON = 0x50;     // 模式1,允许接收
    AUXR = 0x40;     // Timer1使用1T模式
    TMOD = 0x20;     // Timer1模式2(8位自动重载)
    TH1 = 0xFA;      // 9600波特率@11.0592MHz (1T)
    TL1 = 0xFA;
    PCON &= 0x7F;    // SMOD=0 (波特率不倍增)
    // PCON |= 0x80; // 如需波特率倍增(如19200),启用此行

    TR1 = 1;         // 启动Timer1
    ES = 1;          // 开启串口中断(可选)
    EA = 1;          // 开总中断
}

五、数据收发函数

1. 发送一个字节

void UART_SendByte(char dat) {
    SBUF = dat;      // 数据写入发送缓冲
    while (!TI);     // 等待发送完成标志
    TI = 0;          // 清除标志
}

2. 接收一个字节(轮询方式)

char UART_ReceiveByte() {
    while (!RI);     // 等待接收完成
    RI = 0;          // 清除标志
    return SBUF;     // 返回数据
}

3. 发送字符串

void UART_SendString(char *str) {
    while (*str) {
        UART_SendByte(*str++);
    }
}

六、串口中断接收(推荐方式)

void UART_ISR() interrupt 4 {
    if (RI) {
        RI = 0;       // 清除接收中断标志
        char recv = SBUF; // 获取数据

        // 自定义处理逻辑(例如:回传数据)
        UART_SendByte(recv); 
    }
    if (TI) {
        TI = 0;       // 清除发送中断标志(可选)
    }
}

七、常见问题排查

  1. 通信失败

    • 检查硬件连接(TX-RX交叉连接)
    • 确认PC端波特率与单片机一致
    • 检查系统时钟频率(#define FOSC 11059200UL
    • 验证AUXR是否设置正确(1T/12T模式)
  2. 数据乱码

    • 晶振频率必须是11.0592MHz或22.1184MHz
    • 检查波特率加倍位SMOD设置
  3. 下载程序后不通信

    • STC单片机下载后自动冷启动,无需断电
    • 确认下载时未占用串口(如关闭串口助手)

八、进阶配置

  1. 多机通信:使用SM2TB8/RB8(模式2/3)
  2. 硬件流控:部分型号支持RTS/CTS(需检查手册)
  3. 奇偶校验:通过SCONRB8/TB8位实现

⚠️ 重要:STC15W204S为1T单片机,时序与传统12T 8051不同,务必使用新配置文件。

实际开发请参考STC官方手册《STC15系列单片机技术手册》。

STC15W204S-35I-SOP16封装STC(宏晶)MCU微控制器单片机芯片

1970-01-01 08:00:00 至 1970-01-01 08:00:00

51单片机电路第一次上电无法下载程序

使用stc15W204s单片机,第一次上电时复位键无法工作,不能下载程序,已下载过程序的单片机焊接在这个电路上可正常下载。

2023-10-08 14:12:27

STC15W串口与51串口设置的区别是什么

STC15W的串口与51的串口设置有所区别,从网上找了很多资料,供大家参考,特别感谢如下作者:

2022-02-18 07:54:42

STC15W4K16S4的原理图以及PCB图下载

STC15W4K16S4的原理图以及PCB图下载

资料下载 Cannalia 2021-12-28 10:14:19

基于stc15w204s和ds1302时钟模块控制电机,oled显示

基于stc15w204s和ds1302时钟模块控制电机,oled显示前阵子轮到我早上6:00开门(输入密码后遥控切换大门为常开模式),起床肯定是不可能的啦!于是就想到了做这么一个东西材料sg90

资料下载 张亮 2021-12-23 19:26:47

STC15W串口通信梳理

STC15W的串口与51的串口设置有所区别,从网上找了很多资料,供大家参考,特别感谢如下作者:

资料下载 佚名 2021-12-23 19:11:10

STC15F408AS串口发送数据实例

/*-------------------------------------------------------------------------------- * 项目名称: 串口通信测试程序 V1.0

资料下载 佚名 2021-11-29 12:06:04

STC15W408AS单片机简单串口通信示例

STC15W408AS单片机串口通信示例本示例展示将收到的数据内容,返回发送出去。实例代码#include "

资料下载 佚名 2021-11-18 14:06:02

基于stc15w204s和ds1302时钟模块控制电机

基于stc15w204s和ds1302时钟模块控制电机,oled显示前阵子轮到我早上6:00开门(输入密码后遥控切换大门为常开模式),起床肯定是不可能的啦!于是就想到了做这么一个东西材料sg90

2022-02-18 06:27:58

STC15W204S-35I SOP16定时器的相关资料推荐

文件:/** * STC15W204S-35I SOP16 * Timer 2 - 16 bit, auto-reload *//** * Interrupt Registers Definition */sfr IE = 0xA8; /* Interrupt Enab

2022-02-18 06:17:53

STC15F408AS串口发送数据实例分享

/*-------------------------------------------------------------------------------- * 项目名称:串口通信测试程序 V1.0.0 *

2022-01-24 08:01:51

stc15w204s-sop8单片机解码

ev1527、pt2262等433/315MHZ芯片用stc15w204s-sop8单片机解码,含源程序硬件介绍:软件介绍:单片机引脚定义:解码原理:主要代码 pt2262.c头文件

2021-11-30 08:04:12

STC15W408AS单片机串口通信示例分享

STC15W408AS单片机串口通信示例本示例展示将收到的数据内容,返回发送出去。实例代码#include "

2021-11-26 07:01:33

stc15w201s系列sop8应用电路图

stc15w201s系列sop8应用电路图,下图为STC15W201S系列单片机引脚图:主要使用SOP16封装的STC15W204S。下表为管脚

2021-07-14 08:09:24

求大神写个stc15w204s单片机怎么写步进电机正反转的程序

我是一个单片机爱好者,现在手上有几个stc15w204s16脚的单片机,我觉得这个单片机是内带晶振感觉挺好奇的,想用一个stc15w204s单片机控制步进电机正反转但是不知道怎么写按照

2019-10-10 22:09:04
7天热门专题 换一换
相关标签