第7章80C51单片机的串行口_第1页
第7章80C51单片机的串行口_第2页
第7章80C51单片机的串行口_第3页
第7章80C51单片机的串行口_第4页
第7章80C51单片机的串行口_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023/2/61第7章80C51单片机的串行口计算机串行通信基础7.180C51单片机的串行口7.280C51单片机的串行口应用7.3

单片机通信是指单片机与计算机或单片机与单片机之间的信息交换。通信的基本方式可分为并行通信和串行通信两种。

在单片机系统以及现代单片机测控系统中,信息的交换多采用串行通信的方式。

并行通信是指数据的各位同时在多根数据线上发送或接收。特点:控制简单、传输速度快,但占用的数据线多,成本较高,适用于近距离传输。例如:老式的打印机就是通过并口方式与计算机连接的。

串行通信是数据的各位在同一根数据线上依次逐位发送或接收。特点:占用的数据线少,成本低但速度较慢,数据传送控制比并行复杂,适用于远距离传输。7.1计算机串行通信基础2023/2/637.1计算机串行通信基础通信:并行通信与串行通信

并行通信特点:传送控制简单、速度快,但传输线较多,成本高。2023/2/64

串行通信特点:传输线少,成本低;传送控制复杂、速度慢串行通信的必要过程是:发送时要把并行数据变成串行数据发送到线路上;接收时要把串行数据变成并行数据,才能被计算机和其他设备处理。2023/2/65异步通信与同步通信收、发设备时钟独立,以字符(帧)为单位传输

7.1.1串行通信的基本概念异步通信(通信的发送和接收设备各自使用自己的时钟)

1.异步通信

异步通信中,传送的数据可以是一个字符代码或一个字节数据,数据以帧的形式一帧一帧传送。

异步通信的一帧数据格式2023/2/67

异步通信帧格式起始位(1位);数据位(8位);奇偶校验位(1位,可无校验位);停止位(1位)。

特点易于实现效率不高同步通信(发、收时钟直接连接,效率高。板内元件间的SPI接口)

注:PC机上的RS-232C接口就是典型的异步通信(1)起始位:在没有数据传送时,通信线上处于逻辑“1”状态。当发送端要发送1个字符数据时,首先发送1个逻辑“0”信号,这个低电平便是帧格式的起始位。其作用是向接收端表示发送端开始发送一帧数据。接收端检测到这个低电平后,就准备接收数据信号。(2)数据位:在起始位之后,发送端发出(或接收端接收)的是数据位,数据的位数没有严格的限制,5~8位均可。由低位到高位逐位传送。(3)奇偶校验位:数据位发送完(接收完)之后,可发送一位用来检验数据在传送过程中是否出错的奇偶校验位。奇偶校验是收发双方预先约定好的差错检验方式之一有时也可不用奇偶校验。(4)停止位:字符帧格式的最后部分是停止位,逻辑“1”电平有效,它可占1/2位、1位或2位(在串行通信时每位的传送时间是固定的)。停止位表示传送一帧信息的结束,也为发送下一帧信息作好准备。同步通信:是把数据块作为整体来传输,由定时时钟实现接收端与发送端同步。每次传一组数据,加入帧头和帧尾。同步通信的特点:必须建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步;传送的字符间不留间隙,即保持位同步,也保持字符同步关系。同步字符

校验字符数据块

字符1

字符2……

字符n一帧2、同步通信2023/2/612串行通信的传输方向单工

半双工

全双工80C51有1个全双工串行口

二、串行通信的波特率

波特率(BaudRate)是串行通信中一个重要概念,它是指传输数据的速率,亦称比特率。波特率的定义是每秒传输二进制数码的位数。如:波特率为1200bps是指每秒钟能传输1200位二进制数码。

