单片机原理及接口技术 C51编程 教学课件 ppt 作者 张毅刚 第7章 串行口

上传人:E**** 文档编号:89366149 上传时间:2019-05-24 格式:PPT 页数:110 大小:1.25MB
返回 下载 相关 举报
单片机原理及接口技术 C51编程  教学课件 ppt 作者  张毅刚 第7章  串行口_第1页
第1页 / 共110页
单片机原理及接口技术 C51编程  教学课件 ppt 作者  张毅刚 第7章  串行口_第2页
第2页 / 共110页
单片机原理及接口技术 C51编程  教学课件 ppt 作者  张毅刚 第7章  串行口_第3页
第3页 / 共110页
单片机原理及接口技术 C51编程  教学课件 ppt 作者  张毅刚 第7章  串行口_第4页
第4页 / 共110页
单片机原理及接口技术 C51编程  教学课件 ppt 作者  张毅刚 第7章  串行口_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《单片机原理及接口技术 C51编程 教学课件 ppt 作者 张毅刚 第7章 串行口》由会员分享,可在线阅读,更多相关《单片机原理及接口技术 C51编程 教学课件 ppt 作者 张毅刚 第7章 串行口(110页珍藏版)》请在金锄头文库上搜索。

1、第7章 AT89S51单片机的 串行口,1,内容概要 介绍AT89S51串行口的基本工作原理、4种工作方式以及串行口多机通信的工作原理,还介绍各种常用的串行通信的接口标准,以及串行通信的C51编程。,2,AT89S51的串行口为全双工的通用异步收发(UART)的串行口。全双工就是两个单片机之间串行数据可同时双向传输。异步通信是指收、发双方使用各自的时钟控制发送和接收过程,这样可省去收、发双方的一条同步时钟信号线,使得异步串行通信连接更加简单且容易实现。,7.1 串行口的结构 内部结构如图7-1。 两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),可同时发送、接收数据。 发送缓冲器

2、只写不能读。 接收缓冲器只读不能写。 两个缓冲器共用一个特殊功能寄存器字节地址(99H)。 控制寄存器两个:特殊功能寄存器SCON和PCON。,4,5,图7-1 串行口内部结构,7.1.1 串行口控制寄存器SCON 字节地址98H,可位寻址,位地址为98H9FH。格式如图7-2。 图7-2 串行口控制寄存器SCON的格式 SCON中各位功能。 (1)SM0、SM1串行口4种工作方式选择位 SM0、SM1两位编码所对应的4种工作方式如表7-1。,6,(2)SM2多机通信控制位 多机通信仅在方式2和方式3下进行。当串口以方式2或方式3接收时,如果SM2 = 1,则只有当接收到的第9位数据(RB8)

3、为“1”时,才使RI置“1”,产生中断请求,并将接收到的前8位数据送入SBUF。 当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。,7,当SM2 = 0时,则不论第9位数据是“1”还是“0”,都将前8位数据送入SBUF中,并使RI置“1”,产生中断请求。 方式1时,如果SM2 = 1,则只有收到有效的停止位时才会激活RI。 方式0时,SM2必须为0。 (3)REN允许串行接收位。 由软件置“1”或清“0”。 REN=1,允许串行口接收数据。 REN=0,禁止串行口接收数据。,8,(4)TB8发送的第9位数据 方式2和方式3,TB8是要发送的第9位数据,由软件置“1”或清“

4、0”。双机串行通信时,一般作为奇偶校验位;在多机通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。 (5)RB8接收的第9位数据 方式2和方式3,RB8存放接收到的第9位数据。在方式1,如SM2 = 0,RB8是接收到的停止位。在方式0,不使用RB8。 (6)TI发送中断标志位 方式0,串行发送的第8位数据结束时TI由硬件置“1”,在其他方式中,串行口发送停止位的开始时置TI 为“1”。,9,TI =1,表示一帧数据发送结束。TI状态可供软件查询,也可申请中断。CPU响应中断后,在中断服务程序中向SBUF写入要发送的下一帧数据。TI必须由软件清“0”。 (7)

