1、第第7章章 51单片机串行接口单片机串行接口主 要 章 节 7.1 通信的基本概念 7.2 51单片机串行口的功能与结构 7.3 串行口的工作方式 7.4 串行口的应用2023-5-1311第第7章章 51单片机串行接口单片机串行接口7.1 通信的基本概念 7.1.1 并行通信和串行通信2023-5-1321(a)并行通信 (b)串行通信第第7章章 51单片机串行接口单片机串行接口根据信息传送的方向,串行通信可以分为单工、半双工和全双工2023-5-1331 A B A B A B s s (a)单工 (b)半双工 (c)全双工第第7章章 51单片机串行接口单片机串行接口7.1.2 串行通信的
2、基本过程 1.发送过程 2023-5-1341发送时钟数据线0 1 1 0 0 1 1 0第第7章章 51单片机串行接口单片机串行接口 2.接收过程2023-5-1351接收时钟 数据线0 1 1 0 0 1 1 0 第第7章章 51单片机串行接口单片机串行接口7.1.3 串行通信的通信方式 1.串行异步通信方式2023-5-1361 第 n+1 个字符 起始位 奇偶校验位 停止位 下一个起始位 D2 D1 D0 D3 D4 D5 D6 D7 数据位 D0 D1 0 0 1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 D2 第 n 个字符 1 1 1
3、 1 空闲位 空闲位 特点:u 一次传送的位数比较少,对发送时钟和接收时钟的同步性要求相对不高,线路简单。u 传送速度较慢。第第7章章 51单片机串行接口单片机串行接口 2.串行同步通信方式2023-5-1371同步字符1同步字符2数据块校验字符1校验字符2特点:u 一次连续传送多个字符,传送的位数多,对发送时钟和接收时钟同步性要求很高,控制线路复杂u 传送速度快。第第7章章 51单片机串行接口单片机串行接口 7.1.4 波特率 波特率是指串行通信中,单位时间传送的二进制位数,单位为bps。传输速度往往又可用每秒传送多少个字节来表示(Bps)。它与波特率的关系为:波特率(bps)=一个字符的二
4、进制位数字符/秒(Bps)2023-5-1381第第7章章 51单片机串行接口单片机串行接口7.2 51单片机串行口的功能与结构7.2.1 串行口的功能 51单片机具有一个全双工的串行异步通信接口,可以同时发送和接收数据。有四种工作方式:方式0、方式1、方式2和方式3。方式0为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展I/O接口。方式1为8位的异步通信方式,通常用于双机通信。方式2和方式3为9位的异步通信方式,通常用于多机通信2023-5-1391第第7章章 51单片机串行接口单片机串行接口7.2.2 串行口的结构2023-5-13101 发送SBUF 接收SBUF 发 送 控 制 器
5、 接 收 控 制 器 输 入 移 位 寄 存 器 串行口控制寄存器 波特率发生器 串 行 口 中 断 内部总线 门 +RXD(P3.0)TXD(P3.1)RI TI 串行口数据寄存器(SBUF),串行口控制寄存器SCON、电源控制寄存器PCON以及定时/计数器和中断系统中的特殊功能寄存器组成。第第7章章 51单片机串行接口单片机串行接口7.2.3 串行口控制寄存器SCON2023-5-13111SM0、SM1:串行口工作方式选择位SCOND7D6D5D4D3D2D1D098HSM0SM1SM2RENTB8RB8TIRISM0SM1方式功能波特率00方式0移位寄存器方式fosc/1201方式18
6、位异步通信方式可变10方式29位异步通信方式fosc/32或fosc/6411方式39位异步通信方式可变SM2:多机通信控制位。REN:接收允许控制位。TB8:发送数据的第9位。RB8:接收数据的第9位。TI:发送中断标志位。RI:接收中断标志位。第第7章章 51单片机串行接口单片机串行接口 7.2.4 电源控制寄存器PCON2023-5-13121PCOND7D6D5D4D3D2D1D087HSMODXXXGF1GF0PDIDLSMOD:波特率加倍位。当SMOD位为1,则串行口方式1、方式2、方式3的波特率加倍。GF1、GF0:通用标志位。由软件置位或复位 PD:掉电方式位。当PD=1时,进
7、入掉电方式。IDL:待机方式位。当IDL=1时,进入待机方式。第第7章章 51单片机串行接口单片机串行接口7.3 串行口的工作方式串行口的工作方式7.3.1 方方式式0-移位寄存器方式移位寄存器方式 方式方式0通常用来外接移位寄存器,用作扩展通常用来外接移位寄存器,用作扩展I/O口。口。u RXD:串行数据:串行数据 TXD:同步时钟。:同步时钟。u 数据格式:低位在前,高位在后,长度数据格式:低位在前,高位在后,长度8位,在位,在SBUF中。中。u 波特率:波特率:fosc/12。(1)发送)发送n条件:条件:TI=0n操作:操作:MOV SBUF,An 结果:发送完毕,结果:发送完毕,TI
8、置置“1”。第第7章章 51单片机串行接口单片机串行接口u 条件:条件:RI=0u 操作:操作:REN(SCON.4)置)置“1”u 结果:结果:8位数据接收数据缓冲器位数据接收数据缓冲器SBUF中,同时,中,同时,RI置置“1”,向,向CPU申请中断。申请中断。u 用户处理:用户处理:MOV A,SBUF(2)接收)接收第第7章章 51单片机串行接口单片机串行接口7.3.2 方方式式1-8位异步通信方式位异步通信方式u TXD:发送数据端:发送数据端 RXD:接收数据端。:接收数据端。u 数据格式:数据格式:1位起始位(位起始位(0),),SBUF中中8位数据位(低位位数据位(低位在前)和在
9、前)和1位停止位(位停止位(1)。)。u波特率:波特率:2SMOD(T1的溢出率)的溢出率)/32(1)发送)发送u 条件:条件:TI=0u 操作:操作:MOV SBUF,Au 结果:发送完毕,结果:发送完毕,TI置置“1”。第第7章章 51单片机串行接口单片机串行接口u 条件:条件:RI=0,REN(SCON.4)置)置“1”。u 结果:结果:8位数据接收数据缓冲器位数据接收数据缓冲器SBUF中,同时,中,同时,RI置置“1”,向,向CPU申请中断。申请中断。u 用户处理:用户处理:MOV A,SBUF(2)接收)接收第第7章章 51单片机串行接口单片机串行接口7.3.3 方方式式2和方式和
10、方式3u TXD:发送数据端:发送数据端 RXD:接收数据端:接收数据端u 数据格式:数据格式:1位起始位(位起始位(0),),SBUF中中8位数据位(低位位数据位(低位在前)第在前)第9位位TB8和和1位停止位(位停止位(1)u波特率:波特率:2SMOD(T1的溢出率)的溢出率)/32(1)发送)发送u 条件:条件:TI=0u 操作:先准备第操作:先准备第9位位TB8,执行,执行MOV SBUF,Au 结果:发送完毕,结果:发送完毕,TI置置“1”。第第7章章 51单片机串行接口单片机串行接口u 条件:条件:RI=0,REN(SCON.4)置)置“1”。u 结果:结果:SM2=0,接收的前,
11、接收的前8位数据送位数据送SBUF,第,第9位送位送RB8,RI置置“1”,向,向CPU申请中断。申请中断。SM2=1,若接收的第,若接收的第9位为位为1,则前,则前8位数据送位数据送SBUF,第第9位送位送RB8,RI置置“1”,向,向CPU申请中断。申请中断。u 用户处理:用户处理:MOV A,SBUF(2)接收)接收第第7章章 51单片机串行接口单片机串行接口7.4 串行口的应用 7.4.1 利用方式利用方式0扩展并行扩展并行I/O接口接口【例【例7-1】用8051单片机的串行口外接串入并出的芯片74HC164扩展并行输出口控制一组发光二极管,使发光二极管从右至左延时轮流显示。74HC1
12、64是一块8位的串入并出的芯片,共14个引脚,除了电源和地信号外,A、B:串行数据输入端;CLK:串行时钟信号输入端;Q0Q7:8位数据并行输出端;:清零端,输入低电平时74HC164输出端清0;在CLK=0、=1时,74HC164保持原来数据。2023-5-13191CLRCLR第第7章章 51单片机串行接口单片机串行接口2023-5-13201第第7章章 51单片机串行接口单片机串行接口设串行口采用查询方式,显示的延时依靠调用延时子程序来实现2023-5-13211汇编语言程序:ORG 0000HLJMP MAINORG 0100HMAIN:MOV SCON,#00H;串口初始化方式0MO
13、V A,#0FEHSTART:MOV SBUF,A;51单片机串口发送LOOP:JNB TI,LOOP;等待发送ACALL DELAY;延时CLR TIRL A;循环移位改变显示内容SJMP STARTDELAY:MOV R7,#80H;延时子程序LOOP2:MOV R6,#0FFHLOOP1:DJNZ R6,LOOP1DJNZ R7,LOOP2RETEND第第7章章 51单片机串行接口单片机串行接口2023-5-13221#include /包含特殊功能寄存器库#include /包含内部函数void main()unsigned char i;unsigned int j;SCON=0 x
14、00;/串口初始化方式0i=0 xFE;for(;)SBUF=i;/51单片机串口发送while(!TI);/等待发送TI=0;for(j=0;j=20000;j+)_nop_();/延时i=_crol_(i,1);/改变显示内容C语言程序:第第7章章 51单片机串行接口单片机串行接口【例【例7-2】用8051单片机的串行口外接并入串出的芯片74HC165扩展8位并行输入口,输入一组开关的状态,并通过二极管显示出来。74HC165是一块8位的并入串出的芯片,共16个引脚,除了电源和地信号外,P7P0:8位并行输入端;SIN:串行数据输入端;QH、:串行数据同相、反相输出端;CLK:串行时钟信号
15、输入端;CLK INH:串行时钟允许输入端,当它为低电平时,允许CLK时钟输入;S/:串出/并入方式控制输入端,S/=1,允许串行输出,S/=0允许并行置入。74HC165的工作过程一般如下:(1)使控制端S/=0,8位并行数据置入到内部的寄存器;(2)使控制端S/=1,在时钟信号CLK的控制下,内部寄存器的内容按从P0P7的顺序从串行输出端依次输出。2023-5-13231QHLLLLL第第7章章 51单片机串行接口单片机串行接口2023-5-13241P0口接的8个发光二极管第第7章章 51单片机串行接口单片机串行接口串行口方式0数据的接收,用SCON寄存器中的REN位来控制,采用查询RI
16、的方式来判断数据是否输入,汇编语言程序:2023-5-13251ORG 0000HLJMP MAINORG 0100HMAIN:CLR P1.0;74HC165并入NOPNOPNOP SETB P1.0;74HC165串出NOPNOPNOPMOV SCON,#10H;串口初始化方式0,允许接收LOOP:JNB RI,LOOP;接收CLR RIMOV A,SBUFMOV P0,A;送P0口显示SJMP MAINEND第第7章章 51单片机串行接口单片机串行接口C语言程序:2023-5-13261#include /包含特殊功能寄存器库#include /包含内部函数库sbit P1_0=P10;
17、void main()unsigned char i;while(1)P1_0=0;_nop_();_nop_();_nop_();/74HC165并入P1_0=1;_nop_();_nop_();_nop_();/74HC165串出SCON=0 x10;/串口初始化方式0,允许接收while(!RI);/接收RI=0;i=SBUF;P0=i;/送P0口显示 第第7章章 51单片机串行接口单片机串行接口7.4.2 利用方式1实现点对点的双机通信【例【例7-3】用汇编语言编程通过串行实现将甲机的片内RAM中30H3FH单元的内容传送到乙机的片内RAM的40H4FH单元中。2023-5-13271
18、 8051 8051 甲机 RXD TXD GND TXD RXD GND 乙机 甲、乙两机都选择方式1即8位异步通信方式,最高位用作奇偶校验,波特率为1200bps,甲机发送,乙机接收,因此甲机的串口控制字为40H,乙机的串口控制字为50H。第第7章章 51单片机串行接口单片机串行接口 由于选择的是方式1,波特率由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定,则需对定时/计数器T1初始化。设SMOD=0,甲、乙两机的振荡频率为12MHz,由于波特率为1200bps。定时/计数器T1选择为方式2,则初值如下。初值=256-fosc2SMOD/(12波特率32)=256-1
19、2000000/(12120032)230=E6H 根据要求,定时/计数器T1的方式控制字为20H。2023-5-13281第第7章章 51单片机串行接口单片机串行接口甲机的发送程序:乙机的接收程序:2023-5-13291TSTART:MOV TMOD,#20H MOV TL1,#0E6HMOV TH1,#0E6HMOV PCON,#00HMOV SCON,#40HMOV R0,#30HMOV R7,#10HSETB TR1LOOP:MOV A,R0MOV C,PMOV ACC.7,C MOV SBUF,AWAIT:JNB TI,WAIT CLR TI INC R0 DJNZ R7,LOOP RETRSTART:MOV TMOD,#20H MOV TL1,#0E6H MOV TH1,#0E6HMOV PCON,#00HMOV R0,#40H MOV R7,#10HSETB TR1LOOP:MOV SCON,#50H WAIT:JNB RI,WAITMOV A,SBUFMOV C,PJC ERROR ANL A,#7FH MOV R0,AINC R0DJNZ R7,LOOPRET第第7章章 51单片机串行接口单片机串行接口 习习 题题1、2、3、5、62023-5-13301