1 / 73

第 7 章 串行口及串行通信技术

第 7 章 串行口及串行通信技术. 串行通信基本知识 89C51 串口及其应用 两个单片机之间的通信 单片机与 PC 机之间的通信. 发送. 计算机 1 GND. 计算机 2 GND. 计算机 1 GND. 计算机 2 GND. 接收. 并行通信. 串行通信. 什么是串行通信?. 串行通信和并行通信. 快、多 (数据线)、 近. 并行通信:数据的各位 同时 传送;. 串行通信:数据 一位一位 顺序传送。. 慢、少、远.

silas
Download Presentation

第 7 章 串行口及串行通信技术

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. 第7章 串行口及串行通信技术 • 串行通信基本知识 • 89C51串口及其应用 • 两个单片机之间的通信 • 单片机与PC机之间的通信

  2. 发送 计算机1 GND 计算机2 GND 计算机1 GND 计算机2 GND 接收 并行通信 串行通信 什么是串行通信? • 串行通信和并行通信 • 快、多(数据线)、近 并行通信:数据的各位同时传送; 串行通信:数据一位一位顺序传送。 慢、少、远

  3. A站 B站 单工通信 发送器 接收器 ( a ) 发 发 发 收 收 收 收 发 A站 B站 A站 B站 ( b ) ( c ) 串行通信制式:单工(a)、半双工(b)和全双工(c) (simplex half duplex full duplex)

  4. 串行通信的分类:异步(Asynchronous Communication) 同步(Synchronous Communication) • 异步通信,ASYNC (Asynchronous Data Communication):帧格式传送,信息量不大 • 1个起始位,0 • 5~8个数据位 • 奇偶校验位 • 1~2个停止位,0

  5. …… 数据 数据 同步字符2 同步字符1 …… 数据 数据 数据 同步字符 • 同步通信,SYNC(Synchronous Data Communication):严格同步,发送同步字符,数据连续,信息量大,速度较高 • 按数据块传送——把要传送的字符顺序连接起来 数据块前有同步字符,后有检验字符 同步字符可由通信双方约定,也可采用ASCII码中规定的SYNC代码,即16H。 同步传送时,要求用时钟来实现发送端与接收端之间的同步。

  6. 波特率(Band rate) 通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定。 • 数据传送速率:每秒传送的二进制代码的位数。 • 波特率反映了串行通信的速率,也反映了对于传输通道的要求。波特率越高,要求传输通道的频率越宽,一般异步通信的波特率在50b/s~19200b/s之间。 • 相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。

  7. 举例 • 假如在1秒内,89C51串口把100个FFH的数据发送出去,问波特率是多少?假若每个字符是包含一个起始位、一个终止位和8个数据位。

  8. 串行通信的基本特征是数据逐位顺序进行传送。串行通信的基本特征是数据逐位顺序进行传送。 根据串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平……等)不同,形成了多种串行通信的协议与接口标准。 常见的有: ☞通用异步收发器(UART)——本课程介绍的串口 ☞通用串行总线(USB) ☞I2C总线 ☞CAN总线 ☞SPI总线 ☞RS-485,RS-232C,RS422A标准……等等

  9. 串行口及串行通信技术 • 串行通信基本知识 • 89C51串口及其应用 • 两个单片机之间的通信 • 单片机与PC机之间的通信

  10. 89C51的串行接口 • 概述 • 有一个可编程全双工异步串行通信接口(UART) (Universal Asynchronous Receiver/Transmitter) • 管脚:TXD(P3.1)、RXD(P3.0) • 可同时发送、接收数据(Transmit/Receive) • 有四种工作方式,帧格式有8、10、11位。 • 波特率(Baud rate)可设置 波特率:每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。

  11. 图7-7 return

  12. 串行口结构 引脚RXD (P3.0串行数据接收端) 引脚TXD (P3.1串行数据发送端) MOV SBUF, A :发送数据到串口引脚 MOV A , SBUF :接收数据 RI :从串口上接收数据到SBUF RI=1 TI :数据从SBUF向外发送完 TI=1

  13. MCS-51串行接口寄存器 • SBUF——串行口数据缓冲器 • SCON——串行口控制寄存器 • PCON——电源及波特率选择寄存器

  14. SM0 9FH SM1 9EH SM2 9DH 9CH REN TB8 9BH RB8 9AH TI 99H RI 98H 接收中断标志 工作方式选择 发送中断标志 多机通信控制位 允许串行接收位 接收数据的第9位 发送数据的第9位 控制寄存器SCON • SM2置1,多机通信,用于方式2和方式3 • D8=1,地址帧 • D8=0,数据帧 • SM2置0,不属于多机通信

  15. SM0 SM1 工作方式 功能 波特率 0 0 方式0 8位同步移位寄存器 fosc/12 0 1 方式1 10位UART 可变 1 0 方式2 11位UART fosc/64或fosc/32 1 1 方式3 11位UART 可变 串行方式的定义 例:设串行口工作在方式1,允许接收,则指令为: MOV SCON,#01010000B

  16. SMOD × × × GF1 GF0 PD IDL 电源及波特率选择寄存器PCON 87H 串行通信只用该位,为1时,波特率×2;为0时不变。

  17. 串行口四种工作方式应用比较 波特率的设定可参见表7.2,实际无需计算。 • 方式的选择由SM1、SM0实现。 表

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

  19. 方式0用于扩展I/O口输入

  20. 方式1 串行口为波特率可调的10位通用异步接口UART。每发送或接收的一帧信息中,包括1位起始位0,8位数据位和1位停止位1。 10位的帧格式

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

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

  23. 在方式2中,波特率取决于PCON中的SMOD值: • 当SMOD=0时,波特率为fosc/64; • 当SMOD=1时,波特率为fosc/32. • 即波特率 = 。 SMOD 2 f osc 64 MCS-51串行口的波特率 1.方式0和方式2的波特率是固定的 • 在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变 图

  24. 波特率/(b/s) fosc/MHz SMOD 定时器1 C/ 模式 初始值 方式0:1 M 方式2:375 k 方式1、3:62.5 k 19.2 k 9.6 k 4.8 k 2.4 k 1.2 k 137.5 k 110 110 12 12 12 11.059 11.059 11.059 11.059 11.059 11.986 6 12 × 1 1 1 0 0 0 0 0 0 0 × × 0 0 0 0 0 0 0 0 0 × × 2 2 2 2 2 2 2 2 1 × × FFH FDH FDH FAH F4H E8H 1DH 72H FEEBH T 波特率= 2. 方式1和方式3的波特率可变,由定时器1的溢出率决定 return RETURN

  25. 常用波特率及其产生条件 常用波特率通常按规范取1200、2400、4800、9600、…,若采用晶振12MHz和6MHz,则计算得出的T1定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。 解决的方法只有调整单片机的时钟频率fosc,通常采用11.0592MHz晶振。

  26. 四种工作方式应用举例

  27. 串行口的应用 • 编程注意事项 • 设置串行口工作方式 • 设置波特率(SMOD,若是方式1、3,设置TI初值) • 若串行口接收数据,REN必须赋值为1 • TI和RI标志,须由软件清0 • 第9位

  28. 串行口工作方式0 用于扩展I/O口,外接74HC164(串入并出)或165(并入串出)。RXD作为数据输入/输出端,TXD作为同步时钟信号,接至时钟端。 8位数据为1帧,由低位到高位,无起始位和停止位。 波特率: fosc/12

  29. 89C51 RXD TXD P1.0 DATA CD4049 CLK STB 例 • 用89C51串行口外接CD4049或164串入-并出移位寄存器扩展8位并行口;8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法。如图所示。

  30. 解:设数据串行发送采用中断方式,显示延迟通过延迟程序DELAY来实现。解:设数据串行发送采用中断方式,显示延迟通过延迟程序DELAY来实现。 • 程序清单: ORG 0000H LJMP MAIN ORG 0023H AJMP SBR ORG 2000H MAIN: MOV SCON, #00H;串行口方式0初始化 MOV A, #80H;最左一位发光二极管先亮 CLR P1.0;关闭并行输出 MOV SBUF, A;开始串行输出 LOOP: SJMP $ ;等待中断 SBR: SETB P1.0;启动并行输出 ACALL DELAY;显示延迟一段时间 CLR TI;清发送中断标志 RR A;准备右移一位显示 CLR P1.0;关闭并行输出 MOV SBUF, A;再一次串行输出 RETI

  31. 串行口工作方式1 • 10位通用异步串行口UART (Universal Asynchronous Receiver / Transmitter) ,1位起始位、8位数据、1位停止位。 • 波特率可调,由定时器T1的溢出率(定时时间)决定。 • 当一帧数据接收完毕后,必须同时满足以下条件,这次接收才真正有效: • REN =1 • RI=0, SBUF为空 • SM2=0或SM2=1时,收到停止位为1,收到的数据才能装到SBUF里。

  32. 串行口工作方式1 波特率 (定时器T1的溢出速率) PCON.7波特率选择位

  33. 89C51串行口按双工方式收发ASCII字符,最高位用作奇校验,要求传送码率为1200b/s,fosc=11.059MHz。 • 7位ASCII码+1位奇偶校验位=8 • A中1的个数为奇数,P=1,如果最高位为为P的值,则A的1的个数编程偶数,因此,要把P的值取反以后放入ASCII码最高位,才是奇校验。 • 设发送数据区的首地址为20H,接收首地址为40H 奇偶校验位:数据位和奇偶位中1的个数 偶校验:以上1的个数为偶数 奇校验:以上1的个数为奇数

  34. ORG 0000H LJMP MAIN ORG 0050H MAIN: T1为模式2 时间常数,见表7-2 重装时常 启动T1 串行口方式1,允许接收 发送数据区首址 接收数据区首址 串行口开中断 CPU开中断 发送一个字符 等待中断 MOV TMOD, #20H; MOV TL1, #0E8H; MOV TH1, #0E8H; SETB TR1; MOV SCON, #50H; MOV R0, #20H; MOV R1, #40H; SETB ES; SETB EA; LCALL SOUT; SJMP $; 表

  35. 中断服务程序 ORG 0023H LJMP SBR1 ORG 0100H PUSH ACC PUSH PSW JNB RI,SEND LCALL SIN SJMP NEXT LCALL SOUT POP PSW POP ACC RETI SBR1: SEND: NEXT:

  36. 发送子程序 SOUT: CLR TI MOV A,@R0 MOV C,P CPL C MOV ACC.7,C MOV SBUF,A INC R0 RET ;取要发送的数据 ;若奇数个1,P=1 ;A中的ASCII码为奇校验 ;发送 ;修改发送数据区指针

  37. 接收子程序 SIN: ;读接收到的数据 CLR RI MOV A,SBUF JNB P,ER ANL A,#7FH MOV @R1,A INC R1 RET …… ;若偶数个1,出错 ;若奇数个1,ACC.7清0 ;数据存入接收区 ;修改接收数据区指针 ER: ;处理出错程序

  38. 串行口工作方式2和方式3 • 每帧11位:1位起始位,9位数据(D8~D0),1位停止位; • 第9位数据作为奇偶校验位或地址/数据标志位; • 发送时,第9位(D8)数据装入TB8;--串口自动完成 • MOV A ,DATA • MOV TB8, C • MOV SBUF, A • 接收时,第9位(D8)数据装入RB8; • D0~D7 SBUF • D8RB8 • RI =1 多机通信

  39. 串行口工作方式2和方式3 • 方式2,波特率位fosc/32或fosc/64; • 方式3,波特率可调,同方式1。

  40. 串行口初始化 地址指针R0长度 计数器R7置初值 取数据A PTB8 ASBUF TI =1? N Y 0TI,指针R0+1 N (R7)-1=0? Y 返回 用第9个数据位作奇偶校验位, 编制串行口方式2的发送程序。 • 例:设计一个发送程序,将片内RAM 50H~5FH中的数据串行发送;串行口设定为方式2状态,TB8作奇偶校验位,采用偶校验。

  41. 程序清单 TRT: MOV SCON, #80H ;方式2设定 MOV PCON, #80H ; 波特率=fosc/32 MOV R0,#50H ;首地址R0 MOV R7, #10H ;数据长度 LOOP:MOV A,@R0 ;取数据 MOV C, PSW.0 ;PTB8 MOV TB8, C MOV SBUF, A ;数据SBUF,启动发送 WAIT: JBC TI, CONT ;判断发送中断标志 SJMP WAIT CONT: INC R0 DJNZ R7, LOOP RET

  42. 串行口及串行通信技术 • 串行通信基本知识 • 89C51串口及其应用 • 两个单片机之间的通信 • 单片机与PC机之间的通信

  43. 两个单片机之间的通信 • 通信协议:帧格式、校验方式等 • 波特率

  44. 双机通信软件编程 查询方式 1) 甲机发送 编程将甲机片外1000H~101FH单元的数据块从串行口输出。定义方式2发送,TB8为奇偶校验位。发送波特率375 kb/s,晶振为12 MHz, SMOD=1。

  45. 参考发送子程序如下: MOV SCON,#80H ;设置串行口为方式2 MOV PCON,#80H ;SMOD=1 MOV DPTR,#1000H ;设数据块指针 MOV R7,#20H ;设数据块长度 START: MOVX A,@DPTR ;取数据给A MOV C,P MOV TB8,C ;奇偶位P送给TB8 MOV SBUF,A ;数据送SBUF,启动发送 WAIT: JBC TI,CONT ;判断一帧是否发送完。若送完,清TI,取下一个数据 AJMP WAIT ;未完等待 CONT: INC DPTR ;更新数据单元 DJNZ R7,START ;循环发送至结束 RET

  46. 2) 乙机接收 编程使乙机接收甲机发送过来的数据块,并存入片内50H~6FH单元。接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。 在进行双机通信时,两机应采用相同的工作方式和波特率。

  47. 参考接收子程序如下: MOV SCON,#80H ;设置串行口为方式2 MOV PCON,#80H ;SMOD=1 MOV R0,#50H ;设置数据块指针MOV R7,#20H ;设置数据块长度SETB REN ;启动接收WAIT:JBC RI,READ ;判断是否接收完一帧。若完,清RI,读入数据AJMP WAIT ;未完等待READ:MOV A,SBUF ;读入一帧数据a JNB PSW.0,PZ ;奇偶位为0则转JNB RB8, ERR ;P=1,RB8=0,则出错 SJMP RIGHT ;二者全为1,则正确PZ: JB RB8, ERR ;P=0,RB8=1,则出错RIGHT: MOV @R0, A ;正确,存放数据INC R0 ;更新地址指针DJNZ R7, WAIT ;判断数据块是否接收完CLR PSW.5 ;接收正确,且接收完清F0标志RET ;返回ERR: SETB PSW.5 ;出错,置F0标志为1 RET ;返回

  48. 7.3 多个89C51通信 • 多机通信步骤: • 主机SM2=0,所有从机的SM2=1,以便接收主机发来的地址。 • 主机发送地址,其中D8=1。 • 所有从机接收主机发来的地址,进入中断服务程序,并和本机地址比较,确认是否是被寻址从机。 • 被寻址从机清除SM2,以便接收数据,并向主机发回从机地址,供主机核对。其他从机保持SM2=1,并退出中断服务程序。 • 数据通信完毕,被寻址从机SM2=1,退出中断服务程序,等待下次通信。

  49. 串行口及串行通信技术 • 串行通信基本知识 • 89C51串口及其应用 • 两个单片机之间的通信 • 单片机与PC机之间的通信

  50. PC机与单片机通信 • PC机是国内目前使用应用最广泛的微机,在与单片机串行接口后,可以方便地构成主从分布式多机系统。从机(单片机)作数据采集或实时控制,主机作数据处理或中央管理等。 • 这种多机系统在过程控制、仪表生产、生产自动化和企业管理等方面都有广泛的应用。此外微机和单片机串行接口后,可以大大方便单片机的开发过程。

More Related