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硬件结构

•
• • •
(2) 寄存器B (8位):
2.1.2
80C51内部逻辑结构组成
2.内部数据存储器(RAM)
低128字节区:用户RAM区为128x8Byte,地址为00H~
7FH。用于存放运算的中间结果、数据暂存以及数据缓 冲等。 高128字节区:特殊寄存器RAM区128x8Byte,地址为 80H~FFH。有21个特殊功能寄存器(SFR),存放功能 部件的控制命令、状态或数据等。 特点:掉电数据丢失。
失,使得复位后能继续正常运行。
三、控制信号引脚:RST、ALE、PSEN和EA
ALE/PROG(30脚):
ALE:地址锁存允许信号端。正常工作时,该引脚以 振荡频率的1/6固定输出正脉冲,可作为外部定时 脉冲使用。 CPU访问片外存储器时,该引脚输出信号作为锁存 低8位地址的控制信号。它的负载能力为8个LS型 TTL负载。
字 节 地 址
位地址
2.2.3
内部数据存储器高128单元
1 特殊寄存器概述
用于存放单片机各个功能部件的控制命令、状态或数据的寄存 器叫特殊寄存器,其功能已经由单片机规定。
1. 有21个特殊功能功能寄存器,地址不连续分布在80H~FFH的 RAM空间,剩余空闲单元用户并不能使用,读出不确定,写入 被舍弃。
片内数据存储器 MOV,
片外数据存储器 MOVX, RD WR作选通信号操作 逻辑上3个存储器地址空间(软件角度) : 64KB 程序存储器: 统一编地址,0000H-FFFFH 256B 片内数据存储器:独立编地址 0000H-00FFH 64KB 片外数据存储器:独立编地址 0000H-FFFFH
(1)运算电路 构成: 运算部件以算术逻辑运算单元ALU为核心,包 含累加器ACC、B寄存器、暂存器、标志寄存器PSW等, 功能: 它能实现算术运算、逻辑运算 。
第6章80C51单片机的串行口

