第10章 串行口通信
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0.4 串行通信总线标准及其接口
串行通信是将数据一位一位地传送,它只需要一根数据线, 串行通信是将数据一位一位地传送 硬件成本低,而且可使用现有通信信道 而且可使用现有通信信道(如电话),故在集散 型控制系统(特别在远距离传输数据时 特别在远距离传输数据时),例如智能化控制仪 表与上位机(IBM-PC机等)之间通常采用串行通信来完成数据 之间通常采用串行通信来完成数据 的传送。
0.3
8051串行口的应用 串行口的应用
【例10-1】 以波特率为9600bps, ,串口工作方式3,完成允许发 送/接收数据的初始化步骤程序。 。 解:
0.3
8051串行口的应用 串行口的应用
2、串行口应用程序主体 串行通信可采用两种方式编程,查询方式和中断方式 查询方式和中断方式。TI和RI是 串行通信一帧数据发送完和接收完的标志。无论是查询方式还 串行通信一帧数据发送完和接收完的标志 是中断方式编程,都需要用到TI TI或RI。两种方式编程方法如下。 (1)查询方式发送数据块程序: :发送一个数据→查询TI,直至 TI=1→发送下一个数据。 查询方式接收数据块程序:查询RI RI,直至RI=1→读入一个数据→ 查询RI,直至RI=1→读入下一个数据 读入下一个数据。 (2)中断方式发送数据块程序: :发送一个数据→等待中断→在 中断程序中再发送下一个数据。 。 中断方式接收数据块程序:等待中断 等待中断→在中断程序中再接收一个 数据。
0.2
8051串行口 串行口
8051内部有一个功能强大的全双工异步通信口 内部有一个功能强大的全双工异步通信口,具有4种 工作方式;波特率可通过软件设置 波特率可通过软件设置;接收和发送数据均能触发 中断;除了可以实现串行通信外,还可以方便地进行并行口的 扩展。
0.2.1
8051串行口结构
图10-5 8051单片机串行口内部结构 单片机串行口内部结构
第10章 章
串行口通信
本章要点
串行通信的基本概念 串行口的控制寄存器 串行口的基本应用 RS-232串行接口应用 串行接口应用 单片机双机通信的应用程序设计
• 10.1 • 10.2 • 10.3 • 10.4 • 10.5 • 10.6
串行通信概述 8051串行口 串行口 8051串行口的应用 串行口的应用 串行通信总线标准及其接口 单片机与PC机通信的接口电路 单片机与 机通信的接口电路 常用的串行总线接口简介
.2.2 串行口工作原理
串行口有发送数据和接收数据的工作过程。 串行口有发送数据和接收数据的工作过程 1、串行口发送数据 串行口发送数据时,从片内总线向发送 从片内总线向发送SBUF写入数据 (MOV SBUF,A),启动发送过程 启动发送过程,由硬件电路自动在字 符的始、末加上起始位(低电平 低电平)、停止位(高电平),A 中的数据送入SBUF,在发送控制器控制下 在发送控制器控制下,按设定的波特 率,每来一个移位脉冲,数据移出一位 数据移出一位,先发送一位起始位 (低电平),再由低位到高位一位一位通过 再由低位到高位一位一位通过TXD(P3.1)把 数据发送到外部电缆上,数据发送完毕 数据发送完毕,最后发一位停止位 (高电平),一帧数据发送结束 一帧数据发送结束。发送控制寄存器通过或门 向CPU发出中断请求(TI=1), ),CPU可以通过查询TI或者响 应中断的方式,将下一帧数据送入 将下一帧数据送入SBUF,开始发送下一帧 数据。
0.2.3 串行口的控制寄存器
控制8051系列单片机串行口的控制寄存器有两个 系列单片机串行口的控制寄存器有两个:特殊功 能寄存器SCON和PCON。 1、串行控制寄存器SCON
0.2.3 串行口的控制寄存器
2、电源控制寄存器PCON
0.2.4 串行口的工作方式
按照串行通信的数据格式和波特率的不同,80C51系列单 按照串行通信的数据格式和波特率的不同 片机的串行口有4种工作方式, ,可以通过SM0 SM1进行选择。 1、方式0 同步移位寄存器方式。波特率固定为振荡频率的 波特率固定为振荡频率的1/12。发 送和接收串行数据都通过RXD( (P3.0)进行,TXD(P3.1) 输出移位脉冲,控制外部的移位寄存器移位 控制外部的移位寄存器移位。一帧信息为8 位,没有起始位、停止位,传输时低位在前 传输时低位在前。
• 10.7 实践训练 •思考与练习 思考与练习
0.1 串行通信概述
计算机与外界进行信息交换称之为通信。它既包括计算机与 计算机与外界进行信息交换称之为通信 外部设备之间,也包括计算机和计算机之间的信息交换 也包括计算机和计算机之间的信息交换。随着计 算机系统的应用和微机网络的发展,通信功能显得越来越重要。 算机系统的应用和微机网络的发展 计算机的通信可分为并行通信和串行通信两种方式。 计算机的通信可分为并行通信和串行通信两种方式 串行通信又可分为异步通信和同步通信两种。 串行通信又可分为异步通信和同步通信两种
串行通信按照数据传送的方向可分为三种制式,单源自文库制式、 串行通信按照数据传送的方向可分为三种制式 半双工制式和全双工制式,如图10 10-4所示。
图10-4 串行通信制式
.1.4 串行通信的传送速率
在串行通信中,数据是按位传送的 数据是按位传送的,传送速率用每秒传送 数据的位数来表示,称为波特率或比特率 称为波特率或比特率,以波特为单位。 1波特=1位/秒(1 bit/s bit/s) 例如数据传送的速率是120字符 字符/s,而每个字符如上述规 定包含10数位,则传送波特率为1 200波特。 1
0.2.5 波特率的设定
0.3
8051串行口的应用 串行口的应用
在进行串行口的应用时,要解决的问题主要是硬件的连接和 要解决的问题主要是硬件的连接和 编制应用程序。硬件的连接主要是串行口的 硬件的连接主要是串行口的RXD、TXD端与外 部芯片引脚的连接,根据串行口工作方式和外部芯片的不同而 根据串行口工作方式和外部芯片的不同而 有所不同。应用程序的编写内容主要分为串行口初始化和应用 应用程序的编写内容主要分为串行口初始化和应用 程序主体。 1、串行口初始化程序主要内容 即设定SCON中的SM0、SM1。 (1)选择串行口的工作方式,即设定 (2)设定串行口的波特率。方式 方式0可以省略这一点。 设定SMOD的状态,若设定SMOD=1 SMOD=1,则波特率加倍。 若选择方式1和方式3,则需对定时器 则需对定时器T1进行初始化并设定其初 值。 (3)若选择串行口接收数据或是双工通信方式 若选择串行口接收数据或是双工通信方式,需设定REN=1。 (4)若采用中断方式编写串行程序 若采用中断方式编写串行程序,需开串行中断,即设定 ES=1,EA=1。
图10-2 异步通信数据格式
0.1.2
同步通信
在计算机与一些高速设备进行数据通信时,为了提高数据 在计算机与一些高速设备进行数据通信时 块传递速度,可以去掉起始位和停止位标志 可以去掉起始位和停止位标志,采用同步传送。 同步通信的传送格式如图10-3所示 所示。
图10-3 同步通信数据格式
0.1.3 串行通信的制式
.2.2 串行口工作原理
2、串行口接收数据 在接收数据时,若RXD(P3.2 P3.2)接收到一帧数据的起始信 号(低电平),串行控制寄存器 串行控制寄存器SCON向接收控制器发出允 许接收信号,按设定的波特率, ,每来一个移位脉冲,将数据 从RXD端移入一位,放在输入移位寄存器中 放在输入移位寄存器中,数据全部移入 后,寄存器再将全部数据送入接收 寄存器再将全部数据送入接收SBUF中,同时接收控制 器通过或门向CPU发出中断请求 发出中断请求(RI=1),CPU可以通过查 询RI或者响应中断的方式,将接收 将接收SBUF中的数据取走 (MOV A,SBUF),从而完成了一帧数据的接收 从而完成了一帧数据的接收。其后各 帧数据的接收过程与上述相同。 。 由以上叙述可得,串行通信双方的移位速度必须一致 串行通信双方的移位速度必须一致,否 则会造成数据位的丢失。因此, ,在设计串行程序时,通信双 方必须采用相同的波特率。
0.2.4 串行口的工作方式
2、方式1 波特率可变的10位异步通信接口方式 位异步通信接口方式。发送或接收一帧信 息,包括1个起始位0,8个数据位和 个数据位和1个停止位1。波特率可 变,根据定时器1的溢出率计算。 。 3、方式2 固定波特率的11位UART方式, ,其中1位起始位“0”、8位 数据位(先低位后高位),1位控制位 位控制位(第9位)和1个停止 位“1”。它比方式1增加了第9位数据 位数据TB8或RB8。波特率可 变,为振荡频率的1/64或1/32。 。在方式2下,还是8个数据位, 只不过增加了第9位,其功能由用户确定 其功能由用户确定,是一个可编程位。 4、方式3 方式3为波特率可变的11位UART UART方式。波特率可变,根据 定时器1的溢出率计算。除波特率外 除波特率外,其余与方式2相同。
0.3.1 利用串行口扩展并行口
图10-6 串行口扩展并行输入口
图10-7 串行口扩展并行输出口
0.3.2
8051串行口的通信
例10-3】将片内RAM 50H~5FH FH中的数据串行发送,用第9个 数据位作奇偶校验位,设晶振为 设晶振为11.059 2MHz,波特率为2 400b/s,编制串行口方式3的发送程序 的发送程序。 #include<reg51.h> unsigned char i=0; unsigned char array[16] _at_ 0x50; // //发送缓冲区 void main() { SCON=0xc0; //串行口初始化 TMOD=0x20; //定时器初始化 TH1=0xf4; TL1=0xf4; TR1=1; ES=1; EA=1; //中断初始化 ACC=array[i]; //发送第一个数据送 发送第一个数据送
图10-1 8051系列单片机的通信方式 系列单片机的通信方式
0.1.1
异步通信
异步通信的数据或字符是分为一帧一帧地传送的,在异步 异步通信的数据或字符是分为一帧一帧地传送的 通信中,用一个起始位表示字符的开始 用一个起始位表示字符的开始,用停止位表示字符的 结束。其每帧的格式如图10-2所示 所示。
0.4.1
RS-232C串行接口标准
常见的串行接口标准有RS RS-232C(recommended standard)、RS-422/485和20mA 20mA电流环等。PC上配置有COM 和COM2两个串行接口,它们都采用了 它们都采用了RS-232C标准。 RS-232C是美国电子工业协会 是美国电子工业协会(electronics industring association, EIA)制定的一种国际通用的串行接口标准 制定的一种国际通用的串行接口标准。它最 初是为远程通信连接数据终端设备(data terminal equipment, 初是为远程通信连接数据终端设备 DTE)和数据通信设备(data communication equipment, DCE data 制定的标准,目前已广泛用做计算机与终端或外部设备的串行通 目前已广泛用做计算机与终端或外部设备的串行通 信接口标准。该标准规定了通信设备之间信号传送的机械特性 该标准规定了通信设备之间信号传送的机械特性、 信号功能、电气特性及连接方式等 电气特性及连接方式等。
0.3.2
8051串行口的通信
例10-3】将片内RAM 50H~5FH FH中的数据串行发送,用第9个 数据位作奇偶校验位,设晶振为 设晶振为11.059 2MHz,波特率为2 400b/s,编制串行口方式3的发送程序 的发送程序。 SBUF=ACC; //发送一个数据 while(1); //等待中断 } void server() interrupt 4 //串行口中断服务程序 串行口中断服务程序 { TI=0; //清发送中断标志 ACC=array[++i]; //取下一个数据 取下一个数据 TB8=P; SBUF=ACC; if(i==16) //发送完毕,