单片机的串行接口及串行通信V课件.ppt

上传人(卖家):晟晟文业 文档编号:4291728 上传时间:2022-11-26 格式:PPT 页数:106 大小:713.78KB
下载 相关 举报
单片机的串行接口及串行通信V课件.ppt_第1页
第1页 / 共106页
单片机的串行接口及串行通信V课件.ppt_第2页
第2页 / 共106页
单片机的串行接口及串行通信V课件.ppt_第3页
第3页 / 共106页
单片机的串行接口及串行通信V课件.ppt_第4页
第4页 / 共106页
单片机的串行接口及串行通信V课件.ppt_第5页
第5页 / 共106页
点击查看更多>>
资源描述

1、第第7 7章章 单片机的串行接口及串单片机的串行接口及串行通信行通信掌握串行通信的基本概念掌握串行通信的基本概念掌握单片机串行通信接口的结构掌握单片机串行通信接口的结构掌握串行通信控制寄存器掌握串行通信控制寄存器掌握单片机串行通信的工作方式掌握单片机串行通信的工作方式掌握串行通信的应用及编程方法掌握串行通信的应用及编程方法学习目标学习目标7.1 7.1 串行通信基础串行通信基础7.2 7.2 串行口的结构与工作原理串行口的结构与工作原理7.3 7.3 串行口的控制寄存器串行口的控制寄存器7.4 7.4 单片机串行通信工作方式单片机串行通信工作方式7.5 7.5 单片机串行通信接口技术单片机串行

2、通信接口技术主要内容主要内容7.1 7.1 串行通信基础串行通信基础 通信:通常把控制器与外部设备或控制器通信:通常把控制器与外部设备或控制器与控制器之间的数据传送称为通信。与控制器之间的数据传送称为通信。串行通信就是数据按位顺序进行串行传送串行通信就是数据按位顺序进行串行传送,最少只需一根传输线即可完成,一般成本低,最少只需一根传输线即可完成,一般成本低但速度较慢。但速度较慢。串行通信分为串行通信分为异步和同步异步和同步两种方式。两种方式。同步通信方式在单片机系统中使用较少,同步通信方式在单片机系统中使用较少,所以本节只介绍异步通信。所以本节只介绍异步通信。7.1.1 7.1.1 异步串行通

3、信的字符格式异步串行通信的字符格式 异步通信是指通信的发送与接收设备使异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。用各自的时钟控制数据的发送和接收过程。异步串行通信在时钟控制下每次发送一异步串行通信在时钟控制下每次发送一位数据,若干个位组成字符帧,一个完整的字位数据,若干个位组成字符帧,一个完整的字符帧完成一个字符的发送,一个字符接另一个符帧完成一个字符的发送,一个字符接另一个字符的传送就实现了发送与接收设备间的数据字符的传送就实现了发送与接收设备间的数据通信。通信。n 起始位起始位开始一个字符传送的标志位。开始一个字符传送的标志位。n 数据位数据位起始位之后传送的