2(3)
TXD
发送数据(串行输出)
DTE→DCE
3(2)
RXD
接收数据(串行输入)
DTE←DCE
4(7)
RTS
请求发送
DTE→DCE
5(8)
CTS
允许发送
DTE←DCE
6(6)
DSR
DCE就绪(数据建立就绪)
DTE←DCE
7(5)
SGND
信号接地
8(1)
DCD
载波检测
DTE←DCE
RB8
TI
RI
字节地址:98H
SM0
SM1
方 式
说 明
波特率
0
0
0
移位寄存器
fosc/12
0
1
1
10位UART(8位数据)
可变
1
0
2
11位UART(9位数据)
fosc/64或fosc/32
1
1
3
11位UART(9位数据)
可变
SM2:多机通信控制位
SM2=1时,接收机处于地址帧筛选状态。若RB8=1,该地址帧信息可进入SBUF,并使RI为1,进而在中断服务中再进行地址号比较;若RB8=0,该帧不是地址帧,应丢掉,且保持RI=0。
传输距离与传输速率的关系
传输距离随波特率的增加而减小。
6.1.2 串行通信接口标准
RS-232C定义的是DTE与DCE间的接口标准。
机械特性
DB-25(阳头)连接器
DB-9(阳头)连接器
阳头通常用于计算机侧,阴头用于连接线侧
功能特性
插针序号
信号名称
功能
信号方向
80C51 串行口多机通信_单片机原理与接口技术(第2版)_[共4页]
![80C51 串行口多机通信_单片机原理与接口技术(第2版)_[共4页]](https://img.taocdn.com/s3/m/0e3c95cac281e53a5902ff40.png)
80C51系列单片机的串行通信 162 第6章 MOV A , SBUF ;读回复信号CPL A ;回复信号取反JNZ TRLP ;非全0(回复信号≠FFH ,错误),转重发INC R0;全0(回复信号=FFH ,正确),指向下一数据存储单元 CJNE R0, #60H ,TRLP ;判断16个数据发送完否?未完继续 RET乙机程序如下。
RXD2:MOV SCON , #80H;置串行方式2,允许接收MOV PCON , #80H ;SMOD=1MOV R0, #40H ;置接收数据区首地址SETB REN ;启动接收 RWAP :JNB RI , $ ;等待一帧数据接收完毕CLR RI ;清接收中断标志MOV A , SBUF ;读接收数据,并在PSW 中产生接收数据的奇偶值JB P , ONE ;P=1,转另判 JB RB8, ERR ;P=0,RB8=1,接收有错;P=0,RB8=0,接收正确,继续接收RLOP :MOV @R0, A ;存接收数据INC R0 ;指向下一数据存储单元RIT :MOV A , #0FFH ;置回复信号正确FDBK :MOV SBUF , A ;发送回复信号CJNE R0, #50H ,RWAP ;判断16个数据接收完否?未完继续 CLR REN ;16个数据正确接收完毕,禁止接收RET ONE :JNB RB8, ERR ;P=1,RB8=0,接收有错SJMP RIT ;P=1,RB8=1,接收正确,继续接收ERR :CLRA ;接收有错,置回复信号错误标志SJMP FDBK ;转发送回复信号 6.3.4 80C51串行口多机通信80C51串行口的方式2和方式3可用于多机通信。
多机通信有主机和从机之分,是指一台主机和多台从机之间的通信。
主机发送的信息可传送到各个从机,而各从机发送的信息只能被主机接收,从机和从机之间不能进行通信,如图6-13所示。
多机通信的实现主要依靠主、从机之间正确的设置与判断SM2和接收或发送的第9位数据来完成。
80C51系列单片机有一个全双工的串行口

2、串行控制寄存器SCON 串行控制寄存器SCON
SCON 位名称 位地址 功能 1) 2) 3) 4) 5) 6) 7) SM0 SM0 SM2 SM2 REN TB8 TB8 RB8 TI RI D7 SM0 9FH D6 SM1 9EH D5 SM2 9DH D4 REN 9CH D3 TB8 9BH D2 RB8 9AH 接收 第9位 D1 TI 99H 发送 中断 D0 RI 98H 接收 中断
T1初值 T1初值 = 256 -
2SMOD 32
×
fosc 12 ×波特率
⑷ 应用举例
设甲乙机以串行方式1进行数据传送,fosc=11 0592MHz 11. MHz, 【例6-3】设甲乙机以串行方式1进行数据传送,fosc=11.0592MHz,波特 率为1200b/s。甲机发送的16个数据存在内RAM 40H 1200b/s 16个数据存在内 FH单元中 单元中, 率为1200b/s。甲机发送的16个数据存在内RAM 40H~4FH单元中,乙机接 收后存在内RAM 50H为首地址的区域中。 收后存在内RAM 50H为首地址的区域中。 解: 串行方式1波特率取决于T 溢出率( SMOD=0),计算T 定时初值: 串行方式1波特率取决于T1溢出率(设SMOD=0),计算T1定时初值: 计算
解:编程如下: 编程如下:
LIGHT: SCON,#00 00H 串行口方式0 LIGHT:MOV SCON,#00H ;串行口方式0 CLR ES ;禁止串行中断 MOV DPTR,#TAB ;置发光二极管亮暗控制字表首址 置顺序编号0 LP1: MOV R7,#0 ;置顺序编号0 LP2: MOV A,R7 ;读顺序编号 MOVC A,@A+DPTR ;读控制字 CLR P1.0 ;关闭并行输出 MOV SBUF,A ;启动串行发送 JNB TI,$ ;等待发送完毕 CLR TI ;清发送中断标志 SETB P1.0 ;开启并行输出 调用延时0.5秒子程序(参阅例4 0.5秒子程序 LCALL DLY500ms ;调用延时0.5秒子程序(参阅例4-13) INC R7 ;指向下一控制字 判循环操作完否? CJNE R7,#30,LP2 ;判循环操作完否?未完继续 顺序编号0 29依次操作完毕 依次操作完毕, SJMP LP1 ;顺序编号0~29依次操作完毕,从0开始重新循环 TAB: FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00 从左向右依次暗灭, 07H,03H,01H,00H TAB: DB 0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H;从左向右依次暗灭, 每次减少一个,直至全灭; 每次减少一个,直至全灭; 80H,40H,20H,10H,08H,04H,02H,01H 从左向右依次点亮, H,40H,20H,10H,08H,04H,02H,01 DB 80H,40H,20H,10H,08H,04H,02H,01H;从左向右依次点亮,每次亮一个 02H,04H,08H,10H,20H,40H,80H 从右向左依次点亮, H,04H,08H,10H,20H,40H,80 DB 02H,04H,08H,10H,20H,40H,80H;从右向左依次点亮,每次亮一个 H,0 H,0 H,0 H,0FCH,0FEH;从左向右依次点亮, DB 0C0H,0E0H,0F0H,0F8H,0FCH,0FEH;从左向右依次点亮, 每次增加一个,直至全部点亮; 每次增加一个,直至全部点亮;
80C51系列单片机有一个全双工的串行口

