80C51单片机的串行口
单片机原理及应用第6章80C51单片机的串行口

单片机原理及应用第6章80C51单片机的串行口80C51单片机是一种基于哈佛架构的8位单片机,具有强大的串行口功能。
串行口是一种通信接口,可以通过单根线传输数据。
本章将介绍80C51单片机的串行口原理及其应用。
一、80C51单片机的串行口原理80C51单片机的串行口包含两个寄存器,分别是SBUF(串行缓冲器)和SCON(串行控制寄存器)。
SBUF寄存器用来存储待发送或接收到的数据,SCON寄存器用来配置和控制串行口的工作模式。
80C51单片机的串行口有两种工作模式:串行异步通信模式和串行同步通信模式。
1.串行异步通信模式串行异步通信是指通信双方的时钟频率不同步,通信的数据按照字符为单位进行传输,字符之间有起始位、数据位、校验位和停止位组成。
80C51单片机的串行口支持标准的RS-232通信协议和非标准通信协议。
在串行异步通信模式下,SCON寄存器需要配置为相应的工作模式。
首先,需要选择串行口的工作模式。
80C51单片机支持第9位,即扩展模式,可以用来检测通信错误。
其次,需要设置波特率。
波特率是指数据每秒传输的位数,用波特率发生器(Baud Rate Generator,BRGR)来控制。
然后,需要设置起始位、数据位和停止位的配置,包括数据长度(5位、6位、7位或8位)、停止位的个数(1位或2位)。
在发送数据时,将待发送的数据通过MOV指令传送到SBUF寄存器,单片机会自动将数据发送出去。
在接收数据时,需要检测RI(接收中断)标志位,如果RI为1,表示接收到数据,可以通过MOV指令将接收到的数据读取到用户定义的变量中。
2.串行同步通信模式串行同步通信是指通信双方的时钟频率同步,在数据传输时需要时钟信号同步。
80C51单片机的串行同步通信支持SPI(串行外设接口)和I2C(串行总线接口)两种协议。
在串行同步通信模式下,SCON寄存器需要配置为相应的工作模式。
首先,需要选择串行口的工作模式。
80C51单片机支持主从模式,可以作为主设备发送数据,也可以作为从设备接收数据。
2.3 80C51单片机的并行端口结构

80C51单片机的并行端口结构80C51共有4个8位的并行I/O口,分别记作P0、P1、P2、P3。
被归入专用寄存器。
I/O端口有串行和并行之分,串行I/O端口一次只能传送一位二进制信息,并行I/O端口一次能传送一组二进制信息。
(1)并行I/O口的功能①PO口:电路中包括一个数据输出锁存器和两个三态数据输入缓存器,另外还有一个数据输出的驱动和控制电路。
这两组端口用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口的总线接口,而不像P1、P3直接用做输出口。
P0.0~P0.7,P0口是8位双向I/O口,P0.i引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。
该8位都是漏极开路(漏极开路即高阻状态,适用于输入/输出,其可独立输入/输出低电平和高阻状态)输出,每个引脚可以驱动8个LS型TTL负载且内部没有上拉电阻,执行输出功能时外部必须接上拉电阻(10K 即可)。
若要执行输入功能,必须先输出高电平方能读取该端口所连接的外部数据;若在访问外部存储器(RAM、ROM)和扩展的I/O口时,P0可作为地址总线(A0~A7)和数据总线(D0~D7),分时进行工作。
在指令的前半周期,P0口作为地址总线的低8位,在指令的后半周期为8位的数据总线。
P1口的各个单元:输入缓冲器:在P0口中,有两个三态的缓冲器,三态门有三个状态,即在其输出端可以是高电平、低电平和高阻状态(或称为禁止状态)。
上面一个是读锁存器的缓冲器,也就是说,要读取D锁存器输出端Q的数据,那就得使读锁存器的这个缓冲器的三态控制端(上图中标号为…读锁存器‟端)有效。
要读取P0.i引脚上的数据,也要使标号为…读引脚‟的这个三态缓冲器的控制端有效,引脚上的数据才会传输到我们单片机的内部数据总线上。
D锁存器:存储器中可以存放电荷,加一个小的存储器的单元,并在它的面前加一个开关,要让这一位输出时,就把开关打开,信号就进入存储器的单元,然后马上关闭开关,这一位的状态就被保存下来,直到下一次命令让它把开关再打开为止,这就是锁存器。
80C51单片机的串行口