4、数据信号位。起始位之后传送的数据信号位。n 奇偶效验位奇偶效验位用于对字符的传送作正确性检查。用于对字符的传送作正确性检查。n 停止位停止位用以标志一个字符的结束。用以标志一个字符的结束。n 位时间位时间发送发送1 1位数据所需时间。位数据所需时间。n 帧(帧(frameframe)从起始位开始到停止位结束的全部内容称从起始位开始到停止位结束的全部内容称 为一帧。为一帧。下图给出了一个字符帧的异步串行通信格式:下图给出了一个字符帧的异步串行通信格式:单片机的异步串行通信根据通信距离、抗干扰性单片机的异步串行通信根据通信距离、抗干扰性能的要求,信号的形式可选择能的要求,信号的形式可选择TTLTT

5、L电平传输、电平传输、RS-232RS-232电平传输、电平传输、RS-422ARS-422A或或RS-485RS-485差分传输等信号形式进差分传输等信号形式进行串行数据的传输。行串行数据的传输。单片机串行口控制器的输入、输出信号均为单片机串行口控制器的输入、输出信号均为TTLTTL电平。这种信号传输形式受传输距离限制,抗干扰性电平。这种信号传输形式受传输距离限制,抗干扰性能差,不能进行远距离通信。能差,不能进行远距离通信。对于远距离的系统与系统之间的串行通信,通常对于远距离的系统与系统之间的串行通信,通常将将TTLTTL电平变换为电平变换为RS-232RS-232电平或采用差分形式来实现电

6、平或采用差分形式来实现,如,如RS-232RS-232、RS-422ARS-422A、RS-485RS-485等标准来实现串行通等标准来实现串行通信传输。信传输。7.1.2 7.1.2 异步串行通信的信号形式异步串行通信的信号形式n 单工单工(Simplex)(Simplex)形式:形式:数据传送是单向的,通信双数据传送是单向的,通信双方中一方固定为接收端、一方固定为发送端。方中一方固定为接收端、一方固定为发送端。n 半双工半双工(Half-duplex)(Half-duplex)形式:形式:数据传送是双向的,数据传送是双向的,但任何时刻只能由其中的一方发送数据,另一方接但任何时刻只能由其中的

7、一方发送数据,另一方接收数据,发送和接收不能同时进行。收数据,发送和接收不能同时进行。n 全双工全双工(Full-duplex)(Full-duplex)形式形式 :数据传送是双向的,数据传送是双向的,且可以同时发送和接收数据。且可以同时发送和接收数据。7.1.3 7.1.3 串行通信的数据通路形式串行通信的数据通路形式单工单工 A 发发 B 收收 A 发发 收收 B 收收 发发例如:广播电台例如:广播电台 收音机收音机半双工半双工例如:例如:对讲机对讲机全双工全双工 A 发发 收收 B 收收 发发例如:例如:电话机电话机分时:半双工一个缓冲器同时:全双工两个缓冲器4.串行通信接口串行通信接口

8、发送方式发送方式CPUD7D6D5D4D3D2D1D0发送寄存器发送寄存器SBUF 0 1D0D1D2D3D4D5D6D7发送时钟发送时钟:接收方式接收方式D0D1D2D3D4D5D6D7 1 0D7D6D5D4D3D2D1D0CPU接收时钟接收时钟接收数据寄接收数据寄存器存器SBUF 度量一个数据通信系统通信能力的方法有两种度量一个数据通信系统通信能力的方法有两种,即波特率和数据传输率,即波特率和数据传输率 。波特率波特率:指单位时间内线路变化次数,反映了数指单位时间内线路变化次数,反映了数据的调制信号波形变换的频繁程度。单位是据的调制信号波形变换的频繁程度。单位是“波特波特”(baud)(

9、baud)。数据传输率数据传输率:指单位时间内传送的信息量,以每指单位时间内传送的信息量,以每秒钟传送格式位的数量来表示。单位是秒钟传送格式位的数量来表示。单位是“比特比特/秒秒”(bps)(bps)。7.1.4 7.1.4 串行通信的数据传输速率串行通信的数据传输速率1 1波特波特=1bps(=1bps(位位/秒秒)波特率和数据传输率两者相似但不等同,只有当波特率和数据传输率两者相似但不等同,只有当采用基波传输时两者的数值相同。即:采用基波传输时两者的数值相同。即:1.波特率vbps 表征数据位的宽度v同步:Baud=Tclk=Rclkv异步:发Baud=收BaudTclk=nBaud;Rc

10、lk=mBaud2.数据帧v每位作用v同步:D0D7v异步:0,D0D7,(P),1采样频率v3.数据包:每一帧数据作用用户名、密码、长度、DATA1、DATA2等 ADRv4.硬件连接:232MCUTTL电平MCUMCUMCU232TTL电平负逻辑TTL电平v0:00.3V +8V+15Vv1:2.75V 15V8V7.1 7.1 串行通信基础串行通信基础7.2 7.2 串行口的结构与工作原理串行口的结构与工作原理7.3 7.3 串行口的控制寄存器串行口的控制寄存器7.4 7.4 单片机串行通信工作方式单片机串行通信工作方式7.5 7.5 单片机串行通信接口技术单片机串行通信接口技术主要内容

11、主要内容 在单片机芯片中,通用异步接收和发送器在单片机芯片中,通用异步接收和发送器UARTUART (Universal Asynchronous Receiver (Universal Asynchronous ReceiverTransmitter)Transmitter)已作为一个功能部件集成在其中,构成一个串行通信已作为一个功能部件集成在其中,构成一个串行通信口。口。5l5l系列单片机的串行口是一个可编程的全双工串系列单片机的串行口是一个可编程的全双工串行通信接口,通过软件编程,其帧格式可设置为行通信接口,通过软件编程,其帧格式可设置为8 8位、位、1010位和位和1111位,数据传输

12、率可以灵活设置,使用非常方位,数据传输率可以灵活设置,使用非常方便灵活。便灵活。7.2 7.2 串行口的结构与工作原理串行口的结构与工作原理7.2.1 7.2.1 串行口结构串行口结构 主要由两个物理上独立的接收、发送缓冲器主要由两个物理上独立的接收、发送缓冲器SBUFSBUF(占用同一地址(占用同一地址99H 99H););一个输入移位寄存器、一个串行控制寄存器一个输入移位寄存器、一个串行控制寄存器SCONSCON和一个波特率发生器组成和一个波特率发生器组成。接收器是双缓冲结构。接收器是双缓冲结构 ;发送器为单缓冲器,因为发送时;发送器为单缓冲器,因为发送时CPUCPU是主动的,是主动的,不

13、会产生重叠错误。不会产生重叠错误。7.2.2 7.2.2 工作原理工作原理 发送数据时:发送数据时:CPUCPU向输出缓冲器向输出缓冲器SBUFSBUF写入数据,写入数据,同时启动数据串行发送,在波特率发生器产生的发同时启动数据串行发送,在波特率发生器产生的发送时钟控制下,按照预先设置的帧格式逐位由送时钟控制下,按照预先设置的帧格式逐位由TXDTXD端端输出发送数据。输出发送数据。n接收数据时:接收数据时:UARTUART通过对通过对RXDRXD引脚信号的采样来确认串行数引脚信号的采样来确认串行数据,若检测到数据发送起始位,则其后对据,若检测到数据发送起始位,则其后对RXDRXD引脚每间隔一定

14、引脚每间隔一定时间进行采样,采样到的数据在接收时钟控制下以移位方式存时间进行采样,采样到的数据在接收时钟控制下以移位方式存入输入移位寄存器,当数据接收完成或检测到停止位时,则完入输入移位寄存器,当数据接收完成或检测到停止位时,则完成了一个字符帧的接收,输入移位寄存器的内容被送入接收缓成了一个字符帧的接收,输入移位寄存器的内容被送入接收缓冲器冲器SBUFSBUF,并置相应的标志位。,并置相应的标志位。注意:在串行通信中,收发双方的数据传输率必须一致,否注意:在串行通信中,收发双方的数据传输率必须一致,否则接收方接收的数据会产生混乱。则接收方接收的数据会产生混乱。当一帧数据发送完毕当一帧数据发送完

15、毕(即发送缓冲器空即发送缓冲器空),硬件置位,硬件置位发送中断标志位发送中断标志位TI(SCON.1)TI(SCON.1)。这样就可以采用中断或查。这样就可以采用中断或查询的方式来可发送下一个数据,采用查询方式发送数据询的方式来可发送下一个数据,采用查询方式发送数据的过程为:的过程为:发送一个数据发送一个数据查询查询TITI发送下一个数据发送下一个数据(先发后查先发后查)当一帧数据接收完成后当一帧数据接收完成后(接收缓冲器满接收缓冲器满),硬件自动,硬件自动置位接收中断标志置位接收中断标志RI(SCON.0)RI(SCON.0)。同样可以采用中断或。同样可以采用中断或查询的方式来可接收下一个数

16、据,采用查询方式接收查询的方式来可接收下一个数据,采用查询方式接收数据的过程为数据的过程为:查询查询RIRI读入一个数据读入一个数据查询查询RIRI读下一个数据读下一个数据(先先查后收查后收)v内部逻辑结构:发送器:发送器:8位 8位 8位 Tclk TI=1 Tclk/n=Baud(f)(n个发送时钟周期发送一位数据)接收器接收器 8/10/11 8位 RI=1 8位 RclkmBaudTXD(P3.1)m/2 0m个7.1 7.1 串行通信基础串行通信基础7.2 7.2 串行口的结构与工作原理串行口的结构与工作原理7.3 7.3 串行口的控制寄存器串行口的控制寄存器7.4 7.4 单片机串

17、行通信工作方式单片机串行通信工作方式7.5 7.5 单片机串行通信接口技术单片机串行通信接口技术主要内容主要内容 与串行通信有关的控制寄存器是:与串行通信有关的控制寄存器是:SCONSCON:串行控制寄存器。:串行控制寄存器。PCONPCON:电源控制寄存器。:电源控制寄存器。IEIE:中断允许寄存器。:中断允许寄存器。7.3 7.3 串行口的控制寄存器串行口的控制寄存器7.3.1 7.3.1 串行控制寄存器串行控制寄存器SCONSCON SCON SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接是一个特殊功能寄存器,用以设定串行口的工作方式、接收收/发送控制以及设置状态标志发送控

18、制以及设置状态标志,字节地址为字节地址为98H98H:vSM0SM0和和SM1SM1为工作方式选择位,可选择四种工作方式:为工作方式选择位,可选择四种工作方式:位地址位地址9FH 9FH 9EH 9EH 9DH 9DH 9CH9CH9BH 9BH 9AH 9AH 99H 99H 98H98H位符号位符号SM0SM0 SM1 SM1 SM2 SM2 REN REN TB8 TB8 RB8 RB8 TI TI RI RI nSM2SM2,多机通信控制位,多机通信控制位,主要用于方式主要用于方式2 2和方式和方式3 3。当。当接收机的接收机的SM2=1SM2=1时可以利用收到的时可以利用收到的RB8

19、RB8来控制是否激活来控制是否激活RIRI(RB8RB80 0时不激活时不激活RIRI,收到的信息丢弃;,收到的信息丢弃;RB8RB81 1时时收到的数据进入收到的数据进入SBUFSBUF,并激活,并激活RIRI,进而在中断服务中,进而在中断服务中将数据从将数据从SBUFSBUF读走)。读走)。当当SM2=0SM2=0时,不论收到的时,不论收到的RB8RB8为为0 0和和1 1,均可以使收到的数据进入,均可以使收到的数据进入SBUFSBUF,并激活,并激活RIRI(即即此时此时RB8RB8不具有控制不具有控制RIRI激活的功能)。通过控制激活的功能)。通过控制SM2SM2,可以实现多机通信。可

