1 / 45

6.2 80C51 的串行口

6.2 80C51 的串行口. 第 6 章 80C51 的串行接口. 本章内容:. 6.1 计算机串行通信基础. 6.3 单片机串行口应用举例. 学习目标 :. 单片机串行通信 I/O 接口的结构 串行通信控制寄存器 单片机串行通信的工作方式 以及串行通信应用。. 6.1.1 串行通信基本概念. 计算机 计算机. 通讯:信息交换. 计算机 外设. 应用:多机系统、计算机网络. 并 行通信. 方 式. 异 步通信方式 — 按 字符 传输. 串 行通信. 同 步通信方式 — 按 数据块 传输.

Télécharger la présentation

6.2 80C51 的串行口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6.2 80C51的串行口 第6章 80C51的串行接口 本章内容: 6.1 计算机串行通信基础 6.3 单片机串行口应用举例

  2. 学习目标: • 单片机串行通信I/O接口的结构 • 串行通信控制寄存器 • 单片机串行通信的工作方式 • 以及串行通信应用。

  3. 6.1.1 串行通信基本概念 计算机 计算机 通讯:信息交换 计算机 外设 应用:多机系统、计算机网络 并行通信 方 式 异步通信方式—按字符传输 串行通信 同步通信方式—按数据块传输 单工 半双工 全双工

  4. 并行通信:数据多位同时传送 P112 控制简单,传输速度快,传输线较多

  5. 串行通信:数据字节一位一位在一条传输线上逐个传送。 P113 传输线少,可利用电话网,但传送控制复杂。

  6. 异步通信:收、发设备使用各自时钟 P113。 字符之间是异步的,但同一字符内是同步的(各位间距均为”位间隔”的整数倍)

  7. 同步通信:发送方时钟与接收方时钟同步。既保持位同步,也保持字符同步。P114同步通信:发送方时钟与接收方时钟同步。既保持位同步,也保持字符同步。P114 外同步 自同步 保持位同步,也保持字符同步.

  8. 串行通信的传输方向 P115 单工 半双工 全双工 例如:广播 大哥大 手机

  9. 传输速率与传输距离p117 传输速率 比特率:每秒钟传输二进制代码的位数bps 波特率:每秒钟调制信号变化的次数,单位是:波特(Baud)。 例如:数据传送的速率为120个字符每秒,每个字符由1个起始位、8个数据位和1个停止位组成,则其传送波特率为: 10b×120/s=1200b/s=1200波特 传输距离与传输速率的关系: 传输距离随传输速率的增加而减小。

  10. 6.1.2 串行通信接口标准 • RS-232C接口 P117 EIA(美国电子工业协会)1969年修订RS-232C标准,它定义了DTE与DCE间的物理接口标准。

  11. 机械特性 P117 使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头) • 功能特性: P118 表6-1 • 电气特性 P118 负逻辑,DC(-3~-15v)为1。 DC(+3~+15v)为0, DC(-3~+3v)为过渡区。 • 过程特性 规定了信号间的时序关系。

  12. 远程通信连接 近程通信连接

  13. PC与外设的RS-232直接连接

  14. RS232C电平与TTL电平转换 P119 分离元件电平转换电路

  15. PC机与单片机串行通信接口示意图

  16. 6.2.1串行接口的结构 P122 主要由两个数据缓冲寄存器SBUF和一个输入移位寄存器,以及一个串行控制寄存器SCON(TI\RI)等组成。 SCON A

  17. 6.2.2 80C51串行口的控制寄存器 设定工作方式、接收/发送控制以及设置状态标志 SCON(98H) SM0 SM1 SM2 REN TB8 RB8 TI RI • SM0、SM1:工作方式设置位 0 0:移位寄存器 ,fosc/12 0 1:10位异步收发器(8位数据),波特率可变 1 0:11位异步收发器(9位数据),fosc/64或fosc/32 1 1:11位异步收发器(9位数据),波特率可变

  18. SM2,多机通信控制位。 • 主要用于方式2和方式3。对于接收机 SM2=0,收到RB8(0或1)既可使收到的数据进入SBUF,并激活RI。 SM2=1,收到的RB8=0时,收到的信息丢弃,不激活RI ;若收到的RB8=1时,收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走。 • 方式0时,SM2必须是0。 • 方式1时,SM2=1时,只有接收到有效停止位时,RI才激活。 • REN,允许串行接收位。 置REN=1,启动串口接收过程 置REN=0,则禁止串口接收

  19. TB8,在方式2、3中,是发送数据的第9位 • 数据的奇偶校验位 • 地址帧/数据帧的标志位 • RB8,在方式2、3中,是接收到数据的第9位 • 奇偶校验位 • 地址帧/数据帧的标志位。 方式1时,若SM2=0,则RB8是接收到的停止位。

  20. TI,发送中断标志位。 • 方式0时,串行发送第8位数据结束时 • 其它方式,串行发送停止位的开始时 硬件使TI置1,发中断申请。必须在中断服务程序中用软件将其清0。 • RI,接收中断标志位。 • 方式0时,串行接收第8位数据结束时 • 其它方式,串行接收停止位的中间时 硬件使RI置1,发中断申请。必须在中断服务程序中用软件将其清0。

  21. PCON: P123 PCON(97H) SMOD • SMOD,波特率倍增位。 在方式1、2、3时,波特率与SMOD有关: SMOD=1时,波特率提高一倍。复位时SMOD=0。

  22. 6.2.3 80C51串行口的工作方式 • 1.方式0_ 8位数据 P124 • 串行接口工作方式0为同步移位寄存器方式,多用于I/O口的扩展,其波特率是固定的,为fosc/12。TXD引脚输出同步移位脉冲,RXD引脚串行输入/输出。 方式0接收和发送电路

  23. 方式0掌握: • 1、8位数据,波特率为F0SC/12 • 2、低位在前,高位在后 • 3、TI,再发送数据,软件清0,CLR TI • 4、RI,再接收数据,软件清0,CLR RI • 5、同步通信,无起始位和停止位

  24. 2.方式1_ 10位数据 P125 • 在方式l时,串行口被设置为波特率可变的8位异步通信接口。发送/接收1帧数据为10位,其中1位起始位、8位数据位(先低位后高位)和 10位数据的异步通信。帧格式如图所示.

  25. 方式1掌握: • 1、一帧为10位信息,1位起始(0),8位数据,1位停止(1) • 2、波特率=P127 • 3、异步通信 • 4、接收时,RB8里是停止位,数据位在SBUF(SM2=0)

  26. 3.方式2_ 11位数据 P126 • 串行口工作为方式2时,被定义为9位异步通信接口。发送/接收1帧数据为11位,其中1位起始位、8位数据位、1位控制/校验位和1位停止位。控制/校验位为第9位数据。 • 4.方式3_ 11位数据 • 方式3为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余同方式2。 11位数据的异步通信

  27. 工作方式掌握: • 1、几中工作方式波特率不同,P127 • 2、传送的位数不同,方式0是8位(数据位),方式1是10(8位数据——SBUF,1个起始、1位停止——RB8),方式2和方式3都是11位(8位数据,1位控制/校验位——RB8、TB8,1位起始和1位停止位) • 3、方式0是同步,方式1、2、3是异步

  28. 5、波特率的计算 方式0、2的波特率是固定的,而方式1、3的波特率是可变的,由定时器T1的溢出率来决定。 方式0波特率 = fosc/12 方式2波特率 =(2SMOD/64)· fosc 方式1波特率 =(2SMOD/32)·(T1溢出率) 方式3波特率 =(2SMOD/32)·(T1溢出率) K为定时器T1的位数。

  29. 6.3 单片机串行口应用举例 • 点对点的通信 • 硬件连接 6.3.1 单片机与单片机的通信P128

  30. 串行口初始化具体步骤: • 确定T1的工作方式(编程TMOD寄存器); • 计算T1的初值,装载TH1、TL1; • 启动T1(编程TCON中的TR1位); • 确定串行口控制(编程SCON寄存器); 串行口在中断方式工作时,还要进行中断设置(编程IE、IP寄存器)。

  31. 多机通信 P131 • 硬件连接 • 主从系统 • 在实际系统中,常采用RS-485标准进行数据传输。

  32. 6.3.2 单片机与PC机的通信 应用系统设计中,单片机与PC机可以方便地组合成分布式控制系统。主计算机监督管理各子系统分机的运行状况。其特点是灵活性好、可靠性高。

  33. DOS环境下,要实现通信只要直接对微机接口芯片8250进行口地址操作即可DOS环境下,要实现通信只要直接对微机接口芯片8250进行口地址操作即可 • WINDOWS环境下,不允许用户直接操作串口地址。可以调用API函数,但较为复杂。使用 VB通信控件(Mscomm)很容易完成通信任务 VB简明易用,实用性强。它具备基本的串行通信能力:即通过串行口发送和接收数据。

  34. MSComm控件主要属性如下: CommPort:设置并返回通信端口号; Settings: 以字符串的方式设置并返回波特率、奇偶校验、数据位、停止位; PortOpen:设置并返回端口的状态,也可以打开和关闭端口; Input: 从接收缓冲区返回字符和删除字符; Output: 向传输缓冲区写一个字符。

  35. 单片机程序清单如下: ORG 3000H MAIN:MOV TMOD,#20H ;在11.0592MHz下,串行口波特率 MOV TH1,#0FDH ;9600bps,方式3 MOV TL1,#0FDH MOV PCON,#00H SETB TR1 MOV SCON,#0D8H LOOP:JBC RI,RECEIVE ;接收到数据后立即发出去 SJMP LOOP RECEIVE:MOV A,SBUF MOV SBUF,A SEND:JBC TI,SENDEND SJMP SEND SENDEND:SJMP LOOP

  36. 6.4 单片机串行口的应用 • 6.4.1 串行口扩展显示器 • 【例6-4-1】用8位串入并出移位寄存器74HC164扩展显示器。

  37. 功能:把数据从显示缓冲区送到数码管。入口;将要显示的数放在以DIS0为首的8个单元中。出口:把预置的数输出以更新原有的显示。功能:把数据从显示缓冲区送到数码管。入口;将要显示的数放在以DIS0为首的8个单元中。出口:把预置的数输出以更新原有的显示。 MOV R2,#08H ;显示8个数码管 MOV R0,#DIS7 ;显示缓冲区未地址送入R0 DL0:MOV A,@R0 ;取要显示数作查表偏移量 MOV DPTR,#TAB ;指向字形表首 MOVC A,@A+DPTR;查表得字形码 MOV SBUF,A ;发送显示 DL1: JNB T1,DL1 ;等待发送完一帧 CLR T1 ;清中断标志,准备继续发送 DEC R0 ;更新显示单元 DJNZ R2,DL0 ;重复显示所有数码管 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4, DB 92H,82H,0F8H,80H,90H;5,6,7,8,9, DB 88H,83H,0C6H,0A1H,86H;A,B,C,D,E, DB 8EH,0BFH,8CH,0FFH;F,-,P,暗

  38. 6.4.2 串行口扩展的键盘 • 在方式0下,串行口作同步移位寄存器用,以8位数据为一帧,先发送或接收最低位,每个机器周期发送或接收一位,故其波特率是固定的,为fosc/12。串行数据由RXD(P3.0)端输入或输出。

  39. CJNE R1,#08,LP1 SJMP RCVIN1:MOV A,R0 ADD A,A JMP @A+DPTR TAB:AJMP OPR0 AJMP OPR1 … AJMP OPR7OPR0:… LJMP STARTOPR7:…LJMP STARTEND • ORG 0100H • START:MOV R7,#20 • MOV R0,#50H • MOV DPTR,#TAB • RCVI:MOV SCON,#10H • JNB RI,$ • CLR RI • MOV A,SBUF • MOV R0,#0 • MOV R1,#0 • LP1:RRC A • JNC N1 • INC R0 • INC R1

  40. 【例6】编程把甲机片内RAM50H~5FH单元中的数据块从串行口输出。定义在方式3下发送,TB8作奇偶校验位。采用定时器1方式2作波特率发生器,波特率为1200波特,fosc=11.0592MHz,预置值TH1=0E8H。【例6】编程把甲机片内RAM50H~5FH单元中的数据块从串行口输出。定义在方式3下发送,TB8作奇偶校验位。采用定时器1方式2作波特率发生器,波特率为1200波特,fosc=11.0592MHz,预置值TH1=0E8H。 6.4.3 双机通信 编程使乙机从甲机接收16个字节数据块,并存入片外3000H~300FH单元。接收过程中要求判奇偶校验标志RB8。若出错则置F0标志为1,若正确则置F0标志为0,然后返回。

  41. 发送子程序如下: • MOV TMOD,#20H ;设置定时器1为方式2 • MOV TL1,#0E8H ;设预置值 • MOV TH1,#0E8H • SETB TRI ;启动定时器1 • MOV SCON,#0C0H ;设置串行口为方式3 • MOV PCON,#00H ;SMOD=0 • MOV R0,#50H ;设数据块指针 • MOV R7,#10H ;设数据长度10H • TRS:MOV A,@R0;取数据送至A • MOV C,P • MOV TB8,C ;奇偶位P送至TB8 • MOV SBUF,A 启动发送 • WAIT:JNB TI,$ ;判1帧是否发送完 • CLR TI • INC R0 ;更新数据单元 • DJNZ R7,TRS ;循环发送至结束

  42. 接收子程序编程如下: • MOV TMOD,#20H ;设置定时器1为方式2 • MOV TL1,#0E8H ;设预置值 • MOV TH1,#0E8H • SETB TR1 ;启动定时器1 • MOV SCON,#0C0H ;设置串行口为方式3 • MOV PCON3,#00H ;SMOD=0 • MOV DPTR,#3000H ;设置数据块指针 • MOV R7,#10H ;设数据块长度 • SETB REN ;允许接收 • WAIT:JNB RI,$ ;判1帧是否接收完 • CLR RI

  43. MOV A,SBUF ;读入1帧数据 • JNB PSW.0,PZ ;奇偶位P为0则跳转 • JNB RB8,ERR ;P=l,RB8=0则出错 • SJMP YES ;二者全为1则正确 • PZ:JB RB8,ERR ;P=0,RB8=l则出错 • YES:MOVX @DPTR,A ;正确,存放数据 • INC DPTR ;修改地址指针 • DJNZ R7,WAIT ;判断数据块接收完否 • CLR PSW.5 ;接收正确且接收完清F0标志 • RET ;返回 • ERR:SETB PSW.5 ;出错则置F0标志为“l” • RET ;返回

  44. 例:主机向02号从机发送50H~5FH中的数据;02号从机将接收到的数据放到内RAM30H ~3FH单元中。 • 主机程序: • ORG 0030H • MAIN:MOV SCON,#98H • M1: MOV SBUF,#02H • L1: JNB TI,$ • CLR TI • JNB RI,$ • MOV A,SUBF • XRL A,#02H • JZ RHT • AJMP M1 • RHT :CLR TB8 • MOV R0,#50H • M1: MOV R7,#10H • L3: MOV A,@R0 • MOV SBUF,A • JNB TI,$ • CLR TI • INC R0 • DJNZ R7,L3 • AJMP MAIN • END

  45. SR3 :JNB RI,$ • CLR RI • JNB TB8,RHT • SETB SM2 • SJMP SR1 • RHT: MOV A,SBUF • MOV @R0 , A • INC R0 • DJNZ R6,SR3 • AJMP SI • END • 从机程序: • ORG 0030H • MAIN: MOV R0,#30H • MOV R6,#10H • SI: MOV SCON,#0B0H • SR1: JNB RI,$ • CLR RI • SR2: MOV A,SUBF • XRL A,#02H • JNZ SR1 • CLR SM2 • MOV SBUF,#02H • JNB TI,$ • CLR TI

More Related