单片机串行通讯及串行口扩展应用

上传人:san****019 文档编号:70580536 上传时间:2019-01-17 格式:PPT 页数:36 大小:533.01KB
返回 下载 相关 举报
单片机串行通讯及串行口扩展应用_第1页
第1页 / 共36页
单片机串行通讯及串行口扩展应用_第2页
第2页 / 共36页
单片机串行通讯及串行口扩展应用_第3页
第3页 / 共36页
单片机串行通讯及串行口扩展应用_第4页
第4页 / 共36页
单片机串行通讯及串行口扩展应用_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《单片机串行通讯及串行口扩展应用》由会员分享,可在线阅读,更多相关《单片机串行通讯及串行口扩展应用(36页珍藏版)》请在金锄头文库上搜索。

1、第13讲 单片机串行通信及串口扩展应用,13.1串行通信的基本概念 13.2单片机串行通信接口的功能与结构 13.3串行口的工作方式 13.4两个单片机串行通信 13.5单片机串行口扩展应用,13.1串行通信的基本概念,通信:计算机与外界的信息交换。 通信的基本方式: 并行通信和串行通信。 并行通信:构成一组数据的各位同时进行传送。其特点是传送速度快,但若传送距离远、位数又较多时会导致通讯线路复杂且成本较高。 串行通信:数据一位接一位地传送。其特点:通信线路简单,只要一对传输线就可实现通信(如电话线),从而大大降低了成本,特别适用于远距离通信,缺点是传送速度慢。 串行通信分类: 异步传送和同步

2、传送。,返回本节,13.1串行通信的基本概念,1、异步传送方式 特点:数据在线路上的传送不连续。数据的传送以一个字符为单位进行传送。它用一个起始位表示字符的开始,用一个停止位表示字符的结束。 异步传送的字符格式:,返回本节,13.1串行通信的基本概念,在串行异步传送中,通信双方必须事先约定: (1)字符格式 字符的编码形式, 奇偶校验形式, 起始位和停止位的规定。 如ASCII码:有效数据位7,奇偶校验1,起始位和停止位各1,共10位 (2)波特率 数据传送的速率,即每秒钟数据传送的位数,位/秒,一般为50-9600波特。 发送端与接收端的速率必须一致。,返回本节,13.1串行通信的基本概念,

3、2、同步传送方式 每一个要传送的数据块的开头要用同步字符SYN来指示,使发送和接收双方取得同步。 各字符间取消了起始位和停止位,通信速度得到提高。 如果发送的数据块之间有间隔,则发送同步字符填充。,返回本节,13.1串行通信的基本概念,串行通信的数据传送方向的形式: (1)单工方式 (2)半双工方式 (3)全双工方式,返回本节,13.2 单片机串行通信接口的功能与结构,MCS-51单片机内部有一个功能很强的全双工串行口:RXD/ P3.0 ,TXD/P3.5,可同时发送和接收数据。 发送和接收数据均可工作在查询方式和中断方式,使用十分灵活,可很方便地与其它计算机或串行传送信息的设备实现双机、多

4、机通信。,返回本节,13.2 单片机串行通信接口的功能与结构,串行口主要由发送数据缓冲器、发送控制器、接收控制器、输入移位控制器等组成。 发送数据缓冲器只能写入,不能读出;接收数据缓冲器只能读出,不能写入,故两个寄存器共用一个符号(特殊功能寄存器SBUF),共用一个地址(99H)。 串行口中还有两个特殊功能寄存器SCON、PCON: SCON:串行口控制寄存器,控制串行口的工作方式; PCON:电源控制寄存器,只有一位SMOD控制波特率。 波特率发生器可用定时器/计数器0或和定时器/计数器1构成。,返回本节,13.2 单片机串行通信接口的功能与结构,返回本节,串行通信控制寄存器 SCON 寄存