20、以实现多机通信。在方式在方式1 1时,若时,若SM2=1SM2=1,则只有接收到有效停止位时,则只有接收到有效停止位时,RIRI才置才置1 1。在方式。在方式0 0时,时,SM2SM2必须是必须是0 0。nRENREN,允许串行接收位,允许串行接收位。由软件置。由软件置REN=1REN=1,则启动串,则启动串行口接收数据;若软件置行口接收数据;若软件置REN=0REN=0,则禁止接收。,则禁止接收。vTB8,TB8,在方式在方式2 2或方式或方式3 3中,是发送数据的第中,是发送数据的第九位九位,可以用软件规定其作用。在双机通信可以用软件规定其作用。在双机通信时,可以用作数据的奇偶校验位;或在

21、多机时,可以用作数据的奇偶校验位;或在多机通信中,作为地址帧通信中,作为地址帧/数据帧的标志位数据帧的标志位(一般一般约定:约定:TB8=0TB8=0为数据帧,为数据帧,TB8=1TB8=1为地址为地址帧帧 )。在方式在方式0 0和方式和方式1 1中,该位未用。中,该位未用。vRB8RB8,在方式在方式2 2或方式或方式3 3中,是接收到数据的中,是接收到数据的第九位,第九位,作为奇偶校验位或地址帧作为奇偶校验位或地址帧/数据帧数据帧的标志位。在方式的标志位。在方式1 1时,若时,若SM2=0SM2=0,则,则RB8RB8是是接收到的停止位。接收到的停止位。vTI,发送中断标志位,发送中断标志