80C51单片机的串行口在单片机的世界里,80C51 单片机凭借其稳定性和广泛的应用一直占据着重要的地位。
而串行口作为 80C51 单片机的重要通信接口,发挥着至关重要的作用。
要理解 80C51 单片机的串行口,首先得知道串行通信的概念。
简单来说,串行通信就是数据一位一位地依次传输,相比并行通信,它只需要较少的数据线,这在很多场景下能大大减少硬件成本和布线难度。
80C51 单片机的串行口有 4 种工作方式,分别是方式 0、方式 1、方式 2 和方式 3。
方式 0 是同步移位寄存器输入/输出方式。
在这种方式下,数据以 8 位为一帧,低位在前,高位在后,没有起始位和停止位。
它通常用于扩展并行 I/O 口,例如外接串入并出的移位寄存器 74LS164 或并入串出的移位寄存器 74LS165。
方式 1 是 8 位异步通信方式,波特率可变。
这是最常用的串行通信方式之一。
一帧数据由 1 位起始位(低电平)、8 位数据位(低位在前)和 1 位停止位(高电平)组成。
发送和接收都是通过专门的寄存器来实现的。
方式 2 是 9 位异步通信方式,波特率固定。
一帧数据由 1 位起始位、8 位数据位、1 位可编程的第 9 位数据和 1 位停止位组成。
这种方式常用于多机通信,第 9 位数据可以作为地址/数据的标识位。
方式 3 与方式 2 类似,也是 9 位异步通信方式,但波特率可变。
串行口的波特率是一个非常关键的概念。
波特率决定了数据传输的速度。
在 80C51 单片机中,方式 0 和方式 2 的波特率是固定的,而方式 1 和方式 3 的波特率则是由定时器 T1 的溢出率来决定的。
通过设置定时器 T1 的工作方式和初值,可以得到不同的波特率,以适应不同的通信需求。
在实际应用中,要使用 80C51 单片机的串行口进行通信,还需要对相关的寄存器进行配置。
比如,串行控制寄存器 SCON 用于设置串行口的工作方式、接收/发送控制等;电源控制寄存器 PCON 中的 SMOD 位用于控制方式 1、2、3 的波特率加倍。
串行通信工作方式

在RI=0的条件下,用指令置REN=1即可开始串行接收。TXD端输出移位脉冲,数据依次 由低到高以fosc/12波特率经RXD端接收到SBUF中,一帧数据接收完成后硬件置接收中断标 志位RI为1。若要再次接收一帧数据,应该用指令MOV A,SBUF将上一帧数据取走,并用指 令将RI清零。用方式0通信时,多用查询方式。
1.2 串行工作方式1
方式1是一帧10位的异步串行通信方式,包括1个起始位,8个数据 位和一个停止位。波特率可变,由定时器/计数器T1的溢出率和SMOD (PCON.7)决定。其帧格式如下:
起始 D0 D1 D2 D3 D4 D5 D6 D7 停止
1、 数据发送
发送时只要将数据写入SBUF,在串行口由硬件自动加入起始位和停 止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串 行输出。一帧数据发送完毕后硬件自动置TI=1。再次发送数据前,用指 令将TI清零。
单片机原理与应用
串行通信工作方式
80C51串行通信共有4种工作方式,由串行控制寄存器SCON 中SM0 SM1决定。
1.1 串行工作方式0(同步移位寄存器工作方式)
以RXD(P3.0)端作为数据移位的输入/输出端, 以TXD(P3.1)端输出移位脉冲。 移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入 /输出,均低位在前高位在后。 其帧格式为:
1.3 串行工作方式2
串行接口工作方式2为9位异步通信接口,传送一帧数据有11位。1位起 始位(低电平信号),8位数据位(先低位后高位),1位可编程位,1位停止位 (高电平信号)。其格式如下:
起始位
数据位
0
D0
D1
D2
D3
D4
D5 D6
单片机基础_80C51