5、RI接收中断标志位 方式0时,接收完第8位数据时,RI由硬件置“1”。在其他工作方式中,串行接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位的状态也可供软件查询。RI必须由软件清“0”。,SCON的所有位都可进行位操作清“0”或置“1”。 7.1.2 特殊功能寄存器PCON 字节地址为87H,不能位寻址。格式图7-3。 图7-3 特殊功能寄存器PCON的格式,11,介绍PCON中各位功能。仅最高位SMOD与串口有关,其它各位的功能已在第2章的节电工作方式一节中作过介绍。 SMOD:波特率选择位。 例如,方式1的波特率计算公式: 方

6、式1波特率 = 定时器T1的溢出率 当SMOD=1时,要比SMOD=0时波特率加倍,所以也称SMOD位为波特率倍增位。,12,7.2 串行口的4种工作方式 4种工作方式由SCON中SM0、SM1位定义,编码见表7-1。 7.2.1 方式0 同步移位寄存器输入/输出方式。该方式并不用于两个AT89S51单片机之间的异步串行通信,而是用于串行口外接移位寄存器,扩展并行I/O口。 8位数据为一帧,无起始位和停止位,先发送或接收最低位。波特率为fosc/12。帧格式如图7-4。 图7-4 方式0的帧格式,13,1方式0输出 (1)方式0输出的工作原理 当执行一条将数据写入发送缓冲器SBUF指令时,产生

7、一个正脉冲,串行口开始把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据,中断标志位TI置“1”。 发送时序如图7-5。,14,图7-5 方式0发送时序,15,(2)方式0输出的应用 典型应用是外扩串行输入/并行输出的同步移位寄存器74LS164,实现并行输出端口的扩展。 图7-6为串行口工作在方式0,通过74LS164的输出来控制8个外接LED发光二极管亮灭的接口电路。当串行口被设置在方式0输出时,串行数据由RXD端(P3.0)送出,移位脉冲由TXD端(P3.1)送出。在移位脉冲的作用下,串行口发送缓冲器的数据逐位地从

8、RXD端串行地移入74LS164中。,16,17,图7-6 串行口的方式0 外接8个LED发光二极管的接口电路,【例7-1】如图7-6所示,编写程序控制8个发光二极管轮流点亮。 图中74LS164的CLK端为同步脉冲输入端,CLR为控制端,当CLR=0时,允许串行数据从A和B端输入但是8位并行输出端关闭;当CLR=1时,A和B输入端关闭,但是允许74LS164中的8位数据并行输出。当8位串行数据发送完毕后,引起中断,在中断服务程序中,单片机通过串行口输出下一个8位数据。 采用中断方式的参考程序如下。,#include #include sbit P1_0=0x90; xdata char nS

9、endByte; delay( ); main( ) SCON=0x00; /* 设置串行口为方式0*/ EA=1; /* 全局中断允许 */ ES=1; /* 允许串行口中断 */ nIndex=1; SBUF=nSendByte; P1_0=0; for(;) ,void Serial_Port( ) interrupt 4 using 0 if(TI=1) P1_0=1; delay( ); P1_0=0; nSendByte=1; if(nSendByte=0) nSendByte =1; SBUF=nSendByte; TI=0; RI=0; delay( ) int nCounte

10、r; for(nCounter=0;nCounter128;nCounter+); ,程序说明: (1)定义了全局变量nSendByte,以便在中断服务程序中能访问该变量。nSendByte用于存放从串口发出的字符,在程序中使用操作符对nSendByte变量进行移位,使得从串口发出的数据为0x01, 0x02, 0x04,0x08,0x10,0x20,0x40,0x80,从而逐个点亮不同的发光二极管。 (2)if语句的作用是当nSendByte左移一位由0x80变为0x00后,需对变量nIndex重新赋值为1。 (3)主程序中的SBUF=nSendByte语句必不可少,如没有该语句,主程序并不

