1、第六模块 单片机串行通信技术项目实训,项目13 串并转换控制 项目14 单片机控制单片机,项目13 串并转换控制,任务6-13 使用串行口方式0串并转换控制流水灯,任务6-13 使用串行口方式0串并转换控制流水灯,一、MCS-51单片机的串行通信,MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们共用同一个地址99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平
2、转换器,就可以方便地构成标准的RS-232接口。,1 基本概念(1)数据通信的传输方式常用于数据通信的传输方式有单工、半双工、全双工和多工方式。单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。全双工方式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。多工方式:以上三种传输方式都是用同一线路传输一种频率信号,为了充分地利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上资源
3、共享功能,称之为多工传输方式。,任务6-13 使用串行口方式0串并转换控制流水灯,一、MCS-51单片机的串行通信,(2)串行数据通信两种形式异步通信在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的。在异步通信方式中,数据是一帧一帧传送的。一帧数据传送完毕后可以接着传送下一帧数据,也可以等待,等待期间为高电平。用一帧来表示一个字符,其格式如下:一个起始位“0”(低电平),紧接着是8个数据位,规定低位在前,高位在后。接下来是奇偶校验位(可以省略),最后是停止位“1”(高电平)。下图所示是异步通信方式及数据格式示意图。,任务6-13 使用串行口方式0串并转换控制流水灯,一、MCS
4、-51单片机的串行通信,同步通信同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数据量较大的场合,速度就慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。下图所示是同步通信方式及数据格式示意图。,同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。,任务6-13 使用串行口方式0串并转换控制流水灯,一、MCS-51单片机的串行通信,(3)串行数据通信的传输速率串行数据传输速率有
5、两个概念,即每秒传送的位数bps(Bit per second)和每秒符号数波特率(Band rate),在具有调制解调器的通信中,波特率与调制速率有关。,2MCS-51的串行口和控制寄存器(1)串行口数据收发缓冲寄存器SBUFMCS-51单片机串行口寄存器结构如下图所示。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。MCS-51的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。而从接收缓冲器读出数据即可接收数据。,从图中可看出,接收缓冲器前还加上一级输入移位寄存器,MCS-51这种
6、结构目的在于接收数据时避免发生数据帧重叠现象,以免出错,部分文献称这种结构为双缓冲器结构。而发送数据时就不需要这样设置,因为发送时,CPU是主动的,不可能出现这种现象。,任务6-13 使用串行口方式0串并转换控制流水灯,一、MCS-51单片机的串行通信,(2)串行通信控制寄存器SCONSCON控制寄存器是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:,各控制位功能如下:SM0、SM1:串行口工作方式控制位可通过设置SM0、SM1来选择串行口4种不同的工作方式。右表列出了这4种工作方式的选择方法与功能比较。,任务6-13 使用串行口方式0串并转换控制流水灯,一
7、、MCS-51单片机的串行通信,SM2:多机通信控制位多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。SM2=1时,允许多机通信;当SM2=0时,禁止多机通信。串行口工作于方式0时,SM2必须为0。REN:数据接收控制位REN用于控制数据接收的允许和禁止,REN=1时,允许串行口接收数据,REN=0时,禁止串行口接收数据。TB8:发送数据的第9位在方式2和方式3中,TB8是要发送的第9位数据位,通常用作数据的校验位。在多机通信中同样亦要传输这一位,用作地址帧或数据帧的标志位:TB8=0为数据帧,TB8=1时为地址帧。RB8:接收数据的第9位在方式2和方式3中,RB8存放接收到的
8、第9位数据。在方式1中,若SM2=0,则RB8是接收到的停止位。,任务6-13 使用串行口方式0串并转换控制流水灯,一、MCS-51单片机的串行通信,TI:发送中断标志位串行口在工作方式0时,串行发送完第8位数据后,TI由硬件置“1”,向CPU发送中断请求,在CPU响应中断后,必须用软件清0。其它方式下,TI在停止位开始发送前自动置“1”,向CPU发送中断请求,在CPU响应中断后,也必须用软件清0。RI:接收中断标志位串行口在工作方式0时,串行接收完第8位数据后,RI由硬件置“1”,向CPU发送中断请求,在CPU响应中断后,必须用软件清0。其它方式下,RI在接收到停止位时自动置“1”,向CPU
9、发送中断请求,在CPU响应中断取走数据后,必须用软件清0,以准备开始接收下一帧数据。在系统复位时,SCON的所有位均被清0。,任务6-13 使用串行口方式0串并转换控制流水灯,一、MCS-51单片机的串行通信,(3)电源控制寄存器PCONPCON是为单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:,在CHMOS型单片机中,除SMOD位外,其他位均为虚设的。SMOD是串行口波特率设置位,在方式1、2、3时起作用。若SMOD=0,波特率不变;若SMOD=1,波特率加倍。当系统复位时, SMOD=0。,任务6-13 使用串行口方式0串并转换控制流水灯,一、 74LS164简介,
10、74LS164是8位移位寄存器,它能实现数据传输从串行输入到并行输出的方式转化,在单片机应用技术中常用来实现对I/O口的扩展。下图所示为74LS164的引脚分布与IEC逻辑符号:,任务6-13 使用串行口方式0串并转换控制流水灯,二、 74LS164简介,174LS164的引脚说明 74LS164的引脚说明如右表所示:,274LS164使用说明清除端 为低电平时将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平;清除端 为高电平时将允许数据的传输。串行数据输入端DSA、DSB同时具有控制数据输入的功能。数据通过两个输入端DSA 或 DSB之一串行输入:当DSA、DSB中任
11、意一端为低电平时,就会禁止数据的输入,在时钟端CP脉冲上升沿作用下 Q0 为低电平;当 DSA、DSB有一个为高电平用作使能端时,则另一个就允许输入数据,并在CP脉冲上升沿作用下决定 Q0 的状态。在每次CP脉冲上升沿,数据右移一位,输入到 Q0。Q0 实际上是两个数据输入端DSA和DSB的逻辑与,两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。,二、硬件电路设计,三、软件程序设计,任务6-13 使用串行口方式0串并转换控制流水灯,项目14 单片机控制单片机,任务6-14-1 使用串口方式1进行单工通信 任务6-14-2 使用串口方式3进行单工通信,任务6-14-1 使用串
12、口方式1进行单工通信,一、MCS-51单片机串行口工作方式(一),MCS-51单片机串行口有4种工作方式,即方式0、方式1、方式2和方式3。,一、方式01数据发送当SCON中的SM0SM1=00时,串行口工作在方式0。若要发送数据,通常需外接8位串/并转换移位寄存器74LS164,具体连接电路如右图所示。其中RXD端用来输出串行数据,TXD端用来输出移位脉冲,P1.7引脚用来对74LS164进行清0。发送数据前,P1.7引脚先发出一个清0信号(低电平)到74LS164的第9引脚,对其进行清0,让D0D7全部为0。然后让单片机执行写SBUF命令,只要将数据写入SBUF,单片机即自动开始数据发送,
13、从RXD(P3.0)引脚送出8位数据。与此同时,单片机TXD端输出移位脉冲到74LS164的第8引脚(时钟引脚),使74LS164按照先低位后高位的顺序从RXD端接收8位数据。数据发送完毕,74LS164的D0D7端即输出8位数据。数据发送完毕后,SCON的发送中断标志位TI自动置“1”。为继续发送数据,需用软件将TI清0。,任务6-14-1 使用串口方式1进行单工通信,一、MCS-51单片机串行口工作方式(一),一、方式02数据接收要接收数据,需在单片机外部连接8位并/串转换移位寄存器74LS165,连接电路如右图所示。图中,RXD端用来接收输入的串行数据,TXD端用来输出移位脉冲,P3.7
14、引脚用来对74LS165的数据进行锁存。,首先从P3.7引脚发出一个低电平信号到74LS165的引脚1,锁存由D7D0端输入的8位数据,然后由单片机执行读SBUF指令开始接收数据。同时TXD端送移位脉冲到74LS165的第2引脚(时钟引脚),使数据逐位从RXD端送入单片机。在串行口接收到一帧数据后,SCON的接收中断标志位RI自动置“1”。为继续接收数据,需用软件将RI清0。在方式0中,串行通信口发送和接收数据的波特率都是 /12。,任务6-14-1 使用串口方式1进行单工通信,一、MCS-51单片机串行口工作方式(一),二、方式1当SCON中的SM0SM1=01时,串行通信口工作于方式1。此
15、时,可发送或接收的一帧信息共10位,1位起始位(低电平“0”),8位数据位(D0D7),1位停止位(高电平“1”)。1数据发送发送数据时,用指令将数据写入发送缓冲SBUF中,发送控制器在移位脉冲(由T1产生的信号经16或32分频得到)的控制下,先从TXD引脚输出一个起始位,然后再逐位将8位数据从TXD端送出。当最后一位数据发送完毕,发送控制器马上将SCON中的TI位置“1”,向CPU发出中断请求,同时从TXD端输出停止位(高电平“1”)。为继续发送数据,需用软件将TI清0。,2数据接收在REN=1时,方式1允许接收。串行口开始采样RXD引脚,当采样到“1”至“0”的负跳变信号时,确认是开始“0
16、”,就开始启动接收,将输入的8位数据逐位移入内部的输入移位寄存器。如果接收不到起始位,则重新检测RXD引脚上是否有负跳变。当一帧数据接收完毕后,必须同时满足以下2个条件,这帧数据接收才真正有效。(1)RI=0,即无中断请求;或者在上一帧数据接收完成时,RI=1发出的中断请求已经被响应,SBUF中的数据已被取走,SBUF已空。(2)SM2=0。若这2个条件不能同时满足,接收到的数据不会装入SBUF,该帧数据将丢失。,二、硬件电路设计,三、软件程序设计,任务6-14-1 使用串口方式1进行单工通信,任务6-14-2 使用串口方式3进行单工通信,一、MCS-51单片机串行口工作方式(二),三、方式2
17、当SCON中的SM0SM1=10时,串行口工作在方式2。在此方式下每帧数据均为11位,即1位起始位(低电平“0”),8位数据位,1位可编程的第9位和1位停止位(高电平“1”)。其中第9位数据(TB8)可作奇偶校验位,也可作多机通信的数据、地址标志位。1数据发送数据发送前,先要根据通信协议由软件设置TB8(第9位数据)。然后将要发送的数据写入SBUF,即可启动发送过程。串行口能自动将TB8取走,并装入到第9位数据的位置,再逐一发送出去。发送一帧数据后,将SCON中的TI位置“1”,向CPU发出中断请求。为继续发送数据,需用软件将TI清0。2数据接收在方式2中,需要先设置SCON中的REN=1,串
18、行通信口才允许接收数据。然后当RXD端检测到有负跳变时,即说明外部设备发来了数据的起始位,开始接收此帧数据的有效字节。当一帧数据接收完毕以后,必须同时满足以下两个条件,这帧数据的接收才真正有效。(1)RI=0,意味着接收缓冲器SBUF为空。(2)SM2=0。当上述两个条件满足时,接收到的数据送入SBUF,第9位数据送入RB8,并由硬件自动对RI置1。若不满足这两个条件,接收的信息将被丢弃。,任务6-14-2 使用串口方式3进行单工通信,一、MCS-51单片机串行口工作方式(二),四、方式3当SCON中的SM0SM1=11时,串行口工作在方式3。方式3与方式2一样,传送的一帧数据都是11位,工作原理也相同。两者的区别仅在于波特率不同。,五、波特率设置在串行通信中,为了保证数据发送和接收的成功,要求发送方发送数据的速率和接收方接收数据的速率必须相同,这就需要将双方的波特率设置为相同。,常用波特率表中列出了常用波特率、晶振频率和定时器计数初值之间的对应关系,应用时查表即可。晶振频率选11.0592MHz时极易获得标准波特率。,二、硬件电路设计,三、软件程序设计,任务6-14-2 使用串口方式3进行单工通信,