第七章、stc89c52中的串行口通信

这篇具有很好参考价值的文章主要介绍了第七章、stc89c52中的串行口通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、串行口(serial)介绍

串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。

STC89C52系列单片机内部集成有一个功能很强的全双工串行通信口UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),与传统8051单片机的串口完全兼容。设有2个互相独立的接收、发送缓冲器,可以同时发送和接收数据。发送缓冲器只能写入而不能读出,接收缓冲器只能读出而不能写入,,因而两个缓冲器可以共用一一个地址码(99H)。两个缓冲器统称串行通信特殊功能寄存器SBUF。

  • 管脚:STC89C52系列单片机串行口对应的硬件部分对应的管脚是P3.0/RxD和P3.1/TxD。
  • 串口通信优点:STC89C52系列单片机的串行通信口,除用于数据通信外,还可方便地构成一一个或多个并行I/O口,或作串一并转换,或用于扩展串行外设等。·

STC89C52中UART的四种工作模式

串行通信设有4种工作方式,其中两种方式的波特率是可变的,另两种是固定的,以供不同应用场合选用。波特率由内部定时器/计数器产生,用软件设置不同的波特率和选择不同的工作方式。主机可通过查询或中断方式对接收/发送进行程序处理,使用十分灵活。

  • 模式0:同步移位寄存器     
  • 模式1:8位UART,波特率可变(常用)   
  • 模式2:9位UART,波特率固定     
  • 模式3:9位UART,波特率可变

第七章、stc89c52中的串行口通信

 

串口硬件电路

第七章、stc89c52中的串行口通信

  •  简单双向串口通信有两根通信线(发送端TXD和接收端RXD)
  • TXD与RXD要交叉连接
  • 当只需单向的数据传输时,可以直接一根通信线
  • 当电平标准不一致时,需要加电平转换芯片

电平标准

电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

  • TTL电平:+5V表示1,0V表示0
  • RS232电平:-3~-15V表示1,+3~+15V表示0
  • RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)

常用通信接口比较

第七章、stc89c52中的串行口通信

 通信中常用术语

  • 全双工:通信双方可以在同一时刻互相传输数据
  • 半双工:通信双方可以互相传输数据,但必须分时复用一根数据线
  • 单工:通信只能有一方发送到另一方,不能反向传输
  • 异步:通信双方各自约定通信速率
  • 同步:通信双方靠一根时钟线(如上图中的SCL,SCLK来约定通信速率
  • 总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,使住户可以相互交流)

串口模式图

第七章、stc89c52中的串行口通信

 串口和中断系统

第七章、stc89c52中的串行口通信

 

2、串行口相关寄存器

第七章、stc89c52中的串行口通信

 SCON (Serial Control)串行口控制

第七章、stc89c52中的串行口通信

 第七章、stc89c52中的串行口通信

 PCON(power control)电源控制

第七章、stc89c52中的串行口通信

第七章、stc89c52中的串行口通信

 IE(interrupt enable)中断使能

 第七章、stc89c52中的串行口通信

 TMOD 定时器模式选择

使用的是定时器1,8位自动装载定时器

    TMOD &= 0x0F;        //设置定时器模式
    TMOD |= 0x20;        //设置定时器模式

    TL1 = 0xF3;        //  设定定时初值 
    TH1 = 0xF3;        //设定定时器重装值

第七章、stc89c52中的串行口通信

TCON 定时器控制寄存器

第七章、stc89c52中的串行口通信

 

3、串口实践——串口向电脑发送数据

实现功能:单片机每隔一秒给电脑发送一个递增的字节数据

串口初始化函数:

#include <REGX52.H>
/**
  * @brief  串口初始化,4800bps@12.000MHz
  * @param  无
  * @retval 无
  */
void UART_Init()   // 4800 bps @12.000MHZ
{
	// 第一步、串口寄存器配置
	SCON = 0x50;  //  0101 0000  01表示方式一, 1表示REN 接收使能
	PCON = 0x80;   // 1000 0000  设置SMOD=1 ,即波特率加倍
	
	//第二步、 定时器1 的配置
	TMOD &= 0x0F;
	TMOD |= 0x20;  // 设置定时器1 为8位自动重载模式
	 // 初始值根据设定的波特率进行赋值
	TL1 = 0xF3;		//设定定时初值
	TH1 = 0xF3;		//设定定时器重装值
	
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1	
}