22、位。在方式。在方式0时,当串行时,当串行发送第发送第8位数据结束时,或在其它方式,串位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使行发送停止位的开始时,由内部硬件使TI置置1。TI=1表示帧发送结束,其状态既可供软件查表示帧发送结束,其状态既可供软件查询使用,也可用于请求中断。发送中断被响询使用,也可用于请求中断。发送中断被响应后,必须由软件复位。应后,必须由软件复位。vRI,接收中断标志位,接收中断标志位。在方式。在方式0时,当串行时,当串行接收第接收第8位数据结束时,或在其它方式,串位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使行接收停止位的中间时,由内

23、部硬件使RI置置1。RI=1表示帧接收结束。其状态既可供软表示帧接收结束。其状态既可供软件查询使用,也可用于请求中断。件查询使用,也可用于请求中断。RI亦必须亦必须由软件清由软件清“0”。7.3.2 7.3.2 电源控制寄存器电源控制寄存器PCONPCON PCONPCON(字节地址为字节地址为87H87H)中只有一位)中只有一位SMODSMOD与串行口工作有关与串行口工作有关:SMODSMOD(PCON.7PCON.7)波特率倍增位。在串行口方波特率倍增位。在串行口方式式1 1、方式、方式2 2、方式、方式3 3时,波特率与时,波特率与SMODSMOD有关,当有关,当SMOD=1SMOD=1

24、时,波特率提高一倍。复位时,时,波特率提高一倍。复位时,SMOD=0SMOD=0。位序位序 D7 D7 D6 D6 D5 D5 D4 D4 D3 D3 D2 D2 D1 D1 D0 D0位符号位符号SMODSMOD GF1GF1 GF0 GF0 PD PD IDL IDL 其格式如下:其格式如下:7.3.3 7.3.3 中断允许寄存器中断允许寄存器IEIE位地址位地址 AFH AFHAEHAEHADHADHACHACHABH ABH AAH AAHA9HA9HA8HA8H位符号位符号 EA EA ES ES ET1 ET1 EX1 EX1 ET0 ET0 EX0 EX0 这个寄存器已在中断一节