5. 串行I/O口 目前高档 8 位单片机均设置了全双工串行 I/O 口,用以 实现与某些终端设备进行串行通信,或者和一些特殊功能 的器件相连接的能力,甚至用多个单片机相连构成多机系 统。随着应用的拓宽,有些型号的单片机内部还包含有二 个串行I/O口。 6. 定时器/计数器
3. 控制线:共4根。
· RST(VPD:备用电源引入端,当电源发生故障,电源降到下限值时, 备用电源经此端向内部 RAM提供电压,以保护内部RAM中的数据不 丢失)——复位输入信号,高电平有效。在振荡器工作时,在RST上 作用两个机器周期以上的高电平,将器件复位。 ·/EA(Vpp:编程电压,具体电压值视芯片而定)——片外程序存储 器访问允许信号,低电平有效。/EA=1,选择片内程序存储器(80C51 为4KB,80C52为8KB) ;/EA=0,则程序存储器全部在片外而不管片 内是否有程序存储器。 使用80C31时,必须接地,使用8751编程时,施加 21V的编程电 压。 · ALE(PROG:编程脉冲)——地址锁存允许信号,输出。 在访问片外存储器或 I/O 时,用于锁存低八位地址,以实现低八 位地址与数据的隔离。即使不访问外部存储器,ALE端仍以固定的频 率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存储器 时,出现一个ALE脉冲。
在单片机中,常把寄存器(如工作寄存器、特殊功能 寄存器、堆栈等)在逻辑上划分在片内 RAM 空间中,所 以可将单片机内部 RAM 看成是寄存器堆,有利于提高运 行速度。
当内部 RAM 容量不够时,还可通过串行总线或并行 总线外扩数据存储器。
4. 并行I/O口
单片机往往提供了许多功能强、使用灵活的并行输入 /输出引脚,用于检测与控制。有些I/O引脚还具有多种功 能,比如可以作为数据总线的数据线、地址总线的地址线、 控制总线的控制线等。单片机 I/O 引脚的驱动能力也逐渐 增大,甚至可以直接驱动外扩的LED显示器。
80C51串行口通信

80C51串行口通信80C51串行口的结构TXD 是80C51单片机的P3.1口RXD 是80C51单片机的P3.0口T1 溢出率是定时器1 的溢出率 SMOD是发送速率倍频的 16分频T1每溢出一次发送一位,里面复杂咱们不管,每次发送完后TI申请中断,就是串口每次发送完一个字节去申请一个中断,每接受完一个字节它也要申请一次中断。
接受完了通过移位寄存器SBUF 取走。
发送也用SBUF .单片机上有两个物理上独立的接受,发送缓冲器SBUF,它们占用同一地址99H;接受器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。
解释下这句话意思:物理上独立的但是地址相同,但是具体内部构造咱们不去了解它。
2个寄存器一个负责发一个负责收,接受是双缓冲的结构。
如果去取数据A=SBUF ; 发送数据SBUF =A; 就是说SBUF =A 就把A发出去了。
A= SBUF 就是把 SBUF的值给取出来给了A。
单片机的串口就是这么简单。
主要要搞好中断和比特率。
80C51串行口的控制寄存器SCON是一个特殊功能寄存器,用以设定串行口的工作方式、接受/发送控制以及设置状态标志;有此图课看出地址诶98H 能对8整除所以可以进行位操作。
●SMO 和SM1为工作方式选择位,可选择四种工作方式:如下图串行口有4种工作方式。
0 、1、2、3。
f方式0 可以看出是移位寄存器就是一位一位移位了,波特率是固定的晶振除以12Fosc(oscillator 振荡器),方式1 是10位异步收发器(8位数据),波特率可变。
一下 2、3类同。
我们主要掌握方式1就OK。
用的最多的也是方式1。
波特率用软件控制,设置多少就多少。
由于选择方式1所以SMO SM1就是 01 。
●SM2,多机通信控制位,主要用于方式2和方式3。
当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。
80C51串行通信接口

