230 likes | 417 Views
第 8 章 单片机串行数据通信. 8.1 串行通信基础知识 8 .2 MCS-51 单片机的串行口及控制寄存器 8.3 MCS-51 单片机串行通信工作方式. 8.1.1 串行通信基本知识. 并行通信. 串行通信. 各位数据 同时 传送. 各位数据 逐位 传送. 传送速度 快. 传送速度 慢. 数据线数目同 传送数据位数. 1 根. 适用于短距离 (计算机内部). 适用于长距离 (计算机之间、计算机与外部设备). 双绞线、同轴电缆. 电路板、扁平带状电缆.
E N D
第8章 单片机串行数据通信 • 8.1 串行通信基础知识 • 8.2 MCS-51单片机的串行口及控制寄存器 • 8.3 MCS-51单片机串行通信工作方式
8.1.1 串行通信基本知识 并行通信 串行通信 各位数据同时传送 各位数据逐位传送 传送速度快 传送速度慢 数据线数目同 传送数据位数 1根 适用于短距离 (计算机内部) 适用于长距离 (计算机之间、计算机与外部设备) 双绞线、同轴电缆 电路板、扁平带状电缆
串行通信是将数据的各位一位一位地依次传送,适合于计算机之间、计算机与外部设备之间的远距离通信。串行通信是将数据的各位一位一位地依次传送,适合于计算机之间、计算机与外部设备之间的远距离通信。 • 串行通信的传送速率:每秒传送格式位的数目即波特率,1波特=1bps(位/秒) • 串行通信从传输方式分为:单工方式、半双工方式、全双工方式(如图8-1所示)。 • 从接收方式来说,串行通信有两种方式:异步通信方式(如图8-2所示)、同步通信方式(如图8-3所示)。
Mark Space 图8-2 异步串行通信数据格式 • Mark: 逻辑“1”状态 • Space: 逻辑“0”状态 ; • 起始位:数据线处于space状态; • 数据位:低位在前,高位在后,数据位可以是5~8bit; • 奇偶位:奇偶位的值由发送方设置,接收方使用奇偶位检 • 查在传输过程中是否发生错误; • 停止位:用以标志一个字符传送结束,处于mark状态,位 • 数可以是1、1.5、2位。
开始 终止 同步字符 CRC字符 数据块 图8-3 同步通信数据格式
异步串行通信信号形式 计算机A 寄存器 串行接口 TTL电平 RS-232电平 计算机B 寄存器 串行接口 TTL电平 图8-4 近程串行通信
8.1.2 RS-232总线标准 • RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯,其传送距离最大约为15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的。 图8-6 简单的RS-232C数据通讯
引脚号 符号 名称 说明 1 PGND 保护地 为了安全和大地相连,有时可不接 2 TXD 发送数据 从DTE到DCE的数据线 3 RXD 接收数据 从DCE到DTE的数据线 4 RTS 请求发送 当DTE希望在数据线上传递数据时由DTE发出,DCE通过所得到的控制信号决定是否响应 5 CTS 允许发送 允许计算机发送数据时,则由DCE发出 6 DSR 数字置位就绪 当数据线已被接好后由DCE发出 7 SGND 信号地 作为信号地的公共回路 8 DCD 数据载波检测 当DCE已经从数据线上接收到信号时发出此信号 20 DTR 数字终端就绪 当DTE已准备好和调制解调器交换数据时,由DTE发出,使用公共通信网时才需要 22 RI 振铃指示 当正在进行通信时,由DCE发出,使用公共通信网时才需要 表格 8-1 微机中常用的RS-232C接口信号
8.2 MCS-51单片机的串行口及控制寄存器 • 1)UART:通用异步接收发送器。 • 包括发送器电路、接收器电路和控制电路; • 功能包括数据的串行/反串行化、错误检验。 单片机A 寄存器 串行接口UART 串 行 数 据 并行数据 RS-232总线 单片机B 寄存器 串行接口UART 并行数据
2)SBUF:串行口寄存器。(99H) • 发送寄存器:从片内总线向发送寄存器SBUF写入数据,串行数据通过引脚TXD(P3.1)送出; • 接收寄存器:从接收寄存器SBUF向片内总线读出数据,串行数据通过引脚RXD(P3.0)引入;
SCON 位地址 SM0 SM1 SM2 REN TB8 RB8 TI RI 9F 9E 9D 9C 9B 9A 99 98 3)串行控制寄存器SCON • 该寄存器的字节地址为98H,可位寻址。SCON格式如图8-7所示。 D7 D6 D5 D4 D3 D2 D1 D0 图8-7 SCON格式
PC ON SM OD 4)电源控制寄存器PCON • 其字节地址为87H,没有位寻址功能。PCON的格式如图8-8所示,其中与串行接口有关的只有D7位。 D7 D6 D5 D4 D3 D2 D1 D0 图8-8 PCON格式
5)中断允许寄存器IE • IE的格式如图8-9所示,与串行中断有关的是EA和ES。 D7 D6 D5 D4 D3 D2 D1 D0 位地址 0AFH 0ACH 位符号 EA ES 图8-9 IE格式
8.3 MCS-51单片机串行通信工作方式 SM0 SM1 工作方式 功能描述 波特率 方式0 同步移位寄存器 fosc/12 0 0 0 1 方式1 10位UARS 可变 1 0 方式2 11位UARS fosc/32或fosc/64 1 1 方式3 11位UARS 可变
8.3.1 串行工作方式1 • 方式1是10位异步串行通信方式,一帧数据包括1个起始位、8个数据位和1个停止位。 停止位 8位数据位 D0 …… D7 起始位 起始位:space状态(逻辑0); 停止位:mark状态(逻辑1)。
波特率的计算(定时器1工作在方式2) 波特率=2smod×(定时器1溢出率)/32 定时器1溢出率=1/定时器1定时时间 2smod×fosc 32×12×(256-X) 波特率= fosc×2smod 384×波特率 X=256-
例1:80C51串行口在工作方式1下进行串行数据通信,波特率为1200,发送数据存放在内部RAM从34H开始的10个地址单元中,用定时器1作为波特率发生器,定时器1工作在方式2下,系统时钟频率为6MHz。例1:80C51串行口在工作方式1下进行串行数据通信,波特率为1200,发送数据存放在内部RAM从34H开始的10个地址单元中,用定时器1作为波特率发生器,定时器1工作在方式2下,系统时钟频率为6MHz。 • 1)设置定时器1 TMOD=20H X=0F3H • 2)设置串行口 smod=0 PCON=00H SCON=40H
查询方式: 设置定时器1 设置串行口 MOV PCON,#00H //设置串行口 MOV SCON,#40H 禁止串行中断 MOV R1,#34H //数据区地址 MOV TMOD,#20H //设置定时器1 MOV TL1,#0F3H MOV TH1,#0F3H CLR ES //禁止串行中断 启动定时器1 SETB TR1 //启动定时器1 SOUT1: MOV A,@R1 //向SBUF发送数据 MOV SBUF,A 向SBUF发送数据 Y TI=0? SOUT2: JNB TI,$ //查询数据是否已发送 N CLR TI //TI清0 TI清0 CJNE R1,#3DH,AEND //判断数据是否发送完 R1=3DH? N Y CLR TR1 //停止定时器1 停止定时器1 AEND: INC,R1 //指向下一个地址单元 AJMP SOUT1 指向下一个地址
中断方式: 主程序MAIN: ORG 0000H AJMP MAIN ORG 0023H AJMP SEND ORG 8000H MOV TMOD,#20H //设置定时器1 MOV TL1,#0F3H MOV TH1,#0F3H MOV PCON,#00H //设置串行口 MOV SCON,#40H MOV R1,#34H //数据区地址 MOV A,@R1 //向SBUF发送数据 MOV SBUF,A SETB EA SETB ES SETB TR1 AJMP $ 设置定时器1 设置串行口 MAIN: 允许串行中断 启动定时器1 向SBUF发送数据 原地跳转
中断程序SEND TI清0 ORG 8100H CLR TI CJNE R1,#3DH,AEND CLR ES CLR TR1 INC R1 MOV A,@R1 MOV SBUF,A RETI SEND: R1=3DH? N Y 禁止串行中断 AEND: 停止定时器1 指向下一个地址 向SBUF发送数据 中断返回