1、第第7章章 单片机的串行通信技术单片机的串行通信技术7.1 串行通信概述串行通信概述7.2 串行口的结构组成及控制寄存器串行口的结构组成及控制寄存器7.3 串行通信工作方式串行通信工作方式及应用举例及应用举例7.4 串行通信设计应用举例串行通信设计应用举例7.1 串行通信概述串行通信概述并行并行并行并行通通 信信串行串行串行串行串行串行q数据是一位一位传送的数据是一位一位传送的串行串行1位位q优点:优点:传输线少,连线简单传输线少,连线简单q缺点:缺点:速度慢速度慢q适用于远距离适用于远距离或数据量少的通信或数据量少的通信串行通信串行通信计算机计算机网络网络鼠标鼠标扫描仪扫描仪硬盘硬盘并行、并
2、行、串行接口的应用?串行接口的应用?I2C SPIRS232USB常见的串行通信接口常见的串行通信接口:接收时钟接收时钟接收数据接收数据01110011发送时钟发送时钟发送数据发送数据011100110 收、发设备使用各自时钟。收、发设备使用各自时钟。发送方时钟与接收方时钟同步。既保持位同发送方时钟与接收方时钟同步。既保持位同步,也保持字符同步。同步方法:步,也保持字符同步。同步方法:外同步外同步 自同步自同步同步传输同步传输1位位 数据数据计算机计算机外设外设 1 2 3 4 5 6 7 81001111110011111同步时钟同步时钟1位位 数据数据计算机计算机异步传输异步传输外设外设靠
3、靠发送发送和和接收接收速率速率相同来保证相同来保证比特率:位比特率:位/秒秒(bps)波特率:码元波特率:码元/秒秒(Baud)高位高位先送先送发送发送速率速率接收接收速率速率15V15V:逻辑:逻辑1 1 15V15V:逻辑:逻辑0 0美国电子工业协会美国电子工业协会EIAEIA公布的串行总线标准公布的串行总线标准DB-25(阳头)(阳头)DB-9最少最少3 3根线根线RxD (3)TxD (2)地地 (5)RS232-CRS232-C传输距离短,传输速率低。传输距离短,传输速率低。远程通信连接远程通信连接 近程通信连接近程通信连接 MAX232RS-232C电平与电平与TTL电平转换驱动电
4、路电平转换驱动电路 RS-485用于半双工用于半双工 最多可以使用最多可以使用32 对差分驱动器对差分驱动器/接收器。还可以用接收器。还可以用中继器。中继器。RS-485干扰抑制性好。因为阻抗低,无接地问题,干扰抑制性好。因为阻抗低,无接地问题,传输距离可达传输距离可达1200米,传输速率可达米,传输速率可达1Mbps。RS-485常用于常用于一点对多点一点对多点的通信。一般采的通信。一般采用双绞线的结构。用双绞线的结构。单片机通过单片机通过MAX485来完成来完成TTL/RS-485的的电平转换。电平转换。普通的普通的PC机一般不带机一般不带RS485接口,因此要接口,因此要使用使用RS-2
5、32C/RS-485转换器转换器。7.2 串行口的结构组成及控制寄存器串行口的结构组成及控制寄存器 2 2个物理上独立的接收、发送缓冲器个物理上独立的接收、发送缓冲器SBUFSBUF,占,占用同一地址用同一地址99H99H ;接收器是双缓冲结构接收器是双缓冲结构 。P3.1P3.07.3 串行通信工作方式串行通信工作方式 发送条件发送条件 清清 SCON SCON 中发送中断标志中发送中断标志 TI=0TI=0 发送指令发送指令 MOV SBUF MOV SBUF,A A注注:需发送的需发送的 8 8 位字节数据送串行数据缓冲器位字节数据送串行数据缓冲器 SBUF SBUF 后将启动异步发送开
6、始。后将启动异步发送开始。起始位起始位 0 0、停止位、停止位 1 1 在执行发送指令时自动加入在执行发送指令时自动加入 发送传输线发送传输线 TXD TXD 发送发送 10 10 位数据结束位数据结束 发送中断标志发送中断标志 TI=1TI=1注注:若需继续发送,置若需继续发送,置TI=0TI=0,送数据到,送数据到 SBUFSBUF 接收条件接收条件 清清 SCON SCON 中接收中断标志中接收中断标志 RI=0RI=0 置置 SCON SCON 中接收控制标志中接收控制标志 REN=1REN=1 接收传输线接收传输线 RXD RXD 接收同步位接收同步位 接收传输线接收传输线 RXD
7、RXD 有从有从 1 1 到到 0 0 的信号的信号 接收数据接收数据 9 9 位数据送数据接收器位数据送数据接收器8 位字节数据送串行数据缓冲器位字节数据送串行数据缓冲器 SBUF1 位停止位送入位停止位送入 SCON 中的中的 RB8=1 接收接收 10 10 位数据结束位数据结束 接收中断标志接收中断标志 RI=1RI=1注注:若需继续接收,置若需继续接收,置RI=0 指定指定T1T1为波特率时钟发生器(波特率时钟可变)为波特率时钟发生器(波特率时钟可变))(2322812XfoscSMOD波特率时钟通常选择定时器通常选择定时器方式方式2 2(取(取foscfosc为为11.0592MH
8、z11.0592MHz)序号序号波特率波特率SMODX11920010 xfd2960000 xfd3480000 xfa4240000 xf45120000 xe8见见P137表表7.2SIO:MOV SCON,#控制状态字;控制状态字;写方式字且写方式字且 TI=RI=0 (MOV PCON,#80H);波特率加倍;波特率加倍 (MOV TMOD,#20H);T1作波特率发生器作波特率发生器 (MOV TH1,#X);选定波特率;选定波特率 (MOV TL1,#X)(SETB TR1)(SETB EA);开串行口中断;开串行口中断 (SETB ES)1.查询方式查询方式TRAM:MOV A
9、,R0 ;取数据;取数据 MOVSBUF,A ;发送一个字符;发送一个字符WAIT:JBCTI,NEXT;等待发送结束;等待发送结束 SJMPWAITNEXT:INCR0 ;准备下一次发送;准备下一次发送 SJMPTRAM2.中断方式中断方式ORG 0023H;串行口中断入口;串行口中断入口AJMP SINTMAIN:;初始化编程;初始化编程TRAM:MOV A,R0 ;取数据;取数据 MOV SBUF,A ;发送第一个字符;发送第一个字符 H:SJMP H ;其它工作;其它工作 SINT:CLR TI ;中断服务程序;中断服务程序 INC R0 MOV A,R0 ;取数据;取数据 MOV S
10、BUF,A ;发送下一个字符;发送下一个字符 RETI REN=1、RI=0等待接收,当等待接收,当RI=1,从,从SBUF读读取数据。取数据。SETB REN CLR RIWAIT:JBCRI,NEXT;查询等待;查询等待 SJMPWAITNEXT:MOVA,SBUF;读取接收数据;读取接收数据 MOVR0,A;保存数据;保存数据 INCR0 ;准备下一次接收;准备下一次接收 SJMPWAIT查询方式查询方式7.4 串行通信设计应用举例串行通信设计应用举例74LS164DCP89C51RxDTxDORG 0000HAJMP MAINORG 0023HAJMP SBRMAIN:MOV SCON
11、,#00HSETB EASETB ESMOV A,#80HMOV SBUF,ASJMP$SBR:CLR TIACALL DELAYRR AMOV SBUF,ARETI用用1个串入并出寄存器扩展为个串入并出寄存器扩展为8位并行输出口,并口接位并行输出口,并口接8个个LED,并循环轮流显示并循环轮流显示实例实例1 利用利用74LS164扩展并行输出口扩展并行输出口,并实现发光二极管循并实现发光二极管循环控制功能。环控制功能。74LS16474LS164为为8 8位串并转换移位寄存器位串并转换移位寄存器能将串行输入数据转为并行输出能将串行输入数据转为并行输出引脚引脚功能描述功能描述A、B串行数据输入
12、引脚串行数据输入引脚QAQG并行数据输出引脚并行数据输出引脚CLOCK移位脉冲输入端移位脉冲输入端CLEAR移位寄存器清零端移位寄存器清零端#includesbit MR=P10;void delay()unsigned int i;for(i=0;i20000;i+)void main()unsigned char index;unsigned char LED;SCON=0;/设置串行模块工作在方式设置串行模块工作在方式0while(1)MR=1;/74LS164的的MR1,允许输入数据,允许输入数据 LED=0 x7f;for(index=0;index 1)|0 x80);delay(
13、);完整程序完整程序 补充补充实例实例 将将89C51单片机的单片机的TXD接接RXD,实现单片机串行口数,实现单片机串行口数据自发自收,并将接收的数据通过据自发自收,并将接收的数据通过P1口输出到发光二口输出到发光二极管显示。系统时钟频率为极管显示。系统时钟频率为11.0592MHz,自发自收的,自发自收的波特率为波特率为2400bps。编写程序:要求单片机串行口工作。编写程序:要求单片机串行口工作在方式在方式1,从,从TXD发送数据发送数据0 x55H,从,从RXD将该数据读将该数据读回,并送回,并送P1口通过口通过8个发光二极管显示。个发光二极管显示。#include#define uc
14、har unsigned char#define uint unsigned intmain()uchar i=0 x55;uint j=0;TMOD=0 x20;/设置定时器设置定时器1工作在模式工作在模式2 TL1=0 xf4;TH1=0 xf4;/设置定时器设置定时器1初值初值 PCON=0 x00;SCON=0 x50;/选择工作方式选择工作方式1,使能收发功能,使能收发功能 TR1=1;/启动定时器启动定时器1 while(1)SBUF=i;/发送数据发送数据while(!TI);TI=0;/等待数据发送等待数据发送while(!RI);RI=0;/等待发送数据返回等待发送数据返回i
15、=SBUF;/读取接收数据读取接收数据 P1=i;/送入送入P1口显示口显示 i=i;/将发送数取反将发送数取反 for(j=0;j33000;j+);完整程序完整程序 查询方式查询方式#includeunsigned char i=0 x55;unsigned int j=0;main()TMOD=0 x20;TL1=0 xF4;TH1=0 xF4;PCON=0 x00;SCON=0 x50;/选择工作方式选择工作方式1,使能收发功能,使能收发功能 TR1=1;/启动定时器启动定时器1 EA=1;ES=1;SBUF=i;/发送数据发送数据 while(1);中断方式中断方式void uart
16、_int(void)interrupt 4if(RI)RI=0;i=SBUF;P1=i;i=i;for(j=0;j33000;j+);SBUF=i;else TI=0;编制一个发送程序,将一个数组中的数据串行发送。串编制一个发送程序,将一个数组中的数据串行发送。串行口设定为工作方式行口设定为工作方式2,TB8为发送数据的奇偶校验位。为发送数据的奇偶校验位。#include#includesbit p=PSW0;char s=MSC-51 Serial Communication Bus;void main(viod)char a,b=0;SCON=0 x80;/串行口方式串行口方式2 PCON
17、=0 x00;a=strlen(s);实验实验实例实例 for(;ba;b+)ACC=sb;TB8=p;/奇偶校验奇偶校验 SBUF=sb;while(!TI);TI=0;请自学书上请自学书上P139双机通信实例。并完成双机通信实例。并完成第第3次团队作业。次团队作业。请自行设计一个双机通信程序,实现两个单片请自行设计一个双机通信程序,实现两个单片机的相互控制。机的相互控制。要求:要求:自行设计硬件电路,完成相应软件编程,自行设计硬件电路,完成相应软件编程,在在proteus下进行仿真。提交电子版作业。采用下进行仿真。提交电子版作业。采用团队作业方式,每个团队不超过团队作业方式,每个团队不超过
18、3人,学号和人,学号和姓名请写在姓名请写在PROTEUS仿真图里。仿真图里。小 结 用于串行口通信控制的主要寄存器是用于串行口通信控制的主要寄存器是SCON,可以设定,可以设定4 4种工作方式、接收允许、发送种工作方式、接收允许、发送/接收标志、接收标志、2 2个可编程位、个可编程位、1 1个多机通讯位。个多机通讯位。串行通信串行通信方式方式0 0,主要用于,主要用于单片机单片机I/OI/O接口的扩展接口的扩展,在数,在数据的输入和输出控制中,据的输入和输出控制中,RXDRXD作为数据线作为数据线,TXDTXD输出同步时钟输出同步时钟脉冲脉冲。而且,在方式。而且,在方式0 0下,以下,以8 8
19、位数据为一帧,不设起始位和位数据为一帧,不设起始位和停止位,先发送或接收最低位。停止位,先发送或接收最低位。方式方式1 1的数据帧格式是的数据帧格式是1010位位,其中,一个起始位,其中,一个起始位,8 8个数个数据位和一个停止位。发送时由据位和一个停止位。发送时由SBUF=counterSBUF=counter启动发送过启动发送过程程;发送完成后由硬件发送完成后由硬件TITI置位;接收时只要接收位置位;接收时只要接收位REN=1REN=1即即可启动接收过程,接收后由硬件可启动接收过程,接收后由硬件RIRI置位,数据存入置位,数据存入SBUFSBUF。小 结 方式方式2 2和和方式方式3 3的数据帧格式是的数据帧格式是1111位位,包括一个起始,包括一个起始位,位,8 8个数据位个数据位,一个可编程位一个可编程位,一个停止位。方式一个停止位。方式2 2和和方式方式3 3主要用于多机主从式通信。主要用于多机主从式通信。