电子发烧友网>控制/MCU> > 正文

STC89C52单片机的UART串行通信设计

2018年11月28日 16:37 次阅读

对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”。

1、初步认识

一位一位的发送出去的,要发送 8 次才能发送完一个字节。

STC89C52有两个引脚是专门用来做 UART串行通信的,一个是 P3.0一个是 P3.1,它们还分别有另外的名字叫做 RXD和TXD,由它们组成的通信接口就叫做串行接口,简称串口。

波特率:发送二进制数据位的速率,习惯上用 baud 表示;即我们发送一位二进制数据的持续时间=1/baud。

通信过程:在UART 通信的时候,一个字节是 8 位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位 0 表示起始位,然后发送 8 位数据位,数据位是先低后高的顺序,数据位发完后再发一位 1 表示停止位。

STC89C52单片机的UART串行通信设计

2、RS232通信接口与USB转串口通信

RS232 接口一共有 9 个引脚,分别定义是: 1、载波检测 DCD; 2、接收数据 RXD; 3、发送数据 TXD; 4、数据终端准备好 DTR; 5、信号地线 SG; 6、数据准备好 DSR; 7、请求发送 RTS; 8、清除发送 CTS; 9、振铃提示 RI。我们要让这个串口和我们单片机进行通信,我们只需要关心其中的 2 脚 RXD、 3 脚 TXD 和 5 脚 GND 即可。

负逻辑:低电平代表的是 1,而高电平代表的是 0,因此需要电平转换芯片 MAX232。 RS232 串口和 UART 串口,它们的协议类型是一样的,只是电平标准不同而已,而 MAX232 这个芯片起到的就是中间人的作用,它把 UART 电平转换成 RS232 电平,也把 RS232 电平转换成 UART 电平。

USB 转串口芯CH340T:实现 USB通信协议和标准UART 串行通信协议的转换。

3、通信的三种基本类型

单工通信就是指只允许一方向另外一方传送信息,而另一方不能回传信息;

半双工通信是指数据可以在双方之间相互传播,但是同一时刻只能其中一方发给另外一方;

全双工通信就发送数据的同时也能够接收数据,两者同步进行。

4、串口通信

1、配置串口为模式 1。

2、配置定时器 T1 为模式 2,即自动重装模式。

3、根据波特率计算 TH1 和 TL1 的初值,如果有需要可以使用 PCON 进行波特率加倍。

4、打开定时器控制寄存器 TR1,让定时器跑起来。

定时器的重载值计算公式为:TH1= TL1 = 256 - 晶振值/12 /2/16 /波特率

STC89C52单片机的UART串行通信设计

#include

voidConfigUART(unsignedintbaud);

intmain(void)

{

EA=1;//使能总中断

ConfigUART(9600);//配置波特率为9600

while(1);

return0;

}

/*串口配置函数,baud-通信波特率*/

voidConfigUART(unsignedintbaud)

{

SCON=0x50;//配置串口为模式1

TMOD&=0x0F;//清零T1的控制位

TMOD|=0x20;//配置T1为模式2

TH1=256-(11059200/12/32)/baud;//计算T1重载值

TL1=TH1;//初值等于重载值

ET1=0;//禁止T1中断

ES=1;//使能串口中断

TR1=1;//启动T1

}

/*UART中断服务函数*/

voidInterruptUART()interrupt4

{

if(RI)//接收到字节

{

RI=0;//手动清零接收中断标志位

SBUF=SBUF+1;//接收的数据+1后发回,左边是发送SBUF,右边是接收SBUF

}

if(TI)//字节发送完毕

{

TI=0;//手动清零发送中断标志位

}

}

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

在cube中配好uart和rcc

1.在cube中配好uart和rcc2.在主函数中加入头文件include 3.4.格式例如:printf("[\t main] info : stm32\r\n")5.效果...
发表于 2021-08-24 08:04 0次阅读
在cube中配好uart和rcc

USART和UART的区别

介绍了USART和UART的区别、STM32的USART1的寄存器和配置方法以及常见的问题,适合速查!...
发表于 2021-08-20 08:01 0次阅读
USART和UART的区别

调试USB-CAN的适配器

在调试USB-CAN的适配器的过程中,采用库函数开发,在调试串口的过程中串口数据始终乱码。思考一番,发现由于外部...
发表于 2021-08-20 07:43 0次阅读
调试USB-CAN的适配器

spi,uart,iic协议之间的对比

spi,uart,iic协议之间的对比:spi和uart的区别,spi结构上可以实现一主多从进行通信,依靠时钟进行传输数据的同步传...
发表于 2021-08-19 08:41 0次阅读
spi,uart,iic协议之间的对比

CAN总线和UART、I2C、SPI总线最大的区别

CAN,Controller Area Network(控制器局域网络),在汽车电子、工业控制领域的应用比较多,通常用于局域组网。...
发表于 2021-08-19 07:41 0次阅读
CAN总线和UART、I2C、SPI总线最大的区别

STM32 UART常用的中断接收有哪几种

#include "sys.h"#include "usart.h"  #include "main.h"//如果使用ucos,则包括下面的头文件即可.#if SYS...
发表于 2021-08-18 08:13 0次阅读
STM32 UART常用的中断接收有哪几种

用MAX487将UART转成485信号与上位机联接

环境:使用STR912FAW44芯片,用MAX487将UART转成485信号与上位机联接。欲实现功能是:当从串口调试助手发...
发表于 2021-08-18 07:59 0次阅读
用MAX487将UART转成485信号与上位机联接

