系列文章目录
文章目录
前言
一、复习
51单片机有一个可编程的全双工的异步串行通信接口 (具有通用异步收发器的全部功能,UART) 能同时进行数据的发送和接收,也可作为同步移位寄存器使用
二、传输速率
1.常用串口波特率:300、600、1200、2400、 4800、9600、19200......115200
2.波特率:就是发送一位数据的速率,每秒传送的位数称为波特率,即发送一个数据的持续时间 = 1/baud;以此衡量传送的速度
3.1波特 = 1位/秒,单位是bps(位/秒)
4.如每秒传送240个字符,而每个字符格式包含10位 (1个起始位、1个停止位、8个数据位),这时的波特率为10位X240个/秒 = 2400bps。
三、通信校验
四、UART串行口寄存器结构
理解下图
51单片机的串行口主要由两个独立的串行数据缓冲寄存器SBUF (一个发送缓冲寄存器,一个接收缓冲寄存器)(靠指令区分)和发送控制器、接收控制器、输入移位寄存器及若干控制门电路组成 。
发送标志位TI→发送完数据之后,TI被硬件置1→触发中断请求 (TI必须软件清零)
接收标志位RI→接收完数据之后,RI被硬件置1→触发中断请求 (RI必须软件清零)
注意这里时TI、RI,不是T1哈
(TI、RI:串口中断的中断源)
五、UART的四种模式
模式0: 为同步移位寄存器的输入/输出方式,主要用于扩展并行输入或输出口,不讲或自学
模式1: 10位数据的异步通信,1位起始位0,8位数据位 (一个字节) ,1位停止位1。其传输波特率是可变的。对于51单片机,波特率由定时器1的溢出率决定。通常我们在做单片机与单片机串口通信,单片机与计算机串口通信时,基本都选择方式1。要求掌握。
模式2和3: 为11位数据的异步通信。原理和模式1一样,只是添加了一位奇偶校验位(防止通信出错)。
六、串行口的特殊功能寄存器
1.串行数据寄存器SBUF
2.串行口控制寄存器SCON
3.电源控制寄存器PCON
只看SMOD这一位就可,后面是和单片机的功耗和掉电模式有关的
七、波特率
先有波特率-确定溢出率-定时时间-定时初值→打开定时器T1,产生波特率
T1溢出率是定时器T1溢出的频率,只要算出T1定时器每溢出一次所需要的时间T,那么T的倒数1/T就是它的溢出率。如: 设定时器T1每50ms溢出一次,那么其溢出率就是20Hz。
11.0592MHz
常用的波特率通常按规范取为1200、2400、4800、9600...若采用12MHz或6MHz计算出的T1的定时初值将不是一个整数,这样通信时便会产生积累误差,进而产生波特率误差,影响串行通信的同步性能。
解决的方法只有调整单片机的时钟频率,通常采用11.0592MHZ晶振。因为用它能够非常准确的计算出T1的定时初值。