/**
  * @brief  串口发送一个字节数据
  * @param  Byte 要发送的一个字节数据
  * @retval 无
  */ 
void UART_SendByte(unsigned char Byte)
{
	SBUF = Byte;
	while(TI == 0);
	TI = 0;
}

主函数:

#include <REGX52.H>
#include "Delay.h"
#include "UART.h"

unsigned char Sec;

void main()
{
	UART_Init();			//串口初始化
	while(1)
	{
		UART_SendByte(Sec);	//串口发送一个字节
		Sec++;				//Sec自增
		Delay(1000);		//延时1秒
	}
}

4、串口实践——电脑通过串口向单片机发送数据

实现功能:电脑向单片机发送字节数据,控制LED灯的亮灭,此时需要用到中断

串口初始化函数:

#include <REGX52.H>
/**
  * @brief  串口初始化,4800bps@12.000MHz
  * @param  无
  * @retval 无
  */
void UART_Init()   // 4800 bps @12.000MHZ
{
	// 第一步、串口寄存器配置
	SCON = 0x50;  //  0101 0000  01表示方式一, 1表示REN 接收使能
	PCON = 0x80;   // 1000 0000  设置SMOD=1 ,即波特率加倍
	
	//第二步、 定时器1 的配置
	TMOD &= 0x0F;
	TMOD |= 0x20;  // 设置定时器1 为8位自动重载模式
	 // 初始值根据设定的波特率进行赋值
	TL1 = 0xF3;		//设定定时初值
	TH1 = 0xF3;		//设定定时器重装值
	
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1	
	
	/*为什么要用中断?检测电脑是否发送数据,一定发送数据则
	触发中断 */
	// 第三步、中断的配置
	ES = 1;     // 串行口中断允许位
	EA = 1;     // 中断系统总开关
	
}

主函数:

#include <REGX52.H>
#include "Delay.h"
#include "UART.h"

void main()
{
	UART_Init();			//串口初始化
	while(1)
	{
		
	}
}

void UART_Routine() interrupt 4
{
	if(RI==1)   // 接受完成时触发中断,因为发送也会触发中断
	{
		P2 = SBUF;
		RI = 0;
	}
}

波特率计算方式(8位自动重装):

以初始值 TL1 = 0xF3;   TH1 = 0xF3;     计数13个数就会溢出

而12MHZ单片机,即1微秒就会计数一次,溢出就是13微秒

波特率 = 1÷ 13us ÷ 16 = 4807.69 HZ

所以赋 初始值 TL1 = 0xF3;   TH1 = 0xF3;波特率就是 4800HZ

此时误差率为:  7.69 ÷ 4800 = 0.16%文章来源地址https://www.toymoban.com/news/detail-469198.html

