0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

51单片机串口配置方法

CHANBAEK 来源:电子应用学习馆 作者:一只会飞的大鱼儿 2023-04-14 14:58 次阅读

串口,作为单片机程序开发中最常用、最方便,也是应用最广泛的程序调试方法;无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机开发人员最常用的单片机外设。

由于大部分51单片机不支持在线调试功能,所以串口作为一种有效的调试功能,所以在51单片机程序开发时,无法进行在线调试,不妨可以多采用串口来进行调试。

1. 串口配置

51单片机配置除了需要配置2个8位寄存器SCON、PCON外,还要配置定时器1的控制寄存器TMOD,因为串口在进行收发需要使用定时器来采样。

(1) 状态控制寄存器 SCON

SCON 是一个逐位定义的 8 位寄存器,用于控制串行通信的方式选择、接收和发送,指 示串口的状态,SCON 即可以字节寻址也可以位寻址,字节地址 98H,地址位为 98H~9FH。它的各个位定义如下:

SM0 和 SM1 是串口的工作方式选择位,2 个选择位对应 4 种工作方式,如下表,其中 Fosc 是振荡器的频率。

(2) 电源与波特率控制寄存器

控制寄存器 PCON 也是一个逐位定义的 8 位寄存器,目前仅仅有几位有定义,如下所示:

图片

仅最高位 SMOD 与串口的控制有关,其他位与掉电方式有关。PCON 的地址为 87H 只能按 字节寻址,SMOD 是串行通信波特率系数控制位,当串口工作在工作方式 1、2 时,若使用 T1 作为波特率发生器其 SMOD=1 则波特率加倍。

(3) 定时器控制模式寄存器

TMOD是定时器、计数器模式控制寄存器,它是一个逐位定义的8位寄存器,但只能使用字节寻址

图片

当串口工作在工作方式0和2时,波特率固定,方式0时fosc/12;方式2时fosc/32或fosc/64(根据SMOD判断)。当串口工作在方式1时,波特率=(2^SMOD/32)*(单片机时钟频率/(256-X)),X是初值;C/T#为定时器和计数器选择位,0为定时器,1为计数器。

2. 串口通用程序

为了有较好的通用性,将串口程序配置为一个H文件和C文件,往后只要开发51单片机程序,都可以将该两个文件复制在工程中直接使用,无须修改。

(1)uart.h

#ifndef _UART_H_
#define _UART_H_


#include "reg52.h"


void UartInit(void);
void Send_string(unsigned char *c);
void Send_Data(unsigned char DAT);


#endif

(2)uart.c

#include "uart.h"


//串口初始化
void UartInit(void)
{
  /*串口初始化 */
  TMOD = 0x20;    //定时器T1使用工作方式2
  TH1 = 253;        // 设置初值
  TL1 = 253;
  TR1 = 1;          // 开始计时
  SCON = 0x50;    //工作方式1,波特率9600bps,允许接收   
  ES = 1;
  EA = 1;           // 打开所以中断   
  TI = 0;
  RI = 0;
}


void Send_Data(unsigned char DAT)
{
  ES = 0;
  TI=0;
  SBUF = DAT ;
  while(TI==0);
  TI=0;
  ES = 1;
}


void Send_string(unsigned char  *c)
{
  while(*c != '\\0')
  {
    Send_Data(*c++);
  }  
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6043

    文章

    44617

    浏览量

    638103
  • 寄存器
    +关注

    关注

    31

    文章

    5363

    浏览量

    121053
  • 51单片机
    +关注

    关注

    274

    文章

    5705

    浏览量

    124188
  • 调试
    +关注

    关注

    7

    文章

    589

    浏览量

    34043
  • 串口
    +关注

    关注

    14

    文章

    1557

    浏览量

    76966
收藏 人收藏

    相关推荐

    51单片机串口检测程序

    本内容提供了51单片机串口检测程序,详解列出了本程序
    发表于 05-09 11:43 6966次阅读

    51单片机串口通信代码

    51单片机串口通信的代码设计
    发表于 11-09 17:47 180次下载

    51单片机串口通信程序

    51单片机串口通信程序,带有详细例程,希望可以给你帮助。
    发表于 05-16 11:56 124次下载

    基于51单片机的UART串口通信

    基于51单片机的UART串口通信详解。
    发表于 11-21 10:14 6.3w次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的UART<b class='flag-5'>串口</b>通信

    如何使用51单片机实现串口通信

    51单片机串口引脚为P3.0引脚与P3.1引脚,分别是RXD和TXD引脚。串口通信可以用于单片机和其它芯片通信或者
    发表于 11-21 15:47 3w次阅读
    如何使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>实现<b class='flag-5'>串口</b>通信

    如何配置minicom与51单片机进行串口通信详细实例说明

    本文档的主要内容详细介绍的是如何配置minicom与51单片机进行串口通信详细实例说明。
    发表于 07-10 17:40 0次下载
    如何<b class='flag-5'>配置</b>minicom与<b class='flag-5'>51</b><b class='flag-5'>单片机</b>进行<b class='flag-5'>串口</b>通信详细实例说明

    51单片机串口通讯详解

    串口,作为单片机程序开发中最常用、最方便,也是应用最广泛的程序调试方法;无论是作为调试工具,打印出调试信息,还是对功能模块进行通信,串口是每个单片机
    发表于 11-11 17:06 15次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通讯详解

    51单片机串口通信

    51单片机串口通信文章目录51单片机串口通信串口介绍
    发表于 11-18 14:06 22次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信

    51单片机串口通信

    51单片机串口通信文章目录51单片机串口通信串口介绍
    发表于 11-21 20:36 64次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信

    串口传输(51单片机版)

    串口传输在51单片机里是非常重要的一点,这常常是在中断、计数器后面学习,因为不可避免的需要用到中断。51单片机
    发表于 11-23 16:20 0次下载
    <b class='flag-5'>串口</b>传输(<b class='flag-5'>51</b><b class='flag-5'>单片机</b>版)

    单片机学习笔记————51单片机实现从串口收发

    单片机学习笔记————51单片机实现从串口收发
    发表于 11-23 17:06 42次下载
    <b class='flag-5'>单片机</b>学习笔记————<b class='flag-5'>51</b><b class='flag-5'>单片机</b>实现从<b class='flag-5'>机</b>的<b class='flag-5'>串口</b>收发

    51单片机——串口通信

    51单片机——串口通信串口通信?串口通信的原理?串口配置
    发表于 11-23 17:36 33次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>——<b class='flag-5'>串口</b>通信

    51 单片机串口烧录程序方法

    51单片机串口烧录程序方法51 单片机串口烧录程序
    发表于 11-25 18:21 120次下载
    <b class='flag-5'>51</b> <b class='flag-5'>单片机</b><b class='flag-5'>串口</b>烧录程序<b class='flag-5'>方法</b>

    基于51单片机单片机串口通信仿真设计

    基于51单片机单片机串口通信仿真设计,资料包含仿真及源程序
    发表于 04-20 16:15 4次下载

    51单片机串口通信详细介绍-小白必看

    51单片机串口通信是单片机与外部设备通信的重要方式,它基于串行通信的原理,以字节为单位进行数据传输。在51
    的头像 发表于 04-17 09:33 2137次阅读
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>串口</b>通信详细介绍-小白必看