解:编程如下:
LIGHT:MOV SCON,#00H ;串行口方式0 CLR ES ;禁止串行中断 MOV DPTR,#TAB ;置发光二极管亮暗控制字表首址 LP1: MOV R7,#0 ;置顺序编号0 LP2: MOV A,R7 ;读顺序编号 MOVC A,@A+DPTR ;读控制字 CLR P1.0 ;关闭并行输出 MOV SBUF,A ;启动串行发送 JNB TI,$ ;等待发送完毕 CLR TI ;清发送中断标志 SETB P1.0 ;开启并行输出 LCALL DLY500ms ;调用延时0.5秒子程序(参阅例4-13) INC R7 ;指向下一控制字 CJNE R7,#30,LP2 ;判循环操作完否?未完继续 SJMP LP1 ;顺序编号0~29依次操作完毕,从0开始重新循环 TAB: DB 0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H;从左向右依次暗灭, 每次减少一个,直至全灭; DB 80H,40H,20H,10H,08H,04H,02H,01H;从左向右依次点亮,每次亮一个 DB 02H,04H,08H,10H,20H,40H,80H;从右向左依次点亮,每次亮一个 DB 0C0H,0E0H,0F0H,0F8H,0FCH,0FEH;从左向右依次点亮, 每次增加一个,直至全部点亮;
(2) 数据接收
串行口作为并行输入口使用时,要有“并入串出” 的移位寄存器配合。
74HC165 S/L 端为移位 / 置入端,当 S/L=0 时,从 Q0 ~ Q7并行置入数据,当S/L=1时,允许从QH端移出数据。在 80C51串行控制寄存器SCON中的REN=1时,TXD端发出移位 时钟脉冲,从RXD端串行输入8位数据。当接收到第8位数 据D7后,置位中断标志RI,表示一帧数据接收完成。
嵌入式系统单片机助理工程师认证考试理论试题A答案