11、从串行口发送数据,也就不会有发送完成中断。,(4)循环语句for(;)的循环条件为空,表示for循环为一个无限循环,与while(1)实现同样的功能。,2方式0输入 (1)方式0输入工作原理 方式0接收,REN为允许接收控制位,REN=0,禁止接收;REN = 1,允许接收。 当向SCON寄存器写入控制字(设置为方式0,并使REN位置“1”,同时RI = 0)时,产生一个正脉冲,串行口开始接收数据。 引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器以fosc/12的固定波特率采样RXD引脚的数据信息,当接收完8位数据时,中断标志RI置“1”,表示一帧数据接收完毕,可进行下一帧数据的接

12、收,时序如图7-7。,23,图7-7 方式0接收时序,(2)方式0输入应用举例 【例7-2】图7-8为串口外接一片8位并行输入、串行输出的同步移位寄存器74LS165,扩展一个8位并行输入口的电路,可将接在74LS165的8个开关的状态通过串口方式0读入到单片机内。74LS165的SH/LD*端为控制端。若SH/LD*=0,则74LS165可并行输入数据,且串行输出端关闭;SH/LD*=1,则并行输入关断,可以串行输出。 图中由P1.0检测的开关S合上时开始数字量并行读入,采用中断方式来完成数字量的读取。参考程序如下。,25,26,图7-8 外接并行输入串行输出的同步移位寄存器,#includ

13、e #include sbit P1_0=0x90; sbit P1_1=0x91; xdata char nRxByte; delay( ); main( ) xdata char nRxByte=0; SCON=0x00; /* 串行口初始化为方式0*/ ES=1; /* 允许串行口中断 */ EA=1; /* 允许全局中断 */ for(;) if(P1_0=0) /* P1.0=0为真,表示要并行读入数字量 */ P1_1=0; /* P1.1清0,将数字量并行读入*/ P1_1=1; /* P1.1置1,将并行读入数字量串行输出给单片机*/, void Serial_Port() i

14、nterrupt 4 using 0 if(RI=1) nRxByte=SBUF; /*读入SBUF 中的数据*/ TI=0; /*清除TI和RI标志位*/ RI=0; 程序说明:当P1.0为0表示要并行读入数字量,通过P1.1把SH/LD*复位,则并行读入,再把SH/LD*置1,74LS165就将并行读入的数字量通过QH端串行发给单片机,在中断服务程序中读入SBUF中的数据。,7.2.2 方式1 方式1为双机串行通信方式,如图7-9所示。 当SM0、SM1=01时,串行口设为方式1的双机串行通信。TXD脚和RXD脚分别用于发送和接收数据。 图7-9 方式1双机串行通信的连接电路,29,方式1

15、一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。帧格式如图7-10。 图7-10 方式1的帧格式 方式1为波特率可变的8位异步通信接口。波特率由下式确定: 方式1波特率 = 定时器T1的溢出率 SMOD为PCON寄存器的最高位的值(0或1)。,30,1方式1发送 方式1输出时,数据位由TXD端输出,发送一帧信息为10位:1位起始位0,8位数据位(先低位)和1位停止位1。当CPU执行一条数据写SBUF的指令,就启动发送。发送时序见图7-11。 图7-11中TX时钟的频率就是发送的波特率。 发送开始时,内部发送控制信号 变为有效,将起始位向TXD脚(P3.0)

16、输出,此后每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD引脚输出一个数据位。8位数据位全部发送完毕后,中断标志位TI置“1。,31,图7-11 方式1发送时序,32,2方式1接收 方式1接收时(REN = 1),数据从RXD(P3.1)引脚输入。当检测到起始位的负跳变,则开始接收。接收时序见图7-12。 接收时,定时控制信号有两种,一种是接收移位时钟(RX时钟),它的频率和传送的波特率相同。另一种是位检测器采样脉冲,频率是RX时钟的16倍。以波特率的16倍速率采样RXD脚状态。当采样到RXD端从1到0的负跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)取两次相同的值,以确认起始位(负跳变)的开始,较好地消除干扰引起的影响。,33,图7-12 方式1接收时序,34,当起始位有效时,开始接收一帧信息。每一位数据都进行3次连续采样(第7、8、9个脉冲采样),接

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号