51单片机串口uart串口初步学习

51单片机串口uart串口初步学习

1.什么是串口

  • 一种应用十分广泛的通讯接口,可以使单片机与单片机,单片机与电脑或者模块之间互相通信。
  • UART(通用异步收发器)

这是其中一种串口接口

DB9

但我们在笔记本上常用usb转串口(CH340)来连接uart。

2.如何连接串口

2.1连接方式

VCC-VCC
TXD-RXD
RXD-TXD
GND-GND

注意:TXD与RXD交叉连接;若单向数据传输可以只连接一根线;当电平标准不一致时,需要电平转换芯片(如RS232,RS485,TTL)

以下为电平标准介绍:

3.其他通信接口介绍

名称 引脚 通信方式 特点
uart TX,RX 全双工,异步 点对点
I2C SCL,SDA 全双工,同步 可挂载多个设备
SPI SCLK,MOSI,MISO,CS 全双工,同步 可挂载多个设备
1—Wire DQ 全双工,同步 可挂载多个设备

此外还有can总线,USB等。

4. 51单片机的UART

STC89C52 只有一个UART

其工作模式有四种

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

常用模式为模式1。

以下为串口模式图:

以下为完整模式图:

接下来即配置寄存器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void UartInit(void)		//9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}


void UART_SendByte(unsigned char Byte)
{
SBUF = Byte;
while (TI == 0)
;
TI = 0;
}

附:波特率如何计算?

若给计时器配置为0xF3(243),即每计13个数溢出一次。

又当使用12Mhz的晶振,在12T模式下,每一微秒记一次数。

所以,每隔13us溢出一次,溢出的频率即为1/13(0.0769230769230769)MHz

若波特率加倍 就是(0.07692/16)MHz = 0.00480769MHz = 4807.69Hz(约等于4800Hz),有略微误差。若为11.0582Mhz晶振,可以没有误差。


51单片机串口uart串口初步学习
http://jiangno.com/2024/09/08/24_9_8_UART/
作者
江の
发布于
2024年9月8日
许可协议