中国电子学会嵌入式(单片机)助理工程师专业技术资格认证考试试题 (11-01)(考试时间:150分钟)一、填空题(将正确答案填入空格中,每空1分,共35分)1、MCS51单片机的最大程序寻址空间为 64K KB ,空间的地址范围为0000H-FFFFH ,单片机复位后程序入口地址为 0000H 。
外部中断0的入口地址为 0003H ,T1定时/计数器的中断入口地址为 001BH 。
2、PSW 中RS1=1,RS0=0,R3对应的字节地址为 13H 。
3、7AH 对应的十进制数为 122 D ,对应的二进制数为01111010 B 。
4、MCS51单片机的仅使用内部ROM 时,EA 引脚应接 高 电平。
5、当MCS51单片机RST 引脚出现 2个 机器周期以上高电平时单片机可有效复位,复位后SP= 07H ,PC= 0000H ,P1= FFH 。
6、MCS-51单片机的低功耗方式有 待机 、 掉电 。
7、MCS-51单片机的常用复位方式有 手动复位 、 上电复位 。
8、80C51单片机的串行口控制寄存器器是 SCON ;串行口工作在方式2时SM0、SM1设置为 10 ,当设置允许串行口接收串行输入数据时必须将 REN 位设置为1。
9、把数据存入堆栈称为 入栈 ,从堆栈取出数据称为 出栈 ,从堆栈取出数据遵循 先进后出、后进先出 的原则。
10、LED 数码管按结构分为 共阴 和 共阳 两种形式。
11、键盘按键的检测过程中消除抖动常用的方法有 RS 触发器滤波 、 RC 滤波 、 软件延时 。
12、DAC0832的参考电压为+5V,则分辩率为 5/256 V 。
13、矩阵键盘中为了识别键盘上的闭合键,通常采用两种方法 逐行扫描法和 线反转法 。
14、C51中定义的位变量的关键字是 bit 位变量对应的地址空间范围是0x20-0x2f 。
15、unsigned char 定义的变量取值范围 0-255 ,unsigned int定义的变量取值范围 0-65535 。
单片机原理及应用-第四章80C51单片机的功能

对两个操作数执行逻辑异或操作, 并将结果存放在目标地址中。
03
02
OR
对两个操作数执行逻辑或操作,并 将结果存放在目标地址中。
NOT
对操作数执行逻辑非操作,并将结 果存放在目标地址中。
04
控制转移指令
JMP
无条件跳转到指定地址。
JC/JNC
当进位标志位为1或0时,跳转 到指定地址。
JZ/JE
06
80C51单片机的串行通信 接口
串行通信的基本概念
串行通信
通过一条数据线,按照位顺序传输数据,实现数 据的发送和接收。
异步通信
数据传输速率不固定,发送器和接收器使用各自 的时钟。
同步通信
数据传输速率固定,发送器和接收器使用同一时 钟源。
80C51单片机的串行口结构及控制寄存器
要点一
串行口结构
算术运算指令
ADD
将两个操作数相加,并将结果存放在 目标地址中。
SUB
从源地址中减去目标地址中的值,并 将结果存放在源地址中。
MUL
将两个操作数相乘,并将结果存放在 目标地址中。
DIV
将源地址中的值除以目标地址中的值, 并将商存放在源地址中,余数存放在 累加器中。
逻辑运算指令
01
AND
对两个操作数执行逻辑与操作,并 将结果存放在目标地址中。
80C51单片机的应用领域
工业控制
80C51单片机在工业控制领域应用广泛, 如电机控制、自动化生产线控制等。
通信设备
80C51单片机在通信设备领域应用广 泛,如调制解调器、路由器、交换机
等。
智能仪表
80C51单片机可以用于各种智能仪表 的控制系统,如温度、压力、流量等 传感器采集和处理。
MCS-51单片机的串行口及串行通信技术