5、器SCON的功能主要是接收串行通信口送到的中断请求信号。其字节地址为98H,它有8位 ,每位均可进行位寻址,各位的地址和名称如下: SCON 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H SM0、SM1:选择串行口四种工作方式,由软件置位或清零; SM2:多机控制位; REN:允许串行接收位; TB8:发送数据第8位; RB8:接收数据第8位; TI:发送中断标志位; RI:接收中断标志位。,13.2 单片机串行通信接口的功能与结构,返回本节,电源控制寄存器 PCON PCON的最高位SMOD是波特率控制位,其余各位与串行口无关。 其字节地址为97H,它有8位 ,各位的地址和

6、名称如下: SCON D7 D6 D5 D4 D3 D2 D1 D0 SMOD=1:波特率增大一倍。,13.3串行口的工作方式,返回本节,13.3串行口的工作方式,返回本节,串行通信控制寄存器 SCON 方式0(SM0=0、SM1=0) 方式0为移位寄存器方式,数据从RXD引脚上接收或发送。一帧信息由8位数据组成,低位在前,波特率固定,为fosc/12。同步脉冲从TXD引脚上输出。 SM2:多机控制位必须为0; REN:允许串行接收位:REN=0,禁止接收; REN=1,允许接收; TB8、RB8:在方式0中无用; TI:发送中断标志位; RI:接收中断标志位 方式0发送或接收完8位数据TI/

7、RI由硬件置1, CPU响应中断后, TI或RI标志位必须由程序清0。,13.3串行口的工作方式,返回本节,串行通信控制寄存器 SCON 方式1(SM0=0、SM1=1) 为8位异步通信接口方式,RXD为接收端,TXD为发送端。一帧信息由10位组成:起始位:1,数据位:8,停止位:1 方式1的波特率可变,由由定时器/计数器T1及SMOD决定,且发送波特率和接收波特率可以不同。 TI=1:置发送中断标志; REN=1,允许接收;操作如下: 1、若RI=0、SM2=0,将8位数据装入SBUF,停止位装入RB8,并置RI=1,申请中断。 2、若RI=0、SM2=1,那么只有停止位为1才发生上述操作;

8、 3、若RI=0、SM2=1且停止位为0,则所接收的数据不装入SBUF,即数据丢失; 4、若RI=1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。,13.3串行口的工作方式,返回本节,串行通信控制寄存器 SCON 方式2:(SM0=1、SM1=0)和方式3(SM0=1、SM1=1) 、均为9位异步通信接口,发送或接收一帧信息由11位组成:起始位:1,数据位:9,停止位:1 、方式2、3仅波特率不同: 方式2波特率:fosc/32(SMOD=1)或fosc/64(SMOD=0) 方式3波特率:由定时器/计数器T1及SMOD决定. 3、方式2和方式3发送、接收数据的过程与方式1基本相同

9、,所不同的仅在于对第9位数据的处理上。发送时,第9位数据由SCON中的TB8提供;接收时,当第9位数据移入移位寄存器后,将8位数据装入SBUF,第9位数据装入SCON中的RB8。,波特率的设置,返回本节,串行口的4种工作方式对应3种波特率模式: 对于方式0: 波特率是固定的,为fosc/12; 对于方式2: 波特率由振荡频率fosc和SMOD(PCON.7)所决定, 波特率= fosc/64 对于方式1和3,波特率由定时器/计数器T1及SMOD决定, 波特率= 定时器/计数器T1溢出率/32,多机通信,返回本节,主从式多机通信: 主机发送信息为两类: 一类地址:串行传送的第九位为1(TB8=1

10、) 一类数据:串行传送的第九位为0(TB8=0),多机通信,返回本节,在实际应用中,需要多个单片机之间协调工作,即多机通信,利用单片机串口即可实现。 串口用于多机通信,必须使用方式2或方式3(9位URAT)。 主从式多机通信:应用最广,也最简单。 主机发出的信息只能传送到所有从机或指定从机; 从机发出的信息只能被主机接收; 从机之间不能直接通信,必须通过主机.,多机通信,返回本节,主机发出的信息有两类: 一类为地址,用来确定和主机通信的从机, 特征是串行传送的第9位数据为1; 另一类为数据, 特征是串行传送的第9位数据为0. 对从机来说,要利用SCON寄存器中的SM2的控制功能: 在接收时,若

