单片机原理与应用-KFIL C项目教程(西电版)项目八 串行口通信.ppt
《单片机原理与应用-KFIL C项目教程(西电版)项目八 串行口通信.ppt》由会员分享,可在线阅读,更多相关《单片机原理与应用-KFIL C项目教程(西电版)项目八 串行口通信.ppt(166页珍藏版)》请在三一办公上搜索。
1、项目八 串行口通信,8.1 项目说明 8.2 基础知识 8.3 项目实施 8.4 项目评价 8.5 拓展与提高,8.1 项 目 说 明 项目任务利用2个HOT-51单片机实验板实现双机通信,一个作为发送方,另一个作为接收方。将发送方实验板上矩阵式键盘中的16个按键均设置为数字键,当检测到有键闭合时,将闭合键的键号显示在接收方实验板的数码管上。,知识培养目标(1)掌握基本通信方式、串行通信方式及制式。(2)掌握51单片机串行口的结构及工作方式。(3)掌握51单片机串行口波特率的设置。(4)掌握方式0的应用。(5)掌握双机通信。,能力培养目标(1)能利用所学知识画出实现该任务的原理图。(2)能利用
2、所学知识正确地实现双机通信连接。(3)能利用KEIL C编写实现双机通信任务的源程序。(4)培养解决问题的能力。(5)培养沟通表达、团队协作的能力。,8.2 基 础 知 识8.2.1 串行通信概述1.通信概述在单片机控制系统中,单片机与外部设备、单片机与单片机或者计算机与单片机之间经常要进行信息交换,这些信息交换称为通信。基本的通信方式有并行通信和串行通信两种。,(1)并行通信:待传送n位数据用n条数据线同时传送(发送或接收)的通信方式。在并行通信中,一个并行数据占多少位二进制数,就要用多少根传输线,此外还需要一条地线和若干条控制信号线。这种方式的特点是通信速度快,但传输线较多,成本较高,仅适
3、用于短距离的数据传输。图8-1所示为传送8位数据11110100时并行通信示意图。,图8-1 并行通信,图8-2 串行通信,(2)串行通信:待传送数据的各位在一条数据线上按一定的顺序分时传送(发送或接收)。串行通信中不管传送多少位二进制数,都只需1条数据线,再加上1条公共信号地线或若干条控制信号线,故在远距离传输数据时比较经济,但由于它每次只能传送1位二进制数,故传送速度较慢。图8-2所示为传送8位数据11110100时串行通信示意图。51单片机内有4个并行I/O口用于并行通信、一个全双工UART(异步串行通信接口)用于串行通信。项目一项目七中主要介绍并行口P0P3的应用,本项目主要介绍串行口
4、的应用。,2.串行通信方式串行通信有异步串行通信和同步串行通信两种方式。1)异步串行通信异步串行通信是指通信的发送方与接收方使用各自的时钟控制数据的发送和接收,为使双方收、发协调,要求发送和接收设备的时钟尽可能一致。异步通信时只需要一条通信线路就可以实现从一方到另一方的数据传送,两条线路则可以实现数据的双向传输。,在异步通信中,数据通常是以字符为单位进行传送的,1个字符完整的通信格式,通常称为帧或帧格式。发送端逐帧发送,接收端逐帧接收。异步串行通信中帧格式一般由起始位、数据位、奇偶校验位和停止位四部分组成,如图8-3所示。异步通信时,发送方先发送1位起始位“0”,然后是58位数据,规定低位在前
5、,高位在后,其后是奇偶校验位(可无),最后是停止位“1”。从起始位开始到停止位结束,构成完整的1帧字符。,图8-3 异步串行通信数据格式,(1)异步串行通信各位的作用。起始位:起始位在一帧数据的开始位置,占1位,为低电平“0”,用于表示1帧数据的开始。通信线上没有数据传送时,为高电平1,接收端不断检测通信线的状态,当连续若干个“1”之后检测到一个“0”时,就知道发送方发送了一个新的字符,准备接收。数据位:起始位之后的若干位就是数据位。数据位可以是5、6、7或8位(不同计算机的规定不同)。传送时先是低位,后是高位。,奇偶校验位:数据位之后是奇偶校验位,占1位。奇偶校验是通过对数据进行奇偶性检查,
6、来判断字符传送的正确性。有奇校验、偶校验、无校验三种选择,用户可根据需要选择(在有的格式中,该位可省略)。通信双方须事先约定是采用奇校验,还是偶校验。停止位:一帧字符的末尾是停止位,用于表示一帧字符的结束。停止位是高电平“1”,占用1位、1.5位或2位,不同计算机的规定有所不同。这里的“位”对应于一定的发送时间,因此可以有半位。,异步串行通信是逐帧进行数据传输的,一帧中各位之间的时间间隔应该相同,所以必须保证两个单片机之间有相同的传输波特率,如果传输波特率不同,则时间间隔不同,当误差超过5%时,就不能正常进行通信;但是由于在信息传输时,各字符可以连续传送,也可以断续传送,因而帧与帧之间的时间间
7、隔可以是不固定的,帧与帧之间是高电平。,(2)异步串行通信的主要特点。异步串行通信的各单片机时钟相互独立,其时钟频率可以不相同,在通信时不要求有同步时钟信号,易实现;异步串行通信以帧为单位进行传输,而帧有固定格式,通信双方只须按约定的帧格式来发送和接收数据,因此,硬件结构比同步串行通信方式简单;此外,它还能利用校验位检测错误,所以在单片机与单片机、单片机与计算机之间仍广泛采用异步串行通信。异步串行通信的缺点是传输效率低。当采用1位起始位、8位数据位、1位奇偶位与1位停止位的帧格式时,有效数据仅占到了1帧字符的73%。数据位减少时,传输效率更低。,2)同步串行通信同步串行通信时由发送方对接收方进
8、行时钟的直接控制,从而使双方达到完全同步。同步通信是以数据块的形式进行数据的传输。每个数据块包括同步字符、数据和校验字符,如图8-4所示。同步字符:同步字符位于数据块的开始处,有12个字符,以实现发送端和接收端同步。一旦检测到约定的同步字符,就开始连续地发送和接收数据。数据:数据是传送的正文内容,由多个字符组成。校验字符:校验字符位于数据块的最后,用于检验传送的数据是否正确。,图8-4 同步串行通信数据格式,同步串行通信的主要特点:同步串行通信以数据块为单位传送,去掉了每个字符都必须具有的开始和结束标志,且一次可以发送一个数据块(多个数据),因此,同步通信的速度高于异步通信。由于这种方式易于进
9、行串行外围扩展,所以目前很多型号的单片机都增加了串行同步通信接口,如目前已得到广泛应用的I2C串行总线和SPI串行接口等。短距离同步通信时发送、接收方均采用两条通信线,其中一条用于由发送方向接收方提供时钟信号,另一条用于传送数据。再多加两条通信线,可以实现数据的双向传输,51单片机不支持数据的双向同步传输,只能分时复用两条通信线。,同步通信要求发送方和接收方时钟严格保持同步,在通信时通常要求有同步时钟信号,对硬件结构要求较高,所以较少使用。3.串行通信的制式在串行通信中,根据两机之间数据的传送方向,分为单工制式、半双工制式和全双工制式三种。三种制式的示意图分别如图8-5(a)、(b)、(c)所
10、示。(1)单工制式。在单工制式下,数据在甲机和乙机之间只允许单方向传送。例如,甲机发送、乙机接收,因而两机之间只需1条数据线。,图8-5 串行通信的三种制式,(2)半双工制式。在半双工制式下,数据在甲机和乙机之间允许双方向传送,但它们之间只有一个通信回路,接收和发送不能同时进行,只能分时发送和接收(即甲机发送、乙机接收,或者乙机发送、甲机接收),因而两机之间也只需1条数据线。(3)全双工制式。在全双工制式下,甲、乙两机之间数据的发送和接收可以同时进行,称为全双工传送。全双工制式的串行通信必须使用2条数据线。不管哪种制式的串行通信,在两机之间均应有公共地线。,4.串行通信的传送速率传送速率是指数
11、据传送的速度,即每秒钟传送二进制数的位数。在串行通信中,数据传送速率的单位用b/s或bps表示,称为波特率。假设每秒要传送120帧字符,每帧由1个起始位、8个数据位和1个停止位共10位组成,则波特率为(1+8+1)b120/s=1200 b/s每一位的传送时间为波特率的倒数,即T=1/1200=0.833 ms,国际规定的标准波特率系列为110、300、600、1200、1800、2400、4800、9600、19200,常用于计算机CRT终端,以及双机或多机之间的通信等。51单片机的串行口的波特率可以通过程序进行设置。5.通信协议在双机或多机通信时,通常要遵守一定的通信协议。通信协议是指通信
12、双方进行数据传输时的一些约定,包括数据格式、同步方式、通信方式、波特率、双机之间握手信号等问题的约定等。为保证通信双方能够准确、可靠地通信,相互之间必须遵循在通信之前约定的通信协议。,8.2.2 51单片机串行口简介51系列单片机芯片内部有一个UART串行接口,它是一个可编程的全双工异步串行通信接口,占用P3.0(串行数据接收端RXD)和P3.1(串行数据发送端TXD)两个引脚。通过软件编程可以设置为通用异步接收和发送器,也可设置为同步移位寄存器,还可实现多机通信。有8位、10位和11位三种帧格式,并能设置各种波特率,使用灵活、方便。1.51单片机串行口结构51单片机串行口结构框图如图8-6所
13、示。它主要由发送/接收缓冲寄存器SBUF、输入移位寄存器、发送控制器、接收控制器以及串行口控制寄存器SCON等组成。,图8-6 串行口结构框图,串行口控制寄存器SCON用于设置串行口的工作方式、接收/发送控制以及设定状态标志等;发送缓冲寄存器SBUF用于存放准备串行发送的数据;接收缓冲寄存器SBUF用于接收由外设输入到输入移位寄存器中的数据;定时器T1作为波特率发生器。在进行串行通信时,外部数据通过引脚RXD(P3.0,串行数据接收端)输入,输入数据首先逐位进入输入移位寄存器,将串行数据转换为并行数据,然后再送入接收缓冲寄存器SBUF。接收时,由输入移位寄存器和接收缓冲SBUF构成双缓冲结构,
14、以避免在接收到第2帧数据时,CPU未及时响应接收寄存器前一帧的中断请求,没把前一帧数据读走,而造成2帧数据重叠的错误。,在发送数据时,串行数据通过引脚TXD(P3.1,串行数据发送端)输出。由于CPU是主动的,因此不会产生写重叠问题,不需要双缓冲器结构。要发送的数据通过发送控制器控制逻辑门电路逐位输出。2.51单片机串行口的特殊功能寄存器与串行口工作有关的特殊功能寄存器有SBUF、SCON、PCON;与串行口中断有关的特殊功能寄存器有IE和IP。,1)发送/接收缓冲寄存器SBUF发送与接收缓冲寄存器SBUF在特殊功能寄存器中共用同一个字节地址99H,且共用一个名称,但在物理上是两个独立的寄存器
15、,可以同时发送、接收数据。CPU通过指令决定访问哪一个寄存器,执行写指令时,访问发送缓冲寄存器;执行读指令时,访问接收缓冲寄存器。该寄存器只能字节寻址,单片机复位后,SBUF=0。,2)串行口控制寄存器SCON串行口控制寄存器SCON用于串行口工作方式设定、接收和发送控制等。在特殊功能寄存器中,SCON的字节地址为98H,位地址(由低位到高位)分别是98H9FH,该寄存器可以位寻址。单片机复位后,SCON=0。SCON格式如表8-1所示。SM0、SM1串行口工作方式选择位。串行口有四种工作方式,由用户设置,如表8-2所示。,表8-1 串行口控制寄存器SCON(98H),表8-2 串行口的工作方
16、式,SM2多机通信控制位,由用户设置。用于方式2和方式3。SM2=0时,单片机通信;SM2=1时,多机通信。当SM2=1,允许多机通信时,如果接收到的第9位RB8为0,则RI不置1,不接收主机发来的数据;只有当SM2=1,且RB8为1时,才能够将RI置1,产生中断请求,将接收到的8位数据送入SBUF。当SM2=0时,不论RB8为0还是1,都将接收到的8位数据送入SBUF,并产生中断。REN接收允许位,由用户设置。REN=1时,允许接收;REN=0时,禁止接收。,TB8发送数据的第9位,由用户设置。用于方式2或方式3。双机通信时,约定为奇偶校验位;多机通信时,用以区分地址帧或数据帧,TB8=1时
17、,发送的是地址帧,TB8=0时,发送的是数据帧。方式0和方式1中未用该位。RB8接收数据的第9位,由用户设置。用于方式2或方式3。双机通信时,约定为奇偶校验位;多机通信时,用以区分地址帧或数据帧,RB8=1时,接收到的是地址帧,RB8=0时,接收到的是数据帧。方式0中未用该位;方式1中,如果SM2=0,则RB8为接收到的停止位。TI发送中断标志位,由硬件置位、用户清除。方式0中,发送完8位数据后,由硬件置位;其他方式中,在发送停止位之初,由硬件置位。TI=1时,可向CPU申请中断,也可供软件查询。无论任何方式,都必须由用户软件清除TI。,RI接收中断标志位,由硬件置位、用户清除。方式0中,接收
18、完8位数据后,由硬件置位;其他方式中,在接收停止位的中间,由硬件置位。RI=1时,可向CPU申请中断,也可供软件查询用。无论任何方式,都必须由用户软件清除RI。例如,设置串行口为方式1,允许接收数据时,SCON应为50H,即字节寻址:SCON=0 x50;位寻址:SM0=0;SM1=1;REN=1;,3)电源控制寄存器PCON电源控制寄存器PCON主要用于电源控制。在特殊功能寄存器中,PCON的字节地址为87H,该寄存器不能位寻址。单片机复位后,PCON=0。PCON格式如表8-3所示,在电源控制寄存器PCON中只有最高位SMOD对串行通信有影响。SMOD波特率倍增控制位,由用户设置。当SMO
19、D=1时,波特率加倍;当SMOD=0时,波特率不变。,表8-3 电源控制寄存器PCON(87H),4)中断允许控制寄存器IE中断允许控制寄存器IE用于控制与管理单片机的中断系统,可以位寻址,由用户设置。IE中的ES位用于设置串行口是否允许中断,当ES=0时,串行口关中断;当ES=1时,串行口开中断。5)中断优先级寄存器IP中断优先级寄存器IP用于管理单片机中各中断源的中断优先级,可以位寻址,由用户设置。IP中的PS位用于设置串行口中断优先级,当PS=0时,设置串行口为低优先级中断;当PS=1时,设置串行口为高优先级中断。,8.2.3 串行通信工作方式如前所述,51单片机的串行口有四种工作方式,
20、由串行口控制寄存器SCON中SM0、SM1两位进行设置。1.方式0采用方式0时,串行口作为8位同步移位寄存器,在发送数据时,SBUF相当于一个并行输入、串行输出的移位寄存器;在接收数据时,SBUF相当于一个串行输入、并行输出的移位寄存器。方式0时l帧字符为8位,先发送或接收最低位,其帧格式为,这种方式常用于扩展I/O口,波特率固定为fosc/12。由不同的指令实现输入或输出,串行数据由RXD(P3.0)输入或输出,由TXD(P3.1)提供同步移位脉冲。发送与接收过程如下。(1)发送。将某一字节数据写入SBUF时,由TXD输出同步移位脉冲,由RXD发送SBUF中的数据(低位在前),波特率为fos
21、c/12;8位数据发送完成后,由硬件将发送中断标志位TI置1,中断方式时向CPU申请中断;在中断服务函数中,先由用户将TI清0,然后再给SBUF送入下一个待发送的字符。,(2)接收。由于REN是串行口允许接收控制位,在RI=0时,先要由用户软件置REN为1,允许接收数据。然后读取SBUF,由TXD输出同步移位脉冲,CPU从RXD端接收串行数据(低位在前),波特率为fosc/12;当接收到8位数据时,由硬件将接收中断标志RI置为1,中断方式时向CPU申请中断;在中断服务函数中,先由用户将RI清0,然后读取SBUF。采用方式0时,串行口控制寄存器SCON中的SM2位必须为0、TB8和RB8位未使用
22、。每当发送或接收完8位数据时,由硬件将发送中断TI或接收中断RI标志置位,不管是中断方式还是查询方式,硬件都不会清除TI或RI标志,必须由用户软件清0。方式0主要用于扩展单片机的并行I/O口。,2.方式1采用方式1时,串行口为10位通用异步通信接口。发送或接收的1帧字符,包含1位起始位0、8位数据位和1位停止位1。其帧格式为波特率由T1的溢出率决定,由用户设置。采用方式1时TXD为数据发送端,RXD为数据接收端,发送与接收过程如下。,(1)发送。将某一字节数据写入发送缓冲寄存器SBUF时,数据从引脚TXD(P3.1)端异步发送。发送完1帧数据后,由硬件将发送中断标志位TI置1,中断方式时向CP
23、U申请中断,通知CPU发送下一个数据;在中断服务函数中,先由用户将TI清0,然后再给SBUF送入下一个待发送的字符。(2)接收。在RI=0时,先要由用户软件置REN为1,允许接收数据;串行口采样引脚RXD(P3.0),当采样到1至0的跳变时,表示接收起始位0,开始接收1帧数据,当停止位到来时,将停止位送至RB8,同时,由硬件将接收中断标志RI为1,中断方式时向CPU申请中断,通知CPU从SBUF取走接收到的1个数据;在中断服务函数中,先由用户将RI清0,然后读取SBUF。,不管是中断方式,还是查询方式,都不会清除TI或RI标志,必须由用户软件清0。通常在单片机与单片机双机串行口通信、单片机与计
24、算机串行口通信、计算机与计算机串行口通信时,都可以选择方式1。,3.方式2和方式3方式2和方式3均为11位异步串行通信方式,除了波特率的设置方法不同外,其余完全相同。方式2的波特率固定,由PCON中的SMOD位选择;方式3的波特率由T1溢出率控制。这两种方式发送/接收的1帧字符为11位,包含1位起始位0、8位数据位、1位可编程位(TB8/RB8)和1位停止位1。其帧格式为采用方式2和方式3时,TXD为数据发送端,RXD为数据接收端,发送与接收过程如下。,(1)发送。发送前,首先根据通信协议由软件设置TB8(如作奇偶校验位或地址/数据标识位),然后将要发送的数据写入发送缓冲寄存器SBUF。在发送
25、时,串行口自动将已定义的TB8位加入待发送的8位数据之后作为第9位,组成一帧完整字符后,由TXD端异步发送。发送完l帧数据后,由硬件将发送中断标志位TI置1,中断方式时向CPU申请中断,通知CPU发送下一个数据;在中断服务函数中,先由用户将TI清0,然后再给SBUF送入下一个待发送的字符。(2)接收。当RI=0时,先要由用户软件置REN为1,允许接收数据,将接收数据的第9位送入RB8。由SM2和RB8决定该数据能否接收。,当SM2=0时,不管RB8为0还是为1,RI都置1,串行口无条件接收。当SM2=1时,是多机通信方式,接收到的RB8是地址/数据标志位。当RB8=1时,表示接收的是地址帧,此
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理与应用KFIL C项目教程西电版项目八 串行口通信 单片机 原理 应用 KFIL 项目 教程 西电版 串行口 通信

链接地址:https://www.31ppt.com/p-6246913.html