第6章串行接口控制6.1实训概要MCS-51单片机内部除了4个并行I/O口外,还设置一个全双工串行口。在串行接口电路中,二进制数据一位一位一次传送,串行通信只需要2根传输线即可完成,传送成本低,适合于远距离传输。例如,在单片机之间、单片机与IBMPC机之间以及单片机与外部设备之间的数据传送,就依靠串行通信实现。其缺点是速度较慢。第6章串行接口控制第6章串行接口控制实训内容:串行数据传送串行接口扩展输出I/O口串行接口扩展输入I/O口串行口点对点通信双机通信多机通信第6章串行接口控制预备知识:1.串行通信基本知识(1)计算机通信方式并行通信并行通信是指在同一时刻,数据字节的各位同时传送。在这种传送方式下,数据有几位,就需要几根数据传输线。该方式数据传输速度很快,它适用于计算机与其外设之间进行信息传递。串行通信串行通信是指数据一位一位依此传送。在这种传送方式下,只需要两根线:一根发送数据线,一根接收数据线。MCS-51单片机与其外部设备之间的通信可以通过并行通信和串行通信两种方式实现。如图6-1所示。第6章串行接口控制P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7GNDD0D1D2外D3部D4设D5备D6D7GNDRXDTXDGNDTXDRXD外部设备GND第6章串行接口控制2)串行通信方式同步传送同步传送是按数据块传送的。它由若干个需要传送的字符顺序连接起来,形成数据块,前面加上特殊的字符—同步字符。同步字符作为数据传送的开始,使接收、发送双方取得同步,同步字符可以由用户定义。在数据块后面加上校验字符,用来检查传送的数据块是否正确。同步传送方式的字符格式如图6-2所示:第6章串行接口控制….校验字符2校验字符1数据字节n数据字节2数据字节1同步字符2同步字符1….第6章串行接口控制异步传送异步传送是以一个字符为单位传送的。多个字符可以一个接一个连续传送,也可以断续传送,并且同步时钟脉冲不传送到接收方。发送、接收双方各用自己的时钟源来控制发送和接收。在异步传送中,通过在发送的字符前、后加上若干位,分别叫起始位和停止位,利用每个字符的起止信号建立起收、发双方的同步关系。异步传送的字符格式如图6-3所示:第6章串行接口控制数据位起始位奇偶校验位停止位第6章串行接口控制异步传送格式一个异步传送的字符通常由四部分组成:起始位、数据位、奇偶校验位和停止位。例如:数据位为6位,起始位和停止位各占1位的异步传送字符如图6-4所示。010011011010100111数据位起始位停止位起始位数据位停止位第6章串行接口控制(3)波特率波特率是串行通信中一个重要指标。它定义位每秒传送的二进制数码的位数。单位是:位/秒。波特率反应了串行通信的速率。(4)串行通信的制式单工方式:采用这种方式的线路只允许数据按照一个固定的方向传送。半双工方式:数据能够从一个站传送到另一个站,也能从另一个站传回,但不能同时在两个方向上传送。全双工方式:数据可以在两个方向上同时发送和接收。三种方式如图6-5所示。第6章串行接口控制内部总线串口控制寄存器发送缓冲器SBUF发送控制器接收控制器输入移位寄存器接收缓冲器SBUF≥1定时器T1串口中断RXDTXDTIRIP3.1P3.0RXD第6章串行接口控制串行接口中的特殊功能寄存器串行口控制寄存器SCON:SCON是一个8位的特殊功能寄存器,其字节地址为98H。用于控制和管理串行口的工作方式、多机通信以及串口中断标志。具体如下:第6章串行接口控制SM0、SM1:串行口工作方式选择位。单片机的串行口有4种工作方式,通过SM0和SM1的二进制组合取值选择。具体见表6-1所示。SM0SM1工作方式功能说明波特率00方式0移位寄存器方式fosc/1201方式18位UART可变10方式29位UARTfosc/n,n=64或3211方式39位UART可变第6章串行接口控制SM2:多机通信控制位。在方式0时,SM2必须为0;在方式1时,如SM2=1,则只有收到有效的停止位时,才会激活RI;在方式2、3时,SM2=1,表示允许多机通信,然后根据接收到的第9位数据的值来决定从机是否接收主机的信号。REN:允许串行接收位。当REN=1时,允许串行接收;REN=0时,禁止串行接收。TB8:方式2或方式3中要发送的第9位数据。需要时可由软件置位或复位。RB8:方式2或方式3中要接收的第9位数据。需要时可由软件置位或复位。方式0中不使用该位。方式1中,若SM2=0,则RB8是接收到的停止位。TI:串口发送中断标志位。由硬件在方式0串行发送第8位结束时置“1”,或在其它方式串行发送停止位的开始时置“1”。必须由软件清“0”。第6章串行接口控制RI:串口接收中断标志位。在方式0串行接收到第8位结束时置“1”,或在其它方式串行接收到停止位的中间时置“1”。必须由软件清“0”。电源控制寄存器PCON:PCON是一个8位的特殊功能寄存器,其字节地址为87H。其最高位是串行口波特率系数控制位,用于设置串行通信的波特率。具体如下:D7D6~D0PCONSM0D第6章串行接口控制SMOD=1波特率加倍。PCON的其它位为掉电方式控制位。4.串行接口的工作方式•方式0串口方式0为移位寄存器I/O方式,用于扩展I/O口。方式0输出数据从RXD(P3.0)脚串行输出,TXD(P3.1)脚输出同步脉冲。方式0输入是否允许串行口接收数据由串行口控制寄存器SCON的REN位控制。当REN=1且RI=0时,串行口开始接收数据。在方式0下,SCON的TB8和RB8没有使用,多机通信控制位SM2必须为0。EA第6章串行接口控制•方式1图6-7中,方式1的数据传送字符格式为:起始位停止位图6-7方式1的数据传送格式串行口以方式1发送数据时,由TXD输出。在方式1接收数据时,数据通过RXD端输入。1.方式2和方式3:方式2和方式3可用于多机通信。详见教材。第6章串行接口控制6.2实训22串行数据传送6.2.1实训目的通过本节实训,主要学习下面内容:串行数据传送的工作原理。通过实例理解串行通信的含义。理解波特率的概念。第6章串行接口控制6.2.2实训要求将片内RAM20H中的并行数据转换成串行数据,送到接在P1.0脚上的发光二极管显示,其波特率为1位/秒。6.2.3实训器材MCS-51单片机开发系统、发光二极管6.2.4硬件电路原理图并行数据转换成串行数据实训电路如图6-8所示。第6章串行接口控制第6章串行接口控制6.2.5实训步骤(1)按硬件原理图6-8连接电路,将发光二极管与8031的P1.0脚相连。(2)理解程序,给每条指令加注释,并画出程序流程图。(3)将程序机器码送入单片机开发系统中,并检查程序是否正确。(4)预先为片内RAM20H单元送入一个数据,如(20H)=55H。连续执行程序,观察发光二极管的亮灭变化,是否与传送的数据相符。6.2.6实训程序并行数据转换成串行数据输出实训程序见表6-2所示。第6章串行接口控制存储地址机器码行号源程序注释20001ORG2000H20007F082MOVR7,#82002E5203MOVA,20H2004C34CLRC产生起始位200592905MOVP1.0,C20071220176LCALLDELY200A337A1:RLCA200B92908MOVP1.0,C第6章串行接口控制200D1220179LCALLDELY2010DFF810DJNZR7,A12012D311SETBC产生停止位2013929012MOVP1.0,C201580FE13SJMP$20177C0414DELY:MOVR4,#420197EFA15LL3:MOVR6,#250201B7D6416LL2:MOVR5,#100201D0017LL1:NOP201E0018NOP第6章串行接口控制201F0019NOP2020DDFB20DJNZR5,LL12022DEF721DJNZR6,LL22024DCF322DJNZR4,LL320262223RET24END第6章串行接口控制6.2.7分析与思考(1)将单字节数据传送程序修改成16字节数据传送程序,执行并观察。(2)修改数据传送时间即波特率,观察数据传送情况。提示:当发送“1”时,发光二极管被点亮,但若连续传送多个“1”时,其一直亮。而发送多个连续“0”时,其一直熄灭。发送10101010B或01010101B时,最便于观察其传送的波特率。第6章串行接口控制6.3实训23串行接口扩展输出I/O口6.3.1实训目的通过本节实训,主要学习下面内容:串行口扩展输出I/O口的方法。串行接口编程控制。串行数据转换成并行数据输出。并行数据转换成串行数据输出。第6章串行接口控制6.3.2实训要求串口方式0输出。用单片机串口通过串入/并出芯片74LS164扩展8位输出口,并将片内RAM30H单元的数据输出到接在74LS164上的发光二极管显示。多字节传送。将片内RAM30H~3FH共10个字节单元中的并行数据转换成串行数据,送到接在P1.0脚上的发光二极管显示,其波特率为1位/秒。第6章串行接口控制6.3.3实训器材MCS-51单片机开发系统、74LS164、发光二极管6.3.4硬件电路原理图串口扩展输出口实训电路如图6-9所示。第6章串行接口控制第6章串行接口控制CE8031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732A11A10A9A8A7A6A5A4A3A2A1A00××××0000000000000××××0000000000010××××0000000000100××××0000000000110××××111111111111CE8031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732A11A10A9A8A7A6A5A4A3A2A1A00××××0000000000000××××0000000000010××××0000000000100××××0000000000110××××111111111111CE8031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732A11A10A9A8A7A6A5A4A3A2A1A00××××0000000000000××××0000000000010××××0000000000100××××0000000000110××××111111111111CE8031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732A11A10A9A8A7A6A5A4A3A2A1A00××××0000000000000××××0000000000010××××0000000000100××××0000000000110××××111111111111CECP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A02732A11A10A9A8A7A6A5A4A3A2A1A00××××0000000000000××××