11、RI=0,则只要SM2=1,接收总能实现, 若SM2=0,发送的第9位TB8必须0接收才能进行, 因此,对于从机来说, 在接收地址时,应使SM2=1,以便接收主机发来的地址, 从而确定主机是否打算和自己通信; 一经确认后,从机应使SM2=0,以便接收TB8=0的数据.,多机通信,返回本节,主从多机通信的过程: (1)使所有的从机的SM2位置1,以便接收主机发来的地址; (2)主机发出一帧地址信息,其中包括8位需要与之通信的从机地址,第9位为1; (3)所有从机接收到地址帧后,各自将所接收到的地址与本机地址相比较: 对于地址相同的从机,使SM2位清零,以接收主机随后发来的所有信息; 对于地址不符

12、合的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬,直至发送新的地址帧; (4)主机给已被寻址的从机发送控制指令和数据(数据帧的第9位为0).,13.4两个单片机串行通信,返回本节,在控制系统中有甲、乙两个单片机 首先将P1口指拨开关数据载入SBUF,然后经由TXD将数据传送给乙单片机, 乙单片机将接收数据存入SUBF,在经由SBUF载入累加器,并输出至P1,点亮相应端口的LED.,13.4两个单片机串行通信,返回本节,13.4两个单片机串行通信,返回本节,键值是否与前次相同?,是否发送完毕,是否发送完毕,是否发送完毕,N,Y,N,Y,13.4两个单片机串行通信,返回本节,1)单片

13、机1的汇编源程序 ORG 00H AJMP START START: MOV SP,#60H MOV SCON,#50H ;SCON(SM0,SM1,SM2,REN,TB8,RB8,TI,RI) MOV TMOD,#20H ;TMOD(GATE,C/T,M1,M0, GATE,C/T,M1,M0,) MOV TH1,#0F9H ;溢出时间(256-250)/fosc,波特率fosc/6/32 SETB TR1 ;T1启动 MOV 30H,#0FFH ;缓存(30H7FH) READ: MOV A,P1 CJNE A,30H,SAVE ;与缓存比较,看拨码开关是否有变化 JMP READ SAV

14、E: MOV 30H,A ;写缓存 MOV SBUF,A ;写入SBUF,发送 WAIT: JBC TI,READ ;发完,继续读,否则等待 AJMP WAIT END,13.4两个单片机串行通信,返回本节,2) 单片机2的汇编源程序 ORG 00H AJMP START START: MOV SP,#60H MOV SCON,#50H ;SCON(SM0,SM1,SM2,REN,TB8,RB8,TI,RI) MOV TMOD,#20H ;TMOD(GATE,C/T,M1,M0, GATE,C/T,M1,M0,) MOV TH1,#0F9H SETB TR1 READ: JB RI,UART

15、;读完,转处理,否则继续读 AJMP READ UART: MOV A,SBUF MOV P1,A CLR RI AJMP READ END,13.4两个单片机串行通信,返回本节,1)单片机1的C语言源程序 #include”reg51.h” #define unit unsigned int #define uchar unsigned char viod main(viod) uchar i=0; TMOD=0X20; TH1=0XFA; TL1=0XFA; /假设晶振频率为11.0592MHz,波特率设置为57600bps SCON=0X40; /设置方式1,只能发送,不能接收 PCON

16、=0X80;TR1=1;P1=0XFF; while(1) while(P1=0XFF); i=P1; SBUF=I; while(TI=0); TI=0; while(P1!=0xff); ,13.4两个单片机串行通信,返回本节,/*单片机2通信程序*/ #include”reg51.h” #define uint unsigned int #define uchar unsigned char Void main(void) uchar i=0; TMOD=0x20; TH1=0XFA; TL1=0XFA; SCON=0X50; PCON=0X80; TR1=1; while(1) while(RI=0); /查询是否接收完毕串行数据 RI=0; i=SBUF; P2=I; ,13.4两个单片机串行通信,返回本节,13.5单片机串行口扩展应用,返回本

展开阅读全文
相关资源
相关搜索

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

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