首页计算机计算机工程单片机原理及应用 09 项目9 串行口通信.pptx

09 项目9 串行口通信.pptx

页数:37页文件大小:767.2 KB来源: 单片机原理及应用ppt课件

本课件讲解单片机串行通信技术:先对比并行与串行通信并介绍单工、半双工、全双工三种制式和异步、同步帧格式,再说明波特率计算与RS-232C电平转换,最后讲清MCS-51串行口的结构、SCON设置与四种工作方式及双机通信实现。

项目9 串行口通信封面页,标示本章主题为单片机串行口通信
串行与并行通信方式示意图,对比图(a)并行通信多位同时传送与图(b)串行通信逐位顺序传送
并行通信与串行通信对比说明页,从速度、传输线数量、成本与适用距离四个方面比较二者差异
查看本课件的文字版(共 37 页,供检索与复制)

第1页:项目9 串行口通信封面

项目9「串行口通信」是《单片机原理及应用》的项目之一,系统讲解串行通信的原理、MCS-51串行口的结构与工作方式,以及双机通信和单片机与PC机的接口设计。

第2页:串行通信与并行通信

计算机与外界的信息交换称为通信,基本的通信方法有并行通信和串行通信两种。

  • 并行通信:一组信息的各位数据被同时传送
  • 串行通信:一组信息的各位数据被逐位按顺序在一条线上传送

第3页:并行通信与串行通信的特点

9.1.1 串行通信与并行通信。MCS-51单片机中实现并行通信主要依靠其并行I/O接口;串行通信则使用一组专门的串行通信引脚P3.0(RXD)和P3.1(TXD)。

并行通信
速度快,但传输线根数多;成本高;较适用于近距离(相距数公尺)的通信。
串行通信
速度相对较慢,但传输线少;成本低;较适用于长距离通信。

第4页:单工串行通信制式

9.1.2 串行通信制式。串行通信的数据在两个站之间传送,按照数据传送方向可分为单工、半双工和全双工三种制式。

单工制式下,通信线的一端接发送器,一端接接收器,数据只能按照一个固定的方向传送。

第5页:半双工串行通信制式

半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,但同一时刻只能有一个站发送、一个站接收,两个方向上的数据传送不能同时进行,收发开关一般是由软件控制的电子开关。

第6页:全双工串行通信制式

全双工通信系统的每端都有发送器和接收器,可以同时发送和接收,数据可以在两个方向上同时传送。

实际应用中,尽管多数串行通信接口电路具有全双工功能,但一般情况下只工作于半双工制式下,这种用法简单、实用。

第7页:异步通信的字符帧格式

9.1.3 串行通信的分类。按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。

异步通信的发送端和接收端各有独立时钟,互不同步,数据以字符为单位组成字符帧传送,字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位四部分组成,低位在前、高位在后。

第8页:异步通信字符帧的两种格式

图9-5 异步通信的字符帧格式,包含无空闲位字符帧和有空闲位字符帧两种形式。图9-5(b)表示有3个空闲位的字符帧格式。

第9页:异步通信字符帧各部分定义

异步通信字符帧由四部分组成:

  • 起始位:位于字符帧开头,只占一位,为逻辑0低电平,表示发送端开始发送一帧信息
  • 数据位:紧跟起始位之后,可取5位、6位、7位或8位,低位在前高位在后
  • 奇偶校验位:位于数据位之后,仅占一位,表征采用奇校验还是偶校验
  • 停止位:位于字符帧最后,为逻辑1高电平,通常可取1位、1.5位或2位

异步通信的优点是不需要传送同步时钟、字符帧长度不受限制、设备简单;缺点是帧中包含起始位和停止位而降低了有效数据的传输速率。

第10页:同步通信的字符帧格式

同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。同步字符帧通常由若干个数据字符组成,由同步字符、数据字符和校验字符CRC三部分组成。图9-6(a)为单同步字符帧结构,图9-6(b)为双同步字符帧结构。

第11页:波特率的定义与计算

9.1.4 波特率。波特率是每秒钟传送二进制数码的位数,也叫比特数,单位为b/s(位/秒),用于表征数据传输的速度,波特率越高数据传输速度越快。

波特率与字符的实际传输速率不同,后者是每秒内所传字符帧的帧数。例如,波特率设置为9600b/s并采用10位的字符帧时,实际字符速率为9600÷10=960字符/秒。