到了这里,关于第七章、stc89c52中的串行口通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • STC89C52RC最小系统板

    STC89C52RC最小系统板

    Author:Once Day “漫漫长路,有人对你微笑过嘛…” Solemnly declare:知识产权、正确性等皆未明确,因此仅且只能供学习交流之用,切莫他用!!!本文章所有者不对任何人因使用本文章内容引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即

    2023年04月19日
    浏览(6)
  • 你知道什么是STC89C52RC吗?

    目录 一、什么是STC89C52RC 二、STC89C52RC由什么构成 三、STC89C52RC各部分如何使用 四、STC89C52RC如何进行编程 五、怎么使用STC89C52RC 六、为何使用STC89C52RC STC89C52RC是一种基于8051架构的单片机芯片,由中国的STC公司生产。它包含52KB的闪存程序存储器,1KB的RAM数据存储器,以及一系列

    2024年02月04日
    浏览(11)
  • 【mcuclub】STC89C52单片机最小系统讲解

    【mcuclub】STC89C52单片机最小系统讲解

        3.1、主芯片 STC89C52是STC公司生产的一种低功耗、高性能8位微控制器 器件参数: 1、增强型8051单片机,指令代码完全兼容传统8051 2、工作电压:5.5V~3.3V 3、工作频率范围:0~40MHz,实际工作频率可达48MHz 4、用户应用程序空间为8K字节(程序空间) 5、片上集成512 字节RAM(

    2024年02月03日
    浏览(12)
  • STC89C52RC单片机原理图详解

    STC89C52RC单片机原理图详解

    目录 1、单片机整体模块 2、 LED模块 3、独立按键模块 4、数码管模块 5、LCD1602模块 6、矩阵按键模块​编辑 7、串口通信模块 8、LED点阵屏模块 单片机使用的是TTL电平(一种电平的规范),规定为0V为低电平,5V为高电平; 字母上有一横,意为低电平有效。 单片机上电时,所有

    2024年02月05日
    浏览(11)
  • STC89C52的四个 外部中断 基本使用方法

    STC89C52的四个 外部中断 基本使用方法

    中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。STC89C52系列单片机提供了8个中断请求源,它们分别是: 外部中断0(NT0); 对应I/O :P32 定时器0中断; 外部中断1(INT1); 对应I/O :P33 定时器1中断; 串口(UART)中断; 定时器2中断; 外部中断2(INT2); 对应I/O :P43 外部

    2024年02月04日
    浏览(45)
  • 【STC89C52】外部中断与定时/计数器中断

    【STC89C52】外部中断与定时/计数器中断

    目录 一、中断系统 二、外部中断 一)配置外部中断的三个步骤 1)中断允许 (2)中断方式配置 3)中断处理函数 二)实验代码  三、定时器/计数器 一)使用定时器/计数器的三个步骤 1)启动定时/计数器 2)设置工作模式​编辑  3)查询定时/计数器是否溢出  二)实验代

    2024年02月08日
    浏览(8)
  • STC89C52RC的定时器/计数器

    目录 一、STC89C52RC的定时器/计数器 二、定时器/计数器的工作方式如何选择 三、使用Timer0实现1秒定时 四、使用Timer1实现计数器功能 STC89C52RC芯片内置了2个定时器/计数器(Timer0和Timer1),这两个模块可以用于实现定时和计数功能。 这两个定时器/计数器模块的主要特性如下:

    2024年02月07日
    浏览(9)
  • 51单片机(二)8051内核及STC89C52介绍

    51单片机(二)8051内核及STC89C52介绍

    我们现在经常使用的STC89C52RC单片机就是基于8051内核的,它是深圳宏晶科技生产的一款单片机,它与MCS-51兼容,下面开始介绍STC89C52RC单片机。 1. STC89C52RC的兼容型号         STC89C52RC兼容 STC89C51RC,STCLE51RC,STC89C53RC,STC89LE52RC等。 以下是完整型号列表: 我们平时用的stc89c52已经能

    2024年02月06日
    浏览(24)
  • 基于STC89C52RC设计的心形流水灯设计

    基于STC89C52RC设计的心形流水灯设计

    基于STC89C52RC设计的心形流水灯设计 一·硬件设计分析 1.1 主控电路 主控单片机选择为STC89C52RC的 LQFP-44(10x10)封装 注意: 使用51单片机需要注意,如果需要使用的单片机的P0口,则需要在P0的IO口上接上一个4.7K-10K左右的上拉电阻。   上拉电阻的作用: 给单片机的I/O口拉高电平

    2024年02月08日
    浏览(7)
  • 【STC89C52】学习51单片机的必备电子电路知识基础

    【STC89C52】学习51单片机的必备电子电路知识基础

    电子电路是学习51单片机的基础, 如果能把以下几个模块弄清楚学习51单片机就不成问题啦。 目录 1.电平 2.单片机IO口 3.电阻 4.电容  5.电路原理图 ​编辑 6.单片机最小系统结构  7.单片机工作的基本时序 单片机是一种数字集成芯片,数字电路中只有高电平和低电平。 单片

    2023年04月26日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包