MCS-51单⽚机的串⾏⼝及串⾏通信技术数据通信的基本概念串⾏通信有单⼯通信、半双⼯通信和全双⼯通信3种⽅式。
单⼯通信:数据只能单⽅向地从⼀端向另⼀端传送。
例如,⽬前的有线电视节⽬,只能单⽅向传送。
半双⼯通信:数据可以双向传送,但任⼀时刻只能向⼀个⽅向传送。
也就是说,半双⼯通信可以分时双向传送数据。
例如,⽬前的某些对讲机,任⼀时刻只能⼀⽅讲,另⼀⽅听。
全双⼯通信:数据可同时向两个⽅向传送。
全双⼯通信效率最⾼,适⽤于计算机之间的通信。
此外,通信双⽅要正确地进⾏数据传输,需要解决何时开始传输,何时结束传输,以及数据传输速率等问题,即解决数据同步问题。
实现数据同步,通常有两种⽅式,⼀种是异步通信,另⼀种是同步通信。
异步通信在异步通信中,数据⼀帧⼀帧地传送。
每⼀帧由⼀个字符代码组成,⼀个字符代码由起始位、数据位、奇偶校验位和停⽌位4部分组成。
每⼀帧的数据格式如图7-1所⽰。
⼀个串⾏帧的开始是⼀个起始位“0”,然后是5〜8位数据(规定低位数据在前,⾼位数据在后),接着是奇偶校验位(此位可省略),最后是停⽌位“1”。
起始位起始位"0”占⽤⼀位,⽤来通知接收设备,开始接收字符。
通信线在不传送字符时,⼀直保持为“1”。
接收端不断检测线路状态,当测到⼀个“0”电平时,就知道发来⼀个新字符,马上进⾏接收。
起始位还被⽤作同步接收端的时钟,以保证以后的接收能正确进⾏。
数据位数据位是要传送的数据,可以是5位、6位或更多。
当数据位是5位时,数据位为D0〜D4;当数据位是6位时,数据位为D0〜D5;当数据位是8位时,数据位为D0〜D7。
奇偶校验位奇偶校验位只占⼀位,其数据位为D8。
当传送数据不进⾏奇偶校验时,可以省略此位。
此位也可⽤于确定该帧字符所代表的信息类型,“1"表明传送的是地址帧,“0”表明传送的是数据帧。
停⽌位停⽌位⽤来表⽰字符的结束,停⽌位可以是1位、1.5位或2位。
停⽌位必须是⾼电平。
接收端接收到停⽌位后,就知道此字符传送完毕。
51单片机外设功能及应用

漏极开路电路,若驱动NMOS或其它拉流负载
时,需要外接上拉电阻。P0的输出级可驱动8
个LSTTL负载。
地址/数据 VCC
读锁存器
控制
内部总线 写锁存器
DQ CLK Q
T1
P0.n P0口
T2
引脚
MUX
读引脚
P0口作为通用输入
P0口作为输入口使用时,即为读引脚情况。所谓读 引脚就是直接读取P0.X引脚的状态,这时在“读引 脚”信号的控制下把缓冲器打开,将端口引脚上的
关于扩展I/O端口,将在系统扩展的相关章节中介 绍。
80C51单片机一般有4个8位的双向并行I/O 口,分别记作P0、P1、P2和P3。既可以作输 入口,又可以作输出口。因此,P0~ P3口在 结构和特性上有相同之处,但又各具特色。 它们的电路设计非常巧妙。熟悉它们的逻辑 电路,不但有利于正确合理使用这四个并行I/ O口,而且会对设计单片机外围逻辑电路有 所启发。
读锁存器
地址 控制 VCC
内部总线 写锁存器
DQ CLK Q
R
P2.n P2口
T
引脚
MUX
读引脚
P2口作为通用I/O口
在P2口作为一般I/O口使用时,与P1口类似, 用于输出时不需要外接上拉电阻,当用于输入 时,仍需要向锁存器先写入“1”,然后再读取。
读锁存器
内部总线 写锁存器
地址 控制 VCC
读锁存器
控制
内部总线 写锁存器
DQ CLK Q
T1
T2 MUX
P0.n P0口 引脚
读引脚
P0口作为地址/数据总线使用
应当指出,P0口在作为一般输入口使用时在读取管 脚之前还应向锁存器写入“1”,使上下两个场效应 管均处于截止状态,使外接的状态不受内部信号的
80C51串行接口

