页数:37页文件大小:767.2 KB来源: 单片机原理及应用ppt课件
本课件讲解单片机串行通信技术:先对比并行与串行通信并介绍单工、半双工、全双工三种制式和异步、同步帧格式,再说明波特率计算与RS-232C电平转换,最后讲清MCS-51串行口的结构、SCON设置与四种工作方式及双机通信实现。
项目9「串行口通信」是《单片机原理及应用》的项目之一,系统讲解串行通信的原理、MCS-51串行口的结构与工作方式,以及双机通信和单片机与PC机的接口设计。
计算机与外界的信息交换称为通信,基本的通信方法有并行通信和串行通信两种。
9.1.1 串行通信与并行通信。MCS-51单片机中实现并行通信主要依靠其并行I/O接口;串行通信则使用一组专门的串行通信引脚P3.0(RXD)和P3.1(TXD)。
9.1.2 串行通信制式。串行通信的数据在两个站之间传送,按照数据传送方向可分为单工、半双工和全双工三种制式。
单工制式下,通信线的一端接发送器,一端接接收器,数据只能按照一个固定的方向传送。
半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,但同一时刻只能有一个站发送、一个站接收,两个方向上的数据传送不能同时进行,收发开关一般是由软件控制的电子开关。
全双工通信系统的每端都有发送器和接收器,可以同时发送和接收,数据可以在两个方向上同时传送。
实际应用中,尽管多数串行通信接口电路具有全双工功能,但一般情况下只工作于半双工制式下,这种用法简单、实用。
9.1.3 串行通信的分类。按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。
异步通信的发送端和接收端各有独立时钟,互不同步,数据以字符为单位组成字符帧传送,字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位四部分组成,低位在前、高位在后。
图9-5 异步通信的字符帧格式,包含无空闲位字符帧和有空闲位字符帧两种形式。图9-5(b)表示有3个空闲位的字符帧格式。
异步通信字符帧由四部分组成:
异步通信的优点是不需要传送同步时钟、字符帧长度不受限制、设备简单;缺点是帧中包含起始位和停止位而降低了有效数据的传输速率。
同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。同步字符帧通常由若干个数据字符组成,由同步字符、数据字符和校验字符CRC三部分组成。图9-6(a)为单同步字符帧结构,图9-6(b)为双同步字符帧结构。
9.1.4 波特率。波特率是每秒钟传送二进制数码的位数,也叫比特数,单位为b/s(位/秒),用于表征数据传输的速度,波特率越高数据传输速度越快。
波特率与字符的实际传输速率不同,后者是每秒内所传字符帧的帧数。例如,波特率设置为9600b/s并采用10位的字符帧时,实际字符速率为9600÷10=960字符/秒。
在MCS-51单片机中,异步通信的波特率取50~9600b/s之间较为合适。
9.1.5 RS-232C通信标准。RS-232C是使用最早、应用最多的一种异步串行通信总线标准,由美国电子工业协会(EIA)1962年公布、1969年最后修定。其中RS表示Recommended Standard,232是标识号,C表示最后一次修定。
RS-232C主要定义数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能,适用于设备之间通信距离不大于15m、传输速率最大为20kb/s的场景。
RS-232C采用串行格式:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶校验位。如果两个信息之间无信息,则写“1”,表示空。
RS-232C串行通信总线接口:标准总线为25根,可采用标准的DB-25和DB-9的D型插头。目前计算机上只保留了两个DB-9插头,作为COM1和COM2两个串行接口的连接器。
| 引脚 | 信号名称 | 引脚 | 信号名称 |
|---|---|---|---|
| 1 | DCD 载波检测 | 6 | DSR 数据准备完成 |
| 2 | RXD 接收数据 | 7 | RTS 发送请求 |
| 3 | TXD 发送数据 | 8 | CTS 发送清除 |
| 4 | DTR 数据终端准备完成 | 9 | RI 振铃指示 |
| 5 | SG(GND) 信号地线 | — | — |
说明:源文本中九针串口的引脚编号与信号名顺序错乱,此处按DB-9标准引脚编号1—9重新对齐,建议对照原课件图片核对。
RS-232C采用负逻辑:逻辑“0”为+5V~+15V,逻辑“1”为-5V~-15V。因此RS-232C不能和TTL电平直接相连,必须进行电平转换,否则将使TTL电路烧坏。
常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489:
MAX232是专门为电脑RS-232标准串口设计的接口电路,使用+5V单电源供电。
芯片内部结构可分三个部分:
图9-10为MAX232芯片与MCS-51单片机的一般接法,是项目9.1节中给出的采用MAX232芯片的PC机和单片机串行通信接口电路。
9.2.1 串行口结构。MCS-51内部有两个独立的接收、发送缓冲器SBUF,SBUF属于特殊功能寄存器。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址99H。
9.2.2 串行口工作原理。MCS-51单片机串行口的工作原理大致如下:
串行口数据缓冲器SBUF是两个在物理上独立的接收、发送寄存器,可同时发送和接收数据,共用地址99H。通过对SBUF的读、写指令来区别操作对象。
接收或发送数据通过RXD(P3.0)、TXD(P3.1)两条独立收发信号线实现,工作方式为全双工制式。
串行口控制寄存器SCON用来控制串行口的工作方式和状态,可位寻址,字节地址为98H,单片机复位时所有位全为0。
| 位地址 | 位名称 | 位地址 | 位名称 |
|---|---|---|---|
| 9FH | SM0 | 9BH | TB8 |
| 9EH | SM1 | 9AH | RB8 |
| 9DH | SM2 | 99H | TI |
| 9CH | REN | 98H | RI |
说明:源文本中SCON各位按地址98H—9FH从左到右排列,此处按标准位序(9FH—98H,即SM0、SM1、SM2、REN、TB8、RB8、TI、RI)还原,建议对照原课件图片核对。
表9-2中各位的功能说明如下:
9.2.3 串行口的工作方式。MCS-51的串行口有4种工作方式,由SCON中的SM0、SM1位决定。方式0不用于通信,而是通过外接移位寄存器芯片实现扩展并行I/O接口;方式1、方式2、方式3都是异步通信方式。
| SM0 SM1 | 工作方式 | 帧格式 | 波特率 | 功能 |
|---|---|---|---|---|
| 0 0 | 方式0 | 8位同步移位 | fosc/12 | 同步移位寄存器方式 |
| 0 1 | 方式1 | 10位异步收发(8位数据) | 可变 | 双机串行通信 |
| 1 0 | 方式2 | 11位异步收发(9位数据) | fosc/64或fosc/32 | 多机通信 |
| 1 1 | 方式3 | 11位异步收发(9位数据) | 可变 | 多机通信 |
说明:源文本中表9-4的“帧格式”列数字粘连严重,帧位数依据正文叙述推定(方式0为8位同步移位、方式1为10位异步、方式2和方式3为11位异步),建议对照原课件图片核对后再入库。
方式0下串行口作同步移位寄存器用,波特率固定为fosc/12,串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出,常用于扩展I/O口。
发送时,当一个数据写入发送缓冲器SBUF,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断;再次发送前必须由软件清TI为0。具体接线图中,74LS164为串入并出移位寄存器。
方式0接收时,在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),接收完8位数据后置中断标志RI为1,请求中断;再次接收前必须由软件清RI为0。具体接线图中,74LS165为并入串出移位寄存器。串行控制寄存器SCON中的TB8和RB8在方式0中未用。
方式1为8位异步通信方式。一帧信息为10位:1位起始位、8位数据位(低位在前)和1位停止位。TXD为发送端,RXD为接收端。
串行口以方式1发送数据时,数据由TXD端输出。当CPU将数据写入发送缓冲器时便启动串行口发送,发送完一帧信息后置TI为1。
方式1发送时的定时信号(发送移位脉冲)由定时器1送来的溢出信号经过16或32分频(取决于SMOD的值)获得,因此波特率是可变的,为(2^SMOD/32)×定时器1的溢出率。
接收数据由RXD端输入,串行口以所选定波特率的16倍速率采样RXD端状态。在REN=1时,当检测到由1到0的变化(起始位),接收过程开始,在移位脉冲控制下把收到的数据一位一位移入接收移位寄存器,直到9位全部接收完毕,且当RI=0时将8位数据装入接收缓冲器SBUF,停止位送入RB8,并置RI为1。
整个接收过程将受到RI和SM2位的影响:
为保证数据接收可靠无误,对每一位数据要连续采样3次,取至少两次相同的值,以避开信号两端的边缘失真并防止收发时钟频率不一致导致的接收错误。
方式2下串行口为11位UART,传送波特率与SMOD有关。发送或接收一帧数据包括1位起始位0、8位数据位、1位可编程位(用于奇偶校验)和1位停止位1。
方式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完全相同。
MCS-51串行口4种工作方式中,方式0和方式2的波特率固定,方式1和方式3的波特率可变,由定时器溢出率控制。
定时器1的溢出率=(fosc/12)/(2^N-TC),其中N为定时器T1的位数,TC为预置初值。计数速率与TMOD寄存器中的C/T位有关:C/T=0时为fosc/12,C/T=1时为外部输入时钟频率。
定时器1做波特率发生器使用时通常工作在定时器方式2(自动重装填的8位定时器),此时TL1作计数用,自动重装填的值存放在TH1内。设初值TX=X,则每过256-X个机器周期定时器溢出一次,同时应禁止T1中断以避免不必要的中断。
串行口的波特率发生器就是利用定时器提供一个时间基准,由于方式2是自动重装初值的8位定时/计数模式,用它来做波特率发生器最为合适。
【例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晶振推算,建议对照原课件图片核对。
表9-5:定时器T1在工作方式2时常用波特率及初值。
| TH1初值 | SMOD | fosc(MHz) | 常用波特率(bps) |
|---|---|---|---|
| FDH | 1 | 11.0592 | 19200 |
| FDH | 0 | 11.0592 | 9600 |
| FAH | 0 | 11.0592 | 4800 |
| F4H | 0 | 11.0592 | 2400 |
| E8H | 0 | 11.0592 | 1200 |
说明:源文本中本表数字粘连严重,各单元格内容依据上下文顺序与“常用波特率=11.0592MHz下标准值”的标准表推定(含SMOD位),建议对照原课件图片核对后再入库。
9.3 双机通信。MCS-51单片机与单个同系列其它单片机之间的通信称为单片机双机通信,与多个同系列其它单片机之间的通信称为单片机多机通信。图9-16为单片机双机通信连接图。
双机异步通信程序通常采用两种方法:
9.3.2 单片机与微机通信。串行通信并非MCS-51单片机所独有,只要两个或两个以上设备都具有串行口,它们之间就可以进行串行通信。
PC机的串行接口电平标准与MCS-51单片机不同:MCS-51输入、输出为TTL电平,PC机配置的是RS-232C标准接口,二者电气规范不同,须加电平转换电路。PC机和单片机最简单的连接是零调制三线经济型,这是进行全双工通信所必须的最少线路。常用的电平转换芯片有MC1488、MC1489和MAX232。
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}