• pc与单片机串口通讯 > 89C51 单片机 I/O 口模拟串行通信的实现方法
  • 89C51 单片机 I/O 口模拟串行通信的实现方法

    免费下载 下载该文档 文档格式:PDF   更新时间:2010-12-02   下载次数:0   点击次数:1
    89C51 单片机 I/O 拟串行通信的实现方法
    ·严天峰 · 目前普遍采用的 MCS51 和 PIC 系列单片机通常只有一个 (或没有) UART 异步串行通信接口,在应用系统中若需要多个串行接 例如在多机通信系 统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展 一片 8251 或 8250 通用同步/异步接收发送芯片(USART) ,需额外占用单 片机 I/O 资源。本文介绍一种用单片机普通 I/O 现串行通信的方法,可 在单片机的最小应用系统中实现与两个以上串行接 备的多机通信。 1.串行接 基本通信方式 串行接口的有异步和同步两种基本通信 .串行接 基本通信方式 方式。异步通信采用用异步传送格式,如图 1 所示。数据发送和接收均将起 始位和停止位作为开始和结束的标志。在异步通信中,起始位占用一位(低
    ① 电平) ,用来表示字符开始。其后为 7 或 8 位的数据编码,第 8 位通常做为 奇偶校验位。最后为停止位(高电平)用来表示字符传送结束。上述字符格 式通常作为一个串行帧,如无奇偶校验位,即为常见的 N.8.1 帧格式。 串行通信中,每秒传送的数据位称为波特率。如数据传送的波特率为 1200 波特,采用 N.8.1 帧格式(10 位) ,则每秒传送字节为 120 个,而字节 中每一位传送时间即为波特率的倒数:T=I/1200=0.833ms。同样,如数据传 送的波特率为 9600 波特,则字节中每一位传送时间为 T=1/9600=0.104 ms。 根据数据传送的波特率即字节中每一位的传送时间,我们便可用普通 I/O 口 来模拟实现串行通信的时序。 2.硬件电路 89C51 单片机通过普通 I/O PC 机 RS232 串口实现
    通信的硬件接 路如图 2 所示。由于 PC 系列微机串行 RS232C 标准 接口,与输入、输出均采用 TTL 电平的 89C51 单片机在接口规范上不一致, 因此 TTL 电平到 RS232 接口电平的转换采用 MAXIM 公司的 MAX232 标准 RS232 接口芯片, 该芯片可以用单电压 (+5V) 实现 RS232 接口逻辑 “1” (-3V~
    1
    15V)和逻辑“0” (+3V~15V)的电平转换。图中 89C51 的 P1.0 模拟发送 端,P1.1 模拟接收端。
    ② 3.接 序设计 软件设计中,89C51 单片机的 P1.0 和 P1.1 别
    模拟串行通信的发送和接收,其接口程序主要由 INPUT 发送子程序和 OUTPUT 接收子程序组成。通信速率 1200 bit /s,帧格式为 N.8.1。发送时, ,接着按低位在先的顺序发送 8 位数据,最后 先发送一个起始位(低电平) 发送停止位。接收时,先判断 P1.1 接收端口是否有起始低电平出现,如有 则按低位在先的顺序接收 8 位数,最后判断 P1.1 否有停止高电平出现, 如有则完成一个数据接收,否则继续等待。其中软件编写要严格按照异步通 时序进行,每 bit 位传送时间间隔按通信速率 1200 bit /s 为 833μs。 其模拟串行通信程序清单见下,系统要求单片机晶振为 6M。程序清单如下:
    TXD EQU P1.0 RXD EQU P1.1 ;定义 89C51 P1.0 为发送端,P1.1 为接收端 ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV A, #30H MOV R5,#N SETB RXD ;P1.0 置高 TX: LCALL INPUT ;调用发送子程序,将寄存器 A 中内容发给 PC 机 ; SETB TXD ;P1.1 置高 MOV R0,#40H RX: LCALL OUTPUT ;调用接收子程序,将接收的 N 个数据存放在以 40H 开始的地址中 MOV @R0,A INC R0 DJNZ R5, RX ;N 个数据接收结束,则等待,否则转 RX 继续接收
    2
    AJMP $ ;**************延时 833μs 子程序***** DEL833: MOV R7 ,#205 MS11: DJNZ R7,MS11 RET ; ********************************** ;******** 89C51 发送数据给 PC 机子程序**** INPUT: CLR C MOV TXD,C ;发送起始位 LCALL DEL833 ;延时 MOV R3,#8 REP: RRC A MOV TXD ,C LCALL DEL833 DJNZ R3,REP ;发送 8 位数据 SETB C ;发送停止位 MOV TXD,C LCALL DEL833 RET ;********从 PC 机接收数据子程序******** OUTPUT: JB RXD, $ ; 判断是否有起始位出现 LCALL DEL833 MOV R3,#8 OUT: MOV C ,RXD RRC A LCALL DEL833 ; 接收 8 位数据 DJNZ R3,OUT JNB RXD ,$ ; 判断是否有停止位出现 RET

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • 单片机串口通讯  单片机串口  单片机串口通信  单片机串口通信原理  两个单片机串口通信  单片机模拟串口  单片机有几个串口  stc单片机串口  单片机串口程序