25、介绍过,其中这个寄存器已在中断一节介绍过,其中ESES位为串行中断允许位:位为串行中断允许位:ES=0 ES=0 禁止串行中断禁止串行中断 ES=1 ES=1 允许串行中断允许串行中断7.1 7.1 串行通信基础串行通信基础7.2 7.2 串行口的结构与工作原理串行口的结构与工作原理7.3 7.3 串行口的控制寄存器串行口的控制寄存器7.4 7.4 单片机串行通信工作方式单片机串行通信工作方式7.5 7.5 单片机串行通信接口技术单片机串行通信接口技术主要内容主要内容 5151系列单片机的串行口共有系列单片机的串行口共有4 4种工作方式,种工作方式,4 4种种工作方式基本情况如下表所示:工作方

26、式基本情况如下表所示:7.4 7.4 单片机串行通信工作方式单片机串行通信工作方式工作方式工作方式 功能简述功能简述 波特率波特率 引脚功能引脚功能 应用应用 方式方式0 0 8 8位移位移位寄存器位寄存器 固定为固定为 fosc/12 fosc/12 TXDTXD输出频率为输出频率为fosc/12fosc/12的同步脉冲的同步脉冲;RXD;RXD作为数据作为数据的输入、输出端。的输入、输出端。I/OI/O口扩展口扩展 方式方式1 1 1010位异步位异步通信方式通信方式波特率可变波特率可变TXDTXD数据输出端数据输出端RXDRXD数据输入端数据输入端 双机通信双机通信 方式方式2 2 11

27、11位异步位异步通信方式通信方式波特率波特率 固定固定 TXDTXD数据输出端数据输出端RXDRXD数据输入端数据输入端 多机通信多机通信 方式方式3 31111位异步位异步通信方式通信方式波特率可变波特率可变TXDTXD数据输出端数据输出端RXDRXD数据输入端数据输入端 多机通信多机通信 SMOD264OSCfSMOD12T32溢出率SMOD12T32溢出率7.4.1 7.4.1 串行口工作方式串行口工作方式0 0方式方式0 0时,串行口为同步移位寄存器的输入输出方式。主要时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由用于扩展并行输入或输出口。数据由RXDR

28、XD(P3.0P3.0)引脚输入)引脚输入或输出,同步移位脉冲由或输出,同步移位脉冲由TXDTXD(P3.1P3.1)引脚输出。发送和接)引脚输出。发送和接收均为收均为8 8位数据,低位在先,高位在后。波特率固定为位数据,低位在先,高位在后。波特率固定为fosc/12fosc/12。1 1、工作方式说明、工作方式说明:v方式方式0 0输出输出:发送过程以写:发送过程以写SBUFSBUF寄存器开始。当八位数据寄存器开始。当八位数据传送完,传送完,TITI被硬件自动置被硬件自动置1 1,这时方可再发下一帧数据。,这时方可再发下一帧数据。v方式方式0 0输入:接收时必须先置输入:接收时必须先置REN

