第八章串行信技术

  • 格式:doc
  • 大小:91.00 KB
  • 文档页数:12

第八章串行通信技术§8。

1串行通信的概述及RS-232C总线教学方法:讲授法教学目的:1、了解单片机串行通信的基本方法。

2、掌握单片机串行通信的相关概念。

3、了解RS-232C总线。

4、了解RS-232C总线电平及计算机信号电平教学重点:串行通信的方式教学难点:波特率的理解和信号电平的理解教学过程:组织教学:授课课时:(2课时)扳书课题:§8。

1串行通信的概述及RS-232C总线引入新课:一、串行通信概述1、什么叫串行通信?并行、串行举生活中的例子(排横队行走,排纵队行走)说明;引出并行通信,串行通信的概念。

串行通信就是使计算机中的数据一位一位地按先后顺序在一根传输线上传送。

通常有两种基本的通信方式:异步通信和同步通信。

2、异步通信和同步通信回顾在数字电路中所学的移位寄存器工作原理。

可提问学生。

异步通信:异步——发送时钟不一定等于接收时钟。

如下图:数据传送是帧的形式传送,每一帧数据包括起始位、数据位、奇偶校验位、停止位四部分。

其中数据位可以是5位、6位、7位、8位。

在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。

用这种格式表示字符,则字符可以一个接一个地传送。

特点:不同速度的外设可相互传送,但传送数据比实际数据位数多(加起始位、停止位等),占用CPU时间,传送速度较慢。

同步通信同步——发送设备时钟等于接收设备时钟。

在同步通信中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。

由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。

发送方和接收方时钟完全一样,只要双方同时准备好(同步),可直接传送数据,无需附加多余的控制位,传送数据效率高,但设备要求高。

二、串行通信相关概念1、波特率即串行通信速率。

单位为 b/s、bps如:帧结构为1个起始位、8个数据位、1个停止位,每秒传送240帧(即240个字符),则波特率为(1+8+1)×240 = 2400 b/s = 2400波特。

2、接收/发送时钟接收/发送时钟用于控制通信设置接收/发送数据的速度,如传送1位数据需8个时钟周期,时钟周期越短(时钟频率越高)则传送速度越快。

因此波特率与发送/接收时钟频率的关系可表示为波特率=接收/发送时钟频率/n式中n称之为波特率因子。

3、通信方式串行通信根据通信时数据的传送方向可分为单工、半双工和全双工三种通信方式。

①单工方式A → B只能由A传送至B②半双工方式A ←→ BA可以传送至B,B也可传送至A,但两者不能同时进行。

③全双工方式A ←→ BA可以传送至B,B也可传送至A,但两者可以同时进行。

4、数据的校验方法奇校验:包括校验位的1的个数为奇数个。

偶校验:包括校验位的1的个数为偶数个。

校验和:所有传送数据的异或结果。

循环冗余码校验:5、信号调制与解调调制:把数字信号转换成模拟信号发送出去。

解调:把接收到的模拟信号转换成数字信号。

6、串行通信的实现通用异步接收器/发送器(UART)通用同步接收器/发送器(USRT)通用同步异步接收器/发送器(USART)三、RS232C总线1、RS232电平和TTL电平常用串行通信接口:RS232C、RS485、RS423这些接口主要是信号电平不同,规定的逻辑状态不同。

如RS232C规定:发送方“0”逻辑为+5V至+15V “1”逻辑为-5V至-15V接收方“0”逻辑为+3V至+15V “1”逻辑为-3V至-15V称之为RS232电平。

顺便介绍TTL电平:“0”逻辑为0V至0.4V “1”逻辑为2.4V至5V因单片机的串口输出逻辑为TTL电平,计算机的串口逻辑为RS232电平,因此两者进行通信时必须进行电平转换。

常用转换芯片有:MC1448、MC1449、MAX232A等。

2、标准RS232接口RS232总线由22根信号线组成,见表6-1,采用DB25连接器。

3、连接方式小结:(略)思考题:1、什么叫串行通信?2、串行通信有哪两种基本通信方式?3、单工、半双工、全双工的意义是什么?4、什么是波特率?5、RS232通信电平如何,TTL电平如何?6、单片机与微机进行通信为什么要进行电平转换?§8.2 串行口结构、工作方式、波特率设置教学方法:讲授法教学目的:1、了解89C51单片机串行口结构。

2、掌握串行口的四种工作方式。

3、掌握串行通信的波特率设置。

