3.11.3 单片机的串行口设计应用编程

3.11.3 单片机的串行口设计应用编程

1.应用电路

1)单片机双机通信

单片机与计算机或单片机与单片机之间的信息交换称为通信。串行通信是指传送数据的各位按顺序一位一位地发送或接收。其特点是仅需一条或者两条传输线,传输线数目少,比较经济,适合远距离传输,但是传输速度较慢。串行通信方式的连接方法如图3.54所示。

图3.54 串行通信方式

2)串行通信的数据传输形式

按照传输数据流向,串行通信具有以下三种传输形式。

(1)单工方式:传输线采用一条线,通信系统一端为发送器(TXD),另一端为接收器(RXD),数据只能按照一个固定的方向传送,如图3.55(a)所示。

(2)半双工方式:传输线仍然采用一条线,在某时刻,通信系统只能由一个TXD和一个RXD组成,不能同时在两个方向传送,收发开关由软件方式切换,如图3.55(b)所示。

(3)全双工方式:这种方式分别用两条独立的传输线来发送数据和接收数据,通信系统每端都有TXD和RXD,可以同时发送和接收数据,即数据可以在两个方向上同时传送,如图3.55(c)所示。

图3.55 串行通信的数据传输形式

2.应用内容

1)设计及要求

设计如下。

(1)串行口设为工作方式1,其中一个单片机为发送方,另外一个单片机为接收方,发送数据块大小为10字节,存放在发送方单片机的内部RAM 50H~59H中,通过发送方单片机的串行口发出,再通过接收方单片机串行口接收,接收数据块存放到接收方单片机的内部RAM 60H~69H中。实验中数据传输通过程序查询控制,通过查询数据判断是否已发送或已收到数据。发送数据之前,发送方单片机持续发送联络信号AAH给接收方单片机,收到接收方单片机的应答信号后,发送方单片机才开始发送数据块。发送和接收的数据均传送至各自P2口的数码管显示。

(2)从键盘接收的字符由串行口1发送出去,从串行口接收的字符在屏幕上显示。这个函数可以用于测试单片机串行口的接收和发送。

(3)单片机发送测试test_send.c,每发送一串字符“HELLO”延时一段时间后重复发送,和微型计算机连接后,微型计算机上执行RS232接口程序就可以在屏幕上显示接收到的字符串。

(4)发测试程序test_tr.c,接收到字节后即刻发送出去,和微型计算机相连后,微型计算机输入的字符应该回显在屏幕上。

要求如下。

(1)参考程序可以在双方同时运行,不同的是在程序运行之前,要判断P1.0口的输入:若P1.0=1,则表示该单片机是发送方;若P1.0=0,则表示该单片机是接收方。

(2)设微型计算机的串行口工作在波特率9600 b/s、数据8位、停止位1位、无奇偶校验的简单模式下,通信端口设置位COM1。

测试时把微型计算机串行口与单片机系统的串行口相连接,串行口收发程序运行在微型计算机上。测试单片机的串行通信状态。

2)解析

工作方式1的数据发送是由一条写发送寄存器(SBUF)指令开始的,随后在串行口由硬件自动加入起始位和停止位,就构成了一个完整的帧格式,然后在移位脉冲的作用下,由TXD端串行输出。一个字符帧发送完后,使TXD输出线维持在1(SPACE)状态下,并将SCON的TI置1,通知CPU可以发送下一个字符。

接收字符时,SCON的REN位应处于允许接收状态(REN=1)。在此前提下,串行口采样RXD端,当采样到从1向0的状态跳变时,就认定是接收到起始位。随后在移位脉冲的控制下,把接收到的数据移入接收寄存器中。直到停止位到来之后停止位送入RB8,并置位中断标志位RI,通知CPU从SBUF取走接收到的一个字符。

3)参考程序

根据设计(1),参考程序如下。

根据设计(2),参考程序如下。

根据设计(3),串行口在工作方式0下的应用举例:用8位串行输入/并行输出的同步移位寄存器74LS164扩展并行输出口。

根据设计(4),采用串行口方式1的双机通信。

(1)数据发送程序如下。

(2)数据接收程序如下。