80C51单片机的串口是一个能进行全双工异步通信或同步移位寄存器,具有4种工作方式的可编程接口。
其帧格式可为8位、10位或11位,并可以设置多种不同的波特率。
通过引脚RXD(P3.0串行数据接收引脚)和引脚TXD(P3.1 串行数据发送引脚)与外界进行通信。
80C51单片机串行口是由发送缓冲寄存器SBUF、发送控制器、发送控制门、接收缓冲寄存器SBUF、接收控制寄存器、移位寄存器和中断等部分组成。
1.SBUF在逻辑上,SBUF只有一个,既表示发送寄存器,又表示接收寄存器。
具有同一个单元地址99H。
在物理上,SBUF有两个,一个是发送寄存器,另一个是接收寄存器。
接收器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。
2.控制寄存器与串行通信有关的控制寄存器共有三个。
(1)串行控制寄存器SCONSCON是80C51的一个可位寻址的专用寄存器,用于串行数据通信的控制。
单元地址98H,位地址9FH-98H。
寄存器及位地址表示如下:当方式0时,接收完第8位数据后,该位由硬件置位。
在其它方式下,当接收到停止位时,该位由硬件置位。
因此RI=1,表示帧接收结束,其状态既可供软件查询使用,也可以请求中断。
RI位由软件清0。
(2)电源控制寄存器PCONPCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器。
单元地址为87H。
其内容如下:在HMOS的单片机中,该寄存器中除最高位之外,其它位都是虚设的。
最高位(SMOD)是串行口波特率的倍增位,当SMOD=1时串行口波特率加倍。
系统复位时,SMOD=0。
PCON寄存器不能进行位寻址,因此表中写了“位序”而不是“位地址”。
7.2.2 80C51单片机串行通信工作方式1.串行工作方式0在方式0下,串行口是作为同步移位寄存器使用。
这时以RXD(P3.0)端作为数据移位的入口和出口,而由TXD(P3.1)端提供移位脉冲。
移位数据的发送和接收以8位为一帧,不设起始位和停止位,低位在前高位在后。
80C51的串行口

1、方式2和方式3输出
写入SBUF TXD TI(中断标志) 起始
D0 D1 D2 D3 D4 D5 D6 D7 TB8
停止位
①发送开始时,先把起始位0输出到TXD引脚,然后发 送移位寄存器的输出位(D0)到TXD引脚。每一个 移位脉冲都使输出移位寄存器的各位右移一位,并 由TXD引脚输出。 ②第一次移位时,停止位“1”移入输出移位寄存器的 第9位上 ,以后每次移位,左边都移入0。当停止位 移至输出位时,左边其余位全为0,检测电路检测到 这一条件时,使控制电路进行最后一次移位,并置 TI=1,向CPU请求中断。
3、过程特性 过程特性规定了信号之间的时序关系, 以便正确地接收和发送数据 。
TXD 计 算 机 RXD RTS DSR M O D E M
电话线
M O D E M
TXD RXD RTS DSR 计 算 机
远程通 信连接
TXD 计 RXD 算 机 甲
TXD RXD 计 算 机 乙
计 算 机 甲
TXD RXD 4 5 6 20
6.1.2 串行通信接口标准
一、RS-232C接口 RS-232C是EIA(美国电子工业协会)1969年修订RS232C标准。RS-232C定义了数据终端设备(DTE)与 数据通信设备(DCE)之间的物理接口标准。 1、机械特性 RS-232C接口规定使用25针连接器,连接器的尺寸及每 个插针的排列位置都有明确的定义。(阳头)
空 闲 起 始 位 D0 LSB 1帧共10位 数据位8位 D7 MSB 停 止 位 空 闲
1、方式1输出
写入SBUF TXD TI(中断标志) 起始
D0 D1 D2 D3 D4 D5 D6 D7
停止位
2、方式1输入
(完整版)第六章80C51的串行口习题及答案