4、掌握串行口通信的初始化程序设计教学重点:串行口的四种工作方式、通信波特率设置教学难点:通信波特率设置教学过程:组织教学:授课课时:(2课时)扳书课题:§8.2 串行口结构、工作方式、波特率设置引入新课:一、89C51串行口的结构1、接口特点:全双工通用异步接收/发送器UART(Universal Asynchronous Receiver/Transmitter),波特率可编程设置,可中断2、组成:串行口控制寄存器、发送控制、接收控制、波特率输入管理、输入移位寄存器和发送/接收缓冲器SBUF等。

3、串行口控制寄存器地址98HSM0 SM1确定工作方式0 0 方式00 1 方式11 0 方式21 1 方式3SM2:多机通信控制REN:接收允许TB8:发送的第9位数据RB8:接收的第9位数据TI:发送完的标志当发送完数据,硬件使TI置1,软件清0(CLR TI)RI:接收完的标志当接收完数据,硬件使RI置1,软件清0。

4、数据缓冲器SBUF两个独立寄存器,但地址相同,都为99H,发送的数据需放发送缓冲器SBUF,被接收的数据放接收缓冲器SBUF。

二、串行口的四种工作方式1、方式0:同步移位寄存器方式,8位数据移位输入/输出,RXD固定传输数据,TXD 产生同步移位脉冲。

方式0结构见图6-14所示,发送/接收数据无起位、停止位,要求SM2 = 0方式0发送过程:串行数据从RXD引脚输出,TXD引脚输出移位脉冲。

CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。

发送完一帧数据后,发送中断标志TI由硬件置位。

方式0接收过程:当串行口以方式0接收时,先置位允许接收控制位REN。

此时,RXD 为串行数据输入端,TXD仍为同步脉冲移位输出端。

当(RI)=0和(REN)=1同时满足时,开始接收。

当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。

方式0的波特率:固定为fosc / 122、方式1:8位UART,帧数据10位方式1发送过程:当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。

串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。

方式1接收过程:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。

只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。

所以在方式1接收时,应先用软件清零RI和SM2标志。

方式1的波特率:(2SMOD×T1的溢出率)/ 32发送完置位TI、接收完数据置位RI。

置位RI是有条件的。

即:REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位为1。

此时,数据装载SBUF,停止位进入RB8,RI置1。

3、方式2:9位UART,多用于多机通信方式2发送过程:发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。

它可作为多机通信中地址/数据信息的标志位,也可以作为数据的奇偶校验位。

当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。

发送一帧信息后,置位中断标志TI。

方式2接收过程:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。

在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。

且不置位RI。

再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。

发送完数据置位TI。

接收到有效数据完毕,置位RI。

有效数据条件:REN = 1,RI = 0 且SM2 = 0或接收到第9位数据为1。

此时,数据装载SBUF,第9位数据(TB8)→ RB8,RI置1。

方式2的波特率:2SMOD / 64 × fosc4、方式3:9位UART,多用于多机通信除波特率外,其余与方式2相同。

方式3的波特率:2SMOD / 32 ×(T1溢出率)三、串行口波特率的设置与串行口波特率相关的寄存器还有PCON,PCON的最高位是SMOD可以控制波特率加倍。

波特率一般采用定时/计数器T1的溢出率产生,因此设置波特率需设置T1的溢出率和SMOD。

方式0和方式2波特率:固定方式1和方式3波特率:可变,波特率 = 2SMOD / 32 ×(T1的溢出率)T1溢出率 = 单位时间内溢出次数 = 1 /(T1的定时时间)而T1的定时时间t就是T1溢出一次所用的时间。

此情况下,一般设T1工作在模式2(8位自动重装初值)。

N = 28- t / T, t = (28-N)T =(28-N)×12 / fosc所以,T1溢出率 = 1/t = fosc / 12(28-N),故,波特率 = 2SMOD / 32 × fosc / 12(256-N)。

若已知波特率,则可求出T1的计数初值:y = 256-2SMOD×fosc / (波特率×32×12)例、若fosc = 6MHz,波特率为2400波特,设SMOD = 1,则定时/计数器T1的计数初值为多少?并进行初始化编程。

解:y = 256-2SMOD×fosc / (2400×32×12)= 242.98≈243 = F3H同理,fosc = 11.0592MHz,波特率为2400,设SMOD = 0,则y = F4H初始化编程:MOV TMOD,#20HMOV PCON,#80HMOV TH1,#0F3HMOV TL1,#0F3HSETB TR1MOV SCON,#50H当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。

下表列出了定时器T1工作于方式2常用波特率及初值。