1 / 34

9.3 AT89C51 串行接口的应用与编程

9.3 AT89C51 串行接口的应用与编程. 9.3.1 工作方式 0 的应用 串行口工作方式 0 主要用于扩展并行 I/O 口,扩展成并行输出口时,需要外接一片 8 位串行输入并行输出的同步移位寄存器 74HC164 或 CD4094 。扩展成并行输入口时,需要外接一片或几片并行输入串行输出的同步移位寄存器 74HC165 或 CD4014 。. 数据的串行输出或输入可采用中断方式,也可采用查询标志位 TI 、 RI 的方法,在移位初始化时,要进行相应的设置。

glynn
Download Presentation

9.3 AT89C51 串行接口的应用与编程

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. 9.3 AT89C51串行接口的应用与编程 • 9.3.1 工作方式0的应用 • 串行口工作方式0主要用于扩展并行I/O口,扩展成并行输出口时,需要外接一片8位串行输入并行输出的同步移位寄存器74HC164或CD4094。扩展成并行输入口时,需要外接一片或几片并行输入串行输出的同步移位寄存器74HC165或CD4014。

  2. 数据的串行输出或输入可采用中断方式,也可采用查询标志位TI、RI的方法,在移位初始化时,要进行相应的设置。数据的串行输出或输入可采用中断方式,也可采用查询标志位TI、RI的方法,在移位初始化时,要进行相应的设置。 • [例9.1] 利用串行口工作在方式0,外扩一片74HC164构成一个三位LED动态显示器,并将内部RAM显示单元65H、66H、67H中的内容输出显示。如图9-14所示。

  3. 图9-14 串行动态显示图

  4. 主程序如下: • ORG 0100H • STPRT: MOV SCON,#00H • ;串行口初始化为方式0 • SETB P1.2 ;消去最高显示位 • SETB P1.1 • MOV SBUF,65H ;传送最低显示位 • JNB TI,$ ;传送没结束,等待

  5. CLR P1.0 ;最低位显示 • CLR TI ;清中断标志位 • LCALL DSSJ ;调延时子程序,维持状态 • SETB P1.0 ;消去最低显示位 • MOV SBUF,66H ;传送中间显示位 • JNB TI,$ ;等待传送结束 • CLR P1.1 ;显示中间位 • CLR TI ;清中断标志位

  6. LCALL DSSJ ;调延时子程序,维持状态 • SETB P1.1 ;消去中间显示位 • MOV SBUF,67H ;传送最高显示位 • JNB TI,$ ;等待传送结束 • CLR P1.2 ;显示最高显示位 • CLR TI ;清中断标志位 • RET

  7. [例9.2] 利用串行口工作方式0,扩展一片并行输入串行输出的移位寄存器74LS165,如图9-15所示,构成一个8位并行输入口,输入8位开关量(每一开关量代表不同功能,如启动、停止等),并将其存入固定单元60H中。

  8. 图9-15 串行口扩展输入并行口

  9. 串行口工作在方式0,且处于接收状态,则REN置为“1”,SCON的控制字为10H,并行数据采用间隔调用子程序的方式读入,程序如下:串行口工作在方式0,且处于接收状态,则REN置为“1”,SCON的控制字为10H,并行数据采用间隔调用子程序的方式读入,程序如下:

  10. START: CLR P1.0 ;输入并行数据 • SETB P1.0 ;允许串行移位,等待移位脉冲 • MOV SCON ,#10H • ;设串行口方式0,启动接收 • JNB RI,$ ;等待接收一帧数据 • CLR RI ;清中断标志位 • MOV A,SBUF ;读入接收数据 • MOV 60H,A ;存入固定单元 • RET

  11. 9.3.2 工作方式1的应用 • 串行方式1主要用于异步双机通信,波特率由定时器T1产生。 • [例9.3] 利用串行口方式1实现一个数据块的传送,数据块存在内部RAM的60H~6FH中,波特率选为2400,并形成和校验数据一起发送。

  12. 串行口工作为方式1,且处于发送的单工模式,则SCON控制字为40H。方式1的波特率由T1产生,设T1工作于方式2自动重装初值模式,晶振频率为11.0592 MHz时,计数初值为F4H。用于和校验的算术和存放在70H中,并在数据块的末尾传送出去。 • 通过上面的分析,采用查询法传送数据块的子程序如下:

  13. MOV TMOD,#20H ;设置T1为工作方式2 • MOV TL1,#0F4H ;给T1送初值 • MOV TH1,#0F4H • SETB TR1 • MOV SCON,#40H ;设置串行口为工作方式1 • MOV R0,#60H ;数据块首址送R0 • MOV R1,#10H ;数据块长度送R1 • MOV 70H,#00H

  14. DWFP:MOV A,@R0 • MOV SBUF,A ;发送数据 • ADD A,70H ;对和校验求和 • MOV 70H,A • JNB TI,$ ;未发送完等待 • CLR TI

  15. INC R0 • DJNZ R1,DWFP • MOV SBUF,A ;发送和校验 • JNB TI,$ • CLR TI • RET

  16. 9.3.3 工作方式2与工作方式3的应用 • 方式2和方式3都是11位异步通信方式,所不同处仅在于波特率。方式2的波特率只有固定的两种,而方式3的波特率则可由用户设定。 • [例9.4] 利用串行口方式2编制一发送程序,将片内RAM中60H~6FH单元的数据串行发送出去,第九数据位TB8作奇偶校验位。 • 根据要求,将串行口设置为方式2、单工发送,则SCON控制字为80H。波特率选为fosc/64。采用中断方式发送的主程序和中断程序如下:

  17. ORG 0000H • AJMP ZCX1 ;转主程序 • NOP • 0RG 0023H ;串行中断程序 • INC R0 ;被发送数据地址增1 • MOV A,@R0 ;取出待发数据 • MOV C,PSW.0 ;将奇偶位送TB8 • MOV TB8,C • MOV SBUF,A ;发送数据 • DJNZ R1,CSJS ;判断是否发送完 • CLR ES ;发送完关中断

  18. CSJS: CLR TI ;清中断标志 • RETI • NOP • ZCX1: ORG 0100H ;主程序 • MOV SP,#20H ;置堆栈指针 • MOV SCON,#80H ;串行口设置为方式2 • MOV PCON,#00H ;波特率选为fosc/64 • MOV R0,#60H ;数据块首址送R0

  19. MOV R1,#10H ;数据块长度送R1 • SETB EA ;开总中断 • SETB ES ;开串行口中断 • MOV A,@R0 ;取出待发数据 • MOV C,PSW.0 ;将奇偶位送TB8 • MOV TB8,C • MOV SBUF,A ;发送数据 • SJMP ¥ ;等待中断

  20. [例9.5] 试编制串行口在方式3下接收数据块的程序。设单片机晶振为11.0592 MHZ,波特率为2400 b/s,接收数据存在片内RAM的40H起始单元的一段区间内,数据块长度由发送方先发送过来(不超过允许值),每接收一个数据都核对其奇偶校验位,正确存储数据,否则给出出错标志。 • 根据要求,设T1工作于方式2,当SMOD=0时,T1计数初值为F4H。采用查询法编制的程序如下:

  21. START: MOV TMOD,#20H ;置T1工作于方式2 • MOV TH1,#0F4H ;置T1计数初值 • MOV TL1,#0F4H • SETB TR1 ;启动T1 • MOV SCON,#0D0H • ;置串行口工作于方式3允许接收 • MOV PCON,#00H ;设SMOD=0

  22. MOV R0,#40H ;接收数据区首址送R0 • JNB RI,¥ ;等待接收数据块长度字节 • CLR RI ;接收后清RI • MOV A,SBUF • ;将数据块长度读入后存入R1中 • MOV R1,A • OR0: JNB RI,¥ ;等待接收数据 • CLR RI ;接收一个字符后清RI

  23. MOV A,SBUF ;将接收字符读入A • JB PSW.0,OR1 ;进行奇偶位校验 • JB RB8,OR3 • SJMP OR2 • OR1: JNB RB8,OR3 • OR2: MOV @R0,A • ;校验正确存接收数据

  24. INC R0 ;存储单元地址增1 • CLR PSW.5 ;设置正确的标志 • DJNZ R1,OR0 ;没接收完继续接收 • SJMP $ ;接收完停机 • OR3: SETB PSW.5 ;置校验出错标志 • SJMP $ ;停机

  25. 9.4 PC机与单片机间的串行通信 • 9.4.1 RS-232C总线标准 • RS-232C总线标准定义了25个引脚的连接器,各信号引脚的定义如表9-3所示。

  26. 引 脚 定 义(助记符) 引 脚 定 义(助记符) 1 保护地(PG) 14 辅助通道发送数据(STXD) 2 发送数据(TXD) 15 发送时钟(TXC) 3 接收数据(RXD) 16 辅助通道接收数据(SRXD) 4 请求发送(RTS) 17 接收时钟(RXC) 5 清除发送(CTS) 18 未定义 6 数据准备好(DSR) 19 辅助通道请求发送(SRTS) 7 信号地(GND) 20 数据终端准备就绪(DTR) 8 接收线路信号检测(DCD) 21 信号质量检测 9 未定义 22 音响指示(RI) 10 未定义 23 数据信号速率选择 11 未定义 24 发送时钟 12 辅助通道接收线信号检测(SDCD) 25 未定义 13 辅助通道允许发送(SCTS) • 表9-3 RS-232C信号引脚定义

  27. 表9-3中定义的许多信号线是为通信业务联系或信息控制而设置的,在计算机串行通信中主要使用以下一些信号: • (1) 数据传输信号:发送数据(TXD),接收数据(RXD)。 • (2) 调制解调器控制信号:请求发送(RTS),清除发送(CTS),数据准备好(DSR),数据终端准备就绪 (DTR)。 • (3) 时钟信号:发送时钟(TXC),接收时钟(RXC)。 • (4) 地线:保护地(PG),信号地(GND)。

  28. RS-232C总线的其他标准规定如下: • (1)  RS-232C总线标准逻辑电平:+5~+15 V表示逻辑“0”,-15~-5 V表示逻辑“1”,噪声容限为2 V。 • (2) 标准数据传输速率:50 b/s、75 b/s、110 b/s、300 b/s、600 b/s、1200 b/s、2400 b/s、4800 b/s、9600 b/s、19 200 b/s。 • 9.4.2 RS-232C接口电路 • 1. MAX232接口电路 • MAX232芯片是MAXIM公司生产的具有两路接收器和驱动器的IC芯片,其内部有一个电源电压变换器,可以将输入+5 V的电压变换成RS-232C输出电平所需的±12 V电压。

  29. MAX232芯片的引脚结构如图9-16所示。其中管脚1~6(C1+、V+、C1-、C2+、C2-、V-)用于电源电压转换,只要在外部接入相应电解电容即可;管脚7~10和管脚11~14构成两组TTL信号电平与RS-232C信号电平的转换电路,对应管脚可直接与单片机串行口的TTL电平引脚和PC机的RS232电平引脚相连。具体连接可参看图9-17。

  30. 图9-16 MAX232引脚图

  31. 2.PC机与AT89C51单片机串行通信电路 • 图9-17是由芯片MAX232实现PC机与AT89C51单片机串行通信的典型接线图。图中外接电解电容C1、C2、C3、C4用于电源电压变换,提高抗干扰能力,它们可以取相同数值电容1.0 μF/16 V。电容C5用于对+5 V电源的噪声干扰进行滤波,其值一般为0.1 μF。

  32. 图9-17 用MAX232实现串行通信接口电路图

  33. 3.PC机与多个单片机间的串行通信 • 图9-18表示一台PC机与多个单片机间的串行通信电路。这种通信系统一般为主从结构,PC机为主机,单片机为从机。主从机间的信号电平转换由MAX232芯片实现。

  34. 图9-18 PC机和多个单片机串行通信电路

More Related