




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 串行通信 6.1 串行通信基础知识 6.2 MCS-51系列单片机的串行接口 6.3 51单片机串行口应用 串行通信基本概念 计算机与外界的信息交换称为通信。通信的基本方式有并行通信和串行通信两种。 并行通信是将构成一组数据的各位同时进行传送,并排传输,如 8 位数据或 16 位数据并行传送。其特点是传送速度快,但当距离较远、位数较多时,会导致通信线路复杂且成本高。 串行通信是按位进行顺序传送,其特点是通信线路简单,只需一对传输线就可以实现通信,从而降低成本,特别适合于远距离通信。缺点是传送速度慢。6.1 串行通信基础知识 两种基本通信方式 6.1 串行通信基础知识 串行数据传输方式
2、按照信号传输的方向和同时性,一般把传送方式分为单工方式、半双工方式和全双工方式 3 种。如下图所示:其中:A 端为发送站,B 端为接收站。6.1 串行通信基础知识 串行数据传输方式 (1)单工方式:通信双方一方固定为发送方,另一方固定为接收方,数据只能是单向传输; (2)半双工方式:通信双方只使用一根数据线,每一方都有发送器和接收器,可以在两个方向上传送,但通信双方不能同时接收或发送数据,只能交替进行; (3)全双工方式:通信双方使用两根数据线,分别用于不同方向的数据传输,通信双方能够同时收发数据。6.1 串行通信基础知识 串行异步传送方式 异步传送的特点是数据在线路上的传送不连续。传送时数据
3、以一个字符为单位进行传送。它用一个起始位表示字符的开始,用停止位表示字符的结束。 一个字符又称为一帧信息,每帧数据由起始位、数据位、奇偶校验位和停止位 4 部分组成。起始位为0,占1位;数据位可以是5位、6位、7位或8位,传送时低位在先、高位在后;奇偶校验位占 1 位(也可不要);最后是停止位,用信号 1 来表示一帧的结束,可以是 1 位、1 位半或 2 位。 字符间用空闲位填充(高电平),用于等待传送。6.1 串行通信基础知识 串行异步传送的字符格式6.1 串行通信基础知识 串行异步传送方式 串行异步传送的通信双方必须事先进行约定: 字符格式。双方要事先约定字符的编码形式、奇偶校验形式及起始
4、位和停止位的规定。 波特率(Baud rate)。是指数据的传送速率,即每秒钟传送的二进制位数,单位为 b/s。它与字符的传送速率(字符/秒)之间有以下关系: 波特率单个字符的二进制编码位数字符/秒要求通信双方(接收与发送方)的波特率必须一致。 通常51单片机串行异步通信传送速率为509600波特。6.1 串行通信基础知识 串行异步传送方式 波特率的另一种定义:数据信号对载波的调制速率称为波特率,它用单位时间内载波调制状态改变的次数来表示,单位为波特(Bd)。 如:数据传送速率为120字符/秒,而每一个字符为10个数据位,则传输速率为:12010 = 1200bit/s,即波特率为1200,每
5、一位数据的传送时间为波特率的倒数: T 1 波特率 = 1 1200 = 0.833 ms 常用的波特率取值有:600、1200、1800、2400、4800、7200、9600、19200等。6.1 串行通信基础知识 串行同步传送方式 同步传送是以数据块为单位的传输方式,每一个数据块开头处要用同步字符 SYN 加以指示,使发送方和接收方取得同步。数据块的各字符之间取消了起始位和停止位(没有间隙),从而使通信速度得以提高,如下图所示。 如果发送的数据块之间有间隔时间,则发送同步字符填充。6.1 串行通信基础知识 51单片机的串行口 功能与结构 51单片机内部有一个功能很强的全双工串行口,可同时
6、接收和发送数据。接收、发送数据均可工作于查询方式和中断方式,使用十分灵活,能方便地与其他计算机或串行传送信息的外部设备实现双机、多机通信。 51单片机串行口有四种工作方式。方式0 不用于串行通信,用于串行口扩展并行接口;方式1、方式2、方式3为串行异步通信方式。6.2 MCS-51系列单片机的串行接口 51单片机的串行口 串行口工作方式 方式 1 是 8 位异步通信接口,用于双机通信;方式 2 和方式 3 是 9 位异步通信接口,主要用于多机通信。 6.2 MCS-51系列单片机的串行接口SM0SM1工作方式功能波特率000移位寄存器方式,用于并行I/O扩展(使用串口扩展并行口)fosc/12
7、0118 位通用异步接收器/发送器可变1029 位通用异步接收器/发送器fosc/32或fosc/641139 位通用异步接收器/发送器可变 51单片机的串行口 功能与结构 串行口主要由接收、发送数据缓冲器(SBUF)、发送控制器、输出控制门、接收控制器、输入移位控制器等组成。 发送数据缓冲器只能写入,不能读出;接收数据缓冲器只能读出,不能写入,故两个寄存器可共用一个地址符号 SBUF,共用一个地址 99 H。 串行口还有两个特殊功能寄存器 SCON 和 PCON ,分别用来控制串行口的工作方式和波特率。 波特率发生器可使用T1(或T2)来构成。6.2 MCS-51系列单片机的串行接口 51单
8、片机的串行口 串行口控制寄存器 SCON SM0、SM1:由软件置位或清零,用于选择串行口的四种工作方式; SM2:多机通信控制位; REN:允许串行接收控制位; TB8、RB8:发送或接收数据中的第 9 位; TI、RI:发送中断标志位和接收中断标志位。6.2 MCS-51系列单片机的串行接口 51单片机的串行口 串行口控制寄存器 SCON SM2 为多机通信控制位。在方式 2 和方式 3 中,如果SM2 = 1,则接收到的第9位数据(RB8)为 0 时不启动接收中断标志 RI(即RI = 0),并且将接收到的前 8 位数据丢弃;RB8为1 时,才将接收到的前 8 位数据送入SBUF,并置位
9、 RI ,产生中断请求。当SM2 = 0时,则不论第 9 位数据为 0 或 1,都将前 8 位数据装入SBUF中,并产生中断请求。在方式 0 时,SM2 必须为 0。6.2 MCS-51系列单片机的串行接口 51单片机的串行口 串行口控制寄存器 SCON REN 为允许串行接收控制位。若 REN = 0,则禁止接收;REN = 1,则允许接收,该位由软件置位或复位。 TB8 为发送数据的 D8 位。在方式 2 和方式 3 时,TB8 就是所要发送数据的第 9 位。在多机通信中,以 TB8 位的状态表示主机发送的是地址还是数据: TB8 = 0为数据、TB8 = 1为地址 TB8 位也可用作数据
10、的奇偶校验位,该位由软件置位或者复位。6.2 MCS-51系列单片机的串行接口 51单片机的串行口 串行口控制寄存器 SCON RB8 为接收数据的 D8 位。在方式 2 和方式 3 时,接收到的第 9 位数据可作为奇偶校验位或地址帧或数据帧的标志。方式 1 时,若SM2 = 0,则 RB8 是接收到的停止位。在方式 0 时,不使用 RB8 位。 TI 为发送中断标志位。在方式 0 时,当发送数据第 8 位结束后,或在其它方式发送停止位后,由内部硬件使 TI 置位,向CPU请求中断。CPU在响应中断后,必须用软件清零。 此外,TI 也可供查询使用。6.2 MCS-51系列单片机的串行接口 51
11、单片机的串行口 串行口控制寄存器 SCON RI 为接收中断标志位。在方式 0 时,当接收数据的第8 位结束后,或在其它方式下接收到停止位的中间位置时由内部硬件使 RI 置位,向CPU请求中断。同样,在CPU响应中断后,也必须用软件清零。 RI 也可供查询方式使用。 SCON 的所有位都可以按位操作“清零”或“置1”。6.2 MCS-51系列单片机的串行接口 51单片机的串行口 电源控制寄存器 PCON PCON 的最高位 SMOD 是串行口波特率系数控制位。当SMOD = 1时,波特率增大一倍。 其余各位与串行口工作无关。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 同
12、步移位寄存器方式 串行口工作方式 0 是移位寄存器方式,下页是其结构示意图。数据从 RxD 引脚上接收或发送;一帧信息由 8 位数据组成,低位在前,高位在后(如下图);波特率固定,为 fosc/12;同步脉冲从 TxD 引脚输出。 移位寄存器方式用于51单片机通过串行口扩展并行I/O口。6.2 MCS-51系列单片机的串行接口6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 发送过程 CPU执行一条写SBUF的指令,如“ MOV SBUF,A ”,就启动了发送过程。指令执行期间送来的写信号打开三态门1,将经内部总线送来的 8 位并行数据写入发送数据缓冲器SBUF。写信号的同时
13、启动发送控制器。此后,CPU与串行口并行工作。经过一个机器周期后,发送控制端 SEND 有效(高电平),打开门5 和门6 ,允许 RXD 引脚发送数据,TXD 引脚输出同步移位脉冲。 在时钟信号 S6 触发产生的内部移位脉冲作用下,发送数据缓冲器中的数据逐位串行输出。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 发送过程 因为是每一个机器周期从 RXD 上发送一位数据,所以波特率为 fosc/12。S6 同时形成同步移位脉冲,一个机器周期从TXD上输出一个脉冲。8 位数据(一帧)发送完毕后,SEND恢复低电平状态,停止发送数据。且发送控制器硬件置位发送中断标志 TI =
14、1,向CPU申请中断。如要再次发送数据,必须用软件将 TI 标志清零,并再次执行写 SBUF 指令。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 发送过程6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 接收过程 在 RI = 0 的条件下,将 REN(SCON.4)置 1 就启动一次接收过程。此时 RXD 为串行数据接收端,TXD 依然输出同步移位脉冲。 REN 置 1 启动了接收控制器。经过一个机器周期,接收控制端 RECV 有效(高电平),打开门 6,允许 TXD 输出同步移位脉冲。该脉冲控制外接芯片逐位输入数据,波特率为fosc/12。在内部移位
15、脉冲作用下,RXD 上的串行数据逐位移入移位寄存器。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 接收过程 当8位数据(一帧)全部移入移位寄存器后,接收控制器使RECV失效,停止输出移位脉冲,并发出“装载SBUF”信号,打开三态门2,将8位数据并行送入接收数据缓冲器SBUF中保存。与此同时,接收控制器硬件置接收中断标志 RI = 1,向CPU申请中断。CPU响应中断后,用软件使 RI = 0,使移位寄存器开始接收下一帧信息,然后通过读接收缓冲器的指令,例如“ MOV A,SBUF ”,读取SBUF中的数据。在执行这条指令时,CPU发出的“ 读SBUF ”信号打开三态门3,
16、数据经内部总线进入CPU。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 接收过程6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 发送示例 利用74LS164扩展并行输出口,并实现发光二极管循环控制功能。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 发送示例 74LS164:扩展并行输出口,并实现发光二极管循环控制功能。 (1)CLEAR 端若为低电平,输出端QAQG都为0; (2)CLEAR 端若为高电平,且CLOCK端出现上升沿脉冲时,则输出端锁存输入端的电平。6.2 MCS-51系列单片机的串行接口引脚功能描述A、B串行数据输
17、入引脚QAQG并行数据输出引脚CLOCK移位脉冲输入端CLEAR移位寄存器清零端 串行口的工作方式 方式0 发送示例(C51编程) #include sbit MR = P10; void delay( ) / 延时子程序 unsigned int i; for( i=0 ; i20000 ; i+ ) ; void main( ) / 主程序 unsigned char index, LED; /定义LED指针和显示字模 SCON = 0; /设置串行模块工作在方式0 MR = 1; / CLEAR端1,允许输入数据 6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式0 发送示
18、例(C51编程) while( 1 ) LED = 0 xfe; / (1:灭;0:亮) for( index=0 ; index 8 ; index+) SBUF = LED; / 控制L0灯点亮 do while( !TI ); / TI查询判别数据是否输出结束 LED = ( LED1 ) |1 ); /左移1位,末位置1( 1:灭;0:亮) if ( LED = 0 xff ) LED = 0 xfe; /若已循环一遍,准备重新开始 delay( ); 6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式1 8位UART 方式 1 为 8 位异步通信接口方式,其结构示意图如
19、下页所示。RxD 为接收端,TxD 为发送端,一帧信息由 10 位组成,起始位、数据位(8位)和停止位。 方式 1 的波特率可变,由定时器/计数器 T1 的溢出率以及SMOD 位的状态决定,且发送波特率与接收波特率可以不同。6.2 MCS-51系列单片机的串行接口6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式1 发送过程 CPU 执行一条“写SBUF”的指令便启动了串行口发送过程,数据从 TxD 输出。在指令执行期间,CPU送来“写SBUF”信号,将并行数据送入SBUF,并启动发送控制器。经一个机器周期,发送控制端的 SEND、DATA 相继有效,通过输出控制门从 TxD 上
20、逐位输出一帧信息。一帧信息发送完毕后,SEND、DATA 端失效,发送控制器硬件置发送中断标志 TI = 1,向CPU申请中断。 发送指令:MOV SBUF,A6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式1 发送过程6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式1 接收过程 当允许接收控制位 REN 被置 1 时,接收器开始工作,跳变检测器以所选波特率的 16倍 速率采样 RxD 引脚。当采样到从 1 到 0 的负跳变时,启动接收控制器接收数据。由于发送、接收双方各自使用自己的时钟,两者的频率总有少许差异。为了避免这种影响,控制器将1位的传送时间分成 16
21、 等份,位检测器在7、8、9三个状态,也就是在信号中央采样 RxD 三次。而且,三次采样中至少两次相同的值被确认为数据,这是为了减少干扰的影响。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式1 接收过程 如果接收到的起始位的值不是 0 ,则起始位无效,复位接收电路。如果起始位为 0,则开始接收本帧其它各位数据。 控制器发出内部移位脉冲,将 RxD 上的数据逐位移入移位寄存器,当 8 位数据及停止位全部移入后,将根据以下状态,进行响应操作。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式1 接收过程 如果RI = 0、SM2 = 0,则接收控制器发出“装载SBU
22、F”信号,将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI = 1,向CPU申请中断。 如果RI = 0、SM2 = 1,那么只有停止位为 1 才发生上述操作。 RI = 0、SM2 = 1且停止位为 0,所接收的数据不装入SBUF,数据将会丢失。 如果RI = 1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式1 接收过程 无论出现哪一种情况,跳变检测器将继续采样 RxD 引脚的负跳变,以便接收下一帧信息。 接收装置采用移位寄存器和 SBUF 双缓冲结构,以避免在接收后一帧数据之前,CPU 尚未及时响应
23、中断而将前一帧数据取走所造成的数据重叠问题。 采用双缓冲器结构,可使前、后两帧数据进入SBUF 的时间间隔最少有10个机器周期。所以,在后一帧数据送入SBUF之前,CPU应该有足够的时间将前一帧数据取走。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式1 接收过程 6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式 2 与方式 3 9位UART 方式 2 与方式 3 都是9位异步通信接口,其结构示意图与方式1相同。发送或接收的一帧信息由11位组成,其中 1 位起始位、9 位数据位和 1 位停止位。 方式 2 与方式 3 仅波特率不同,方式 2 的波特率为 fosc
24、/32,SMOD=1,或 fosc/64,SMOD=0而方式 3 的波特率由定时器/计数器T1及SMOD决定。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式 2 与方式 3 在方式2、方式 3 时,发送、接收数据的过程与方式1 基本相同,所不同的仅在于对第9位数据TB8、RB8的处理上。发送时,第 9 位数据由SCON中的 TB8 位提供;接收数据时,当 9位数据全部移入移位寄存器之后,将前 8 位数据装入SBUF,而将第 9 位数据装入SCON中的RB8位。6.2 MCS-51系列单片机的串行接口 串行口的工作方式 方式 2 与方式 3 发送过程6.2 MCS-51系列单片
25、机的串行接口 串行口的工作方式 方式 2 与方式 3 接收过程6.2 MCS-51系列单片机的串行接口 多机通信 在实际应用中,经常需要多个单片机之间协调工作,即多机通信。利用51单片机串行口可实现多机通信,串行口用于多机通信时必须使用方式 2 或方式 3。由51单片机构成的主从式多机通信系统如下所示:6.2 MCS-51系列单片机的串行接口 多机通信 在主从式多机通信系统中,只允许有一台主机,从机则可以有多台。主机发出的信息只能传送到所有从机或指定的从机;但从机发送的数据只能被主机接收,各从机之间不可以直接通信,各从机之间的通信必须通过主机进行。 在主从式多机系统中,主机发出的信息有两类:一
26、类为地址,用来确定需要和主机通信的从机,特征是串行传送的第 9位数据(TB8)为 1;另一类是数据,特征是串行传送的第9位数据为 0。6.2 MCS-51系列单片机的串行接口 多机通信 对从机来说,要利用 SCON 寄存器中的 SM2 位的控制功能。 在接收时,若 RI = 0,则只要 SM2 = 0,接收总能实现;而若 SM2 = 1,则接收到的第 9 位数据 RB8 必须为1接收才能进行。因此,对于从机来说,在接收地址时,应使SM2 = 1,以便接收到主机发来的地址,从而确定主机是否打算和自己通信,一经确认后,从机应使其SM2 = 0,以便接收 RB8 为 0 时的数据。6.2 MCS-5
27、1系列单片机的串行接口 主从式多机通信过程 (1)所有从机初始化串口工作方式为方式 2 或方式 3 下,并将所有的从机的 SM2 位和 REN 位置 1,以便接收主机发来的地址。 (2)主机发出一帧地址信息,其中包括 8 位需要与之通信的从机地址,第 9 位为 1。 (3)所有从机接收到地址帧后,各自将所接收到的地址与本机地址相比较,对于地址相同的从机,自行将 SM2 位清零以准备接收主机随后发来的所有数据信息;对于地址不符合的从机,则仍保持 SM2 = 1 的状态,这样对主机随后发来的数据信息(TB8 = 0 )不予理睬,直至发送新的地址帧。6.2 MCS-51系列单片机的串行接口 主从式多
28、机通信过程 (4)主机给已被寻址的从机发送控制指令和数据(数据帧的第9位 TB8 为 0)。 (5)当从机 SM2 = 0 时,若接收到的第 9 位数据 RB8 为1(为地址信息),则应再次进行地址比较。若地址不一致,应将 SM2 再次置为 1 。6.2 MCS-51系列单片机的串行接口 串口波特率发生器的设置 串行口的 4 种工作方式对应着三种波特率。 方式 0:波特率固定为 fosc/12; 方式2:波特率由振荡频率 fosc 和SMOD(PCON.7)所决定。其对应公式为 波特率 = 2SMODfosc / 64 当SMOD = 0时,波特率为 fosc/64 ;当SMOD = 1时,波
29、特率为 fosc/32 。 6.3 串行口应用 串口波特率发生器的设置 方式 1 和方式 3 :波特率由定时器/计数器 T1 的溢出率和 SMOD 决定,即: 波特率 = 2SMODT1的溢出率 / 32定时器/计数器T1的溢出率计算: 溢出率 = 1/溢出时间 = 1/( 机器周期T1计数值 ) = 1/( 12 / foscT1计数值 ) = ( fosc/12 ) / T1计数值6.3 串行口应用 串口波特率发生器的设置 方式 1 和方式 3 : 溢出率 = ( fosc/12 ) / T1计数值 = ( fosc/12 ) / ( 2n 计数初值 ) (1)当 T1 工作于方式 0:1
30、3 位计数方式 溢出率 = ( fosc/12 ) / ( 213 计数初值 ) (2)当 T1 工作于方式 1:16 位计数方式 溢出率 = ( fosc/12 ) / ( 216 计数初值 ) (3)当 T1 工作于方式 2:8 位自动重装计数方式 溢出率 = ( fosc/12 ) / ( 28 计数初值 ) 6.3 串行口应用 串口波特率发生器的设置 方式 1 和方式 3 : 波特率 = 2SMOD ( fosc/12 ) / ( 2n 计数初值 ) / 32 实际应用中,通常是先确定波特率,然后求出 T1 的计数初值,即: T1 计数初值 = 2n 2SMOD( fosc/12 )
31、/ 波特率 / 32如:波特率 1200 bps、T1 工作于方式 2、SMOD位为 0、晶振频率 fosc = 11.0592 MHz,则 T1 计数初值为: T1 计数初值 = 256 ( 11.0592106/12 ) / 1200 / 32 = 232 = 0E8H6.3 串行口应用 串口波特率发生器的设置 方式 1 和方式 3 : 实际应用中,常用的波特率和T1 的计数初值关系如下:6.3 串行口应用波特率foscSMOD位工作方式T1计数初值62.5K12MHz12FFH19.2K11.059 2MHz12FDH9.6K11.059 2MHz02FDH4.8K11.059 2MHz
32、02FAH2.4K11.059 2MHz02F4H1.2K11.059 2MHz02E8H 串口/并口转换 用串行口扩展并行输入口 单片机串行口外接一个并入串出 8 位移位寄存器74LS165,实现并口到串口的转换。 外部 8 位并行数据通过移位寄存器 74LS165 进入单片机的串行口,然后再送往 P1 口点亮 LED 灯。执行程序后,可以看到 LED 灯将随拨码开关的状态而变化。 串行口工作于方式 0 下,P3.0 接至74LS165 串行输出端RO,P3.1 接至 74LS165 移位脉冲输入端 CLK, P3.7 接至74LS165 的移位/并行置入控制端 SH/LD 。6.3 串行口
33、应用 串口/并口转换 用串行口扩展并行输入口6.3 串行口应用 串口/并口转换 用串行口扩展并行输入口 程序示例1(中断方式) #include sbit P37 = P37; int main( void ) EA = 1; /开总中断 ES = 1; /开串行中断 SCON = 0 x10; /设置串口工作于方式0,允许接收数据 while( 1 ) P37 = 0; / 并行输入数据置入74LS165(锁存数据) P37 = 1; / 允许串行传入数据 REN = 1; /允许接收 while( REN ); /等待传送完成 6.3 串行口应用 串口/并口转换 用串行口扩展并行输入口 程
34、序示例1(中断方式) void Recive( ) interrupt 4 /串行中断程序 RI = 0; /允许再次中断 REN = 0; /禁止接收数据 P1 = SBUF; /显示数据 6.3 串行口应用 串口/并口转换 用串行口扩展并行输入口 程序示例2(查询方式) #include sbit P37 = P37; void delay( ) / 延时子程序 unsigned int i; for( i=0 ; i 30000 ; i+ ) ; 6.3 串行口应用 串口/并口转换 用串行口扩展并行输入口 程序示例2(查询方式) void main( ) while( 1 ) P37 =
35、 0; / 并行输入数据置入74LS165(锁存数据) P37 = 1; / 允许串行传入数据 SCON = 0 x10; / 设置串口工作于方式0,允许接收数据 while( !RI ); P1 = SBUF; / 显示数据 RI = 0; / 清除接收中断标志 delay( ); / 延时 6.3 串行口应用 串口/并口转换 用串行口扩展并行输出口 单片机串行口外接一个串入并出的移位寄存器74LS164,实现串口到并口的转换。 使用串行口工作方式 0,编程实现单片机发送串行数据到74LS165控制 8 个LED进行流水灯显示。 P2.0 接至74LS164 复位控制端 MR,P3.0 接至
36、74LS164 串行输入端(DSA、DSB),P3.1 接至 74LS165 移位脉冲输入端 CP 。6.3 串行口应用 串口/并口转换 用串行口扩展并行输出口6.3 串行口应用 串口/并口转换 用串行口扩展并行输出口 程序示例 #include unsigned char code Tab = 0 xFE , 0 xFD , 0 xFB , 0 xF7 , 0 xEF , 0 xDF , 0 xBF , 0 x7F; /流水灯码 sbit P20 = P20; void delay( void ) unsigned char m , n; for( m=0 ; m200 ; m+ ) for
37、( n=0 ; n200 ; n+ ); 6.3 串行口应用 串口/并口转换 用串行口扩展并行输出口 程序示例 void Sendchar( unsigned char dat ) /发送字节函数 unsigned char i = 10; P20 = 0; /对74LS164清0 while( i- ); /延时,保证清0完成 P20 = 1; /结束清0 SBUF = dat; /将字节写入发送缓冲器发送 while( !TI ); /等待发送完成 TI = 0; /将TI复位 6.3 串行口应用 串口/并口转换 用串行口扩展并行输出口 程序示例 void main( void ) uns
38、igned char i; SCON = 0 x00; /串行口工作于方式0 while( 1 ) for( i = 0 ; i 8 ; i + ) Sendchar( Tab i ); /发送数据 delay( ); /延时 6.3 串行口应用 单片机之间的通信 例:两台 8051 单片机之间通过串口通信,晶振频率为 11.0592 MHz,通信波特率为 9600,发送端连续发送 09 的数码管段选码值,接收端将串口接收过来的数据显示在数码管上。 两个单片机均工作于方式 1 下,单片机U1 通过串行口TXD 端将数码管段选码发送至单片机U2的RXD 端,U2 根据接收的段选码控制其 P1 口
39、的数码管循环显示 09 数字。 单片机晶振频率为11.0952MHz,选用T/C1作为波特率发生器,工作于方式 2 下,设SMOD = 0,波特率为9600,则 T1 初值 = 256 ( 11.0592106/12 ) / 9600 / 32 = 253 = 0FDH6.3 串行口应用 单片机之间的通信 例:两台 8051 单片机之间通过串口通信。6.3 串行口应用 单片机之间的通信 例:两单片机之间通过串口通信 发送程序(查询方式) # include /包含单片机寄存器的头文件 unsigned char led = 0 xC0 , 0 xF9 , 0 xA4, 0 xB0, 0 x99
40、, 0 x92, 0 x82, 0 xF8,0 x80,0 x90; /共阳极段选码 void Sendchar( unsigned char dat ) /发送数据函数 SBUF = dat; while( !TI ); TI = 0; int main( void ) / 发送方主程序 unsigned char i; int n = 10000; TMOD = 0 x20; /TMOD=0010 0000B,定时器T1工作于方式26.3 串行口应用 单片机之间的通信 例:两单片机之间通过串口通信 发送程序(查询方式) SCON = 0 x40; /SCON=0100 0000B,串口工作
41、方式1 PCON = 0 x00; /TMOD=0 TH1 = 0 xfd; /T1赋初值,波特率9600 TL1 = 0 xfd; TR1 = 1; /启动定时器T1 while( 1 ) for( i=0 ; i10 ; i+ ) Sendchar( led i ); /发送数据 for( n=0 ; n30000 ; n+ ); /延时一段时间再发送 6.3 串行口应用 单片机之间的通信 例:两单片机之间通过串口通信 接收程序(查询方式) # include /包含单片机寄存器的头文件 unsigned char Receivechar( void ) unsigned char dat
42、; while( !RI ); /等待接收完毕 RI = 0; /将RI复位 dat = SBUF; / 保存数据 return dat; 6.3 串行口应用 单片机之间的通信 例:两单片机之间通过串口通信 接收程序(查询方式) void main( void ) / 接收主程序 TMOD = 0 x20; /定时器T1工作于方式2 SCON = 0 x50; / 串口工作方式1,允许接收(REN=1) PCON = 0 x00; / SMOD = 0,波特率不加倍 TH1 = 0 xfd; /T1赋初值,波特率9600 TL1 = 0 xfd; TR1 = 1; /启动定时器T1 while
43、( 1 ) P1 = Receivechar( ); /数据显示 6.3 串行口应用 单片机之间的通信 例:两单片机之间通过串口通信 发送程序(中断方式) #include /包含单片机寄存器的头文件 unsigned char led = 0 xC0 , 0 xF9 , 0 xA4, 0 xB0, 0 x99, 0 x92, 0 x82, 0 xF8,0 x80,0 x90; /共阳极段选码 unsigned char i = 0; void main( ) / 发送方主程序 TMOD = 0 x20; /定时器T1工作于方式2 SCON = 0 x50; / 串口工作方式1,允许接收(RE
44、N=1) PCON = 0 x00; / SMOD = 0,波特率不加倍 TH1 = 0 xfd; /T1赋初值,波特率9600 TL1 = 0 xfd; TR1 = 1; /启动定时器T1 EA = 1; /开中断 ES = 1; /允许串行口中断6.3 串行口应用 单片机之间的通信 例:两单片机之间通过串口通信 发送程序(中断方式) SBUF = led i ; /启动发送过程 delay( ); while( 1 ); void int_Tras( void ) interrupt 4 using 1 / 串行口中断 if( TI ) /处理发送中断 TI = 0; i+; if( i9
45、 ) i = 0; SBUF = led i ; delay( ); 6.3 串行口应用 单片机之间的通信 例:两单片机之间通过串口通信 接收程序(中断方式) #include /包含单片机寄存器的头文件 void main( ) / 接收方主程序 TMOD = 0 x20; /定时器T1工作于方式2 PCON = 0 x00; / SMOD = 0,波特率不加倍 TH1 = 0 xfd; /T1赋初值,波特率9600 TL1 = 0 xfd; SCON = 0 x50; / 串口工作方式1,允许接收(REN=1) TR1 = 1; /启动定时器T1 EA = 1; /开中断 ES = 1;
46、/允许串行口中断 while( 1 ); 6.3 串行口应用 单片机之间的通信 例:两单片机之间通过串口通信 接收程序(中断方式) void int_Res( void ) interrupt 4 using 1 / 串行口中断 if( RI = 0 ) /处理接收中断 RI = 0; P1 = SBUF; else TI = 0; /处理发送中断 6.3 串行口应用 单片机之间的通信 为保证通信数据的正确性,一般需要加上校验位。下面例子中将举一个带校验码的串行通信示例。 例:两台 8051 单片机之间通过串口通信,晶振频率为 11.0592 MHz,通信波特率为 9600,发送端连续发送 09
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度冲孔桩机操作员岗位安全教育与责任书
- 2025版两人合伙创办艺术画廊合作协议范本
- 2025房产销售经理培训与职业发展规划合同
- 地理信息技术在2025年初中地理学业水平考试中的应用模拟试题解析
- 二零二五年住宅租赁合同补充协议书
- 2025年长春市事业单位招聘考试综合类专业能力测试试卷(物流类)
- 2025版智能穿戴设备研发计件工资劳动合同参考范本
- 二零二五年度个性定制装修合同保密条款
- 二零二五年度二手车买卖合同特别关注车辆交易合同格式
- 2025版互联网金融服务保证担保借款合同书
- 科级领导干部任职前法律法规知识考试题库 含答案
- 高初中成绩单中文模板
- 脾破裂手术配合课件
- 消防设施、器材检查维护保养记录
- 品茗施工方案编制软件使用教程
- 【手册】金蝶KIS旗舰版操作手册
- 快开篮式过滤器
- GB/T 2828.3-2008计数抽样检验程序第3部分:跳批抽样程序
- GB/T 22638.6-2008铝箔试验方法第6部分:直流电阻的测定
- GB/T 19409-2003水源热泵机组
- 合理用药系统 建设方案
评论
0/150
提交评论