430 likes | 604 Vues
《 单片机原理与应用 》. 第 9 章 单片机的串行通信. §9.1 串行通信基础知识. 一、计算机的数据传送方式 1 、 并行传送方式 :各数据位同时传送,传输线多,传送速度快,距离近。 2 、 串行传送方式 :数据逐位传送,只需 1 根传输线,传送速度慢,距离远。 分:异步串行通信方式 同步串行通信方式. §9.1 串行通信基础知识. 一、计算机的数据传送方式 二、异步串行通信的字符格式 1 、串行通信时信息的两种状态: mark :也称为“标号”状态,对应为“逻辑 1”
E N D
《单片机原理与应用》 第9章 单片机的串行通信
§9.1 串行通信基础知识 • 一、计算机的数据传送方式 1、并行传送方式:各数据位同时传送,传输线多,传送速度快,距离近。 2、串行传送方式:数据逐位传送,只需1根传输线,传送速度慢,距离远。 分:异步串行通信方式 同步串行通信方式 yjia@zjip.com
§9.1 串行通信基础知识 一、计算机的数据传送方式 • 二、异步串行通信的字符格式 1、串行通信时信息的两种状态: mark:也称为“标号”状态,对应为“逻辑1” space:也称为“空格”状态,对应为“逻辑0” 2、字符格式(帧格式) yjia@zjip.com
二、异步串行通信的字符格式 2、字符格式(帧格式) • 起始位:space状态,占用一位,用来表示一个新字符的开始。 • 数据位:5位、6位、7位或8位。各数据位传送顺序:低位在前,高位在后。 • 奇偶校验位:偶校验、奇校验和无校验位。 yjia@zjip.com
二、异步串行通信的字符格式 2、字符格式(帧格式) • 奇偶校验位:偶校验、奇校验和无校验位。 奇校验:使各数据位加校验位含有奇数个“1”的校验方式。例如,某异步串行通信含有8位数据位,采用奇校验方式,若传送十六进制数34H,则校验位应为“0”; 偶校验:使各数据位加校验位含有偶数个“1”的校验方式。上例中若采用偶校验方式,传送十六进制数34H,则校验位应为“1” yjia@zjip.com
二、异步串行通信的字符格式 2、字符格式(帧格式) • 起始位:space状态,占用一位,用来表示一个新字符的开始。 • 数据位:5位、6位、7位或8位。各数据位传送顺序:低位在前,高位在后。 • 奇偶校验位:偶校验、奇校验和无校验位。 • 停止位:mark状态,可1位、1.5位或2位。 yjia@zjip.com
二、异步串行通信的字符格式 2、字符格式(帧格式) • 例1:某异步串行通信的字符格式为:1位起始位、8位数据位、2位停止位,并含有1位奇校验位(12位/帧),请画出传送字符“T”的ASCII码的帧格式。 解:字符“T”的ASCII码为54H,即二进制数为01010100B,含有奇数个(3个)“1”,因此校验位应为“0” yjia@zjip.com
§9.1 串行通信基础知识 • 三、串行通信的数据通路形式 1、单工: 数据传送方向为单向 一端固定为发送,一端固定为接收。 yjia@zjip.com
§9.1 串行通信基础知识 三、串行通信的数据通路形式 1、单工: • 2、全双工:数据传送方向为双向,可同时接收和发送数据。 yjia@zjip.com
§9.1 串行通信基础知识 • 四、串行通信的数据通路形式 1、单工 2、全双工 3、半双工:数据传送方向为双向,但同一时刻只能 接收或发送数据。 yjia@zjip.com
注意: • MCS-51单片机的串行口是全双工的串行口,其帧格式为:1位起始位、8位数据为、1位(或无)校验位、1位停止位 yjia@zjip.com
§9.1 串行通信基础知识 • 四、波特率: 1、波特率:每秒钟传送二进制的位数。 2、单位:位/秒(bps)或波特(baud) 3、波特率决定了每位传送的时间 例2:上例中串行异步传送的帧格式为12位/帧,若采用2400bps的波特率,则每秒能传送多少个字符? yjia@zjip.com
§9.1 串行通信基础知识 • 五、异步串行通信的标准—RS-232C标准 RS:Recommended Standard 是美国电子工业协会( EIA,Electronic IndustryAssociation)的推荐标准,第232号修改版C。 1、电平特点:电平范围:-25V~+25V 逻辑1:-3V~-25V 逻辑0:+3V~+25V 采用负逻辑 2、波特率:≤19200bps,即19.2kbps 其中为:50、75、110、150、300、600、1200、 2400、4800、9600、 19200bps yjia@zjip.com
五、异步串行通信的标准—RS-232C标准 3、RS-232C连接器及引脚定义: • 连接器:DB-25、DB-9 目前,大多数计算机使用DB-9连接器与外界进行串行通信, DB-9连接器引脚定义如下: yjia@zjip.com
引脚 信号名称 简称 方向 信号功能 1 接收线路信号检测 DCD DTE← DCE已接收到远程信号 2 接收数据 RXD DTE← DTE接收串行数据 3 发送数据 TXD →DCE DTE发送串行数据 4 数据终端就绪 DTR →DCE DTE准备就绪 5 信号地 GND 信号地 6 数据传送设备就绪 DSR DTE← DCE准备就绪 7 请求发送 RTS →DCE DTE请求切换到发送方式 8 清除发送 CTS DTE← DCE已切换到准备接收(清楚发送) 9 振铃指示 RI DTE← 通知DTE,通信线路已通 §9.1 串行通信基础知识 • DB-9引脚定义:(P226: DB-25引脚定义) yjia@zjip.com
§9.1 串行通信基础知识 3、RS-232C连接器及引脚定义 • 连接器: • DB-9引脚定义 • 串行通信的重要引脚: RXD:串行接收数据引脚 TXD:串行发送数据引脚 GND:信号地 yjia@zjip.com
§9.1 串行通信基础知识 • 六、串行接口电路 1、串行通信要解决的技术问题 • 数据转换:串行数据与并行数据的相互转换 • 数据传送:标准、格式等 2、串行接口电路 :UART,通用异步接收发送器 Universal Asynchronous Receiver and Transmitter • 如INTEL8250、8251芯片就是一种串行接口电路 • MCS-51的串行接口电路集成在芯片内部 yjia@zjip.com
§9.2 MCS-51的串行口及控制寄存器 • 一、51串行口的UART结构 1、串行口的结构 • 具有两个串行口缓冲寄存器 接收SBUF: 发送SBUF: 共用一个地址99H • 接收部分采用两级缓冲 移位寄存器:串 并 接收SBUF:暂存接收到的数据 yjia@zjip.com
一、51串行口的UART结构 • 2、发送接收过程 • 发送过程: 由指令:MOV SBUF,A 启动发送,UART根据工作方式自动插入格式信息,位串由TXD引脚发出,发送完毕TI置1。 • 接收过程:当测试到RXD引脚由高变低时,移位寄存器开始接收数据,根据工作方式,自动滤除格式信息,接收完数据RI置1,并将接收到的数据转换为并行数据保存到接收SBUF中。 yjia@zjip.com
§9.2 MCS-51的串行口及控制寄存器 • 二、51串行口的控制 1、SCON • SM0SM1:串行口工作方式控制,00~11:方式0~3 • SM2:多机通信控制位 • REN:接收允许控制位,REN=1,允许 • TB8/RB8:在方式2、3时,发送/接收的第9位数据 • TI/RI:发送/接收标志,在发送/接收完一帧数据后。硬件置为1,必须软件清除。 例:MOV SCON,#50H 表示串行口工作于方式1,允许接收方式。 yjia@zjip.com
§9.2 MCS-51的串行口及控制寄存器 • 二、51串行口的控制 2、PCON • 回忆GF1、GF0和PD、IDL位的控制意义 • SMOD:波特率倍增位,SMOD=1,波特率倍增 yjia@zjip.com
§9.2 MCS-51的串行口及控制寄存器 • 二、51串行口的控制 3、IE 4、IP • 回忆各位的控制意义 yjia@zjip.com
§9.2 MCS-51的串行口及控制寄存器 • 二、51串行口的控制 例:读下面程序,说明控制功能 MOV SCON,#50H MOV IP,#10H MOV IE,#90H LOOP:JNB TI,LOOP CLR TI MOV A,#54H MOV SBUF,A LJMP LOOP yjia@zjip.com
§9.3 MCS-51串行通信工作方式及应用 • 一、串行工作方式0—8位同步移位寄存器方式 1、设置方法:SCON中的SM0SM1=00 2、特点: • RXD脚接收或发送数据 TXD脚送出同步移位脉冲 • 帧格式: 。。。D7、D0、D1、D2、D3、D4、D5、D6、D7、D0。。。 • 波特率:固定为fosc/12 3、应用:串口转换为并口 与串入并出(或并入串出)移位寄存器连接 yjia@zjip.com
一、串行工作方式0—8位同步移位寄存器方式 • 3、应用:串口转换为并口 (1)与并入串出移位寄存器CD4014连接使用,将8位并行输入转换为串行输入。 (2)与串入并出移位寄存器CD4094连接使用,将串行的输出转换为并行的输出。 yjia@zjip.com
(2)与串入并出移位寄存器CD4094连接使用 • CD4094介绍 • DATA:串行数据输入端。 • CLK:移位时钟。 • Q0~Q7:并行数据输出端,其中Q7输出第1个由DATA引脚输入的串行数据D0,Q0出第8个由DATA引脚输入的串行数据D7。 • STB:锁存控制,STB=1,锁存器通。 • OE:三态缓冲控制。OE=1,三态门通。 • Qs:级连输出。CLK上升沿输出q7数据 • Qs′:级连输出。CLK下降沿输出q7数据 yjia@zjip.com
(2)与串入并出移位寄存器CD4094连接使用 • 应用举例:如图,使用8051串行口控制CD4094点亮8支发光二极管,试将8支发光二极管从左到右循环点亮。 • 分析:点亮左1发光管,Q0~Q7呈1000’0000,串行口送出80H 点亮左2发光管,Q0~Q7呈0100’0000,串行口送出40H 点亮左3发光管,Q0~Q7呈0010’0000,串行口送出20H 。。。。。。 点亮左8发光管,Q0~Q7呈0000’0001,串行口送出01H yjia@zjip.com
设置串行口工作方式 不允许中断 A #80H STB 0 SBUF A 发送完? N Y 取下数据 清TI 延 时 STB 1 (2)与串入并出移位寄存器CD4094连接使用 • 程序如下: MOV SCON,#00H CLR ES MOV A,#80H LOOP:CLR P1.0 MOV SBUF,A JNB TI,$ CLR TI SETB P1.0 ACALL DELAY RR A LJMP LOOP yjia@zjip.com
(2)与串入并出移位寄存器CD4094连接使用 • 程序如下: MOV SCON,#00H CLR ES MOV A,#80H LOOP:CLR P1.0 ;1 MOV SBUF,A ;1 JNB TI,$ ;2 CLR TI ;1 SETB P1.0 ;1 ACALL DELAY ;2 RR A ;1 LJMP LOOP ;2 • 若fosc=12MHz,每LOOP需9个机器周期,即9μS。 • 每幅72 μS,即每秒可扫描14000幅 yjia@zjip.com
§9.3 MCS-51串行通信工作方式及应用 • 二、串行工作方式1—10位异步串行通信方式 1、设置方法:SCON中的SM0SM1=01 2、特点: • RXD(P3.0)引脚接收数据 TXD(P3.1)引脚发送数据 • 帧格式: 起始位、D0、D1、D2、D3、D4、D5、D6、D7、停止位 • 波特率: yjia@zjip.com
§9.3 MCS-51串行通信工作方式及应用 二、串行工作方式1 • 波特率:T1工作于方式2提供波特率 • 设T1工作于方式2,初值为X • T1溢出周期=(256-X)机器周期 =(256-X)·12/fosc • T1溢出率=fosc/[(256-X)·12] • 波特率为 例:51单片机以方式1进行串行数据通信,波特率为1200bps。 若晶体振荡频率fosc为6MHz,试确定定时器/计数器1的计数初值。 yjia@zjip.com
计算得:约F3H 要想提供精确的波特率,常使用11.0592MHz频率的晶体振荡器,提供出1200bps、2400bps、4800bps、9600bps等多种常用串行通信波特率 程序: MOV SCON,#50H MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV IE,#00H MOV IP,#00H 波特率计算 yjia@zjip.com
二、串行工作方式1 1、设置方法 2、特点 • 3、应用举例: 例: 假定甲乙两单片机使用晶体振荡器频率为6MHz,以方式1进行串行数据通信,通信波特率为1200bps。甲机发送数据,先发数据区首末地址,再发数据区数据。甲机要发送的数据存放于内部RAM的40H~4FH单元中;乙机接收,并把接收到的数据块首末地址及其数据存放于外RAM5000H开始的单元中。试编写甲乙两机的串行通信程序 yjia@zjip.com
编程步骤 (1)计算T1计数初值,设置1200波特率: (2)甲乙两机SCON的设置 (3)初始化程序 (4)串行发送接收程序 yjia@zjip.com
(3)初始化程序 甲机: MOV SCON,#40H MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV IE,#00H (MOV IP,#00H) SETB TR1 乙机: MOV SCON,#50H MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV IE,#00H (MOV IP,#00H) SETB TR1 yjia@zjip.com
MOV SBUF,#40H JNB TI,$ CLR TI SETB ES MOV SBUF,#1FH MOV DPTR,#4000H MOV R7,#20H SJMP $ ACINT:MOVX A,@DPTR CLR TI MOV SBUF ,A DJNZ R7,AEND CLR ES CLR TR1 AEND:INC DPTR RETI (3)甲机发送程序 甲机发送: MOV SCON,#40H MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB EA CLR ES SETB TR1 MOV SBUF,#40H JNB TI,$ CLR TI MOV SBUF,#00H JNB TI,$ CLR TI ? yjia@zjip.com
INC DPTR JNB RI,$ CLR RI MOV A, SBUF MOVX @DPTR,A INC DPTR JNB RI,$ CLR RI MOV A, SBUF MOVX @DPTR,A INC DPTR SETB ES SJMP $ BCINT:MOV A , SBUF MOVX @DPTR ,A CLR RI DJNZ R7,AEND CLR ES CLR TR1 BEND:INC DPTR RETI (3)乙机接收程序 MOV SCON,#50H MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB EA CLR ES SETB TR1 MOV DPTR,#5000H MOV R7,#20H JNB RI,$ CLR RI MOV A, SBUF MOVX @DPTR,A INC DPTR JNB RI,$ CLR RI MOV A, SBUF MOVX @DPTR,A yjia@zjip.com
§9.3 MCS-51串行通信工作方式及应用 • 二、串行工作方式2—11位异步串行通信方式 1、设置方法:SCON中的SM0SM1=10 2、特点: • RXD(P3.0)引脚接收数据 TXD(P3.1)引脚发送数据 • 帧格式: 起始位、D0、D1、D2、D3、D4、D5、D6、D7、D8、停止位 • 波特率: yjia@zjip.com
§9.3 MCS-51串行通信工作方式及应用 • 二、串行工作方式2—11位异步串行通信方式 1、设置方法: 2、特点: • 起始位、D0、D1、D2、D3、D4、D5、D6、D7、D8、停止位 3、发送指令: • 先准备D8, 如CLR TB8(或 SETB TB8) • 再发送D0~D7, 如MOV SBUF,A 例:奇校验位为0,发送字符“T”的ASCII码(#54H)的指令: CLR TB8 MOV SBUF,#54H yjia@zjip.com
§9.3 MCS-51串行通信工作方式及应用 • 二、串行工作方式2—11位异步串行通信方式 3、发送指令: • 先准备D8, 如CLR TB8(或 SETB TB8) • 再发送D0~D7, 如MOV SBUF,A 4、接收指令: • 接收D8 如MOV C,RB8 • 接收D0~D7, 如MOV A ,SBUF yjia@zjip.com
§9.3 MCS-51串行通信工作方式及应用 • 二、串行工作方式3—11位异步串行通信方式 1、设置方法:SCON中的SM0SM1=11 2、特点: • RXD(P3.0)引脚接收数据 TXD(P3.1)引脚发送数据 • 帧格式: 起始位、D0、D1、D2、D3、D4、D5、D6、D7、D8、停止位 • 波特率: yjia@zjip.com
串行口实验 一、实验目的: • 掌握双机通信的硬件连接 • 掌握双机通信的工作过程 • 会用查询和中断方式实现双机通信时的软件设计 二、实验内容 甲乙两单片机使用晶体振荡器频率为6MHz,以方式1进行串行数据通信,通信波特率为1200bps。甲机发送数据,先发数据区首末地址,再发数据区数据。甲机要发送的数据存放于内部RAM的40H~4FH单元中;乙机接收,并把接收到的数据块首末地址及其数据存放于外RAM5000H开始的单元中。试完成甲乙两机的串行通信。 yjia@zjip.com
串行口实验 一、实验目的: 二、实验内容 三、实验步骤: 1、将两台单片机实验箱连接成双机通信系统。 2、在甲机内部RAM的40H~4FH地址传送一批要发送的数据;检查并记录乙机外RAM5000H开始的16个地址的初始数据。 3、编程并调试将甲机内部RAM的40H~4FH地址的数据发送出去;乙机接收串行数据并保存在外RAM5000H开始的16个地址中。 4、记录数据,验证程序的正确性。 yjia@zjip.com