登录/注册

51串口通信程序实例

更多

以下是一个51单片机串口通信的完整程序实例(使用C语言,基于STC89C52芯片),实现功能:电脑发送数据→单片机接收并原样回传(回显),波特率9600bps,晶振11.0592MHz。

#include <reg52.h>  // 包含51单片机寄存器定义头文件

/* 波特率设置(时钟11.0592MHz) */
#define FOSC 11059200  // 晶振频率
#define BAUD 9600      // 目标波特率
#define TIMER1_RELOAD (256 - (FOSC/12/32/BAUD)) // 计算定时器重装值

/* 串口初始化函数 */
void UART_Init() {
    // 1. 设置定时器1为波特率发生器(模式2:8位自动重载)
    TMOD &= 0x0F;      // 清零T1控制位
    TMOD |= 0x20;      // 设置T1为模式2
    TH1 = TIMER1_RELOAD; // 波特率重装值(计算得0xFD)
    TL1 = TH1;
    TR1 = 1;           // 启动定时器1

    // 2. 设置串口工作模式(模式1:8位UART,可变波特率)
    SCON = 0x50;       // 0101 0000: 模式1 + 允许接收

    // 3. 可选:开启中断接收(ES=1 + EA=1)
    ES = 1;            // 打开串口中断
    EA = 1;            // 开启总中断
}

/* 串口发送一字节 */
void UART_SendByte(unsigned char dat) {
    SBUF = dat;        // 数据写入发送缓冲器
    while(!TI);        // 等待发送完成(TI=1)
    TI = 0;            // 清除发送中断标志
}

/* 串口接收中断服务函数 */
void UART_ISR() interrupt 4 {
    if(RI) {           // 如果是接收中断
        RI = 0;        // 清除接收中断标志
        UART_SendByte(SBUF); // 接收数据原样回传
    }
}

/* 主函数 */
void main() {
    UART_Init();       // 初始化串口
    while(1);          // 主循环(中断处理后台通信)
}

关键说明:

  1. 硬件连接

    • 单片机P3.0(RXD) → 电脑串口TXD(USB转TTL)
    • 单片机P3.1(TXD) → 电脑串口RXD(USB转TTL)
    • 共地(GND连接)
  2. 波特率计算

    TIMER1_RELOAD = 256 - (11059200 / 12 / 32 / 9600) ≈ 253 (0xFD)
  3. 功能验证

    • 电脑使用串口助手(如XCOM、SSCOM)发送数据
    • 单片机接收到数据后立即原样返回(例如发送'A'返回'A')
  4. 中断模式 vs 轮询模式

    • 本例使用中断接收(更高效)
    • 轮询接收替代方案:
      if(RI) {            // 主循环中检测接收标志
       RI = 0;
       UART_SendByte(SBUF);
      }
  5. 波特率精度

    • 必须使用11.0592MHz晶振(用12MHz会有误差导致乱码)

定制修改:

实际烧录时需选择对应单片机型号(如STC89C52),编译工具建议Keil C51。

用Labview写一个电子称的485串口程序

关键词:Labview + 串口程序 232、485串口通讯是最常见的仪器仪表通讯方式之一,本文详细介绍,用Labview编写一个电子秤的48

2025-03-06 09:54:27

485串口可以用can协议吗

一、引言 随着工业自动化和智能控制技术的发展,通信协议在设备间数据传输和控制中扮演着越来越重要的角色。485串口和CAN协议是两种常见的通信协议

2024-06-16 09:21:21

STM32串口通信简明知识

STM32串口通信简明知识

2023-10-25 15:48:39

MSP430串口通信(入门级)

MSP430串口通信(入门级)

资料下载 袁文博 2022-03-14 15:44:34

STM32串口1通讯实验程序下载

STM32串口1通讯实验程序下载

资料下载 郑兵 2021-12-30 10:34:29

使用51单片机进行RS232串口通信的代码分析

本文档的主要内容详细介绍的是使用51单片机进行RS232串口通信的代码分析免费下载。

资料下载 overheat 2019-09-26 17:16:00

51单片机进行RS232串口应用和MAX487多机通信应用实例的电路图和程序

本文档的主要内容详细介绍的是51单片机进行RS232串口应用和MAX487多机通信应用

资料下载 王越建 2019-08-07 17:33:00

使用51单片机进行串口通信的资料和程序免费下载

本文档的主要内容详细介绍的是使用51单片机进行串口通信的资料和程序免费下

资料下载 佚名 2019-07-17 17:38:00

RS-232串口和RS-485串口的区别

RS232串口是计算机和通信行业应用最广泛的串口类型。该系统采用全双工制,要求有三种线路:地线、发送线和接收线。只有RS232才能实现点对点通讯

2022-05-06 16:04:04

STM32串口通信相关资料分享

STM32串口通信文章目录STM32串口通信前言一、基于寄存器与基于固件

2022-02-10 06:28:54

求大佬分享stm32串口通信程序

求大佬分享stm32串口通信程序

2021-12-15 07:03:48

stm32串口通信是如何工作的

stm32串口通信有何功能?stm32串口通信是如何工作的?

2021-12-08 07:54:36

51串口结合外部中断实例分享

51串口结合外部中断实例一、实验题目二、设计方案及电路三、实验步骤四、实验程序

2021-11-19 07:45:06

什么是STM32串口通信

同步通信和异步通信的区别是什么?什么是STM32串口通信?

2021-10-09 09:03:08

知道STM32串口通信乱码要怎么处理吗

STM32串口通信以及温度采集搞定,其中主要遇到STM32系列单片机时钟树的问题,串口

2021-06-16 15:35:22

7天热门专题 换一换
相关标签