第8章单片机串行通信_第1页
第8章单片机串行通信_第2页
第8章单片机串行通信_第3页
第8章单片机串行通信_第4页
第8章单片机串行通信_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8.1 概概 述述 单片机应用于数据采集或工业控制时,往往作为前端机安装在工业现单片机应用于数据采集或工业控制时,往往作为前端机安装在工业现场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。如下图所示。信成本,提高通信可靠性。如下图所示。 第八章第八章 单片机串行通信单片机串行通信1数据通信方式有两种:并行通信与串行通信。下面是两种通信方式的示意数据通信方式有两种:并行通信与串行通信。下面是两种通信方式的示意图:图:并行通信:并行通信: 所传送数据的各位同时发送或接收,数据有多少位就需所传送数

2、据的各位同时发送或接收,数据有多少位就需要多少根数据线。特点:速度快,成本高,适合近距离传输,如计算机要多少根数据线。特点:速度快,成本高,适合近距离传输,如计算机并口,打印机接口,并口,打印机接口,8255 并口等。并口等。 串行通信:所传送数据的各位按顺序一位一位地发送或接收。只需一串行通信:所传送数据的各位按顺序一位一位地发送或接收。只需一根数据,一根地线,共根数据,一根地线,共2 根(如双向通信发送和接收各需根(如双向通信发送和接收各需1根数据线)。根数据线)。特点:成本低,硬件简单,适合远距离通信,传输速度低。特点:成本低,硬件简单,适合远距离通信,传输速度低。2 通信的双方应该有一

3、个约定,什么时候开始发送,什么时候发送完毕;通信的双方应该有一个约定,什么时候开始发送,什么时候发送完毕;接收方收到的信息是否正确等,这就是通信协议。接收方收到的信息是否正确等,这就是通信协议。 串行通信的分类:同步串行通信和异步串行通信串行通信的分类:同步串行通信和异步串行通信一、异步通信:一、异步通信: 异步串行通信一帧数据格式:一个起始位异步串行通信一帧数据格式:一个起始位 “0”,表示字符的开始,然后表示字符的开始,然后是是58位数据即该字符的代码,规定低位在前,高位在后,接位数据即该字符的代码,规定低位在前,高位在后,接 下来是奇偶下来是奇偶校验位校验位(可省略可省略),最后以停止位

4、,最后以停止位“1”表示字符的结束。表示字符的结束。优点:硬件结构简单。优点:硬件结构简单。缺点:传输速度慢。缺点:传输速度慢。P1D0 D1 D2 D3 D4 D5 D6 D7P10第第n个字符(一帧)个字符(一帧)n-1n+10 D0起起始始位位数据位(数据位(58位)位)校校验验位位停停止止位位3SYN字符字符1SYN字符字符2数据数据1数据数据2.数据数据n连续传送连续传送n 个数据个数据校验校验二、同步通信二、同步通信 在同步通信中,发送方在数据或字符开始处就用同步字符在同步通信中,发送方在数据或字符开始处就用同步字符(常约定常约定12个字节个字节)指示一帧的开始指示一帧的开始 ,由

5、时钟来实现发送端和接收端同步,接收方,由时钟来实现发送端和接收端同步,接收方一旦检测到与规定的同步字符符合,下面一旦检测到与规定的同步字符符合,下面 就连续按顺序传送若干个数据就连续按顺序传送若干个数据 ,最后发校验字节。见下图:最后发校验字节。见下图:三、串行通信的功能三、串行通信的功能 在串行传输中,通信的双方都按通信协议进行,所谓通信协议就是通在串行传输中,通信的双方都按通信协议进行,所谓通信协议就是通信双方必须共同遵守的一种约定,约定包括数据的格式、同步的方式、传信双方必须共同遵守的一种约定,约定包括数据的格式、同步的方式、传送的步骤、检纠错方式及控制字符的定义等。送的步骤、检纠错方式

6、及控制字符的定义等。 串行接口的基本任务就是:串行接口的基本任务就是:41.实现数据格式化实现数据格式化 因为因为CPU发出的数据是字符数据,接口电路应能将这些数据根据不同通发出的数据是字符数据,接口电路应能将这些数据根据不同通信方式进行数据格式化的任务。信方式进行数据格式化的任务。 如自动生成起止方式的帧数据格式(异步方如自动生成起止方式的帧数据格式(异步方式)或在待传送的数据块前加上同步字符(同步方式)等。式)或在待传送的数据块前加上同步字符(同步方式)等。2.进行串、并转换进行串、并转换 在发送端,接口将在发送端,接口将CPU送来的并行信号转换成串行数据进行传送;而在送来的并行信号转换成

7、串行数据进行传送;而在接收端,接口要将接收到串行数据变成并行数据送往接收端,接口要将接收到串行数据变成并行数据送往CPU。3.控制数据的传输速率控制数据的传输速率 接口应具备对数据传输率接口应具备对数据传输率波特率的选择控制能力,即自身有波特率发波特率的选择控制能力,即自身有波特率发生器。生器。4.进行传送错误检测进行传送错误检测 在发送时,对传送的数据自动生成校验位或校验码,在接收端能检查校在发送时,对传送的数据自动生成校验位或校验码,在接收端能检查校验位或校验码,以确定传送中是否有误码,并能自动将冗余码消除。验位或校验码,以确定传送中是否有误码,并能自动将冗余码消除。 51系列单片机内有一