在MCS-51单片机中,异步通信的波特率取50~9600b/s之间较为合适。

第12页:RS-232C通信标准概述

9.1.5 RS-232C通信标准。RS-232C是使用最早、应用最多的一种异步串行通信总线标准,由美国电子工业协会(EIA)1962年公布、1969年最后修定。其中RS表示Recommended Standard,232是标识号,C表示最后一次修定。

RS-232C主要定义数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能,适用于设备之间通信距离不大于15m、传输速率最大为20kb/s的场景。

第13页:RS-232C的信息格式标准

RS-232C采用串行格式:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶校验位。如果两个信息之间无信息,则写“1”,表示空。

第14页:RS-232C 9针串口引脚功能

RS-232C串行通信总线接口:标准总线为25根,可采用标准的DB-25和DB-9的D型插头。目前计算机上只保留了两个DB-9插头,作为COM1和COM2两个串行接口的连接器。

表9-1 RS-232C 9针串口各引脚功能
引脚信号名称引脚信号名称
1DCD 载波检测6DSR 数据准备完成
2RXD 接收数据7RTS 发送请求
3TXD 发送数据8CTS 发送清除
4DTR 数据终端准备完成9RI 振铃指示
5SG(GND) 信号地线——

说明:源文本中九针串口的引脚编号与信号名顺序错乱,此处按DB-9标准引脚编号1—9重新对齐,建议对照原课件图片核对。

第15页:RS-232C电平转换芯片MC1488

RS-232C采用负逻辑:逻辑“0”为+5V~+15V,逻辑“1”为-5V~-15V。因此RS-232C不能和TTL电平直接相连,必须进行电平转换,否则将使TTL电路烧坏。

常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489:

  • MC1488:内部有三个与非门和一个反相器,供电电压±12V,输入TTL电平,输出RS-232C电平
  • MC1489:内部有4个反相器,供电电压±5V,输入RS-232C电平,输出TTL电平

第16页:MAX232电平转换芯片引脚结构

MAX232是专门为电脑RS-232标准串口设计的接口电路,使用+5V单电源供电。

芯片内部结构可分三个部分:

  • 电荷泵电路:由1、2、3、4、5、6脚和4只电容构成,产生+12V和-12V两个电源
  • 数据转换通道:由7、8、9、10、11、12、13、14脚构成两个数据通道
  • 供电部分:15脚GND、16脚VCC(+5V)

第17页:MAX232与MCS-51的典型接法

图9-10为MAX232芯片与MCS-51单片机的一般接法,是项目9.1节中给出的采用MAX232芯片的PC机和单片机串行通信接口电路。

第18页:MCS-51串行口结构

9.2.1 串行口结构。MCS-51内部有两个独立的接收、发送缓冲器SBUF,SBUF属于特殊功能寄存器。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址99H。

第19页:MCS-51串行口工作原理

9.2.2 串行口工作原理。MCS-51单片机串行口的工作原理大致如下:

  • 定时器1负责产生所需的波特率
  • 发送SBUF和接收SBUF分别暂存发送与接收数据,容量各1个字节
  • 发送数据控制器和输出数据控制器受串行控制器SCON控制,将数据一位一位通过TXD(P3.1)送出或从RXD(P3.0)读入
  • 发送或接收完一帧数据后TI或RI置1,向串行口中断送“1”,即向CPU申请中断

第20页:串行口数据缓冲器SBUF

串行口数据缓冲器SBUF是两个在物理上独立的接收、发送寄存器,可同时发送和接收数据,共用地址99H。通过对SBUF的读、写指令来区别操作对象。

  • 写SBUF:修改发送缓冲器,如 MOV SBUF,#data 通过串口发送立即数data
  • 读SBUF:读接收缓冲器的内容,如 MOV A,SBUF 接收数据到累加器A

接收或发送数据通过RXD(P3.0)、TXD(P3.1)两条独立收发信号线实现,工作方式为全双工制式。

第21页:串行口控制寄存器SCON格式

串行口控制寄存器SCON用来控制串行口的工作方式和状态,可位寻址,字节地址为98H,单片机复位时所有位全为0。

表9-2 SCON的各位定义
位地址位名称位地址位名称
9FHSM09BHTB8
9EHSM19AHRB8
9DHSM299HTI
9CHREN98HRI