STM32CubeMX-USART/UART通信 精选资料分享

USART/UART通信是STM32的一个非常重要的外设,是一种通用串行数据总线,可实现全双工通信,经常被使用!U...
发表于 2021-08-17 08:27 0次阅读
STM32CubeMX-USART/UART通信  精选资料分享

USART和UART的主要区别

16.1 关于 USART/UART在嵌入式中,很多MCU和外设模块都集成有UART外设。STM32F103有3个通用同步异...
发表于 2021-08-16 09:08 0次阅读
USART和UART的主要区别

关于RS485的特点及应用

18.1关于 RS485RS485是美国电子工业协会(Electronic Industries Association,EIA)于1983年发布的串行通信...
发表于 2021-08-16 06:40 0次阅读
关于RS485的特点及应用

基于STM32的多种printf用法

在调试代码的时候,最常用的就是使用printf函数来输出一些打印信息,提示自己代码的执行情况。 如果....
发表于 2021-07-23 11:12 222次阅读
基于STM32的多种printf用法

什么是Modbus?Modbus的几个常见问题

可能你还不知道什么是Modbus,其实,Modbus在现实生活中应用非常广泛,很多工业电子设备的系统....
发表于 2021-06-25 09:17 566次阅读
什么是Modbus?Modbus的几个常见问题

UART寄存器的循环缓冲区实现以及中断驱动的UA...

缓冲区通常用作临时数据存储,通常用于流式传输数据。UART 软件实现支持基本格式,即 8 个数据位、....
发表于 2021-06-23 15:43 247次阅读
UART寄存器的循环缓冲区实现以及中断驱动的UA...

通用异步收发器UART的工作原理及协议格式

通用异步收发器(Universal Asynchronous Receiver/Transmitte....
发表于 2021-06-18 10:22 203次阅读
通用异步收发器UART的工作原理及协议格式

工程创造未来,2021年泰克创新论坛从中国开启

泰克科技公司日前宣布,全球2021年泰克创新论坛(TIF)将邀请美国宇航局宇航员Daniel Tan....
发表于 2021-06-10 10:05 514次阅读
工程创造未来,2021年泰克创新论坛从中国开启

我猜你还不会UART!不信你点进来看看

1 UART发展历史1.1 早期的串行通讯设备早期的电报机器使用长度可变的脉冲信号进行数据传输,比如....
发表于 2021-06-01 11:09 638次阅读
我猜你还不会UART!不信你点进来看看

UART:了解通用异步接收器/发送器的硬件通信协...

通信协议在组织设备之间的通信时扮演着重要角色。它基于系统要求而以不同方式进行设计。此类协议具有特定的....
发表于 2021-05-14 14:32 1269次阅读
UART:了解通用异步接收器/发送器的硬件通信协...

【紫光同创国产FPGA教程】【第二十八章】USB...

如何使用FTDI公司的FT232H驱动芯片进行USB数据传输,文中从底层FPGA、驱动层固件(FT2....
发表于 2021-04-09 10:46 13205次阅读
【紫光同创国产FPGA教程】【第二十八章】USB...

国产4口包MOS PSE 芯片DH2184特性概...

一、什么是POE? POE(PowerOverEthernet)指的是在现有的以太网Cat.5布线基....
发表于 2021-03-26 17:38 6497次阅读
国产4口包MOS PSE 芯片DH2184特性概...

关于STM32中UART的一些特性分享

今天给大家分享关于STM32中UART的一些特性,主要针对较新系列STM32(如:STM32H7、G....
发表于 2021-03-20 11:34 1981次阅读
关于STM32中UART的一些特性分享

MSP430设计实例 MSP430F5504的...

SoC已集成了很多数字功能,设计者们开始将目光投向复杂的模拟与射频功能。模拟模块不适用于构建SoC的....
发表于 2021-03-08 11:22 3834次阅读
MSP430设计实例  MSP430F5504的...

串口通信和串行通信二者之间的区别是什么

第一,串行通信和串口通信的概念是不同的。 串口通信的概念很简单,就是逐段发送和接收的通信方式。一种能....
发表于 2021-03-03 14:56 1423次阅读
串口通信和串行通信二者之间的区别是什么

基于CN-0365模拟前端参考设计的高可靠精密数...

在许多恶劣环境系统中,一个不断增长的趋势是高精密电子器件离高温区域越来越近。这一趋势背后有多个推动因....
发表于 2021-02-11 01:34 999次阅读
基于CN-0365模拟前端参考设计的高可靠精密数...

【紫光同创国产FPGA教程】【第五章】串口收发实...

本文主要讲解如何编写FPGA串口通信的收发程序,在程序中使用了状态机,是学习状态机的重要实验。
发表于 2021-02-04 13:23 3506次阅读
【紫光同创国产FPGA教程】【第五章】串口收发实...

【ZYNQ Ultrascale+ MPSOC ...

除了打印信息之外,如果我们想用UART进行数据传输呢?本章便来介绍PS端UART的读写控制,实验中,....
发表于 2021-01-27 09:25 3121次阅读
【ZYNQ Ultrascale+ MPSOC ...

【ZYNQ Ultrascale+ MPSOC ...

AN3485模块的RS232接口采用MAX3232芯片实现RS232和+3.3V TTL电平的转换。....
发表于 2021-01-23 11:22 2353次阅读
【ZYNQ Ultrascale+ MPSOC ...