波特率的倒数即为每位数据传输时间。例如:波特率为1200bps,每位的传输时间为:1)(833.01200msdT==

波特率和字符帧的传输速率不同,若采用前面图中的数据帧格式,并且数据帧连续传送(无空闲位),则实际的字符传输速率为1200/11=108.08帧/秒。再例如:每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的波特率为10位*240个/秒=2400bps。2023/2/615信号的调制与解调DTE:数据终端设备计算机DCE:数据通信设备MODEM调制解调器调制解调

串行通信的目的不只是传送数据信息,更重要的是应确保准确无误地传送。因此必须考虑在通信过程中对数据差错进行校验,校验方法有奇偶校验、累加和校验等。检错:数据在传输过程中可能受干扰使接收的数据出错,如何发现错误——检错。纠错:发现错误后,如何消除或纠正错误——纠错。抗干扰编码:最简单的编码是奇偶校验;奇校验:所传送的数据中1的个数为奇数;偶校验:所传送的数据中1的个数为偶数;发送字符时,数据位尾随1位奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。

奇偶校验能够检测出奇数位误码,但是不能纠错,比较低级,一般只用在异步通信中。

串行通信的错误校验2023/2/617代码和校验

发送方将所发数据块求和(或各字节异或),产生的校验和字节附加到数据块的末尾。接收方在接收数据时要对数据块(除校验字节外)求和(或各字节异或),将所得的结果与收到的“校验和”进行比较,两者相符则无差错,否则就认为传送过程出现了差错。2023/2/618传输速率与传输距离传输速率波特率:每秒钟传送信息的位数,单位:波特(Baud)单片机通信属于基带传输(每个码元带有“1”或“0”这1bit信息)。

常用波特率为:2400、4800、9600、14.4K、19.2K等

传输距离与传输速率的关系***传输距离随波特率的增加而减小。等时间间隔信号称为码元每个码元可以携带n位信息7.1.2串行通信接口种类

根据串行通信格式及约定(如同步方式、通信速率、数据块格式等)不同,形成了许多串行通信接口标准,如常见的:

UART(串行异步通信接口)、

USB(通用串行总线接口)、

I2C(集成电路间的串行总线)、

SPI(串行外设总线)、

485总线、CAN总线接口等。51单片机的串行接口:作通用异步收发器(UART),也可作同步移位寄存器通信只有3根线(P3.0—RXD,P3.1—TXD,GND)全双工通信,有4种工作方式TTL电平正逻辑输出(RS-232C为负逻辑),实现RS-232C接口需要电平转换——

MAX232芯片实现RS485接口需要变换——MAX485芯片以下是P3.1发送字符“9”的时序:起始位校验位停止位字符位编码010011101/001D0D7空闲空闲7.1.2串行通信接口标准

RS-232C标准接口是EIA(美国电子工业协会)于1969年颁布的串行通信接口标准。RS是“RecommendedStandard”(推荐标准)的缩写,232为标准的编号,C为版本号。在RS-232C之前为RS-232A与RS-232B,1987年修订为EIA-232D,1991年修订为EIA-232E,1997年又修订为EIA-232F。其中,RS-232C最为常用。RS-232C定义的是DTE与DCE间的接口标准。

2023/2/622机械特性DB-25(阳头)连接器DB-9(阳头)连接器阳头通常用于计算机侧,阴头用于连接线侧

RS-232C接口规定使用25针连接器(DB-25),连接器的尺寸及每个插针的排列位置都有明确的定义。由于一般的应用中很少用到RS-232C标准的全部信号线,所以在实际应用中常常使用9针连接器(DB-9)替代25针连接器。两者的外形与引脚排列如图9-7所示。通常一端做成插针,另一端做成插孔。2023/2/623功能特性注:引脚序号栏中带括号的序号为DB-9连接器的引脚序号。2023/2/624电气特性RS-232C采用负逻辑电平,规定(-3~-25V)为逻辑“1”,(+3~+25V)为逻辑“0”。-3V~+3V是未定义的过渡区。试比较:

电平转换电路(如MAX232)。

2023/2/625过程特性远程通信,需要调制解调器2023/2/626近程通信,不需要调制解调器无联络线方式联络线短接(伪连接)方式

用汇编指令编写高级语言或汇编中的中断调用

2023/2/627

RS-232C电平与TTL电平转换驱动电路早期采用MC1488、MC1489

近期常用MAXM232:

片内带有自升压电路仅需+5V电源,内有升压泵变为-10V-+10V内含2个发送器,2个接收器,与TTL/CMOS兼容RS-232C的缺点接口的信号电平值较高,易损坏接口电路的芯片。与TTL电平不兼容,与TTL电平接口连接需进行电平转换。传输距离短,使用时传输距离一般不超过15m,线路条件好时也不超过几十米。传输速率较低,最高传送速率为20kbit/s。由于收发信号采用共地传输,容易产生共模干扰,所以抗干扰能力较差。新标准RS-485改善了传输特性,应用广泛!

2023/2/6297.2

80C51单片机的串行口7.2.180C51串行口的结构1个全双工串口:通信或接口扩展,帧格式为8位、10位或11位接收发送缓冲器逻辑同名、物理分开;接收双缓冲。

2023/2/6307.2.280C51串行口的控制寄存器串行口控制寄存器SCONSM0和SM1:工作方式选择位2023/2/631SM2:多机通信控制位,主要用于方式2和3SM2=1时,接收机地址帧甄别使能。若RB8=1,接收的信息可进入SBUF,并使RI为1,进而在中断服务中将数据从SBUF读走;若RB8=0,该帧不接收,丢弃掉,且保持RI=0。

SM2=0时,接收机地址帧甄别禁止。不论收到的RB8为0或1,均可以使接收的帧进入SBUF,并使RI=1。此时的RB8通常为校验位。注意:方式0时,SM2=0;方式1时,若SM2=1,则只有接收到停止位时,RI=1REN:串行接收使能位,软件置1时,启动接收过程2023/2/632TB8:多机方式发送的第9位(方式2、3)发送的地址/数据帧标志。也可作为奇偶校验位。方式0和1时,该位未用。

RB8:多机方式接收的第9位(方式2、3)接收的地址/数据帧标志。也可作为奇偶校验位。方式0不用(SM2=0);方式1时也不用,置SM2=0,则RB8是接收到的停止位。

TI:发送中断标志位,在中断服务程序中要由软件清0RI:接收中断标志位,在中断服务程序中要由软件清02023/2/633电源控制寄存器PCONSMOD:波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。2023/2/6347.2.380C51串行口的工作方式方式0:同步移位寄存器,用于扩展并行口

RXD:输入或输出引脚TXD:移位脉冲输出引脚发送和接收都是8位波特率固定为:fosc/122023/2/635数据输出:

CR用于对74LS164清0

2023/2/636数据输入:

S/L下降沿将并行数据装入,高电平启动数据移入。

2023/2/637方式1:10位帧,用于双机通信(基本上都用方式1)起始位:1位数据位:8位停止位:1位2023/2/638串行发送:(写SBUF启动发送过程)

串行接收:(置REN=1启动接收过程)

①RI=0。即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中数据已被取走。由软件使RI=0,以便提供“接收SBUF已空”的信息。②SM2=0或收到的停止位为1(方式1时,停止位进入RB8)。

满足上述两个条件,将接收到的数据装入串行口的SBUF和RB8(RB8装入停止位),并置位RI,通知CPU取数据;如果不满足,接收到的数据不能装入SBUF,这意味着该帧信息将会丢失。接收有效的两个条件:2023/2/640方式2和方式3:11位帧,用于多机通信起始位:1位数据位:9位停止位:1位2023/2/641串行发送:(写SBUF启动发送过程)

串行接收:(置REN=1启动接收过程)

发送前,先根据通信协议由软件设置TB8(如作奇偶校验位或地址/数据标志位),然后将要发送的数据写入SBUF,即可启动发送过程。串行口能自动把TB8取出,并装入到第9位数据位的位置,再逐一发送出去。发送完毕,使TI=1。发送过程接收时,使SCON中的REN=1,允许接收。当检测到RXD(P3.0)端有1→0的跳变(起始位)时,开始接收9位数据,送入移位寄存器(9位)。当满足RI=0且SM2=0,或接收到的第9位数据为1时,前8位数据送入SBUF,附加的第9位数据送入SCON中的RB8,置RI为1;否则,这次接收无效,也不置位RI。接收过程2023/2/6447.2.480C51波特率确定与初始化步骤波特率的确定波特率的计算固定波特率:

方式0波特率=fosc/12

方式2波特率=(2SMOD/64)*

fosc可变波特率:(方式1、方式3)

波特率=(2SMOD/32)*(T1溢出率)

T1溢出率=fosc/{12×[256-(TH1)]}(1)方式0的波特率由下图可见,方式0时,每个机器周期产生一个移位时钟,发送或接收一位数据。因此,波特率固定为振荡频率的1/12,并不受PCON寄存器中SMOD位的影响。串行口方式0波特率的产生(2)方式2的波特率方式2波特率取决于PCON中SMOD位的值:

SMOD=0时,波特率为fosc的1/64;

SMOD=1时,波特率为fosc的1/32。即:方式2波特率≌(2SMOD/64)×foscfosc=12MHz,SMOD=0,187.5kbpsSMOD=1,375kbps(3)方式1和方式3的波特率方式1和方式3的移位时钟脉冲由定时器T1产生,如图所示。因此,MCS-51串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值共同决定。即方式1、方式3波特率≌(2SMOD/32)×T1溢出率串行口方式1、方式3波特率的产生2023/2/648波特率的选择波特率要选择标称值,由于TH1的初值是整数,为了获得标称值,依公式晶振频率要选11.0592MHz。

方式1和方式3波特率与TH1初值的对应关系:

若晶振为12MHz,TH1初值取FDH,依公式算出的波特率为10416.6…;

TH1初值取FCH,为7812.5。

例:若定时器T1工作于方式1,采用11.059MHz的晶振,要求利用定时器1产生1200bps的波特率,则

令SMOD=0,可算得初值为

那么,TH1的初值为0FFH,TL1的初值为0E8H。2023/2/650串行口初始化步骤确定T1的工作方式(TMOD)计算T1的初值,装载TH1、TL1启动T1(置位TR1)确定串行口工作方式(SCON)串口中断设置(IE、IP)2023/2/6517.380C51单片机的串行口应用7.3.1利用单片机串口的并行I/O扩展占用串口!单片机端的电平转换7.3.2单片机与PC机间的通信与PC机的硬件连接

直通连接交叉连接PC机串行口检查

PC机的串行口的收、发信号引脚短接

运行串口调试软件连机编程测试voidmain(void){uchartemp;init();while(1) { temp=ReceiveChar();//接收数据

SendChar(temp);//发送数据 }}voidinit(void){ SCON=0x50;//方式1(N,8,1),接收允许 PCON=0x00;//波特率不倍增 TMOD=0x20;//置T1为8位自动重装方式 TL1=0xfd; TH1=0xfd;//波特率9600 TR1=1;}ucharReceiveChar(){ ucharch; while(!RI);//等待接收完 ch=SBUF; RI=0; return(ch);}voidSendChar(ucharch){ SBUF=ch;//发送字符 while(!TI);//等待发送完 TI=0;//清标志}通信程序的扩充与完善通讯协议:

每帧:数据8位,起始位1位,停止位1位,无检验,波特率9600。PC机作为主机,主机命令由4个字符形成的字符串构成,首字符‘$’是同步头,次字符为命令关键字,其他2个字符未定义。设命令关键字为1时,单片机要将缓冲区的数据以由前至后的顺序发送到PC机端;当命令关键字为2时,单片机要将缓冲区的数据以由后至前的顺序发送到PC机端,其他关键字未定义。单片机端程序:voidDataInit(void){//设置缓冲区调试数据 uchari; for(i=0;i<10;i++) OutBuff[i]=i+0x30;}voidSPortInit(void){TMOD|=0x20;SCON=0x50; TH1=0xfd; TL1=0xfd;TR1=1;ES=1; EA=1;

}voidSendChar(ucharch){SBUF=ch;//发送字符while(!TI);//等待发送完TI=0;}voidSPortIsr()interrupt4{uchari,ch;ES=0;ch=SBUF;RI=0;

if(ch==0x24)//检测‘$’

{

InBuff[0]=ch;for(i=1;i<4;i++)

{while(!RI);RI=0;InBuff[i]=SBUF;

}InFullFlag=1;

}ES=1;}voidmain(void){DataInit();SPortInit();InFullFlag=0;while(1){

if(InFullFlag)

{

switch(InBuff[1])

{//依命令完成相应功能

}

InFullFlag=0;

}}}switch(InBuff[1]){//依命令完成相应功能

case0x31:for(i=0;i<10;i++)Send

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论