第六章80C51的串行口习题及答案1、80C51单片机串行口有几种工作方式?如何选择?简述其特点?答:80C51单片机串行口有4种工作方式。
各方式的特点:方式0:串行口为同步移位寄存器的输入输出方式。
主要用于扩展并行输入或输出口。
波特率固定为晶振频率的1/12。
方式1:为10位数据异步通信口。
波特率可变。
方式2或方式3:为11位数据的异步通信口。
方式2波特率固定,相对于固定的晶振频率只有两种波特率。
方式3波特率可变。
使用时,根据需要和各方式的特点配合选择。
2、串行通信的接口标准有哪几种?答:串行通信接口标准有:1.RS_232C接口;2.RS_422A接口;3. RS_485接口。
3、在串行通信中,通信速率与传输距离之间的关系如何?答:在串行通信中,传输距离与传输速率的关系:当传输线使用每0.3m (约1ft)有50pF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。
5、利用单片机串行口扩展24个发光二极管和8个按键,要求画出电路图并编写程序,使24个发光二极管按照不同的顺序发光(发光的时间间隔为1s)o 答:实现电路图如下:扩展I/O 口时使用方式0,波特率固定,实现程序如下:BOOT:CLR EAMOV SCON,#10HCLR P1.0 ;关闭I0 扩展口CLR P1.1CLR P1.2CLR P1.3 ;对键盘扩展芯片165 使能MAIN: SETB P1.0 ;对第一个扩展IO 口芯片使能ACALL DISPLAYCLR P1.0SETB P1.1 ;第一个扩展IO 口顺序显示完毕,对第二个扩展IO 芯片使能ACALL DISPLAYCLR P1.1SETB P1.2ACALL DISPLAYCLR P1.2SJMP MAIN ;循环显示DISPLAY: MOV A,#00000001b ;从第一个开始MOV R4,#8 ;送显示长度LOOP:MOV SBUF, ACALL DELAY1SDJNZ R4, LOOPRETEND6、编制图6.30 的中断方式的数据接收程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0 D0 D1 D2 D3 D4 D5 D6 D7 异步串行通信字符帧的格式
1
同步串行通信
特点: (1) 连续的数据块传输,字符间无间隙。
(2) 通信双方使用统一的时钟。
帧格式: 同步字符1+同步字符2+数据流 要求:通信双方帧格式、波特率、时钟完全一致
单片机系统中的串行接口应用
串行通讯可以实现单片机与单片机、单片机与微机之间的数
TB8:在模式2、3时,本机作为发送方时将要发送的第9位数据; REN:允许接收位,REN=1时允许接收.由软件置位或清零。
返回前一次
ቤተ መጻሕፍቲ ባይዱ
SM0 SM1 SM2 REN TB8 RB8 SM2 :方式2或3时的多机通信使能位.
(模式0、1时: SM2不用,可设为0)
TI
RI
模式2、3时: 对接收方起作用
可变
返回前一次
SM0
SM1
SM2 REN
TB8
RB8
TI
RI
RI :完成一帧数据接收标志,原始应软件清零,一帧接收完成后
RI=1并申请中断(如果中断开放,则引发中断);
TI : 完成一帧数据发送标志 , 原始应软件清零,一帧发送完成后 TI=1同时申请中断(如果中断开放,则引发中断);
RB8:在模式2、3时,本机作为接收方时,接收到的第9位数据;
两个缓冲器共用一个特殊功能寄存器字节地址(99H)。
控制寄存器共有两个:特殊功能寄存器SCON和PCON。
8
图6-1 串行口的内部结构图
9
51 TXD
RXD
CPU写SBUF:发送数据 MOV SBUF, A CPU读SBUF:读取接收到的数据到A MOV A, SBUF
串行口控制寄存器SCON 地址:98H
①如果系统中断是开放的,则 TI=1会自动引发中断。用户可以 通过中断服务程序向SBUF输送下一个数据:
MOV SBUF, A MOV SBUF , A ——— 中断方式发送数据; 否则等待 —— 查询方式发送。
②也可以使用查询的方式对TI进行检测,如果TI=1则执行:
使用查询TI标志方式发送N个数据
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0 SM1: 串行口工作模式选择位。
SM0 SM1 0 0 1 0 1 0 模式 0 1 2 功 能 波特率 Fosc/12 可变 Fosc/64或 /32
同步移位寄存器模式 8位异步通信UART 9位异步通信UART
1
1
3
9位异步通信UART
MOV A,SBUF
否则等待 。
—— 查询方式接收数据
使用查询RI标志方式接收N个数据
SETB SCON .REN CLR SCON .RI NO
RI=1? YES
mov a,sbuf A送数据区 修改数据指针
N个数据接收完? YES NO
TI (SCON.1):发送完成标志。
当CPU执行:MOV SBUF, A,数据从SBUF送到移位寄存器, 开始通过 TXD向外串行发送数据。当完成一帧数据的发送后, TI=1。
RS-232
PC机 COM1,COM2
单片机与PC机之间的数据通讯 返回前一次
80C51TXD RXD
RS-485
RS-485
RXD80C51 TXD
单片机甲乙两地之间远距离通讯
6.1 串行口的结构
内部结构如图6-1所示。
有两个物理上独立的接收、发送缓冲器SBUF(属于特殊 功能寄存器),可同时发送、接收数据。 发送缓冲器只能写入不能读出 接收缓冲器只能读出不能写入
据交换。
串行通讯电路简单,实现远距离低成本的数据传输。缺点是 传输速度慢。 在一些系统中 , 采用串行通讯的形式将多微处理器连接起来, 构成一个完整的多CPU控制系统。
串行(异步)通讯应用示意图
80C51 TXD
(甲) RXD
RXD 80C51 TXD (乙)
单片机甲、乙之间近距离的直接通讯
80C51TXD RXD
CLR SCON .TI 数据送累加器A 修改数据区指针 mov sbuf,a TI=1? YES
NO
N个数据发送完?
YES NO
发送数据的程序框图
6.2 串行口的4种工作方式
4种工作方式由特殊功能寄存器SCON中SM0、SM1位定义, 6.2.1 方式0 方式0为同步移位寄存器输入/输出方式。 该方式并不用于两个AT89S51单片机之间的异步串行通信,
SBUF
读SBUF 51内部总线
如何使用RI,TI标志完成接收、发送?
CPU通过标志了解SBUF的发送、接收的状态,以便决定后续操作。
RI(SCON.0):接收完成标志。 当从RXD接收完一个完整的数据帧,并将数据从移位寄存器送到 SBUF时,RI=1。 ①如果串口中断是开放的,则RI=1时会自动引发中断。 用户可以通过中断服务程序将SBUF中的数据取出送累加器A。 MOV A,SBUF —— 中断方式接收数据; ②也可以使用查询的方式对RI进行检测,如果RI=1则执行:
异步串行通讯
特点: (1)数据是以字符或字节为单位组成字符帧传送。字符间允许间断。 (2) 发送与接收时钟相互独立,互不同步。 数据帧:字符帧 “起始位”+“数据位”+(可选择的奇/偶校验位)+“停止位”构成。 异步通讯双方必须约定:使用相同的波特率和字符帧格式。
双方可以使用独立的时钟。
起始位
校验位 停止位 空闲位
80C51单片机的串行接口
6.1 单片机系统中的串行接口结构
6.1.1 数据缓冲寄存器 SBUF 6.1.2 串行口控制寄存器SCON 6.2 串行口工作模式
6.3 波特率与定时器初值的计算
返回上一页
继续
并行通信与串行通信
并行通信: 需要多条数据线 适于近距离高速通信 串行通信: 使用一条数据线。 适于远距离通信。 分为:异步串行通信和同步串行通信 波特率:每秒钟传输二进制位的个数。 波特率使用的单位是:bps(bits per second) 位/秒
SM2=0:无论RB8如何,RI都能被激活(RI=1)。 SM2=1:接收方能否真正接收数据,取决于收到的第9位
SM2=1;RB8=0时, RI不会被激活;
SM2=1;RB8=1时,RI才能被激活=1,并引发中断。
SM2=1 用于多机通信:由发送方来控制接收方的数据接收。
RXD
输入移位寄存器
装载SBUF
而是用于串行口外接移位寄存器,扩展并行I/O口。
8位数据为一帧,无起始位和停止位,先发送或接收最低位。 波特率固定,为fosc/12。帧格式如图6-4所示。