




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用-第一页,共六十九页,2022年,8月28日第7章MCS-51单片机串行口
目录7.1串行通信基本知识7.2串行口结构及控制7.3串行口工作方式7.4串行口应用举例7.5单片机与PC机通信的接口电路第二页,共六十九页,2022年,8月28日本章要点
本章主要讲述MCS-51单片机串行口的结构、工作原理以及应用。 主要内容包括串行通信基本知识、MCS-51单片机串行口结构、串行口工作方式以及单片机与PC机通信的接口电路。第三页,共六十九页,2022年,8月28日7.1串行通信基本知识主要内容7.1.1数据通信7.1.2异步通信和同步通信7.1.3波特率7.1.4通信方向7.1.5串行通信接口种类第四页,共六十九页,2022年,8月28日7.1.1数据通信
计算机与外界的信息交换称为通信。基本的通信方法有并行通信和串行通信两种。
1.并行通信
单位信息(通常指一个字节)的各位数据同时传送的通信方法称为并行通信。
2.串行通信
单位信息的各位数据被分时一位一位依次顺序传送的通信方式称为串行通信。
第五页,共六十九页,2022年,8月28日7.1.1数据通信图7-1并行通信示意图
从图中可以看出:并行通信连线多,速度快,适合近距离通信;串行通信连线少,速度慢,适合远距离通信。图7-1并行通信示意图图7-2串行通信示意图第六页,共六十九页,2022年,8月28日
1.异步通信 异步通信中,传送的数据可以是一个字符代码或一个字节数据,数据以帧的形式一帧一帧传送。
7.1.2异步通信和同步通信图7-3异步通信的一帧数据格式第七页,共六十九页,2022年,8月28日
2.同步通信 在同步通信中,每一数据块发送开始时,先发送一个或两个同步字符,使发送与接收取得同步,然后再顺序发送数据。数据块的各个字符间取消起始位和停止位,所以通信速度得以提高。7.1.2异步通信和同步通信图7-4同步通信数据帧格式第八页,共六十九页,2022年,8月28日7.1.3波特率
在串行通信中,对数据传送速度有一定要求。波特率表示每秒传送的位数,单位为b/s(记作波特)。 例如:数据传送速率为每秒钟10个字符,若每个字符的一帧为11位,则传送波持率为:
11b/字符×10字符/s=110b/s
异步通信的传送速率一般在50~19200b/s之间。第九页,共六十九页,2022年,8月28日7.1.4通信方向
单工方式:一对传输线只允许单方向传送数据;
半双工方式:一对传输线允许向两个方向中的任一方向传送数据,但不能同时进行;
全双工方式:用两对传输线连接在发送器和接收器上,发送和接收能同时进行。第十页,共六十九页,2022年,8月28日7.1.4通信方向图7-5串行通信传输方式第十一页,共六十九页,2022年,8月28日7.1.5串行通信接口种类
根据串行通信格式及约定(如同步方式、通信速率、数据块格式等)不同,形成了许多串行通信接口标准,如常见的: UART(串行异步通信接口)、
USB(通用串行总线接口)、
I2C(集成电路间的串行总线)、
SPI(串行外设总线)、
485总线、CAN总线接口等。第十二页,共六十九页,2022年,8月28日7.2串行口结构及控制主要内容
7.2.1MCS-51串行口结构
7.2.2与串行口有关的特殊功能寄存器
7.2.3波特率设计第十三页,共六十九页,2022年,8月28日7.2.1MCS-51串行口结构图7-6串行口方式1、3内部结构示意简图第十四页,共六十九页,2022年,8月28日7.2.2与串行口有关的特殊功能寄存器
1.控制状态寄存器SCON
用于定义串行通信口的工作方式和反映串行口状态,其字节地址为98H,复位值为00000000B,可位寻址格式为:D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI第十五页,共六十九页,2022年,8月28日SM0和SM1(SCON.7、SCON.6):串行口工作方式选择位。SM0SM1工作方式功能说明波特率00方式0同步移位寄存器fosc/1201方式18位数据UART可变(T1溢出率/32或/16)10方式29位数据UARTfosc/64或fosc/3211方式39位数据UART可变(T1溢出率/32或/16)7.2.2与串行口有关的特殊功能寄存器SM2(SCON.5):多机通信控制位,在方式2或3中使用。REN(SCON.4):允许接收控制位,由软件置1或清0。第十六页,共六十九页,2022年,8月28日TB8(SCON.3):发送数据的第9位。RB8(SCON.2):接收数据的第9位。TI(SCON.1):发送中断标志。RI(SCON.0):接收中断标志。7.2.2与串行口有关的特殊功能寄存器
关于TI和RI:串行发送中断标志TI和接收中断RI是同一个中断源,CPU事先不知道是发送中断标志TI还是接收中断标志RI产生的中断请求,所以,在全双工通信时,必须由软件来判别。第十七页,共六十九页,2022年,8月28日
2.电源控制寄存器PCON
电源控制寄存器PCON(地址为87H)中只有SMOD位与串行口工作有关。 D7D6D5D4D3D2D1D0SMOD---------GF1GF0PDIDL7.2.2与串行口有关的特殊功能寄存器 SMOD(PCON.7):波特率倍增位。串行口工作于方式1、方式2和方式3时,当SMOD=1时,串行口波特率加倍。复位值为00000000B。PCON寄存器不能进行位寻址。第十八页,共六十九页,2022年,8月28日7.2.3波特率设计
方式0和方式2的波特率是固定的,方式1和方式3的波特率是由定时器T1的溢出率来决定的。在增强型单片机中,也可以使用T2作波特率发生器。
1.方式0的波特率 固定为振荡频率的1/12。并不受PCON寄存器中SMOD位的影响。方式0的波特率=fosc/12第十九页,共六十九页,2022年,8月28日7.2.3波特率设计 2.方式2的波特率 接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟(fosc/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:当SMOD=0时,波特率为fosc的1/64;若SMOD=1,则波特率为fosc的1/32。即方式2的波特率=2SMOD×fosc/64第二十页,共六十九页,2022年,8月28日7.2.3波特率设计 3.方式1和方式3的波特率(1)T1作波特率发生器在最典型应用中,定时器T1选用定时器模式2,此时n=8,设定时器的初值为X:于是, X=256-
方式1、3的波特率=×(T1溢出速率)即波特率=×
×/(2n-初值)第二十一页,共六十九页,2022年,8月28日
(2)T2作波特率发生器 在增强型单片机中,还可以使用T2作为波特率发生器。当寄存器T2CON的位TCLK=1和(或)RCLK=1时,允许串行口从T2获得发送和(或)接收的波特率。 串行口方式1、3的波特率=T2溢出率/16
定时器2作波特率发生器时,计数在每个状态周期递增。这样: 方式1、3的波特率=7.2.3波特率设计第二十二页,共六十九页,2022年,8月28日
主要内容
7.3.1串行口方式0
7.3.2串行口方式1
7.3.3串行口方式2和方式37.3串行口工作方式第二十三页,共六十九页,2022年,8月28日7.3.1串行口方式0
方式0为同步移位寄存器输入/输出方式,常用于扩展I/O口。RXD为数据输入或输出,TXD为移位时钟,作为外接部件的同步信号。
方式0不适用于两个89C52之间的数据通信,可以通过外接移位寄存器来实现单片机的接口扩展。 在这种方式下,收/发的数据为8位,低位在前,无起始位、奇偶校验位及停止位,波特率是固定的。第二十四页,共六十九页,2022年,8月28日7.3.1串行口方式0发送电路接收电路第二十五页,共六十九页,2022年,8月28日例1:用串行口方式0扩展8位并行I/O输出口。74HC164实现:串行→并行的数据转换第二十六页,共六十九页,2022年,8月28日例2:用串行口方式0扩展8位并行I/O输入口。74HC165实现:并行→串行的数据转换第二十七页,共六十九页,2022年,8月28日解:采用中断方式发送数据,显示延时调用延时子程序DELAY。例1:用89C51串口外接74HC164扩展8位并行输出口,每位接一个发光二极管(阴接地),要求从左到右延迟轮流显示,并不断循环。第二十八页,共六十九页,2022年,8月28日 ORG 0000H LJMP MAIN ORG 0023H AJMP SBR ORG 0030HMAIN: MOV SCON,#00H SETB EA SETB ES SETB P1.0 MOV A,#80H MOV SBUF,A SJMP $SBR: CLR TI ACALL DELAY RR A MOV SBUF,A RETIDELAY:…… ;主程序入口;串口中断服务程序入口;串口方式0初始化;CPU开中;串口开中;74HC164的CLR=1,保持有移位输出;输出80H,最左一位先亮;踏步等中断;清发送标志;调用延时子程序,亮一段时间;点亮下一位;中断返回;延时子程序(根据点亮时间编制)第二十九页,共六十九页,2022年,8月28日例2:用89C51串口外接74HC165扩展8位并行输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。当K=0时,表示要求输入8位开关量,作为逻辑模拟子程序的输入信号。解:采用查询方式输入。要点:REN=1,允许接收K闭合才输入 ORG 0000H LJMP START ORG 0030HSTART: MOV SCON,#10HNEXT: JB P1.1,NEXT CLR P1.0 SETB P1.0 JNB RI,$ CLR RI MOV A,SBUF LCALLLOGSIM SJMP NEXTLOGSIM: ׃;串口方式0初始化;开关K未闭合,等待;SHIFT=0,置入并行数据;SHIFT=1,移位的将是置入的数据;查询RI;清RI;输入数据;调用逻辑模拟子程序;继续下一次模拟;逻辑模拟子程序第三十页,共六十九页,2022年,8月28日7.3.2串行口方式1
方式1真正用于串行发送或接收,为10位通用异步接口。TXD与RXD分别用于发送与接收数据。 收发一帧数据的格式为1位起始位、8位数据位(低位在前)、1位停止位,共10位。在接收时,停止位进入SCON的RB8,此方式的传送波特率可调。第三十一页,共六十九页,2022年,8月28日7.3.3串行口方式2和方式3
串行口工作在方式2和方式3均为每帧11位异步通信格式,由TXD和RXD发送与接收(两种方式操作是完全一样的,不同的只是特波率)。
每帧11位:即1位起始位、8位数据位(低位在前)、1位可编程的第9数据位和1位停止位。
发送时,第9数据位(TB8)可以设置为1或0,也可将奇偶位装入TB8;
接收时,第9数据位进入SCON的RB8。
第三十二页,共六十九页,2022年,8月28日7.4串行口应用举例
主要内容
7.4.1同步方式应用
7.4.2异步方式应用第三十三页,共六十九页,2022年,8月28日7.4.1同步方式应用
MSC-51单片机的串行口在方式0时,以同步方式操作。外接串入/并出或并入/串出器件,可实现I/O口的扩展。
例7-2
用89C52串行口外接164串入/并出移位寄存器扩展8位并行输出口,外接165并入/串出移位寄存器扩展8位并行输入口。8位并行输出口的每位都接一个发光二极管,要求从8位并行输入口读入开关的状态值,使闭合开关对应的发光二极管点亮。如图7-13所示。第三十四页,共六十九页,2022年,8月28日7.4.1同步方式应用图7-13方式0扩展输入输出电路第三十五页,共六十九页,2022年,8月28日
解:数据的输入输出通过RXD接收和发送,移位时钟通过TXD送出,74HC164用于串/并转换,74HC165用于并/串转换。
C语言程序清单:#include<reg52.h>sbitP1_0=P1^0; sbitP1_1=P1^1;unsignedchardata1;voidmain(){ SCON=0x10; //串行口方式0,允许接收
ES=1; EA=1; //允许串行口中断7.4.1同步方式应用第三十六页,共六十九页,2022年,8月28日
P1_0=0; //关闭并行输出
P1_1=0; //并行置入数据
P1_1=1; //开始串行移位
while(1); //等待中断}voids_srv()interrupt4 //中断服务程序{ if(TI) //发送中断
{ TI=0; P1_0=1; //打开并行输出
}7.4.1同步方式应用第三十七页,共六十九页,2022年,8月28日
else //接收中断
{ RI=0; data1=SBUF; //读取接收的数据
P1_0=0; //关闭并行输出
SBUF=~data1; //送入串行数据
P1_1=0; //为接收下一次
P1_1=1; //数据做准备
}}
汇编语言程序清单:
ORG 0000H SJMPMAIN ORG 23H SJMPS_SRV ;串行口中断服务程序7.4.1同步方式应用第三十八页,共六十九页,2022年,8月28日MAIN: MOV SCON,#10H;串行口方式0初始化
SETBES SETB EA
CLR P1.0 ;关闭并行输出
CLR P1.1
SETBP1.1
SJMP$ ;等待中断7.4.1同步方式应用第三十九页,共六十九页,2022年,8月28日S_SRV: JBC TI,SEND CLR RI MOV A,SBUF CLR P1.0 CPL A MOV SBUF,A CLR P1.1SETB P1.1 RETISEND: SETB P1.0 RETI7.4.1同步方式应用第四十页,共六十九页,2022年,8月28日7.4.2异步方式应用
串行口方式1与方式3很近似,波特率设置一样,不同之处在于方式3比方式1多了一个数据附加位。 方式2与方式3基本一样(只是波特率设置不同),接收/发送11位信息:开始为1位起始位(0),中间8位数据位.数据位之后为1位程控位(由用户置SCON的TB8决定),最后是1位停止位(1)。只比方式1多了一位程控位。第四十一页,共六十九页,2022年,8月28日
例7-3
将片内RAM50H~5FH中的数据串行发送,用第9个数据位作奇偶校验位,设晶振为11.0592MHz,波特率为2400b/s,编制串行口方式3的发送程序。
解:用TB8作奇偶校验位,在数据写入发送缓冲器之前.先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用,发送采用中断方式。7.4.2异步方式应用第四十二页,共六十九页,2022年,8月28日 C语言程序清单:#include<reg52.h>unsignedchari=0;unsignedchararray[16]_at_0x50; //发送缓冲区voidmain(){ SCON=0xc0; //串行口初始化
TMOD=0x20; //定时器初始化
TH1=0xf4; TL1=0xf4; ES=1; EA=1; //开中断
TR1=1;ACC=array[i]; //发送第一个数据送
TB8=P; //累加器,目的取P位
SBUF=ACC; //发送一个数据
while(1); //等待中断}7.4.2异步方式应用第四十三页,共六十九页,2022年,8月28日voidserver()interrupt4 //串行口中断服务程序{ TI=0; //清发送中断标志
ACC=array[++i]; //取下一个数据
TB8=P; SBUF=ACC; if(i==16) //发送完毕,
ES=0; //禁止串口中断}7.4.2异步方式应用第四十四页,共六十九页,2022年,8月28日
汇编语言程序清单:
ORG 0000H SJMP MAIN ;上电,转主程序
ORG 23H SJMP SERVER ;转中断服务程序MAIN: MOV SCON,#0C0H ;串行口方式3初始化
MOV TMOD,#20H ;定时器1工作在方式2 MOV TH1,#0F4H MOV TL1,#0F4H SETB ES ;允许串行口中断
SETB EA ;CPU开中断
SETB TR1MOV R0,#50H MOV R7,#0FH7.4.2异步方式应用第四十五页,共六十九页,2022年,8月28日 MOV A,@R0 MOV C,P MOV TB8,C ;送奇偶标志位到TB8 MOV SBUF,A ;发送第一个数据 SJMP $SERVER: CLR TI ;清除发送中断标志 INC R0 ;修改数据地址 MOV A,@R0 MOV C,P MOV TB8,C MOV SBUF,A ;发送下一个数据 DJNZ R7,ENDT ;判断数据块是否发送完 CLR ES ;否则,禁止串行口中断ENDT: RETI ;中断返回7.4.2异步方式应用第四十六页,共六十九页,2022年,8月28日
例7-4
编写一个接收程序,将接收的16字节数据送入片内RAM50H~5FH单元中。设第9个数据位作奇偶校验位,晶振为11.0592MHz,波特率为2400b/s。
解:RB8作奇偶校验位,接收时,取出该位进行核对,接收采用查询方式。7.4.2异步方式应用第四十七页,共六十九页,2022年,8月28日 C语言程序清单:#include<reg52.h>unsignedchari;unsignedchararray[16]_at_0x50; //接收缓冲区voidmain(){ SCON=0xd0; //串行口初始化,允许接收
TMOD=0x20; TH1=0xf4; TL1=0xf4; TR1=1;7.4.2异步方式应用第四十八页,共六十九页,2022年,8月28日 for(i=0;i<16;i++) //循环接收16个数据
{ while(!RI); //等待一次接收完成
RI=0; ACC=SBUF; if(RB8==P) //校验正确
array[i]=ACC; else //校验不正确
{ F0=1; break; } } while(1);}7.4.2异步方式应用第四十九页,共六十九页,2022年,8月28日
汇编语言程序清单:MAIN:MOVTMOD,#20H ;定时器初始化
MOV TH1,#0F4H MOV TL1,#0F4H SETB TR1 MOV SCON,#0D0H ;串口初始化,允许接收 MOV R0,#50H ;首地址送R0 MOV R7,#10H ;数据长度送R7WAIT:JNB RI,$ ;等待接收完成 CLR RI ;清中断标志 MOVA,SBUF ;读数到累加器7.4.2异步方式应用第五十页,共六十九页,2022年,8月28日 JNB P,PNP ;P=0,转PNP JNB RB8,ERROR ;P=1,RB8=0,转出错 SJMPRIGHTPNP: JB RB8,ERROR ;P=0,RB8=1,转出错RIGHT:MOV@R0,A ;存数 INC R0 ;修改地址指针
DJNZR7,WAIT ;未接收完,继续
CLR F0 ;置正确接收标志F0=0 RETERROR:SETBF0 ;置错误接收标志F0=1 RET7.4.2异步方式应用第五十一页,共六十九页,2022年,8月28日
例7-5
用第9个数据位作奇偶校验位,编制串行口方式3的全双工通信程序,设双机将各自键盘的按键键值发送给对方,接收正确后放入缓冲区(可用于显示或其它处理),晶振为11.0592MHz,波特率为9600b/s。
解:因为是全双工方式,通信双方的程序一样。发送和接收都采用中断方式。7.4.2异步方式应用第五十二页,共六十九页,2022年,8月28日 C语言程序清单:#include<reg52.h>chark;unsignedcharbuffer;voidmain(){ SCON=0xd0; //串行口初始化,允许接收
TMOD=0x20; //定时器初始化
TH1=0xfd; TL1=0xfd; TR1=1; ES=1; //开串行口中断
EA=1; //开总中断7.4.2异步方式应用第五十三页,共六十九页,2022年,8月28日 while(1) { k=key(); //读取按键按下键值
if(k!=-1) //无键按下返回-1 { ACC=k; //将键值送累加器,取P位
TB8=P; //送TB8 SBUF=ACC;//发送
} display(); //显示程序
}}7.4.2异步方式应用第五十四页,共六十九页,2022年,8月28日voidserial_server()interrupt4{ if(TI) //发送引起,清TI TI=0; else //否则,接收引起
{ RI=0; ACC=SBUF; //读取接收数据
if(RB8==P) //校验正确, buffer=ACC; //存入缓冲区
}}7.4.2异步方式应用第五十五页,共六十九页,2022年,8月28日
汇编语言程序清单:
ORG0000H SJMPMAIN ;跳转到主程序
ORG23H LJMPS_SERV ;跳转到串口中断服务程序MAIN: MOVSP,#0DFH ;设置堆栈指针
MOVSCON,#0D0H ;串口初始化
MOVTMOD,#20H ;定时器初始化,T1方式2 MOVTH1,#0FDH MOVTL1,#0FDH ;定时器1赋初值7.4.2异步方式应用第五十六页,共六十九页,2022年,8月28日
SETB TR1 ;启动定时器1 SETB ES ;开中断 SETB EALOOP: LCALL KEY ;读取按键(参看第9章), ;有键按下返回键值,
CJNE A,#0FFH,SEND ;无键按下返回0FFH, ;有键按下转发送NEXT: LCALL DISPLAY ;调用显示
LJMP LOOP ;主程序循环7.4.2异步方式应用第五十七页,共六十九页,2022年,8月28日SEND: MOV C,P MOV TB8,C MOV SBUF,A ;带校验位发送
LJMP LOOP ;循环S_SERV: JBC RI,RECV ;是接收中断转接收处理
CLR TI ;是发送中断,清TI
RETI7.4.2异步方式应用第五十八页,共六十九页,2022年,8月28日RECV: ;接收处理程序 MOV A,SBUF ;取接收值送A JB P,ONE ;校验位为1,转
JB RB8,I_END ;校验错,转中断返回
SJMP RIGHT ;校验正确,正确处理ONE: JNB RB8,I_END ;校验错,转中断返回RIGHT: MOV BUFFER,A ;接收数据送缓冲区I_END: RETI ;中断返回7.4.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司线上祭奠活动方案
- 公司时装创意秀活动方案
- 公司秋游白交祠策划方案
- 公司收心活动方案
- 公司活动演讲活动方案
- 公司班组文化活动方案
- 公司群众文体活动方案
- 公司职工团日活动方案
- 公司特色活动策划方案
- 公司注册选址策划方案
- 小学生数学逻辑推理题100道及答案解析
- 2023年上海市普通高中学业水平合格性考试地理试题及答案
- 基本气象要素
- 食品安全规章制度模板打印
- 2024年永平县小升初全真数学模拟预测卷含解析
- 2002版《水利工程施工机械台时费定额》
- 山东省菏泽市鄄城县2023-2024学年七年级下学期7月期末英语试题
- 国家开放大学本科《会计实务专题》形考作业一至四试题及答案
- 安徽省合肥市庐阳区2022-2023学年五年级下学期期末科学试卷
- 国家开放大学《土地利用规划》本章自测参考答案
- 外卖安全法律知识讲座
评论
0/150
提交评论