1 / 85

6.1 实 训 概 要

第 6 章 串行接口控制. 6.1 实 训 概 要 MCS-51 单片机内部除了 4 个并行 I/O 口外,还设置一个全双工串行口。在串行接口电路中,二进制数据一位一位一次传送,串行通信只需要 2 根传输线即可完成,传送成本低,适合于远距离传输。例如,在单片机之间、单片机与 IBM PC 机之间以及单片机与外部设备之间的数据传送,就依靠串行通信实现。其缺点是速度较慢。. 实训内容: 串行数据传送 串行接口扩展输出 I/O 口 串行接口扩展输入 I/O 口 串行口点对点通信 双机通信 多机通信. 预备知识: 1 .串行通信基本知识

ramona
Download Presentation

6.1 实 训 概 要

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 串行接口控制 6.1 实 训 概 要 MCS-51单片机内部除了4个并行I/O口外,还设置一个全双工串行口。在串行接口电路中,二进制数据一位一位一次传送,串行通信只需要2根传输线即可完成,传送成本低,适合于远距离传输。例如,在单片机之间、单片机与IBM PC机之间以及单片机与外部设备之间的数据传送,就依靠串行通信实现。其缺点是速度较慢。

  2. 实训内容: • 串行数据传送 • 串行接口扩展输出I/O口 • 串行接口扩展输入I/O口 • 串行口点对点通信 • 双机通信 • 多机通信

  3. 预备知识: 1.串行通信基本知识 (1)计算机通信方式 并行通信 并行通信是指在同一时刻,数据字节的各位同时传送。在这种传送方式下,数据有几位,就需要几根数据传输线。该方式数据传输速度很快,它适用于计算机与其外设之间进行信息传递。 串行通信 串行通信是指数据一位一位依此传送。在这种传送方式下,只需要两根线:一根发送数据线,一根接收数据线。 MCS-51单片机与其外部设备之间的通信可以通过并行通信和串行通信两种方式实现。如图6-1所示。

  4. P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 GND D0 D1 D2 外 D3 部 D4 设 D5 备 D6 D7 GND RXD TXD GND TXD RXD 外 部 设 备 GND

  5. 2)串行通信方式 同步传送 同步传送是按数据块传送的。它由若干个需要传送的字符顺序连接起来,形成数据块,前面加上特殊的字符—同步字符。同步字符作为数据传送的开始,使接收、发送双方取得同步,同步字符可以由用户定义。在数据块后面加上校验字符,用来检查传送的数据块是否正确。同步传送方式的字符格式如图6-2所示:

  6. …. 校验字符2 校验字符1 数据字节n 数据字节2 数据字节1 同步字符2 同步字符1

  7. 异步传送 异步传送是以一个字符为单位传送的。多个字符可以一个接一个连续传送,也可以断续传送,并且同步时钟脉冲不传送到接收方。发送、接收双方各用自己的时钟源来控制发送和接收。 在异步传送中,通过在发送的字符前、后加上若干位,分别叫起始位和停止位,利用每个字符的起止信号建立起收、发双方的同步关系。异步传送的字符格式如图6-3所示:

  8. 数据位 起始位 奇偶校验位 停止位

  9. 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 1 1 1 停止位 起始位 数据位 起始位 数据位 停止位 异步传送格式 一个异步传送的字符通常由四部分组成:起始位、数据位、奇偶校验位和停止位。 例如:数据位为6位,起始位和停止位各占1位的异步传送字符如图6-4所示。

  10. (3)波特率 波特率是串行通信中一个重要指标。它定义位每秒传送的二进制数码的位数。单位是:位/秒。波特率反应了串行通信的速率。 (4)串行通信的制式 单工方式:采用这种方式的线路只允许数据按照一个固定的方向传送。 半双工方式:数据能够从一个站传送到另一个站,也能从另一个站传回,但不能同时在两个方向上传送。 全双工方式:数据可以在两个方向上同时发送和接收。三种方式如图6-5所示。

  11. P3.1 TXD 发送缓冲器SBUF 串 口 控 制 寄 存 器 内 部 总 线 发送控制器 定时器T1 串口中断 TI ≥1 RI 接收控制器 RXD 输入移位寄存器 RXD P3.0 接收缓冲器SBUF

  12. 串行接口中的特殊功能寄存器 串行口控制寄存器SCON: SCON是一个8位的特殊功能寄存器,其字节地址为98H。用于控制和管理串行口的工作方式、多机通信以及串口中断标志。具体如下:

  13. SM0、SM1:串行口工作方式选择位。单片机的串行口有4种工作方式,通过SM0和SM1的二进制组合取值选择。具体见表6-1所示。

  14. 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”。

  15. RI:串口接收中断标志位。在方式0串行接收到第8位结束时置“1”,或在其它方式串行接收到停止位的中间时置“1”。必须由软件清“0”。 电源控制寄存器PCON: PCON是一个8位的特殊功能寄存器,其字节地址为 87H。其最高位是串行口波特率系数控制位,用于设置串行通信的波特率。具体如下:

  16. 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。

  17. 方式1 • 图6-7中,方式1的数据传送字符格式为: • 起始位 停止位 • 图 6-7 方式1的数据传送格式 • 串行口以方式1发送数据时,由TXD输出。 • 在方式1接收数据时,数据通过RXD端输入。 • 方式2和方式3: • 方式2和方式3可用于多机通信。详见教材。

  18. 6.2 实训22 串行数据传送 6.2.1 实训目的 通过本节实训,主要学习下面内容: 串行数据传送的工作原理。 通过实例理解串行通信的含义。 理解波特率的概念。

  19. 6.2.2 实训要求 将片内RAM20H中的并行数据转换成串行数据,送到接在P1.0脚上的发光二极管显示,其波特率为1位/秒。 6.2.3 实训器材 MCS-51单片机开发系统、发光二极管 6.2.4硬件电路原理图 并行数据转换成串行数据实训电路如图6-8所示。

  20. 6.2.5 实训步骤 (1)按硬件原理图6-8连接电路,将发光二极管与8031的P1.0 脚相连。 (2)理解程序,给每条指令加注释,并画出程序流程图。 (3)将程序机器码送入单片机开发系统中,并检查程序是否正确。 (4)预先为片内RAM 20H单元送入一个数据,如(20H)=55H。连续执行程序,观察发光二极管的亮灭变化,是否与传送的数据相符。 6.2.6 实训程序 并行数据转换成串行数据输出实训程序见表6-2所示。

  21. 6.2.7 分析与思考 • (1)将单字节数据传送程序修改成16字节数据传送程序,执行并观察。 • (2)修改数据传送时间即波特率,观察数据传送情况。 • 提示: • 当发送“1”时,发光二极管被点亮,但若连续传送多个“1”时,其一直亮。而发送多个连续“0”时,其一直熄灭。 • 发送10101010B或01010101B时,最便于观察其传送的波特率。

  22. 6.3 实训23 串行接口扩展输出I/O口 • 6.3.1 实训目的 • 通过本节实训,主要学习下面内容: • 串行口扩展输出I/O口的方法。 • 串行接口编程控制。 • 串行数据转换成并行数据输出。 • 并行数据转换成串行数据输出。

  23. 6.3.2 实训要求 • 串口方式0输出。用单片机串口通过串入/并出芯片74LS164扩展8位输出口,并将片内RAM 30H单元的数据输出到接在74LS164上的发光二极管显示。 • 多字节传送。将片内RAM 30H~3FH共10个字节单元中的并行数据转换成串行数据,送到接在P1.0脚上的发光二极管显示,其波特率为1位/秒。

  24. 6.3.3 实训器材 • MCS-51单片机开发系统、74LS164、发光二极管 • 6.3.4 硬件电路原理图 • 串口扩展输出口实训电路如图6-9所示。

  25. 8031 C 8031 8031 C C C 8031 C P2.7 P2.7 P2.7 P2.7 P2.7 P2.7 P2.7 P2.7 P2.7 P2.6 P2.6 P2.6 P2.6 P2.6 P2.6 P2.6 P2.6 P2.6 P2.5 P2.5 P2.5 P2.5 P2.5 P2.5 P2.5 P2.5 P2.5 P2.4 P2.4 P2.4 P2.4 P2.4 P2.4 P2.4 P2.4 P2.4 P2.3 P2.3 P2.3 P2.3 P2.3 P2.3 P2.3 P2.3 P2.3 P2.2 P2.2 P2.2 P2.2 P2.2 P2.2 P2.2 P2.2 P2.2 P2.1 P2.1 P2.1 P2.1 P2.1 P2.1 P2.1 P2.1 P2.1 P2.0 P2.0 P2.0 P2.0 P2.0 P2.0 P2.0 P2.0 P2.0 P0.7 P0.7 P0.7 P0.7 P0.7 P0.7 P0.7 P0.7 P0.7 P0.6 P0.6 P0.6 P0.6 P0.6 P0.6 P0.6 P0.6 P0.6 P0.5 P0.5 P0.5 P0.5 P0.5 P0.5 P0.5 P0.5 P0.5 P0.4 P0.4 P0.4 P0.4 P0.4 P0.4 P0.4 P0.4 P0.4 P0.3 P0.3 P0.3 P0.3 P0.3 P0.3 P0.3 P0.3 P0.3 P0.2 P0.2 P0.2 P0.2 P0.2 P0.2 P0.2 P0.2 P0.2 P0.1 P0.1 P0.1 P0.1 P0.1 P0.1 P0.1 P0.1 P0.1 P0.0 P0.0 P0.0 P0.0 P0.0 P0.0 P0.0 P0.0 P0.0 A15 A15 A15 A15 A15 A15 A15 A15 A15 A14 A14 A14 A14 A14 A14 A14 A14 A14 A13 A13 A13 A13 A13 A13 A13 A13 A13 A12 A12 A12 A12 A12 A12 A12 A12 A12 A11 A11 A11 A11 A11 A11 A11 A11 A11 A10 A10 A10 A10 A10 A10 A10 A10 A10 A9 A9 A9 A9 A9 A9 A9 A9 A9 A8 A8 A8 A8 A8 A8 A8 A8 A8 A7 A7 A7 A7 A7 A7 A7 A7 A7 A6 A6 A6 A6 A6 A6 A6 A6 A6 A5 A5 A5 A5 A5 A5 A5 A5 A5 A4 A4 A4 A4 A4 A4 A4 A4 A4 A3 A3 A3 A3 A3 A3 A3 A3 A3 A2 A2 A2 A2 A2 A2 A2 A2 A2 A1 A1 A1 A1 A1 A1 A1 A1 A1 A0 A0 A0 A0 A0 A0 A0 A0 A0 2732 2732 2732 2732 2732 2732 2732 2732 2732 A11 A11 A11 A11 A11 A11 A11 A11 A11 A10 A10 A10 A10 A10 A10 A10 A10 A10 A9 A9 A9 A9 A9 A9 A9 A9 A9 A8 A8 A8 A8 A8 A8 A8 A8 A8 A7 A7 A7 A7 A7 A7 A7 A7 A7 A6 A6 A6 A6 A6 A6 A6 A6 A6 A5 A5 A5 A5 A5 A5 A5 A5 A5 A4 A4 A4 A4 A4 A4 A4 A4 A4 A3 A3 A3 A3 A3 A3 A3 A3 A3 A2 A2 A2 A2 A2 A2 A2 A2 A2 A1 A1 A1 A1 A1 A1 A1 A1 A1 A0 A0 A0 A0 A0 A0 A0 A0 A0 0 0 0 0 0 0 0 0 0 × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6.3.5 实训步骤 (1)按硬件电路原理图连接电路。 (2)理解程序,给每条指令加注释,并画出程序流程图。 (3)分别将实训程序机器码送入单片机开发系统中,并检查程序是否正确。 (4)预先为片内RAM 30H单元送入一个数据,如(30H)=AAH。连续执行程序,观察发光二极管的亮灭变化,是否与传送的数据相符。 6.3.6 实训程序 串口方式0扩展输出口实训程序见表6-3、表6-4、表6-5所示。

  26. 6.3.7 分析与思考 表6-3查询方式实训程序中第3行指令CPL A在本程序中是否合适?为什么? 提示: 在使用串行口方式0外接串入并出的移位寄存器扩展并行输出口时,一般要求移位寄存器带有输出允许控制端,避免数据在串行输出时,并行输出端出现不稳定的输出。 输出口最好再连接一个寄存器或锁存器,以免在输出门关闭时(STB=0),输出又发生变化。

  27. 6.4 实训24 串行接口扩展输入I/O口 6.4.1 实训目的 通过本节实训,主要学习下面内容: 通过串行口扩展输入I/O口的方法。 串行接口编程控制。 并行数据转换成串行数据存储。

  28. 6.4.2 实训要求 串行口方式0输入。用单片机串行口通过并入/串出芯片74LS165扩展8位输入口,外接输入设备,并将输入的数据送到片内RAM 20H单元。 6.4.3 实训器材 MCS-51单片机开发系统、74LS165、8路开关 6.4.4 硬件电路原理图 串行口扩展输入I/O口实训电路如图6-10所示。

  29. 6.4.5 实训步骤 (1)按硬件电路原理图6-10连接电路。 (2)理解程序,给每条指令加注释,并画出程序流程图。 (3)分别将实训程序机器码送入单片机开发系统中,并检查程序是否正确。 (4)预先拨动开关,然后连续执行程序,检查片内RAM 20H单元内容是否与开关状态相符。 6.4.6 实训程序 串口方式0扩展输入I/O口实训程序见表6-6、表6-7所示。

  30. 提示: 通过中断方式扩展输入I/O口时,注意串行口中断源入口地址必须为0023H。 CPU响应串行口中断后,必须由用户通过程序清0。

  31. 6.5 实训25 双机通信 6.5.1 实训目的 通过本节实训,主要学习下面内容: 单片机串行口的工作原理以及接收/发送控制过程。 单片机串行通信程序设计过程。

  32. 6.5.2 实训要求 将主单片机片外RAM5000H开始的16个字节单元的内容传送至从机片外RAM5000H开始的单元中。 6.5.3 实训器材 MCS-51单片机开发系统2台 、 导线

  33. 通信协议 • 为保证串行通信成功,主机、从机双方必须在软件上约定,称为协议。本通信的协议如下: • 双方均采用2400波特的速率传送,采用全双工通信方式。 • 主机发送,从机接收。 • 开始时,主机发送一个呼叫信号06H,询问从机是否可以接收。 • 从机收到呼叫信号后,若同意接收,则发给主机00H信号作为应答;若不同意接收则发回0FH信号。

  34. 主机只有收到从机发来的00H后,才能将片外RAM 5000H单元开始的数据发送给从机;否则,继续呼叫,直到从机同意接收为止。 双方约定发送数据的格式为:

  35. 从机根据接收到的校验和,判断已接收到的数据是否正确:从机根据接收到的校验和,判断已接收到的数据是否正确: 若接收正确,则向主机发送0FH。 若接收错误,则向主机发送F0H; 主机只有接收到0FH,才算完成发送任务, 回被调用的程序。否则,继续呼叫,重发据。

  36. 8031 8031 8031 8031 8031 P2.7 P2.7 P2.7 P2.7 P2.7 P2.6 P2.6 P2.6 P2.6 P2.6 P2.5 P2.5 P2.5 P2.5 P2.5 P2.4 P2.4 P2.4 P2.4 P2.4 P2.3 P2.3 P2.3 P2.3 P2.3 P2.2 P2.2 P2.2 P2.2 P2.2 P2.1 P2.1 P2.1 P2.1 P2.1 P2.0 P2.0 P2.0 P2.0 P2.0 P0.7 P0.7 P0.7 P0.7 P0.7 P0.6 P0.6 P0.6 P0.6 P0.6 P0.5 P0.5 P0.5 P0.5 P0.5 P0.4 P0.4 P0.4 P0.4 P0.4 P0.3 P0.3 P0.3 P0.3 P0.3 P0.2 P0.2 P0.2 P0.2 P0.2 P0.1 P0.1 P0.1 P0.1 P0.1 P0.0 P0.0 P0.0 P0.0 P0.0 A15 A15 A15 A15 A15 A14 A14 A14 A14 A14 A13 A13 A13 A13 A13 A12 A12 A12 A12 A12 A11 A11 A11 A11 A11 A10 A10 A10 A10 A10 A9 A9 A9 A9 A9 A8 A8 A8 A8 A8 A7 A7 A7 A7 A7 A6 A6 A6 A6 A6 A5 A5 A5 A5 A5 A4 A4 A4 A4 A4 A3 A3 A3 A3 A3 A2 A2 A2 A2 A2 A1 A1 A1 A1 A1 A0 A0 A0 A0 A0 2764 2764 2764 2764 2764 A12 A12 A12 A12 A12 A11 A11 A11 A11 A11 A10 A10 A10 A10 A10 A9 A9 A9 A9 A9 A8 A8 A8 A8 A8 A7 A7 A7 A7 A7 A6 A6 A6 A6 A6 A5 A5 A5 A5 A5 A4 A4 A4 A4 A4 A3 A3 A3 A3 A3 A2 A2 A2 A2 A2 A1 A1 A1 A1 A1 A0 A0 A0 A0 A0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6.5.5 程序设计思想 1.主机发送程序的编制 波特率设置初始化: 设置定时器T1工作在方式2,电源控制寄存器PCON的SMOD位为“1”,则要实现2400波特的波特率传送数据,则定时器T1初始值为: 波特率=2SMOD×T1的溢出率/32 T1的溢出率=1/[(28- T1初始值)×2μS] 即:2400=21/32×1/[(28-T1初始值)×2μS] T1初始值=243=F3H

More Related