《单片机原理及应用项目9-串行口通信课件.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用项目9-串行口通信课件.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、项目9 串行口通信9.1 9.1 串行通信基础串行通信基础 计算机与外界的信息交换称为通信。基本的通信方法有并行通信和串行通信两种。9.1.1 串行通信与并行通信串行通信与并行通信图9-1 串行与并行通信方式示意图项目项目9 9 串行口通信串行口通信1.并行通信 并行通信的示意如图9-1(a)所示:一组信息(通常是字节)的各位数据被同时传送的通信方法称为并行通信。在MCS-51单片机中实现并行通信主要依靠其并行IO接口来实现。并行通信相对于串行通信具有以下特点:1)速度快,但传输线根数多。2)成本高。3)较适用于近距离(相距数公尺)的通信。2.串行通信串行通信的示意如图9-1(b)所示:一组信
2、息的各位数据被逐位按顺序顺序在一条线上一个一个传送的通信方式称为串行通信。在MCS-51单片机中有一组专门用来进行串行通信的引脚:P3.0(RXD)和P3.1(TXD)。串行通信相对于并行通信具有以下特点:1)速度相对较慢慢,但传输线少2)成本低。3)较适用于长距离通信。项目项目9 9 串行口通信串行口通信9.1.2 9.1.2 串行通信制式串行通信制式在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工(simplex)、半双工(half duplex)和全双工(full duplex)三种制式。1.单工制式在单工制式下,通信线的一端接发送器,一端接接收器,数据只能
3、按照一个固定的方向传送,如图9-2所示。图9-2 单工串行通信方式项目项目9 9 串行口通信串行口通信3.全双工制式全双工通信系统的每端都有发送器和接收器,可以同时发送和接收,即数据可以在两个方向上同时传送,如图9-4所示。图9-4 双工串行通信方式在实际应用中,尽管多数串行通信接口电路具有全双工功能,但一般情况下,只工作于半双工制式下,这种用法简单、实用。项目项目9 9 串行口通信串行口通信9.1.3 9.1.3 串行通信的分类串行通信的分类按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。1.异步通信(Asynchronous Communication)异步通信是指发送端
4、和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据均是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送,何时结束发送的。字符帧格式是异步通信的一个重要指标。字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等4部分组成,如图9-5所示。项目项目9 9 串行口通信串行口通信(a)无空闲位字符帧;(b)有空闲位字符帧图
5、9-5 异步通信的字符帧格式项目项目9 9 串行口通信串行口通信2.同步通信(Synchronous Communication)(a)单同步字符帧格式;(b)双同步字符帧格式图9-6 同步通信的字符帧格式 同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符,如图9-6所示。图9-6(a)为单同步字符帧结构,图9-6(b)为双同步字符帧结构,但它们均由同步字符、数据字符和校验字符CRC三部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。项目项目9 9 串行口通信串行口通信9.1.4 9.1.4 波特
6、率波特率波特率是异步通信的另一个重要指标,那么到底什么是波特率。波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。例如,若将波特率设置为9600b/s并采用图9-5(a)所示的字符帧,由于该字符帧包含10位,那么系统实际传输的字符速率为:960010=960字符/秒通常在MCS-51单片机的使用过程中,异步通信的波特率取509600 b/s之间较为合适。当然,随着硬件水平的不断提高,目前新型的单片机在保证数据稳定传输的
7、前提下,可以使用的波特率已远远高于这个水平。但是,不管采用多大的波特率,其通信原理与使用方法都是大同小异的,所以在今后的学习过程中我们采用的波特率均在509600b/s之间。项目项目9 9 串行口通信串行口通信1.RS-232C信息格式标准RS-232C采用串行格式,如图9.7所示。该标准规定:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶校验位。如果两个信息之间无信息,则写“1”,表示空。图9-7 RS-232C信息格式项目项目9 9 串行口通信串行口通信3.RS-232C电平转换器RS-232C规定了自己的电气标准,由于它是在TTL电路之前研制的,所以它
8、的电平不是+5 V和地,而是采用负逻辑,即逻辑“0”:+5 V+15 V;逻辑“1”:-5 V-15 V。因此,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意。常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489。MC1488内部有三个与非门和一个反相器,供电电压为12 V,输入为TTL电平,输出为RS-232C电平。MC1489内部有4个反相器,供电电压为5 V,输入为RS-232C电平,输出为TTL电平。项目项目9 9 串行口通信串行口通信另一种常用的电平转换电路是MAX232,该芯片是专门为电脑的RS-23
9、2标准串口设计的接口电路,使用+5v单电源供电,其引脚结构如图9.9所示。MAX232芯片内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从
10、T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚DNG、16脚VCC(+5v)。项目项目9 9 串行口通信串行口通信9.2.1 9.2.1 串行口结构串行口结构MCS-51内部有两个独立的接收、发送缓冲器SBUF。SBUF属于特殊功能寄存器。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址(99H)。串行口的结构如图9-11所示。图9-11 MCS-51系列单片机串行口内部结构项目项目9 9 串行口通信串行口通信9.2.2 9.2.2 串行口
11、工作原理串行口工作原理 根据图9-11所示,MCS-51单片机的工作原理大致描述如下:1)定时器1负责产生所需的波特率;2)发送SBUF和接收SBUF分别负责暂存发送与接收数据(1个字节容量);3)发送数据控制器和输出数据控制器收串行控制器(SCON)的控制,分别用来控制响应的移位寄存器将数据一位一位的通过TXD(P3.1)端送出或者一位一位的将数据从RXD(P3.0)端读入;4)中间的或门和串行口中断以及TI、RI相连,当发送完一帧数据或者接收完一帧数据后TI或者RI置1,两者作为或门的输入,所以,无论是接收完一帧数据还是发送完一帧数据,都会向串行口中断送“1”,也就是向CPU申请中断。项目
12、项目9 9 串行口通信串行口通信1.串行口数据缓冲器(SBUF)SBUF是两个在物理上独立的接收、发送寄存器,一个用于存放接收到的数据,另一个用于存放欲发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址99H,通过对SBUF的读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。CPU在写SBUF时,就是修改发送缓冲器;读SBUF,就是读接收缓冲器的内容。接收或发送数据,是通过串行口对外的两条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的,因此可以同时发送、接收数据,其工作方式为全双工制式。因此可以同时发送、接收数据,其工作方式为全双工制式。MCS-51单片机通过对SBUF
13、的读、写语句来区别是对接收缓冲器还是发送缓冲器进行操作。CPU在写SBUF时,操作的是发送缓冲器;读SBUF时,就是读接收缓冲器的内容。例如:MOV SBUF,#data ;通过串口发送立即数data MOV A,SBUF ;接收数据到累加器A项目项目9 9 串行口通信串行口通信2.串行口控制寄存器(SCON)SCON用来控制串行口的工作方式和状态,可以位寻址,字节地址为98H。单片机复位时,所有位全为0。串行口控制寄存器SCON的格式如表9-2。SCON9FH9EH9DH9CH9BH9AH99H98H(98H)SM0SM1SM2RENTB8RB8TIRI表9-2 SCON的各位定义项目项目9
14、 9 串行口通信串行口通信表9-2中各位的说明如下:SM0SM0、SM1SM1:串行口工作方式选择位SMO、SM1,SMO、SM1由软件置“1”或清“0”,用于选择串行口的4种工作方式。该4种工作方式见表9.3。SM2SM2:多机通信控制位,用于方式2和方式3中。RENREN:允许串行接收位。它由软件置位或清零。REN=1时,允许接收;REN=0时,禁止接收。TB8TB8:发送数据的第9位。在方式2和方式3中,由软件置位或复位,可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,TB8为1,数据帧时,TB8为0。RB8RB8:接收数据的第9位。功能类似TB8,方式
15、2、方式3中,由硬件将接收到的第九位数据存入RB8。方式1中,停止位存入RB8。TITI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其它方式中,在发送停止位之初由硬件置位。因此,TI是发送完一帧数据的标志,可以用指令JBC TI,rel来查询是否发送结束。RIRI:接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其它方式中,在接收停止位的中间由硬件置位。项目项目9 9 串行口通信串行口通信1.方式0在方式0下,串行口作同步移位寄存器用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。这种方式常用于扩展I
16、/O口。1 1)发送)发送当一个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断。在再次发送数据之前,必须由软件清TI为0。具体接线图如图9-12所示。其中,74LS164为串入并出移位寄存器。图9-12 方式0用于扩展I/O口输出 项目项目9 9 串行口通信串行口通信2)接收在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。在再次接收数据之前,必须由软件清RI为0。具体接线图如图9-13所示。其中,
17、74LS165为并入串出移位寄存器。串行控制寄存器SCON中的TB8和RB8在方式0中未用。图9-13方式0用于扩展I/O口输入项目项目9 9 串行口通信串行口通信2.方式1方式l为8位异步通信方式。其帧格式如图9-14所示一帧信息为10位:l位起始位、8位数据位(低位在前)和1位停止位。TXD为发送端,RXD为接收端。图9-14 10位的帧格式项目项目9 9 串行口通信串行口通信整个接收过程将受到RI和SM2位的影响:(1)若RI=0、SM2=0,则接收控制器发出“装载SBUF”信号,将8位数据装入接收数据缓冲器SBUF,停止位装入RB8,并置RI为“1”,向CPU发出中断请求信号。(2)若
18、RI=0、SM2=1,则只有在停止位为“1”时才发生上述操作。(3)若RI=0、SM2=1,且停止位为“0”,则所接收的数据不装入SBUF,即数据丢失。(4)若RI=1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。综上所述,方式1接收数据时,应先用软件清除RI或SM2标志(其他情况在上位机连接多个下位机时会用到)。为保证数据接收可靠无误,对每一位数据要连续采样3次,接收的值取3次采样中至少两次相同的值。这样既可以避开信号两端的边缘失真,又可以防止由于收、发时钟频率不完全一致而导致的接收错误。项目项目9 9 串行口通信串行口通信3.方式2方式2下,串行口为11位UART,传送波特率与
19、SMOD有关。发送或接收一帧数据包括1位起始位0,8位数据位,1位可编程位(用于奇偶校验)和1位停止位1。其帧格式如图9-15所示图9-15 11位的帧格式项目项目9 9 串行口通信串行口通信MCS-51单片机串行口的4种工作方式中,方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器的溢出率(定时器溢出信号的频率)控制。1)方式0的固定波特率为时钟频率的1/12,即fosc/12;2)在方式2中,波特率取决于PCON中的SMOD值,当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32.即波特率=。3)在方式1和方式3下,波特率由定时器1的溢出
20、率和SMOD共同决定。即:波特率=(2SMOD/32)定时器的溢出率其中,定时器1的溢出率取决于单片机定时器1的计数速率和定时器的预置值,即:定时器的溢出率=1/产生溢出所需要的时间=(fosc/12)/(2N-TC)其中,N为定时器T1的位数,TC为定时器T1的预置初值,计数速率与TMOD寄存器中的C/位有关。当C/=0时,计数速率为fosc/12;当C/=1时,计数速率为外部输入时钟频率。项目项目9 9 串行口通信串行口通信实际上,当定时器1做波特率发生器使用时,通常是工作在定时器的工作方式2,即自动重装填的8位定时器,此时TL1作计数用,自动重装填的值TX在TH1内。设TX=X,那么每过
21、256-X个机器周期,定时器溢出一次。为了避免因溢出而产生不必要的中断,此时应禁止T1中断。溢出周期为:溢出率为溢出周期的倒数,所以 波特率=综上所述,串行口的波特率发生器就是利用定时器提供一个时间基准。定时器计数溢出后需要重新装入初值,在开始计数,而期间不需要任何延迟。因为MCS-51单片机定时/计数器的工作方式2就是自动重装初值的8位定时/计数模式,所以用它来做波特率发生器最为合适。项目项目9 9 串行口通信串行口通信【例9.1】请分析下面一段程序中的波特率,该段程序在晶振频率为11.059MHz下运行:MOV TMOD,#20HMOV TL1,#0F4HMOV TH1,#0F4HSETB
22、 TR1解:通过程序第一行得知,定时器1工作在方式2(8位自动装填)下;由程序第二、三行得知,预装的初值为244;程序没有对PCON寄存器进行操作,因此SMOD应取初始值“0”,所以:波特率=2400b/s项目项目9 9 串行口通信串行口通信常用波特率(bps)fosc(MHz)SMODTH1初值19200960048002400120011.059211.059211.059211.059211.059210000FDHFDHFAHF4HE8H表9-5 定时器T1在工作方式2时常用波特率及初值项目项目9 9 串行口通信串行口通信9.39.3双机通信双机通信图9-16 双机异步通信接口电路9.
23、3.1 单片机双机通信单片机双机通信 MCS-51单片机与单个同系列其它单片机之间的通信称之为单片机双机通信,与多个同系列其它单片机之间的通信则称之为单片机多机通信,本节将对单片机双机通信做详细讲解。图9.16为单片机双机通信连接图。对于双机异步通信的程序通常采用两种方法:查询方式和中断方式,下面将以流程图的方式。项目项目9 9 串行口通信串行口通信1.查询方式 查询方式下的单片机双机通信程序基本流程如图9-17。查询方式的特点就是通过实时的查询TI、RI的状态来确定数据是否发送或是接收完毕,从而相应的进行下一步操作。下面通过程序示例介绍这种方法。2.中断方式 中断方式下的单片机双机通信程序基
24、本流程如图9.18。中断方式的特点就是不需要实时的查询TI、RI的状态来确定数据是否发送或是接收完毕,只要事先编写好合适的中断处理程序,在单片机接收完数据或者发送完数据时,其中断系统会自动做相应的处理。下面通过程序示例介绍这种方法。项目项目9 9 串行口通信串行口通信9.3.2 9.3.2 单片机与微机通信单片机与微机通信通过前面的内容我们了解到,串行通信是一种通信的方式,并不是MCS-51单片机所独有的。从理论上来说两个或两个以上的设备只要都具有串行口设备,那么它们之间头可以进行串行通信。本节我们就一起了解一下如何让MCS-51单片机与我们最常见的终端设备PC之间进行串行通信。1.接口设计观
25、察一下身边的台式电脑主机,是否在机箱的后面看到一至两个九孔梯形接口?这就是PC机上的串行接口。但是,PC机的串行接口的电平标准和我们的MCS-51单片机是不同的,为了让它们能够正常通信,我们必须在两个接口之间配以电平转换的驱动电路、隔离电路就可组成一个简单可行的通信接口。PC机和单片机最简单的连接是零调制三线经济型。这是进行全双工通信所必须的最少线路。因为MCS-51单片机输入、输出电平为TTL电平,而PC机配置的是RS-232C标准接口,二者的电气规范不同,所以要加电平转换电路。常用的有MC1488、MC1489和MAX232,在本项目9.1节的图9-10给出了采用MAX232芯片的PC机和单片机串行通信接口电路,与PC机相连采用9芯标准插座.项目项目9 9 串行口通信串行口通信