说明:源文本中SCON各位按地址98H—9FH从左到右排列,此处按标准位序(9FH—98H,即SM0、SM1、SM2、REN、TB8、RB8、TI、RI)还原,建议对照原课件图片核对。

第22页:SCON各控制位功能说明

表9-2中各位的功能说明如下:

  • SM0、SM1:串行口工作方式选择位,由软件置位或清零,用于选择串行口的4种工作方式
  • SM2:多机通信控制位,用于方式2和方式3中
  • REN:允许串行接收位,REN=1时允许接收,REN=0时禁止接收
  • TB8:发送数据的第9位,可做奇偶校验位或多机通信中的地址帧/数据帧标识位
  • RB8:接收数据的第9位,功能类似TB8
  • TI:发送中断标志位,发送完一帧数据后置位
  • RI:接收中断标志位,接收完一帧数据后置位

第23页:串行口的四种工作方式

9.2.3 串行口的工作方式。MCS-51的串行口有4种工作方式,由SCON中的SM0、SM1位决定。方式0不用于通信,而是通过外接移位寄存器芯片实现扩展并行I/O接口;方式1、方式2、方式3都是异步通信方式。

表9-4 串行方式的定义
SM0 SM1工作方式帧格式波特率功能
0 0方式08位同步移位fosc/12同步移位寄存器方式
0 1方式110位异步收发(8位数据)可变双机串行通信
1 0方式211位异步收发(9位数据)fosc/64或fosc/32多机通信
1 1方式311位异步收发(9位数据)可变多机通信

说明:源文本中表9-4的“帧格式”列数字粘连严重,帧位数依据正文叙述推定(方式0为8位同步移位、方式1为10位异步、方式2和方式3为11位异步),建议对照原课件图片核对后再入库。

第24页:方式0的发送与扩展I/O输出

方式0下串行口作同步移位寄存器用,波特率固定为fosc/12,串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出,常用于扩展I/O口。

发送时,当一个数据写入发送缓冲器SBUF,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断;再次发送前必须由软件清TI为0。具体接线图中,74LS164为串入并出移位寄存器。

第25页:方式0的接收与扩展I/O输入

方式0接收时,在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),接收完8位数据后置中断标志RI为1,请求中断;再次接收前必须由软件清RI为0。具体接线图中,74LS165为并入串出移位寄存器。串行控制寄存器SCON中的TB8和RB8在方式0中未用。

第26页:方式1的帧格式

方式1为8位异步通信方式。一帧信息为10位:1位起始位、8位数据位(低位在前)和1位停止位。TXD为发送端,RXD为接收端。

第27页:方式1的发送过程

串行口以方式1发送数据时,数据由TXD端输出。当CPU将数据写入发送缓冲器时便启动串行口发送,发送完一帧信息后置TI为1。

方式1发送时的定时信号(发送移位脉冲)由定时器1送来的溢出信号经过16或32分频(取决于SMOD的值)获得,因此波特率是可变的,为(2^SMOD/32)×定时器1的溢出率。

第28页:方式1的接收过程

接收数据由RXD端输入,串行口以所选定波特率的16倍速率采样RXD端状态。在REN=1时,当检测到由1到0的变化(起始位),接收过程开始,在移位脉冲控制下把收到的数据一位一位移入接收移位寄存器,直到9位全部接收完毕,且当RI=0时将8位数据装入接收缓冲器SBUF,停止位送入RB8,并置RI为1。

第29页:方式1接收过程的四种情形

整个接收过程将受到RI和SM2位的影响:

  • RI=0、SM2=0:发出“装载SBUF”信号,8位数据装入SBUF,停止位装入RB8,置RI为1
  • RI=0、SM2=1且停止位为1:执行同上装载操作
  • RI=0、SM2=1且停止位为0:接收数据不装入SBUF,数据丢失
  • RI=1:接收数据在任何情况下都不装入SBUF,数据丢失

为保证数据接收可靠无误,对每一位数据要连续采样3次,取至少两次相同的值,以避开信号两端的边缘失真并防止收发时钟频率不一致导致的接收错误。

第30页:方式2的帧格式

方式2下串行口为11位UART,传送波特率与SMOD有关。发送或接收一帧数据包括1位起始位0、8位数据位、1位可编程位(用于奇偶校验)和1位停止位1。