8、个全双工的异步通信接口,通过对串行接口写控制系列单片机内有一个全双工的异步通信接口,通过对串行接口写控制字可以选择其数据格字可以选择其数据格 式,同时内部有波特率发生器,提供可选的波特率,来式,同时内部有波特率发生器,提供可选的波特率,来完成双机通信或多机通信。完成双机通信或多机通信。 5 四、四、 串行通信接口串行通信接口 串行接口通常分为两种类型:串行通信接口串行接口通常分为两种类型:串行通信接口 和和 串行扩展接口。串行扩展接口。 串行通信接口串行通信接口(Serial Communication Interface, SCI)是指设备之间)是指设备之间的互连接口,它们连接的距离比较长。

9、如当代的互连接口,它们连接的距离比较长。如当代PC机的机的COM接口(接口(COM1-COM4)和)和USB接口。接口。USB ( Universal Serial Bus,通用串行总线)是近几通用串行总线)是近几年开发的新规范,它使得设备间的连接简单快捷,并且支持热插拔,易于扩年开发的新规范,它使得设备间的连接简单快捷,并且支持热插拔,易于扩展,被广泛应用于展,被广泛应用于PC 机和嵌入式系统上。机和嵌入式系统上。 近年来推出有近年来推出有RS-422/423、RS-485等串行通信标准,其采用平衡通信等串行通信标准,其采用平衡通信接口,即在发送端将接口,即在发送端将TTL电平信号转换成差分

10、信号输出,接收端将差分信号电平信号转换成差分信号输出,接收端将差分信号变成变成TTL电平信号输入,大大提高了抗干扰能力,使通信距离增加到几十米电平信号输入,大大提高了抗干扰能力,使通信距离增加到几十米至上千米,并且增加了多点和双向通信的能力。至上千米,并且增加了多点和双向通信的能力。 PC机上的机上的COM1-COM4口使用的是口使用的是RS-232C串行通信标准接口,本章串行通信标准接口,本章仅介绍仅介绍RS-232C接口,其它接口可参考有关资料。接口,其它接口可参考有关资料。 以上标准都有专用芯片实现通信协议,这些接口芯片称为收发器。以上标准都有专用芯片实现通信协议,这些接口芯片称为收发器