29、REN为为1(1(允许接收允许接收)并且使并且使RI=0RI=0,当八位数据接收完毕,当八位数据接收完毕,RIRI被硬件置被硬件置1 1,此时,可通过读,此时,可通过读SBUFSBUF指令,将串行数据读入。指令,将串行数据读入。2.2.应用举例应用举例:例例6-1 6-1 利用串行口,使接到利用串行口,使接到CD4094CD4094输出端的输出端的8 8只发光二极管,从左向右依次点亮,并反复循环。只发光二极管,从左向右依次点亮,并反复循环。分析:使用串口方式分析:使用串口方式0 0实现数据的移位输入输实现数据的移位输入输出时出时,实际上是把串行口变成为并行口使用。串实际上是把串行口变成为并行口

30、使用。串行口作为并行口作为并 行口输出使用时,要有行口输出使用时,要有“串入并出串入并出”的移位寄存器(例的移位寄存器(例 如如CD4094CD4094或或74LS16474LS164、74HC16474HC164等)配合,按此要求等)配合,按此要求 所设计的电路原理图如下图所设计的电路原理图如下图所示所示 :发送过程可叙述如下:发送过程可叙述如下:数据预先写入串行口数据缓冲器,然后从串行口数据预先写入串行口数据缓冲器,然后从串行口RXDRXD端,在移位时钟脉冲(端,在移位时钟脉冲(TXDTXD)的控制下,逐位移)的控制下,逐位移入入CD4094CD4094。当。当8 8位数据全部移出后,位数

31、据全部移出后,SCONSCON寄存器的发寄存器的发送中断送中断TITI被自动置被自动置“1”1”。其后主程序就可用中断或查。其后主程序就可用中断或查询的方法,通过设置询的方法,通过设置STBSTB状态的控制,把状态的控制,把CD4094CD4094的内容的内容并行输出。并行输出。使用使用C51C51编程语言编写的程序代码如下:编程语言编写的程序代码如下:/*/*功能说明:功能说明:*/*查询方式发送数据查询方式发送数据,使用使用CD4094CD4094扩展扩展IOIO接口点亮二极管接口点亮二极管*/*/#include#include#define#define ucharuchar unsi

32、gned char unsigned char/定义定义P1.0P1.0引脚用于控制引脚用于控制CD4094CD4094的的STBSTB引脚引脚sbitsbit STB=P10;STB=P10;/*延时函数延时函数*/void void delay(intdelay(int a)a)intint i,ji,j;for(ifor(i=0;i=0;ia;ia;i+)+)for(jfor(j=0;j255;j+);=0;j1;/1;/继续继续 7.4.2 7.4.2 串行口工作方式串行口工作方式1 1方式方式1 1是是1010位数据的异步通信口。位数据的异步通信口。TXDTXD为数据发送引脚,为数据

33、发送引脚,RXDRXD为数据接收引脚,传送一帧数据的格式如图所示。为数据接收引脚,传送一帧数据的格式如图所示。其中其中1 1位起始位,位起始位,8 8位数据位,位数据位,1 1位停止位。位停止位。1.1.方式方式1 1传送的数据格式传送的数据格式2.2.方式方式1 1数据的发送与接收数据的发送与接收n 数据发送由一条数据发送由一条CPUCPU写入发送寄存器写入发送寄存器SBUFSBUF的指令的指令启动。启动。8 8位数据在串行口由硬件自动加入起始位和停止位数据在串行口由硬件自动加入起始位和停止位组成完整的帧格式。在内部移位脉冲作用下位组成完整的帧格式。在内部移位脉冲作用下,由由TXDTXD端串

34、行输出。一帧数据发送完后端串行输出。一帧数据发送完后,TXD,TXD输出线维持输出线维持“1”1”状态,并将状态,并将SCONSCON寄存器的寄存器的TITI置置“1”1”,通知,通知CPUCPU可发送可发送下一个数据。下一个数据。2.2.方式方式1 1数据的发送与接收数据的发送与接收n 接收数据时接收数据时,当当SCONSCON的的RENREN位为允许接收状态时位为允许接收状态时,串行口采样串行口采样RXDRXD端,当采样到从端,当采样到从“1”1”向向“0”0”状态跳状态跳变时变时,就认定是接收到起始位。随后在移位脉冲的控制就认定是接收到起始位。随后在移位脉冲的控制下下,把收到的数据位移入

35、输入移位寄存器把收到的数据位移入输入移位寄存器,直到停止位直到停止位到来之后把停止位送入到来之后把停止位送入RB8RB8中中,输入移位寄存器的数据输入移位寄存器的数据送入接收缓冲器送入接收缓冲器(SBUF)(SBUF)中中,并置位中断标志位并置位中断标志位RI,RI,通知通知CPUCPU从从SBUFSBUF取走接收到的一个字符。取走接收到的一个字符。3.3.波特率的设定波特率的设定 方式方式1 1的波特率是可变的,以定时器的波特率是可变的,以定时器T1T1作波特率发作波特率发器使用,其值由定时器器使用,其值由定时器1 1的计数溢出率来决定,其公式的计数溢出率来决定,其公式为:为:其中其中SMO

36、DSMOD为为PCONPCON寄存器的最高位的值寄存器的最高位的值,其值为其值为1 1或或0.0.当定时器当定时器1 1作波特率发生器使用时作波特率发生器使用时,选用方式选用方式2(2(即即8 8位自动加载方式位自动加载方式)。因为方式。因为方式2 2具有自动加载功能具有自动加载功能,可以可以避免通过程序反复装入初值所引起的定时误差避免通过程序反复装入初值所引起的定时误差,使波特使波特率更加稳定。率更加稳定。假定计数初值为假定计数初值为X,X,则则波特率计算公式为:波特率计算公式为:SMOD12=T32波特率溢出率SMOD2fosc=3212256-波特率(X)4.4.串口初始化程序串口初始化

37、程序 方式方式1 1中串口初始化一般按以下步骤来编写:中串口初始化一般按以下步骤来编写:(1)(1)设置串口工作方式;设置串口工作方式;(2)(2)确定定时器确定定时器1 1的工作方式;的工作方式;(3)(3)确定波特率倍增器的值;确定波特率倍增器的值;(4)(4)确定定时器确定定时器1 1的初值;的初值;(5)(5)确定数据发送和接收方式,若采用中断方式必确定数据发送和接收方式,若采用中断方式必须设置相应的中断控制位,若采用采用查询方式则须设置相应的中断控制位,若采用采用查询方式则 必须禁止串口中断;必须禁止串口中断;(6)(6)启动定时器启动定时器1 1。例例6-2 6-2 某某5151单

38、片机系统的主频为单片机系统的主频为11.0592MHZ,11.0592MHZ,现现拟以工作方式拟以工作方式1 1与外部设备进行串行数据通信,波特率与外部设备进行串行数据通信,波特率为为2400,2400,试编写该单片机串口初始化程序。试编写该单片机串口初始化程序。分析:因串口采用方式分析:因串口采用方式1,1,不考虑多机通信不考虑多机通信,接收允接收允许则许则SCONSCON控制字为控制字为50H;50H;定时器定时器1 1作波特率发生器使用时作波特率发生器使用时,选用方式选用方式2,2,不考不考虑定时器虑定时器0,0,则则TMODTMOD控制字应为控制字应为20H;20H;若波特率特率倍增器

39、有效若波特率特率倍增器有效,即即SMOD=1,PCON=80H;SMOD=1,PCON=80H;定时器的初值:定时器的初值:H8E2322400123220592.1125612322256X1SMODosc波特率f 采用查询方式接收和发送数据的初始化子程序可用采用查询方式接收和发送数据的初始化子程序可用C51C51编写为:编写为:Void initial_mode1_ check(void)Void initial_mode1_ check(void)SCON=0 x50;/SCON=0 x50;/串口方式串口方式1 1、SM2=0SM2=0、接收收允许、接收收允许 TMOD=0 x20;/

40、TMOD=0 x20;/定时器定时器1 1设定为方式设定为方式2 2 PCON=0 x80;/PCON=0 x80;/设置波特率为设置波特率为2400bps,2400bps,SMOD=1 SMOD=1 TH1=0Xe8;/TH1=0Xe8;/设置定时器设置定时器1 1的初值的初值 TL1=0Xe8;/TL1=0Xe8;/设置定时器设置定时器1 1重新装载值重新装载值 ES=0;ES=0;/禁止串口中断禁止串口中断 TR1=1;TR1=1;/启动定时器启动定时器1 1,串口控制器开始工作,串口控制器开始工作 若采用中断方式接收和发送数据的初始化子程序可若采用中断方式接收和发送数据的初始化子程序可

41、用用C51C51编写为:编写为:Void initial_mode1_int(void)Void initial_mode1_int(void)SCON=0 x50;SCON=0 x50;/串口方式串口方式1 1、SM2=0SM2=0、接收允许、接收允许TMOD=0 x20;TMOD=0 x20;/定时器定时器1 1设定为方式设定为方式2 2PCON=0 x80;PCON=0 x80;/设置波特率为设置波特率为2400bps,SMOD=12400bps,SMOD=1TH1=0Xe8;TH1=0Xe8;/设置定时器设置定时器1 1的初值的初值TL1=0Xe8;/TL1=0Xe8;/设置定时器设置

42、定时器1 1重新装载值重新装载值ES=1;ES=1;/允许串口中断允许串口中断 PS=1;PS=1;/串口中断为高优先级串口中断为高优先级TR1=1;TR1=1;/启动定时器启动定时器1 1,串口控制器开始工作,串口控制器开始工作 5.5.串行接口调试串行接口调试 串行口通信程序的调试相对比较复杂串行口通信程序的调试相对比较复杂,只有当通信双方的只有当通信双方的硬件和软件都正确无误时硬件和软件都正确无误时,才能实现成功通信。才能实现成功通信。当调试中出现无法正常通信的问题时,首先应检查硬件当调试中出现无法正常通信的问题时,首先应检查硬件是否工作正常,通常可能表现为:通信接口芯片损坏,通信是否工

43、作正常,通常可能表现为:通信接口芯片损坏,通信线路接触不良等。线路接触不良等。为了迅速准确查明通信中的故障点为了迅速准确查明通信中的故障点,可采用编制测试程序可采用编制测试程序的方法配合查找硬件问题。的方法配合查找硬件问题。一般按照以下步骤进行检查:一般按照以下步骤进行检查:1)1)本机发送通路检查本机发送通路检查:本机发送通路检查一般断开串口连本机发送通路检查一般断开串口连接线接线,编写测试程序连续发送字符编写测试程序连续发送字符“55H”55H”或或“AAH”,AAH”,通过检通过检测发送引脚的信号是否正常测发送引脚的信号是否正常,来确定本机数据发送通路是否工来确定本机数据发送通路是否工作

44、正常。作正常。假设串口初始化程序与例假设串口初始化程序与例6-26-2一致并采用查询发送一致并采用查询发送方式,用方式,用C51C51编写的测试程序如下:编写的测试程序如下:#include#include void initial_mode1_ check(void);void initial_mode1_ check(void);void void main(voidmain(void)initial_mode1_ check();/initial_mode1_ check();/调用串口初始化程序调用串口初始化程序 while(1)while(1)/程序不断发送程序不断发送0 xAA0

45、xAA SBUF=0 xAA;SBUF=0 xAA;while(TIwhile(TI!=1);!=1);TI=0;TI=0;注注:为了减少篇幅为了减少篇幅,本程序直接调用了例本程序直接调用了例6-26-2的串口初的串口初始化程序始化程序,后面的例子采用同样的方法后面的例子采用同样的方法,不再做说明。不再做说明。(2)(2)本机回环自检本机回环自检:指断开本机与外部设备的串口连接线指断开本机与外部设备的串口连接线,把本机的数据发送和数据接收端短接把本机的数据发送和数据接收端短接,即采用自发自收的方即采用自发自收的方式来确认本机的收发通路都是正常的。式来确认本机的收发通路都是正常的。用用C51C5

46、1编写的测试程序如下:编写的测试程序如下:#include#include void initial_mode1_check(void);void initial_mode1_check(void);void void main(voidmain(void)initial_mode1_look();/initial_mode1_look();/调用串口初始化程序调用串口初始化程序 while(1)while(1)SBUF=0 xAA;SBUF=0 xAA;/发送发送0 xAA0 xAA while(TIwhile(TI!=1);!=1);/等待发送完成等待发送完成 TI=0;TI=0;whil

47、e(RIwhile(RI!=1);/!=1);/等待接收数据等待接收数据 /接收数据若不是接收数据若不是0 xAA,0 xAA,则停止发送数据则停止发送数据 while(SBUFwhile(SBUF!=0 xAA);!=0 xAA);RI=0;RI=0;(3)(3)联机检查联机检查:指两台设备串口连接线接好后的通指两台设备串口连接线接好后的通信信.通路的检查,一般通过发送一个约定的检验通路的检查,一般通过发送一个约定的检验字并要求对方有一个约定的回应方式,如果回应字并要求对方有一个约定的回应方式,如果回应正确则表明通信信道顺畅。正确则表明通信信道顺畅。例如约定检验字为例如约定检验字为AAHAA

48、H,回应字也为,回应字也为AAHAAH,用,用C51C51 编写的测试程序与本机回环自检的程序可以完编写的测试程序与本机回环自检的程序可以完全一致。全一致。7.7.应用程序举例应用程序举例例例6-3 6-3 设有甲乙两台单片机系统,均采用设有甲乙两台单片机系统,均采用11.059211.0592MHzMHz的晶振的晶振,采用串行口进行通信采用串行口进行通信,数据传输率为数据传输率为24002400bpsbps。甲机将存储于外部。甲机将存储于外部RAMRAM起始地址为起始地址为0100H0100H的的8 8个个数据发送给乙机数据发送给乙机,乙机把接收到的乙机把接收到的8 8个数据存储于一个个数据

49、存储于一个定位于片内寄存器的数组中。乙机接收完数据后将存定位于片内寄存器的数组中。乙机接收完数据后将存储于外部储于外部RAMRAM起始地址为起始地址为0100H0100H的的8 8个数据发送给甲个数据发送给甲机机,甲机也将接收的甲机也将接收的8 8个数据也存储于定位于片内寄存个数据也存储于定位于片内寄存器的数组中,甲机再将存储于外部器的数组中,甲机再将存储于外部RAMRAM起始地址为起始地址为0100H0100H的的8 8个数据发送给乙机,实现循环往复的通信过个数据发送给乙机,实现循环往复的通信过程。为了保证通信数据的准确无误,需要在发送数据程。为了保证通信数据的准确无误,需要在发送数据之前检

50、查通信通道是否顺畅。之前检查通信通道是否顺畅。分析:单片机串行通信的程序设计,一般可采用查分析:单片机串行通信的程序设计,一般可采用查询方式或中断方式两种,这个例子相对任务单一,所询方式或中断方式两种,这个例子相对任务单一,所以可以直接使用查询方式实现通信的编程方法。以可以直接使用查询方式实现通信的编程方法。题目要求在发送数据之前检查通信信道是否顺畅,题目要求在发送数据之前检查通信信道是否顺畅,可采用联机检查方式可采用联机检查方式,约定检验字为约定检验字为AAH,AAH,回应字也为回应字也为AAHAAH。甲机先发送检验字。甲机先发送检验字AAHAAH,若收到回应字也为,若收到回应字也为AAHA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(单片机的串行接口及串行通信V课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|