《c51串行接口程序设计》由会员分享,可在线阅读,更多相关《c51串行接口程序设计(23页珍藏版)》请在金锄头文库上搜索。
1、第11章 C51串行接口程序设计,51系列单片机提供了功能强大的全双工串行通信接口,可以方便地实现多机通信或单片机与计算机之间的通信。由于串行接口简单,需要的传输线少,其已经成为单片机与外部设备之间进行数据通信的主要途径。特别是在远程通信和分布式控制系统中,是单片机之间通信以及单片机和计算机之间通信的主要方式。 本章主要介绍了51系列单片机串行通信接口的结构、特殊功能寄存器。本章结合串行端口的4种工作模式,详细介绍了4种工作模式的波特率设计及其C51程序设计。,11.1 51系列单片机的串行接口,51系列单片机内部集成的全双工串行通信接口电路,常称为UART。该串行接口电路功能很强,不仅可以进
2、行串行异步数据的发送和接收,也可以作为一个同步移位寄存器使用。,11.1.1 单片机串行通信概述,单片机和外部设备可以采用并行通信和串行通信两种方法进行数据传输。这两种数据传输方式分别如图所示。其中,并行通信是指数据的各个二进制位同时进行传输。并行通信传输速度快,效率高,缺点是需要比较多的数据线,易受外界干扰,传输距离不能太远。串行通信是指数据的各个二进制位按照顺序一位一位地进行传输。串行通信所需的数据线少,节省硬件成本以及单片机的引脚资源,并且抗干扰能力强,适合于远距离数据传输,其缺点是每次发送一个比特,导致传输速度慢,效率比较低。,单片机并行通信 单片机串行通信,11.1.2 单片机串行接
3、口的内部结构,51系列单片机的全双工串行口主要由数据发送缓冲器、发送控制器TI和接收控制器RI等组成,其结构如图所示。,单片机串行口内部结构,11.1.3 串行接口控制寄存器SCON,串行控制寄存器SCON的格式及各位的含义,如图所示。控制寄存器SCON的字节地址为98H,可进行位寻址。该寄存器用于选择串行通信的工作方式和某些控制功能,包括接收/发送控制及设置状态标志等。下面分别介绍各位的用途。,串行接口控制寄存器SCON,11.1.4 特殊功能寄存器PCON,特殊功能寄存器PCON的格式,如图所示。PCON的单元字节地址为87H,不可以进行位寻址。特殊功能寄存器PCON用于CHMOS型单片机
4、中进行电源控制,也称为电源控制寄存器。下面分别介绍各位的含义。,PCON的格式,11.2 串行口工作模式0的C51程序设计,51系列单片机串行口的工作模式0是同步移位寄存器输入/输出方式,模式0的数据帧格式,如图所示。从图中可以看出,模式0中的数据以8位为一帧,没有起始位和停止位,发送时低位在前,高位在后。在程序中可以设置控制寄存器SCON的SM0=0和SM1=0来将串行口设置为工作模式0。,串行工作模式0的数据帧格式,11.2.1 模式0的波特率,8051单片机在串口模式0下,每个机器周期产生一个移位时钟,对应着一个比特数据的发送和接收。因此,此时波特率固定为8051单片机振荡频率的1/12
5、,其波特率的计算公式如下: 串口模式0波特率=fosc/12 例如,对于24MHz的外部晶体振荡频率,模式0可以获得24MHz /12=2Mbit/s的波特率。 同时,在串口模式0下,波特率不受波特率倍增位SMOD的影响。因此,在C51程序设计时只要指定串口工作于模式0便完成了串口速率的设置,而无需再设置波特率。,11.2.2 模式0的数据发送及C51程序设计,对于模式0的数据发送,单片机的TXD引脚都用于发送同步移位脉冲,而8位串行数据是通过单片机的RXD引脚来输出。 1模式0的数据发送流程 2采用查询方式的模式0数据发送C51程序设计 3采用中断方式的模式0数据发送C51程序设计,扩展并行
6、输出口,14.2.3 模式0的数据接收及C51程序设计,对于模式0的数据接收,单片机的TXD引脚都用于发送同步移位脉冲,而8位串行数据是通过RXD引脚来输入。 1模式0的数据接收流程 2采用查询方式模式0数据接收的C51程序设计 3采用中断方式模式0数据接收的C51程序设计,扩展并行输入口,11.3 串行口工作模式1的C51程序设计,串行口的工作模式1是波特率可变的串行异步通信方式,工作模式1下数据帧的格式,如图11.10所示。数据帧由10位组成,按顺序分别为起始位、8位数据位、停止位。数据在传输时,低位在前,高位在后。在程序中可以设置控制寄存器SCON的SM0=0和SM1=1来将串口设置为工
7、作模式1。,模式1的帧格式,11.3.1 模式1的波特率,串口的工作模式1为10位异步发送接收方式。其串行移位时钟脉冲由定时器T1的溢出率来决定,因此,波特率由定时器T1的溢出率和波特率倍增位SMOD来共同决定。模式1的波特率计算公式如下: 模式1波特率=T1溢出率2SMOD/32 设置模式1的波特率,需要对定时器T1进行工作方式设置,以便于得到需要的波特率发生器。一般使T1工作于模式2,此时为初值自动加载的定时方式。如果计数器的初始值为X,则每过256-X个机器周期的时候,定时器T1便将产生一次溢出,溢出的周期为(256-X)*12/fosc。,11.3.2 模式1的数据发送及C51程序设计
8、,串行口的工作模式1为10位异步发送接收方式,单片机TXD引脚为数据发送端。通信的双方不需要时钟同步,发送方和接收方都有自己的移位脉冲,通过设置共同的波特率来实现同步。 1模式1的数据发送流程 2采用查询方式的模式1数据发送C51程序设计 3采用中断方式的模式1数据发送C51程序设计,11.3.3 模式1的数据接收及C51程序设计,串行口的工作模式1为10位异步发送接收方式,单片机RXD引脚为数据接收端。模式1接收数据中的定时信号可以有两种,接收移位脉冲和接收字符的检测脉冲。 串行口模式1接收数据时的接收移位脉冲,由定时器1的溢出信号和波特率倍增位SMOD来共同决定,即由定时器1的溢出率经过1
9、6分频或32分频得到。 接收字符的检测脉冲,其频率是接收移位脉冲的16倍。在接收一位数据的时候,有16个检测脉冲,以其中的第7、8和9个脉冲作为真正的接收信号的采样脉冲。对这三次采样结果采取三中取二的原则来确定所检测到的值。由于采样的信号总是在接收位的中间位置,这样便可以抑制干扰,避免信号两端的边沿失真,也可以防止由于通信双方时钟频率不完全相同而带来的接收错误。,11.4 串行口工作模式2的C51程序设计,串行口的工作模式模式2为固定波特率的串行异步通信方式,在模式2中数据帧的格式,如图所示。一帧数据由11位构成,按照顺序分别为:起始位1位、8位串行数据(低位在前)、可编程位1位、停止位1位。
10、在程序中可以设置控制寄存器SCON的SM0=1和SM1=0来实现。,模式2的帧格式,11.4.1 模式2的波特率,串口的工作模式2是11位异步发送接收方式。模式2下的波特率的计算公式如下: 模式2波特率= fosc2SMOD/64 从公式中可以看出,在模式2下,波特率由单片机的振荡频率fosc和PCON的波特率倍增位SMOD共同决定。当SMOD=0时,波特率为fosc/64,当SMOD=1时,波特率为fosc/32。串口模式2的波特率不由定时器来设置,只可选两种:fosc/32或者fosc/64。 例如,如果8051单片机外接12MHz的晶振,通过寄存器PCON可以选择波特率。在C51程序中,
11、则可以采用如下的赋值语句来实现,示例如下: PCON=0x00; /设置SMOD=0 PCON=0x80; /设置SMOD=1,11.4.2 模式2的数据发送及C51程序设计,在串行口的工作模式2中,TXD引脚为数据发送端。模式2的发送共有9位有效的数据,在启动发送之前,需要将发送的第9位,即可编程位的数值送入寄存器SCON中的TB8位。这个编程标志位可以由用户自己定义,硬件不做任何规定。例如,用户可以将这一位定义为奇偶校验位或地址/数据标志位。 1模式2的数据发送流程 2采用查询方式的模式2数据发送C51程序设计 3采用中断方式的模式2数据发送C51程序设计,11.4.3 模式2的数据接收及
12、C51程序设计,串口的工作模式2是11位异步发送接收方式,单片机RXD引脚为数据接收端。模式2的串行数据接收过程和模式1基本类似,只不过模式1的第9位为停止位,而这里则是发送的可编程位。 1模式2的数据接收流程 2采用查询方式的模式2数据接收C51程序设计 3采用中断方式的模式2数据接收C51程序设计,11.5 串行口工作模式3的C51程序设计,串行口的工作模式模式3为11位异步发送接收方式,在模式3中数据帧的格式,如图所示。一帧数据由11位构成,按照顺序分别为:起始位1位、8位串行数据(低位在前)、可编程位1位、停止位1位。在程序中可以设置控制寄存器SCON的SM0=1和SM1=1来实现。,
13、模式3的帧格式,11.5.1 模式3的波特率,模式3和模式2的工作方式是一样的,不同的是,模式2仅有两个固定的波特率可选,而模式3的波特率由定时器1的溢出率和波特率倍增位SMOD决定。 串口的工作模式3为11位异步发送接收方式。其串行移位时钟脉冲由定时器T1的溢出率来决定,因此,波特率由定时器T1的溢出率和SMOD来共同决定。模式1和模式3的波特率计算公式如下: 模式3波特率=T1溢出率2SMOD/32,串口模式3常用波特率参数设置,11.5.2 模式3的数据发送及C51程序设计,在串行口的工作模式3中,单片机的TXD引脚为数据发送端。模式3的发送共有9位有效的数据,在启动发送之前,需要将发送
14、的第9位,即可编程位的数值送入寄存器SCON中的TB8位。这个编程标志位可以由用户自己定义,硬件不做任何规定。例如,用户可以将这一位定义为奇偶校验位或地址/数据标志位。 1模式3的数据发送流程 2采用查询方式的模式3数据发送C51程序设计 3采用中断方式的模式3数据发送C51程序设计,11.5.3 模式3的数据接收及C51程序设计,串口的工作模式3是11位异步发送接收方式,单片机RXD引脚为数据接收端。模式3的串行数据接收过程和模式2基本类似。 1模式3的数据接收流程 2采用查询方式的模式3数据接收C51程序设计 3采用中断方式的模式3数据接收C51程序设计,11.6 小结,本章首先详细介绍了51系列单片机的串行接口,包括其内部结构,各个控制寄存器及其C51程序访问。接着,结合串行接口的4种工作模式,详细讲解了串行接口的波特率设计,以及相应的数据发送和接收的C51程序设计。单片机串行口的应用非常广泛,熟练掌握本章内容很重要。,