发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送; 接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。
2、串行控制寄存器SCON
SCON
D7
D6
位名称
SM0 SM1
位地址
9FH 9EH
3、电源控制寄存器PCON
PCON 位名称
D7
D6 D5 D4 D3
D2
D1
D0
SMOD — — — GF1 GF0 PD IDL
SMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。
SM0、SM1:串行口工作方式选择位。用于选择四种工作方式
SM0
SM1
方式
0
0
方式0
0
1
方式1
1
0
方式2
1
单片机原理与应用
80C51串行通信接口
80C51系列单片机有一个全双工的串行口,这个口既可以 用于网络通信,也可以实现串行异步通信,还可以作为同步移位 寄存器使用。
串行口特殊功能寄存器
1、串行数据缓冲器SBUF
在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有 同一个单元地址99H,用同一寄存器名SBUF。
1
方式3
功能 移位寄存器方式 8位异步通信方式 9位异步通信方式 9位异步通信方式
波特率 fosc/12 可变 fosc/32或fosc/64 可变
单片机原理与应用
功能
工作方式 选择
D5 SM2 9DH
多机通信控 制
D4 REN 9CH
接收 允许
D3
第八章 80C51并行口和串行口

这种类型的指令有:
MOV A,P1
MOV direct,P1
;A←P1
;direct←P1
在执行读锁存器的指令时,CPU首先完成将锁存器的值通过 缓冲器BUF2读入内部,进行修改,然后重新写到锁存器中去, 这就是“读一修改一写”指令。 这种类型的指令包含所有的口的逻辑操作( ANL 、 ORL 、 XRL)和位操作(JBC、CPL、MOV、SETB、CLR等)指令。 ⑶ P1口的多功能线 在80C52中, P1. 0和P1. 1口线是多功能的,即除作一般双 向I/O口线之外,这两根口线还具有下列功能: P1.0—定时器/计数器2的外部输入端T2; P1.1—定时器/计数器2的外部控制端T2EX。
P1口的工作过程分析如下: P1.i位作输出口用时:CPU输出0时,D=0,Q=0,Q=l, 晶体管Q0导通,A点被下拉为低电平,即输出0;CPU输出1时, D=l,Q=1,Q=0,晶体管Q0截止, A点被上拉为高电平, 即输出l。
⒉ P1口的特点 输出锁存器,输出时没有条件; 输入缓冲,输入时有条件,即需要先将该口设为输入状态, 先输出1; P1.i位作输入口用时:先向P1.i位输出高电平,使A点提 升为高电平,此操作称为设置 P1.i为输入线。若外设输入为 1 时 A点为高电平,由 BUFI 读入总线后 B点也为高电平;若外设 输入为0时A点为低电平,由BUF1读入总线后B点也为低电平。 工作过程中无高阻悬浮状态,也就是该口不是输入态就是 输出态。 具有这种特性的口不属于“真正”的双向口,而被称为 “准”双向口。
⒉ P3口的功能
P3口是一个多功能口。 ⑴可作I/O口使用,为准双向口。 既可以字节操作,也可以位操作;既可以 8 位口操作,也可 以逐位定义口线为输入线或输出线;既可以读引脚,也可以读 锁存器,实现“读一修改一输出”操作。 ⑵ 可以作为替代功能的输入、输出。 替代输入功能:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
起始位:1位 数据位:8位 停止位:1位
2016/10/18
28
串行发送:(写SBUF启动发送过程)
写入SBUF TXD TI(中断标志) 起始
D0 D1 D2 D3 D4 D5 D6 D7
停止位
串行接收:(置REN=1启动接收过程)
RXD 位采样脉冲 RI(中断标志) 起始
D0 D1 D2 D3 D4 D5 D6 D7
特点:传送控制简单、速度快,但传输线较多,成本高。
2016/10/18 3
串行通信
发送 设备
0 1 1 0 1 1 0 1 D7 D6 D5 D4 D3 D2 D1 D0 TXD
时钟
接收 设备
数据线
0 1 0 1 1 0 1 1 D0 D1 D2 D3 D4 D5 D6 D7
D1 D0
0 1
D2(1)
1个全双工串口:通信或接口扩展
6.2.1 80C51串行口的结构
99H
SBUF 写SBUF TH1 TL1 发送控制器 1 T1溢出率 读SBUF ÷2 0 SMOD ÷16 接收控制器
TXD 控制门 TI 去中断逻辑
≥1
RI RXD
SBUF 99H
移位寄存器
接收发送缓冲器逻辑同名、物理分开;接收双缓冲。
2016/10/18
34
6.3 80C51单片机的串行口应用
6.3.1 利用单片机串口的并行I/O扩展
P1.1 P1.0
F 0 E 1 D 2 C 3 B 4 A 5 9 6 8 7 QA QB QC QD QE QF QG QH CP
74LS164
B QA QB QC QD QE QF QG QH QA QB QC QD QE QF QG QH
说 移位寄存器
明
波特率 fosc/12 可变 可变
10位UART(8位数据) 11位UART(9位数据)
21
11位UART(9位数据) fosc/64或fosc/32
SM2:多机通信控制位
SM2=1时,接收机处于地址帧筛选状态。若RB8= 1,该地址帧信息可进入SBUF,并使RI为1,进 而在中断服务中再进行地址号比较;若RB8=0, 该帧不是地址帧,应丢掉,且保持RI=0。 SM2=0时,接收机处于地址帧筛选被禁止状态。 不论收到的RB8为0或1,均可以使收到的信息进 入SBUF,并使RI=1。此时的RB8通常为校验位。
TXD(移位脉冲)
RXD 80C51 TXD
P1.0
Q
74LS165
CP S/L INH GND
S/L负脉冲将并行数 据装入,高电平时启 动单片机进行数据输 入。
2016/10/18
27
方式1:10位帧,用于双机通信
空 闲 起 始 位 D0 LSB 1帧共10位 数据位8位 D7 MSB 停 止 位 空 闲
REN:串行接收使能位,软件置1时,启动接收过程
2016/10/18 22
TB8:多机方式发送的第9位
多机方式的地址/数据帧标志。也可作为奇偶校验位。
RB8:多机方式接收的第9位
多机方式的地址/数据帧标志。也可作为奇偶校验位。
TI:发送中断标志位,要由软件清0 RI:接收中断标志位,要由软件清0
2016/10/18 23
传输距离随波特率的增加而减小。
2016/10/18 11
6.1.2
串行通信接口标准
RS-232C定义的是DTE与DCE间的接口标准。
机械特性
1 13 1 5
14
25
6
9
DB-25(阳头)连接器
DB-9(阳头)连接器
阳头通常用于计算机侧,阴头用于连接线侧
2016/10/18
12
功能特性
插针序号 1 2( 3) 3( 2) 4( 7) 5( 8) 6( 6) 7( 5) 8( 1) 20(4) 22(9) RI 信号名称 PGND TXD RXD RTS CTS DSR SGND DCD DTR 保护接地 发送数据(串行输出) 接收数据(串行输入) 请求发送 允许发送 DCE就绪(数据建立就绪) 信号接地 载波检测 振铃指示 DTE←DCE DTE←DCE DTE就绪(数据终端准备就绪) DTE→DCE DTE→DCE DTE←DCE DTE→DCE DTE←DCE DTE←DCE 功能 信号方向
方式0波特率= fosc/12 方式2波特率=(2SMOD/64)* fosc
可变波特率:
方式1波特率=(2SMOD/32)*(T1溢出率) 方式3波特率=(2SMOD/32)*(T1溢出率) T1 溢出率 = fosc /{12×[256 -(TH1)]}
32
2016/10/18
波特率的选择
波特率要选择标称值,由于TH1的初值是整数,为了 减小波特率计算误差,晶振频率要选为11.0592MHz。
2016/10/18
13
电气特性
RS-232C采用负逻辑电平,规定(-3~-25V)为逻辑“1”, (+3~+25V)为逻辑“0”。-3V~+3V是未定义的过渡区。 试比较:
V
+5 1 2 0.8 0 0
0 1 0 1
V
+25 +3 -3
0 1 0 1
0
t
t
1
-25 RS232电平
TTL电平
电平转换电路(如MAX232)。
传输速率
比特率:每秒钟传送的信息量。单位:位/秒(bps) 波特率:每秒钟传送码元数目,单位:波特(Baud) 基带传输(每个码元带有“1”或“0”这1 bit信息, 传码率与传信率相同),波特率和比特率是相同的。 常用波特率为:2400、4800、 9600、14.4K、19.2K等
传输距离与传输速率的关系
2016/10/18
25
数据输出:
写入SBUF RXD(数据) TXD(移位脉冲) TI(中断标志) TCY
D0
D1
D2
D3
D4
D5
D6
D7
RXD 80C51 TXD
P1.0
A B CP
74LS164
CR GND
CLR用于对74LS164清0
2016/10/18
26
数据输入:
REN=1 RI=0 RXD(数据输入) D0 D1 D2 D3 D4 D5 D6 D7
TXD RXD 计 算 机 甲
TXD RXD 计 算 机 乙
无联络线方式
联络线短接(伪连接)方式
2016/10/18
17
RS-232C电平与TTL电平转换驱动电路
早期常用MC1488、MC1489
近期常用MAXM232:
片内带有自升压电路 仅需+5V电源 内含2个发送器,2个接收器
2016/10/18
电源控制寄存器PCON
7 6 5 4 3 2 1 0
PCON
SMOD
字节地址:97H
SMOD:波特率倍增位。在串行口方式1、方式2、方式3 时,波特率与 SMOD 有关,当 SMOD=1 时,波特率提高一倍。 复位时,SMOD=0。
2016/10/18
24
6.2.3
80C51串行口的工作方式
方式0:同步移位寄存器,用于扩展并行口 RXD:输入或输出引脚 TXD:移位脉冲输出 接收和方式都是8位 波特率固定为:fosc/12
特点
易于实现 效率不高
同步通信(发、收时钟直接连接,效率高。板内元件间的SPI接口)
2016/10/18 6
串行通信的传输方向
单工
发送 接收
半双工
发送
时间1
接收
接收
时间2
发送
全双工
发送 接收 发 送 接收
80C51有1个全双工串行口
2016/10/18
7
信号的调制与解调
RS-232C RS-232C
80C51
RXD
A A B
TXD P1.2
&
CP
a b c d e f g dp a b c d e f g dp
+5V
74LS164
300Ω× 2
A B CP
74LS164
串口无通信需 求时!
2016/10/18
35
6.3.2 单片机与单片机间的通信
硬件连接
近程连接 (直连)
TXD RXD 80C51 GND RXD TXD 80C51 GND
RXD
T0 T1 T2 T3 T4 T5 T6 T7
特点:传送控制复杂、速度慢,传输线少,成本低
2016/10/18 4
6.1.1
串行通信的基本概念
异步通信与同步通信
异步通信
以“0”作为起始 以“1”作为停止 各帧间隔时间任意
发送 设备
10100100 0
TXD
接收 设备
1 11100110
RXD
D0 D1 D2 D3 D4 D5 D6 D7 TB8
停止位
串行接收:(置REN=1启动接收过程)
RXD 位采样脉冲 RI(中断标志) 起始
D0 D1 D2 D3 D4 D5 D6 D7 RB8
停止位
2016/10/18
31
6.2.4
80C51波特率确定与初始化步骤
波特率的确定 波特率的计算 固定波特率:
18
采用RS-232C接口存在的问题
传输距离短、速率低
通常不超过15米,速率20Kbps
有电平偏移
RS-232收发共地,地电流会使电平偏移出现逻辑错误。
抗干扰能力差
RS-232常用单端输入,易混入干扰。(故用大摆幅)