第31页:方式2与方式3的发送接收

方式2发送时,先由软件设置TB8,再用指令将要发送的数据写入SBUF启动发送器,第9位装入发送移位寄存器,送完一帧后TI自动置1,发送下一帧前TI必须由中断服务程序或查询程序清0。

方式2接收时,当REN=1,数据由RXD端输入。若同时满足RI=0以及SM2=0或接收到的第9位数据为1,则接收数据有效,8位数据送入SBUF、第9位送入RB8并置RI=1;不满足则信息丢失。

方式3为波特率可变的11位UART通信方式,除波特率外与方式2完全相同。

第32页:四种工作方式的波特率计算

MCS-51串行口4种工作方式中,方式0和方式2的波特率固定,方式1和方式3的波特率可变,由定时器溢出率控制。

  • 方式0:固定波特率为时钟频率的1/12,即fosc/12
  • 方式2:取决于PCON中的SMOD值,SMOD=0时为fosc/64,SMOD=1时为fosc/32
  • 方式1和方式3:波特率=(2^SMOD/32)×定时器1的溢出率

定时器1的溢出率=(fosc/12)/(2^N-TC),其中N为定时器T1的位数,TC为预置初值。计数速率与TMOD寄存器中的C/T位有关:C/T=0时为fosc/12,C/T=1时为外部输入时钟频率。

第33页:定时器1方式2作波特率发生器

定时器1做波特率发生器使用时通常工作在定时器方式2(自动重装填的8位定时器),此时TL1作计数用,自动重装填的值存放在TH1内。设初值TX=X,则每过256-X个机器周期定时器溢出一次,同时应禁止T1中断以避免不必要的中断。

串行口的波特率发生器就是利用定时器提供一个时间基准,由于方式2是自动重装初值的8位定时/计数模式,用它来做波特率发生器最为合适。

第34页:例9.1 波特率计算实例

【例9.1】分析下面一段程序中的波特率,程序在晶振频率为11.059MHz下运行:

MOV TMOD,#20H MOV TL1,#0F4H MOV TH1,#0F4H SETB TR1

解:由第一行得知定时器1工作在方式2(8位自动装填);由第二、三行得知预置初值为244(0F4H);程序未对PCON寄存器操作,SMOD取初始值0。因此波特率=11.059×10^6/(12×(256-244)×32)=2400b/s。

说明:源文本未给出本例的最终计算结果,此处按程序设定的定时器初值与11.059MHz晶振推算,建议对照原课件图片核对。

第35页:定时器1方式2常用波特率与初值

表9-5:定时器T1在工作方式2时常用波特率及初值。

表9-5 定时器T1在工作方式2时常用波特率及初值
TH1初值SMODfosc(MHz)常用波特率(bps)
FDH111.059219200
FDH011.05929600
FAH011.05924800
F4H011.05922400
E8H011.05921200

说明:源文本中本表数字粘连严重,各单元格内容依据上下文顺序与“常用波特率=11.0592MHz下标准值”的标准表推定(含SMOD位),建议对照原课件图片核对后再入库。

第36页:双机通信的查询方式与中断方式

9.3 双机通信。MCS-51单片机与单个同系列其它单片机之间的通信称为单片机双机通信,与多个同系列其它单片机之间的通信称为单片机多机通信。图9-16为单片机双机通信连接图。

双机异步通信程序通常采用两种方法:

  • 查询方式:通过实时查询TI、RI的状态来确定数据是否发送或接收完毕,从而进行下一步操作
  • 中断方式:不需要实时查询TI、RI的状态,只要事先编写好合适的中断处理程序,在单片机接收完或发送完数据时中断系统会自动做相应的处理

第37页:单片机与PC机通信的接口设计

9.3.2 单片机与微机通信。串行通信并非MCS-51单片机所独有,只要两个或两个以上设备都具有串行口,它们之间就可以进行串行通信。

PC机的串行接口电平标准与MCS-51单片机不同:MCS-51输入、输出为TTL电平,PC机配置的是RS-232C标准接口,二者电气规范不同,须加电平转换电路。PC机和单片机最简单的连接是零调制三线经济型,这是进行全双工通信所必须的最少线路。常用的电平转换芯片有MC1488、MC1489和MAX232。

顶部目录