11、。 串行扩展接口串行扩展接口是设备内部器件之间的互连接口,常用的串行扩展接口规是设备内部器件之间的互连接口,常用的串行扩展接口规范有范有SPI、I2C等。串行扩展接口的芯片很多,可以根据需要选择。等。串行扩展接口的芯片很多,可以根据需要选择。6 五、波特率(五、波特率(Baud rate)和比特率()和比特率(bps) 在通信中,衡量通信速率的单位有两种:波特率和比特率。在通信中,衡量通信速率的单位有两种:波特率和比特率。7l比特率:每秒传送的比特率:每秒传送的二进制二进制位数,单位:位数,单位:bit/sbit/s。l波特率:每秒传送的波特率:每秒传送的进制进制位数,单位:位数,单位:bau

12、d/sbaud/s。l两者的关系:两者的关系:比特率波特率比特率波特率loglog2 2N N N N 是数的进制是数的进制。例:传例:传1616进制数时,比特率进制数时,比特率 = 4 = 4 波特率。波特率。计算机内部均采用二进制,故比特率波特率计算机内部均采用二进制,故比特率波特率 例如异步传送数据的速率每秒为例如异步传送数据的速率每秒为120个字符,每个字符由个字符,每个字符由1个起始位、个起始位、8个个数据位和数据位和1个停止位组成,则字符传送速率为个停止位组成,则字符传送速率为: 10120=1200波特波特/秒秒 传送一个波特所需的时间为传送一个波特所需的时间为: T1=1/12

13、00=0.833ms 在上面传送中,只有在上面传送中,只有8个数据位才是有用的信息,起始位和停止位用于传个数据位才是有用的信息,起始位和停止位用于传送信息的辅助,所以信息的速率为:送信息的辅助,所以信息的速率为:8120=960比特比特/秒。秒。 传送一个比特需要的时间为:传送一个比特需要的时间为:T2=1/960=1.04ms六六. 串行通信总线标准及接口串行通信总线标准及接口(一)通信线的连接(一)通信线的连接 通信速率和通信距离这两个方面是相互制约的,降低通信速率,可通信速率和通信距离这两个方面是相互制约的,降低通信速率,可以提高通信距离,不同的通信距离,串行通信电路有不同的连接方法:以

14、提高通信距离,不同的通信距离,串行通信电路有不同的连接方法:近距离传送电路近距离传送电路RXDTXDGND RXD TXD GND微机微机微机或其他设备微机或其他设备较远距离传送电路(较远距离传送电路(RS232)电电平平转转换换RXDTXDGNDRXDTXDGND电电平平转转换换RXDTXDGNDRXDTXDGND8(二)串行通信接口总线标准(二)串行通信接口总线标准1.1 测控系统中常用的总线标准测控系统中常用的总线标准 测控系统中,计算机通信主要采用异步串行通信方式,常用的异步总测控系统中,计算机通信主要采用异步串行通信方式,常用的异步总线标准有三种:线标准有三种:RS-232(RS-2

15、32A RS-232B RS-232C)RS-449 (RS422 RS423 RS485)20mA电流环电流环 这里重点介绍这里重点介绍RS-232,速率:,速率:20Kbit/S,最大通信距离,最大通信距离 : 15m1.2 抗干扰能力抗干扰能力 采用标准的通信接口,本身具有一定的抗干扰能力,但是工业现场的采用标准的通信接口,本身具有一定的抗干扰能力,但是工业现场的情况往往很恶劣,因而要根据具体情况进行选择。情况往往很恶劣,因而要根据具体情况进行选择。 RS232C:一般场合:一般场合 RS422: 抗共模干扰信号比较强抗共模干扰信号比较强 光纤:光纤: 抗电磁干扰较强抗电磁干扰较强910

16、 1、RS-232C 最早用的最广泛的串行接口,采用最早用的最广泛的串行接口,采用+15V -15V 电平,负逻辑。主要电平,负逻辑。主要解决仪器设备与解决仪器设备与PC机的通信,属于点对点的通信。机的通信,属于点对点的通信。 2、RS-449 RS-449标准的电器特性有两个标准,即平衡式的标准的电器特性有两个标准,即平衡式的RS-422标准和非平标准和非平衡式的衡式的RS-423标准。这些标准在保持与标准。这些标准在保持与RS-232C兼容的前提下重新定义兼容的前提下重新定义了信号电平,并改进了电路方式,以达到较高的传输速率和较大的传输了信号电平,并改进了电路方式,以达到较高的传输速率和较

17、大的传输距离。距离。 RS-422电气标准是平衡方式标准,它的发送器、接收器分别采用电气标准是平衡方式标准,它的发送器、接收器分别采用平衡发送器和差动接收器,由于采用完全独立的双线平衡传输,抗串平衡发送器和差动接收器,由于采用完全独立的双线平衡传输,抗串扰能力大大增强。信号电平定义为扰能力大大增强。信号电平定义为6伏的负逻辑。伏的负逻辑。 RS-423电气标准是非平衡标准,它采用单端发送器电气标准是非平衡标准,它采用单端发送器(即非平衡发送即非平衡发送器器)和差动接收器。虽然发送器与和差动接收器。虽然发送器与RS-232C标准相同,但由于接收器采标准相同,但由于接收器采用差动方式,所以传输距离

18、和速度仍比用差动方式,所以传输距离和速度仍比RS-232C有较大的提高。有较大的提高。113、RS-485 由于由于RS-232-C接口标准出现较早,难免有不足之处,主要是:(接口标准出现较早,难免有不足之处,主要是:(1) 接口的信号电平值较高,与接口的信号电平值较高,与TTL 电平不兼容。(电平不兼容。(2) 传输速率较低,在传输速率较低,在异步传输时,波特率为异步传输时,波特率为20Kbps。(。(3) 抗噪声干扰性弱。抗噪声干扰性弱。 (4) 传输距传输距离有限。离有限。 于是就不断出现了一些新的接口标准,于是就不断出现了一些新的接口标准,RS-485就是其中之一,它具就是其中之一,它

19、具有以下特点:(有以下特点:(1)接口电平与)接口电平与TTL电平兼容,可方便与电平兼容,可方便与TTL 电路连接。电路连接。(2) RS-485的数据最高传输速率为的数据最高传输速率为10Mbps 。(。(3) RS-485接口是采用接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。(平衡驱动器和差分接收器的组合,抗噪声干扰性好。(4)最大传输距)最大传输距离可达离可达 3000米,另外米,另外RS-232-C接口在总线上只允许连接接口在总线上只允许连接1个收发器,个收发器, 即即单站能力。而单站能力。而RS-485接口在总线上是允许连接多达接口在总线上是允许连接多达128个收发器。即

20、具个收发器。即具有多站能力有多站能力, 可以利用可以利用RS-485构建设备网络。构建设备网络。 三、三、RS232C美国电子工业协会(美国电子工业协会(EIA)公布的一种异步通信标准。)公布的一种异步通信标准。 RS232C标准是:标准是: 设备之间通信的距离不大于设备之间通信的距离不大于15米米 最大传输速率最大传输速率20KB/S 采用负逻辑:采用负逻辑:“1” 5V 15V “0” +5V + 15V 不带负载时输出电平:不带负载时输出电平:25V +25V 输出短路电流:输出短路电流: 0.5A 最大负载电容最大负载电容: 2500p12 当计算机采用当计算机采用RS232标准时必须

21、转换电平,标准时必须转换电平,MAX232 是是EIA和和TTL电电平转换芯片。内部具有电压提升电路,并有两路收发器。平转换芯片。内部具有电压提升电路,并有两路收发器。 TTL电平可以由专用集成电路转换成电平可以由专用集成电路转换成RS232C标准标准; 如如: MC1488 或或 75188 TTL RS232C MC1489 或或 75189 RS232C TTL 由于由于MC1488需要采用需要采用12V电源,一般在单片机通信中大量使用的电源,一般在单片机通信中大量使用的是只需要是只需要+5V电源、具有发送和接收的一体化芯片,如:电源、具有发送和接收的一体化芯片,如:MAX232、ICL

22、232、ADM202等。等。 MAX232的引脚和电路如下:的引脚和电路如下:13 MCS51之间的双机通信之间的双机通信MCS51和和PC机的双机通信机的双机通信RXDTXDGND RXD TXD GND8XX518XX51148.2 MCS-51的串行口结构的串行口结构 一、串行口的内部结构一、串行口的内部结构 51单片机有一个可编程的全双工异步串行通信接口,它可作异步串行单片机有一个可编程的全双工异步串行通信接口,它可作异步串行通信(通信(UART)用,也可作同步移位寄存器,其帧格式可有)用,也可作同步移位寄存器,其帧格式可有8位、位、10位或位或l l位,并能设置各种波特率,给使用者带

23、来很大的灵活性。位,并能设置各种波特率,给使用者带来很大的灵活性。 输出移位寄存器串行控制寄器串行控制寄器SCON(98H)定时器 T1接收控制器发送控制器11串行中断串行中断TXD P3.1R X D P3.0TIRI发送发送SBUF(99H)输入移位寄存器内部总内部总线线接收接收SBUF(99H)波特率发生器波特率发生器15 51单片机通过引脚单片机通过引脚RXD(P3.0)串行数据接收端和引脚)串行数据接收端和引脚TXD(P3.1)串行数据发送端与外界进行通信。图中有两个物理上独立的接收、发送缓串行数据发送端与外界进行通信。图中有两个物理上独立的接收、发送缓冲器冲器SBUF,它们占用同一

24、地址,它们占用同一地址99H,可同时发送、接收数据。,可同时发送、接收数据。发送缓冲器只能写入,不能读出,发送缓冲器只能写入,不能读出,CPU写写SBUF,一是更新发送寄存,一是更新发送寄存器,同时启动串行数据发送;器,同时启动串行数据发送;接收缓冲器只能读出、不能写入。读接收缓冲器只能读出、不能写入。读SBUF,就是读接收寄存器。,就是读接收寄存器。 串行控制寄存器串行控制寄存器SCON用以存放串行口的控制和状态信息。用以存放串行口的控制和状态信息。8XX51串行串行口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信的。口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信的。

25、特殊功能寄存器特殊功能寄存器PCON的最高位的最高位SMOD为串行口波特率的倍增控制位。为串行口波特率的倍增控制位。波特率发生器可以有两种选择:波特率发生器可以有两种选择:1.定时器定时器T1作波特率发生器,改变计数初值就可以改变串行通信的速率,作波特率发生器,改变计数初值就可以改变串行通信的速率,称为可变波特率。称为可变波特率。2.以内部时钟的分频器作波特率发生器,因内部时钟频率一定,称为固以内部时钟的分频器作波特率发生器,因内部时钟频率一定,称为固定波特率定波特率16 甲方发送时,甲方发送时,CPU执行指令执行指令 MOV SBUF , A 启动了发送过程,数据启动了发送过程,数据并行送入

26、并行送入SBUF ,在发送时钟,在发送时钟 shift的控制下由低位到高位一位一位发送,的控制下由低位到高位一位一位发送,乙方在接收时钟乙方在接收时钟 shift 的控制下由低位到高位的控制下由低位到高位 顺序进入移位寄存器顺序进入移位寄存器SBUF ,甲方一帧数据发送完毕,置位发送中断标志,甲方一帧数据发送完毕,置位发送中断标志TI,该位可作为查,该位可作为查询标志(或引起中断),询标志(或引起中断),CPU可再发送下一帧数据可再发送下一帧数据 。乙方一帧数据到齐。乙方一帧数据到齐即接收缓冲器满,置位接收中断标志即接收缓冲器满,置位接收中断标志RI,该位可作为查询标志(或引起,该位可作为查询

27、标志(或引起接收中断),通过接收中断),通过MOV A ,SBUF CPU将这帧数据并行读入。将这帧数据并行读入。二、串行通信的传送过程用下面简图说明二、串行通信的传送过程用下面简图说明shift串行数据串行数据CPUMOV A , SBUFshiftMOV SBUF , A并并行行数数据据甲方(发送)甲方(发送)乙方(接收)乙方(接收) TIRICPU SBUF并并行行数数据据 SBUF17由上述可知:由上述可知:1.甲、乙方的移位时钟频率应相同,即应具有相同的波特率,否则会造成甲、乙方的移位时钟频率应相同,即应具有相同的波特率,否则会造成数据丢失。数据丢失。2.发送方是先发数据再查标志,接

28、收方是先查标志再收数据。发送方是先发数据再查标志,接收方是先查标志再收数据。3.CPU通过指令和通过指令和SBUF并行交换数据,并不能控制数据的串行移位,它并行交换数据,并不能控制数据的串行移位,它只能查询标志位来确定数据的移位是否完成。只能查询标志位来确定数据的移位是否完成。三、串行口的控制寄存器三、串行口的控制寄存器 51单片机串行口是一个可编程接口,对它的编程只用两个控制字分别单片机串行口是一个可编程接口,对它的编程只用两个控制字分别写入特殊功能寄存器:写入特殊功能寄存器: 串行口控制寄存器串行口控制寄存器SCON(98H) 电源控制寄存器电源控制寄存器PCON(97H) 188.3 串

29、行口的控制寄存器串行口的控制寄存器8.3.1 串行口的控制寄存器串行口的控制寄存器SCON 8XX51串行通信的方式选择串行通信的方式选择 ,接收和发送控制及串行口的标志均由专用接收和发送控制及串行口的标志均由专用寄存器寄存器SCON控制和指示控制和指示,其格式如下其格式如下:SM0SM0SM1 SM1 SM2SM2RENRENTB8TB8RB8RB8TITIRIRI方式选择方式选择多机控多机控制制串行接收串行接收允许允许/ / 禁止禁止欲发的第欲发的第九位九位收到的第收到的第九位九位发送完的发送完的标志标志接收到的接收到的标志标志SCONSCONSerial Port Control Reg

30、ister00000000Value after resetSM0SM1SM2REMTB8RB8TIRIBit namebit7bit6bit5bit4bit3bit2bit1bit0SM0SM1Serial mode Explanation Baud rate0008-bit shift registerOscillator/120118-bit UARTSet by timer 1 or 2*1029-bit UARTOscillator/32 *1139-bit UARTSet By timer 1 or 2*19SM0.SM1:串行口工作方式控制位。串行口工作方式控制位。 0 0-方式

31、方式0, 0 1-方式方式1 1 0-方式方式2, 1 1-方式方式3REN:串行接收允许位。:串行接收允许位。 0-禁止接收禁止接收, 1-允许接收允许接收TB8: 在方式在方式2,3中中,TB8是发送机要发送的第是发送机要发送的第9位数据。位数据。RB8:在方式在方式2,3中中,RB8是接受机收到的第是接受机收到的第9位数据位数据, 该数据来自发送机的该数据来自发送机的TB8。TI: 发送中断标志位。发送前必须用软件清零,发送过程中发送中断标志位。发送前必须用软件清零,发送过程中TI保持零电平保持零电平,发发送完一帧数据后,由硬件置送完一帧数据后,由硬件置 “1”,如果再发送,如果再发送,

32、必须用软件再清零。必须用软件再清零。RI: 接收中断标志位。接收前接收中断标志位。接收前,必须用软件清零必须用软件清零,接接 收过程中收过程中RI保持零电平,保持零电平,接收完一帧数据后由片内硬件自动置接收完一帧数据后由片内硬件自动置“1”。如果再接收必须用软件清零。如果再接收必须用软件清零。SM2:多机通信控制位,仅用于方式多机通信控制位,仅用于方式2和方式和方式3。当选择方式。当选择方式2或方式或方式3时时,发送发送机设置机设置SM2=1, 并发送第九位并发送第九位TB8=1(地址标志地址标志),表示此次发送的字节),表示此次发送的字节是要通信的从机的地址,各个从机初始化时设置是要通信的从

33、机的地址,各个从机初始化时设置SM2=1,若接收到的第九位若接收到的第九位数据数据RB8=1都能产生中断,进入各自的中断子程,将接收到的地址与自己都能产生中断,进入各自的中断子程,将接收到的地址与自己的相比较,若相等,则置的相比较,若相等,则置SM2-=0,不相等的维持,不相等的维持SM2=1。然后,主机开始。然后,主机开始发数据,但此时它的发数据,但此时它的TB8=0(数据标志数据标志),从机收到),从机收到RB8=0,只有,只有SM2=0的可以响应,产生中断接收数据,而的可以响应,产生中断接收数据,而SM2=1的不予响应,的不予响应,20综上所述综上所述,SM2的作用为的作用为:在方式在方

34、式2,3中,发送机中,发送机SM2=1(程序设置程序设置), 接收机接收机SM2=1,若若RB8=1,激活激活RI,引起接收中断引起接收中断. RB8=0,不激活不激活RI,不引起接收中断不引起接收中断. SM2=0,无论无论RB8=1还是还是RB8=0均激活均激活RI引起接收中断。引起接收中断。TB8=1SM2=1SM2=1SM2=1SM2=0TB8=021SMODXXXXXXX8 .3. 2 电源控制寄存器电源控制寄存器PCONPCON的格式如下图所示的格式如下图所示,串行通信只用其中的最高位串行通信只用其中的最高位SMODSMOD : 波特率加倍位。在计算串行方式波特率加倍位。在计算串行

35、方式 1、 2、 3 的波特率时,的波特率时, SMOD 0 不加倍不加倍; SMOD 1 加倍加倍 。PCON的字节地址为的字节地址为87H,无位地址无位地址, 只能字节寻址只能字节寻址.,初始化时初始化时SMOD=0 PCONPCONPower Control (87H)00000000Value after resetSMOD-GF1GF2PDIDLBit namebit7bit6bit5bit4bit3bit2bit1bit0(2SMOD/32)*fosc 12*(256-X)因为波特率因为波特率 = =228.4 串行口的工作方式串行口的工作方式 根据串行通信数据格式和波特率的不同根

36、据串行通信数据格式和波特率的不同, 51系列单片机的串行通信有系列单片机的串行通信有四种工作方式四种工作方式,通过编程进行选择通过编程进行选择,各工作方式的特点如下各工作方式的特点如下:1.方式方式0(P3.1)(P3.0)Mode 0 Receive Timing :(P3.0)(P3.1)Mode 0 Transmit Timing :(P3.0)(P3.1)方式方式0的数据格式为的数据格式为8位位,低低位在前位在前,高位在后。高位在后。RXD为为串行数据的发送端或接收串行数据的发送端或接收端端, TXD输出频率为输出频率为fosc/12的时钟脉冲。波特率固定的时钟脉冲。波特率固定为为fo

37、sc/12 (fosc为单片机为单片机晶振频率)。晶振频率)。232.方式方式1为为10位异步通信方式位异步通信方式, 每帧数据由每帧数据由1个起始位个起始位 “0”,8个数据位个数据位 和和1个个停止位停止位“1”共共10位构成位构成.其中起始位和停止位在发送时是自动插入的。其中起始位和停止位在发送时是自动插入的。以以TXD为串行数据的发送端为串行数据的发送端,T1提供移位时钟提供移位时钟,RXD为数据的接收端为数据的接收端,由由T1提供移位时钟提供移位时钟,是波特率可变方式。是波特率可变方式。 波特率波特率=(2SMOD/32)(T1的溢出率的溢出率) =(2SMOD/32)(fosc/1

38、2(256-x) ) 根据给定的波特率根据给定的波特率,可以计算可以计算T1的计数初值的计数初值X。(P3.0)(P3.1)(P3.1)(P3.0)243. 方式方式 2 11位异步发送位异步发送/接收方式接收方式,即每帧数据由有一个起即每帧数据由有一个起 始位始位“0”,9个数据个数据位和位和1个停止位个停止位“1”组成。发送时的第九个数据位,由组成。发送时的第九个数据位,由SCON寄存器的寄存器的TB8位提供,接收到的第九位数据存放在位提供,接收到的第九位数据存放在SCON寄存器的寄存器的RB8位,第九位,第九位数据可作为检验位,也可用于多机通信中识别传送的是地址还是数据位数据可作为检验位

39、,也可用于多机通信中识别传送的是地址还是数据的特征位。波特率固定为的特征位。波特率固定为(2SMOD/64)fosc。(P3.0)(P3.1)Mode 2/3 Transmit Timing:Mode 2/3 Receiver Timing:(P3.1)(P3.0)254. 方式方式3 数据格式同方式数据格式同方式 3,所不同的是波特率可变,计算方式同方式,所不同的是波特率可变,计算方式同方式 1。8.5 串行口的应用编程串行口的应用编程n串行口的波特率有两种方式:串行口的波特率有两种方式:p固定波特率固定波特率p可变波特率可变波特率注意:使用可变波特率时,先确定注意:使用可变波特率时,先确定

40、T1 的计数初值,并对的计数初值,并对T1 进行初始化进行初始化n串行通信的编程方式:串行通信的编程方式:p查询方式:查查询方式:查 TI 或或 RI 是否为是否为“1”。p中断方式:如果预先开了中断,当中断方式:如果预先开了中断,当TI、RI 为为“1”,会自动产生中断。,会自动产生中断。注意:两种方式中当发送或接受数据后都要人为地清注意:两种方式中当发送或接受数据后都要人为地清TI 或或RI 。268.5.1 查询方式查询方式方式方式1通信的查询方式发送和接收流程图通信的查询方式发送和接收流程图查询方式发送流程图查询方式发送流程图结束结束YNYNTI1?清清TI全部数据发送完?全部数据发送

41、完?修改地址指针修改地址指针和块长度计数器和块长度计数器置发送数据块首址置发送数据块首址数据块长度计数器数据块长度计数器发送数据发送数据T1初始化、启动初始化、启动T1工作工作开始开始设定串行通信方式设定串行通信方式查询方式接收流程图查询方式接收流程图结束结束YNYNRI1?清清RI全部数据接收完?全部数据接收完?修改地址指针修改地址指针和块长度计数器和块长度计数器置接收数据块首址置接收数据块首址接收数据块长度接收数据块长度接收数据接收数据T1初始化、启动初始化、启动T1工作工作开始开始设定串行通信方式允许接收设定串行通信方式允许接收278.5.2 中断方式中断方式 中断方式的初始化编程同查询

42、方式,不同的是要开中断,即置位中断方式的初始化编程同查询方式,不同的是要开中断,即置位EA和和ES,编写中断服务程序。方式,编写中断服务程序。方式1 通信的中断方式串行通信的程序流程见下通信的中断方式串行通信的程序流程见下图:图:方式方式1中断方式接收流程图中断方式接收流程图T1初始化、启动初始化、启动T1工作工作设定串行通信方式设定串行通信方式置接收数据块首址置接收数据块首址数据块长度计数器数据块长度计数器等待中断等待中断1 EA, 1ES主程序主程序Y中断返回中断返回0 EA, 0ES中断服务程序中断服务程序修改地址指针修改地址指针和块长度计数器和块长度计数器清清RI接收数据接收数据N全部

43、数据接收完?全部数据接收完?28例例8-1. 在内部数据存贮器在内部数据存贮器20H3FH单元中共有单元中共有32个数据,要求采用方式个数据,要求采用方式 1 串行发送出去,串行发送出去, 传送速率为传送速率为1200波特,设波特,设fosc12MHZ。解:解:T1工作于方式工作于方式 2 作波特率发生器,取作波特率发生器,取SMOD0,T1的时间常数计算的时间常数计算如下:如下: 波特率(波特率(2SMD/32)(fosc/(12(256-X) 代入:代入:1200(1/32)12106 /12(256-x) , 解得:解得:X230E6H发送程序:发送程序: ORG 0000H MOV T

44、MOD, #20H ;设置波特率,;设置波特率,T1方式方式2 MOV TH1, #0E6H MOV TL1, #0E6H ;T1时间常数时间常数 SETB TR1 ;启动;启动T1 MOV SCON, #40H ;串行口工作于方式;串行口工作于方式1 MOV R0, #20H ;R0指发送缓冲区首址指发送缓冲区首址 MOV R7, #32 ;R7作发送数据计数作发送数据计数 LO: MOV SBUF,R0 ;发送数据;发送数据 JNB TI, ;一帧未发完继续查询;一帧未发完继续查询 CLR TI ;一帧发完清;一帧发完清TI INC R0 DJNZ R7, LO ;数据块未发完继续;数据块

45、未发完继续 SJMP 29接收程序:接收程序: ORG 0000H MOV TMOD, #20H ;设置波特率;设置波特率 MOV TH1, #0E6H MOV TL1, #0E6H SETB TR1 ;初始化;初始化T1, 并启动并启动T1 MOV SCON, #50H ;设定串行方式;设定串行方式1,并允许接收,并允许接收 MOV R0, #20H MOV R7, #32 LOOP:JNB RI, ;一帧收完;一帧收完? CLR RI ;收完清;收完清RI MOV R0, SBUF ;将数据读入;将数据读入 INC R0 DJNZ R7, LOOP SJMP 30查询方式查询方式 C 语言

46、发送程序语言发送程序:#includemain( ) unsingned char i;char *p;TMOD=0 x20;TH1=0 xe6;TL1=0 xe6;TR1=1;SCON=0 x40;p=0 x20;for (i=0;i=32;i+) SBUF=*p p+ while (!TI); TI=0; 查询方式查询方式 C 语言接收程序语言接收程序#include main( ) unsingned char i;char *p;TMOD=0 x20;TH1=0 xe6;TL1=0 xe6;TR1=1;SCON=0 x50;p=0 x20;for (i=0;i=32;i+) while

47、 (!RI); RI=0; *p=SBUF; p+ 31main( ) unsingned char i;char *p;TMOD=0 x20;TH1=0 xe6;TL1=0 xe6;TR1=1; EA=1;ES=1;SCON=0 x40;p=0 x20;SBUF=*p;for (i=0;i32;);/*等待中断等待中断*/#includereg51.hTrs interrupt 4 TI=0; i+; p+; SBUF=*p; 中断方式中断方式 C 语言发送程序语言发送程序32main( ) unsingned char i;char *p;TMOD=0 x20;TH1=0 xe6;TL1=

48、0 xe6;TR1=1;EA=1;ES=1;SCON=0 x50;p=0 x20;for (i=0;i32;); #includeTrs interrupt 4 RI=0; i+; *p =SBUF; p+; 中断方式中断方式 C 语言接收程序语言接收程序33RXD89C51TXDP1.0例例8-2 接线如图,编一个自发自收程序,检查单片机的串行口是否完好,接线如图,编一个自发自收程序,检查单片机的串行口是否完好,f =12MHz,波特率,波特率600,取,取SMOD0。解:依据公式解:依据公式波特率波特率 求得求得: :)256(12321xo os sc cf fCCHx 204MOV T

49、MOD, #20MOV TH1, #0CCMOV TL1, #0CCH ; 设定波特率设定波特率SETB TR1MOV SCON, #50HABC: CLR TIMOV P1, #0FEH ; LED灭灭ACALL DELAY ; 延时延时MOV A, #0FFHMOV SBUF, A ; 发送数据发送数据FFHJNB RI, $ ;RI = 0等待等待CLR RI MOV A, SBUF ; 接收数据,接收数据,A=FFHMOV P1, A ; 灯亮灯亮JNB TI, $ ;TI = 0 等待等待 ACALL DELAY ; 延时延时SJMP ABCDELAY: MOV R0, #0DAL:

50、 MOV R1, #0 DJNZ R1, $ DJNZ R0, DAL RET 34例例8-2 C语言编程语言编程:include Main( )unsigned int I;TMOD=0 x20;TH1=0 xcc;TL1=0 xcc; /* 初始化初始化T1*/TR1=1; SCON=0 x50;While(1) /* 无限循环执行一下发送和接收语句无限循环执行一下发送和接收语句*/ TI=0; P1=0 xfe; /* LED灭灭*/ for(I=0;I10000;I+); /*延时延时*/ SBUF0 xff; /*发送数据发送数据FFH*/ while(RI=0); /*RI=0等待

51、等待*/ RI=0; /* RI=1清清RI*/ P1=SBUF; /*接收数据并送接收数据并送P1口,灯亮口,灯亮*/ TI=0;(while(TI=0);) /* 让让TI=0*/ for(I=0;I10000;I+); /*延时延时*/35例例8-4 例如串行通信方式例如串行通信方式0,扩展,扩展I/O接口,接八个数码管,使内部数据存储接口,接八个数码管,使内部数据存储器器58H5FH单元的内容在数码管上显示。单元的内容在数码管上显示。 分析分析: 由于由于TXD,RXD运行在工作方式运行在工作方式0时,可方便的连接串入并出移位时,可方便的连接串入并出移位寄存器寄存器74LS164,TX

52、D发送移位脉冲,发送移位脉冲,RXD发送数据,发送数据,P3.3用于显示器的用于显示器的输入控制,通过输入控制,通过74LS164接八个数码管,电路如下图所示。接八个数码管,电路如下图所示。dp g f e d c b a+5V+5VP3.3TXDRXD8XX51ABCLKCLRCLKCLRCLKCLR74LS16474LS16474LS164Q7Q0200LA5011(共阳)88图8.11&* *36例例8-4程序如下:程序如下: ORG 0050H SETB P3.3 ; 允许移位寄存器工作允许移位寄存器工作 MOV SCON, #0 ; 选串行通信方式选串行通信方式0 MOV R

53、7, #08H ; 显示八个字符显示八个字符 MOV R0, #5FH ; 先送最后一个显示字符先送最后一个显示字符 MOV DPTR, #TBA ; DPTR指向字形表首址指向字形表首址 DLO: MOV A, R0 ; 取待显示数码取待显示数码 MOVC A,A+DPTR ; 查字形表查字形表 MOV SBUF, A ; 送出显示送出显示 JNB TI, $ ; 一帧输出完?一帧输出完? CLR TI ; 已完,清中断标志已完,清中断标志 DEC R0 ; 修改显示数据地址修改显示数据地址 DJZN R7, DLO CLR P3.3 ; 8位送完,关发送脉冲位送完,关发送脉冲 SJMP $

54、 TBA: DB 0C0H,0F9H,0A4H,B0H,99H,92H DB 82H,0F8H,80H,90H,83H,83H,0C6H DB 0A1H,86H,84H 3738例例8-5 GPS 数据的获取:数据的获取: GPS作为定位、授时、测量、同步已作为定位、授时、测量、同步已经得到广泛地应用。下面介绍基本的经得到广泛地应用。下面介绍基本的 GPS 模块的应用。右图是常见的模块的形式,模块的应用。右图是常见的模块的形式,常常有外壳封装,以便在户外应用。常常有外壳封装,以便在户外应用。 它内部有接收天线和其他一些开发芯它内部有接收天线和其他一些开发芯片及其外围电路组成。其控制内核是一个片

55、及其外围电路组成。其控制内核是一个处理器,该处理器具有很强的数据处理器,该处理器具有很强的数据运算处理能力,能将接收到的卫星信号进运算处理能力,能将接收到的卫星信号进行计算,求出方位、时间等等信息。它具行计算,求出方位、时间等等信息。它具有标准的串口,方便与外部设备互联。主有标准的串口,方便与外部设备互联。主要的连线如右图所示。要的连线如右图所示。红色红色VCC,黑线,黑线RXD,白线白线TXD,屏蔽线,屏蔽线GNDTxdRxdVccGNDRxdTxdVccGND80C51与单片机的连接与单片机的连接GPS模块模块39GPS 信号的格式(每秒依次发送以下信号)信号的格式(每秒依次发送以下信号)

56、 序号序号命令命令说明说明最大帧长最大帧长 1$GPGGA 全球定位数据全球定位数据72 2$GPGSA 卫星卫星PRN数据数据 653$GPGSV 卫星状态信息卫星状态信息 2104$GPRMC运输定位数据运输定位数据 705$GPVTG 地面速度信息地面速度信息 346$GPGLL 大地坐标信息大地坐标信息7$GPZDA UTC时间和日期时间和日期 注:发送次序注:发送次序$PZDA、$GPGGA、$GPGLL、$GPVTG、$GPGSA、$GPGSV*3、$GPRMC 该协议采用该协议采用ASCII码,其串行通信默认参数为:波特率码,其串行通信默认参数为:波特率=4800bps,数据位数

57、据位=8bit,开始位,开始位=1bit,停止位,停止位=1bit,无奇偶校验。正好和,无奇偶校验。正好和51单单片机串口工作方式片机串口工作方式1吻合。吻合。 40 现在要获得时间信号,根据这几组数据,可以发现:现在要获得时间信号,根据这几组数据,可以发现: GPGGA 这一组可以这一组可以满足要求。满足要求。 它是它是 GPS 固定数据输出语句,这是一帧固定数据输出语句,这是一帧GPS定位的主要数据,也是使用最定位的主要数据,也是使用最广的数据。它的数据格式如下:广的数据。它的数据格式如下: $GPGGA,* UTC时间,格式为时间,格式为hhmmss.sss。 纬度,格式为纬度,格式为d

58、dmm.mmmm(前导位数不足则补(前导位数不足则补0)。 这样,只要识别这样,只要识别 一开始是一开始是 $GPGGA 再加一个逗号,再加一个逗号, 然后,再接收然后,再接收hhmmss 6个字节,就可以把时分秒的数据获取。所以软件程序就按这个思路来个字节,就可以把时分秒的数据获取。所以软件程序就按这个思路来编写。编写。41 采用查询方法的采用查询方法的 keil C 编程编程(假设采用默认的假设采用默认的4800波特率波特率,先要设好波特率):先要设好波特率): #include #define uchar unsigned char bit flag =0; uchar *pdat; u

59、char num; /* 计数变量计数变量*/ uchar gpsdat10; pdat=gpsdat;uchar gps_receive( ) while(!=RI); RI=0; if (SBUF!= $) return 0; while(!=RI); RI=0; if(SBUF!=G) return 0; while(!=RI); RI=0;if(SBUF!=P) return 0; while(!=RI); RI=0; if(SBUF!=G) return 0;while(!=RI); RI=0; if(SBUF!=G) return 0; while(!=RI); RI=0; if(

60、SBUF!=A) return 0;For(num=0;num6;num+;) while(!+RI); *pdat=SBUF; pdat+; flag=1;42 #include #define uchar unsigned char #define uint unsigned int uchar GPS_ASC=GPGGA; uchar RS_BUF10; uchar RSTime10 uint Getuart( ) uint i=0, j=0; while(!=RI) if(i+30000) j=256;return j; j=SBUF; RI=0; return j; 采用中断方法的采用中断

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论