第06章单片机串行通信系统_第1页
第06章单片机串行通信系统_第2页
第06章单片机串行通信系统_第3页
第06章单片机串行通信系统_第4页
第06章单片机串行通信系统_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第06章单片机串行通信系统第一页,共51页。单片机串行通信系统串行通信接口概述1串行通信工作方式3串行通信波特率设置4串行通信应用举例5串行通信接口概述1串行通信接口2第二页,共51页。

串行通信优点:便于长距离传送缺点:传送速度较慢计算机与外界信息交换称为通信。通信的基本方式可分为并行通信和串行通信:并行通信是数据的各位同时发送或同时接收;串行通信是数据的各位依次逐位发送或接收。并行通信优点:传送速度快缺点:不便长距离传送一、串行通信接口概述串行通信按同步方式可分为异步通信和同步通信。第三页,共51页。串行通信的通信方式异步通信方式:单片机的串行通信使用的是异步串行通信,异步通信是指发送方和接收方采用独立的时钟,即双方没有一个相同的参考时钟作为基准。在异步通信中数据一般以一个字符为单位进行传送。用一帧来表示一个字符,一帧信息由起始位(为0信号,占1位)、数据位(传输时低位在先,高位在后)、奇偶较验位(可要可不要)和停止位(为1信号,可1位、1位半或2位)组成。同步通信方式:在同步通信中,每个数据块的开头以同步字符SYN加以指示,使发送与接受双方取得同步。数据块的各字符之间没有起始位和停止位,提高了通信的速度。但为了能保持同步传送,在同步通信中须用一个时钟来协调收发器的工作,这就增加了设备的复杂性。

第四页,共51页。1)字符格式

双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。例如用ASCII码通信,有效数据为7位,加一个奇偶校验位、一个起始位和一个停止位共10位。2)波特率波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位/秒。它与字符的传送速率(字符/秒)之间有以下关系:

波特率=1个字符的二进制编码位数×字符/秒注:在异步通信中,通信双方必须事先约定字符格式和波特率.第五页,共51页。3)串行通信的三种数据传输模式

(1)单工方式:数据仅按一个固定方向传送。常用于串行口的打印数据传输与简单系统间的数据采集。

(2)半双工方式:使用同一根传输线,数据可双向传送,但不能同时进行,实际应用中采用某种协议实现收/发开关转换。

(3)全双工方式:数据的发送和接收可同时进行,通信双方都能在同一时刻进行发送和接收操作,但一般全双工传输方式的线路和设备比较复杂。

发送端接受端数据线地线单工知式发送/接收端接收/发送端数据线地线半双工制式发送/接收器接收/发送端数据线地线全双工方式第六页,共51页。单片机串行通信系统串行通信接口概述1串行通信工作方式3串行通信波特率设置4串行通信应用举例5串行通信接口2串行通信接口2第七页,共51页。

80C51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。二、80C51串行通信接口第八页,共51页。指令清0RI/TI波特率发生器下降沿表示“0”起始位开始波特率因子:16波特率加倍80C51串行通信接口第九页,共51页。发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送;接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。串行口特殊功能寄存器1、串行数据缓冲器SBUF在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。第十页,共51页。2、串行控制寄存器SCONSCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式选择多机通信控制接收允许发送第9位接收第9位发送中断接收中断①SM0SM1——串行口工作方式选择位。②SM2——多机通信控制位。③REN——允许接收控制位。REN=1,允许接收。④TB8——方式2和方式3中要发送的第9位数据。⑤RB8——方式2和方式3中要接收的第9位数据。⑥TI——发送中断标志。⑦RI——接收中断标志。第十一页,共51页。SM0、SM1:串行口工作方式选择位。用于选择四种工作方式SM0SM1方式功能波特率00方式0移位寄存器方式fosc/1201方式18位异步通信方式可变10方式29位异步通信方式fosc/32或fosc/6411方式39位异步通信方式可变第十二页,共51页。3、电源控制寄存器PCONPCOND7D6D5D4D3D2D1D0位名称SMOD———GF1GF0PDIDLSMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。第十三页,共51页。一只蜘蛛和三个人雨后,一只蜘蛛艰难地向墙上已经支离破碎的网爬去,由于墙壁潮湿,它爬到一定的高度,就会掉下来,它一次次地向上爬,一次次地又掉下来……第一个人看到了,他叹了一口气,自言自语:“我的一生不正如这只蜘蛛吗?忙忙碌碌而无所得。”于是,他日渐消沉。第二个人看到了,他说:这只蜘蛛真愚蠢,为什么不从旁边干燥的地方绕一下爬上去?我以后可不能像它那样愚蠢。于是,他变得聪明起来。第三个人看到了,他立刻被蜘蛛屡败屡战的精神感动了。于是,他变得坚强起来。秘诀:有成功心态者处处都能发觉成功的力量。优秀是一种习惯第十四页,共51页。单片机串行通信系统串行通信接口概述1串行通信工作方式3串行通信波特率设置4串行通信应用举例5串行通信工作方式3串行通信接口2第十五页,共51页。80C51串行通信共有4种工作方式,由串行控制寄存器SCON中SM0SM1决定。

1、串行工作方式0(同步移位寄存器工作方式)

以RXD(P3.0)端作为数据移位的输入/输出端,以TXD(P3.1)端输出移位脉冲。移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。其帧格式为:•••D0D1D2D3D4D5D6D7•••方式0可将串行输入输出数据转换成并行输入输出数据。三、串行通信工作方式第十六页,共51页。数据发送

将数据写入发送缓冲器SBUF后,TXD端输出移位脉冲,串行口把SBUF中的数据依次由低到高以fosc/12波特率从RXD端输出,一帧数据发送完毕后硬件置发送中断标志位TI为1。若要再次发送数据,必须用指令将TI清零。发送:

SBUF=0x55; //启动发送

while(!TI); //等待发送结束TI=0; //清发送中断标志

……第十七页,共51页。接收:

while(1){ //不停地等待接收

if(RI){ RI=0; //清接收中断标志 ACC=SBUF; //将接收数据送累加器A …… } }在RI=0的条件下,用指令置REN=1即可开始串行接收。TXD端输出移位脉冲,数据依次由低到高以fosc/12波特率经RXD端接收到SBUF中,一帧数据接收完成后硬件置接收中断标志位RI为1。若要再次接收一帧数据,应该用指令MOVA,SBUF将上一帧数据取走,并用指令将RI清零。用方式0通信时,多用查询方式。

数据接收接收:while(RI)

;等待接收

{ RI=0; ;清接收中断标志 table=SBUF ;将接收数据送累加器A …… }第十八页,共51页。接收:

while(1){ //不停地等待接收

if(RI){ ACC=SBUF; //将接收数据送累加器A RI=0; //清接收中断标志 …… } }复位时,SCON被清零,因此,工作方式的缺省值为方式0。接收前,务必先置位REN=1方允许接收数据。在RI=0的条件下,用指令置REN=1即可开始串行接收。TXD端输出移位脉冲,数据依次由低到高以fosc/12波特率经RXD端接收到SBUF中,一帧数据接收完成后硬件置接收中断标志位RI为1。若要再次接收一帧数据,应该用指令MOVA,SBUF将上一帧数据取走,并用指令将RI清零。用方式0通信时,多用查询方式。

数据接收第十九页,共51页。2、串行工作方式1起始D0D1D2D3D4D5D6D7停止1)数据发送

发送时只要将数据写入SBUF,在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串行输出。一帧数据发送完毕后硬件自动置TI=1。再次发送数据前,用指令将TI清零。方式1是一帧10位的异步串行通信方式,包括1个起始位,8个数据位和一个停止位。波特率可变,由定时器/计数器T1的溢出率和SMOD(PCON.7)决定。其帧格式如下:第二十页,共51页。2)数据接收接收时,在REN=1前提下,当采样到RXD从1向0跳变状态时,就认定为已接收到起始位。随后在移位脉冲的控制下,数据从RXD端输入。

在方式1接收数据时,必须同时满足以下两个条件:RI=0,SM2=0或接收到的停止位=1。若有任一条件不满足,则所接收的数据帧就会丢失。在满足上述接收条件时,接收到的8位数据位进入接收缓冲器SBUF,停止位送入RB8,并置中断标志位RI=1。再次接收数据前,需用指令将RI清零。第二十一页,共51页。3、串行工作方式2起始位数据位停止位0D0D1D2D3D4D5D6D7TB811)数据发送:

发送数据前,由指令将TB8置位或清零,将数据写入发送缓冲器SBUF后,在串行口由硬件自动加入起始位和停止位来构成完整的字符帧,并在移位脉冲的作用下将其通过TXD端向外串行发送,发送完毕后硬件自动置TI=1。在工作方式2下,波特率只有二种:SMOD=0时,波特率为f0SC/64;SMOD=1时,波特率为f0SC/32。

串行接口工作方式2为9位异步通信接口,传送一帧数据有11位。1位起始位(低电平信号),8位数据位(先低位后高位),1位可编程位,1位停止位(高电平信号)。其格式如下:第二十二页,共51页。2)数据接收

在REN=1的条件下,串行口采样RXD端,当检测到有从1向0的状态跳变的起始位时,便在移位脉冲的控制下,从RXD端接收数据。在方式2的接收中,也必须同时满足以下两个条件:RI=0,SM2=0或接收到的停止位为1。若有任一条件不满足,则所接收的数据帧就会被丢失。在满足上述接收条件时,接收到的8位数据位进入接收缓冲器SBUF中,第9位数据位送入RB8中,并置RI=1。再次接收数据时,需用指令将RI清零。

第二十三页,共51页。

串行接口工作方式3也是9位异步通信接口,传送一帧数据有11位。1位起始位(低电平信号),8位数据位(先低位后高位),1位可编程位,1位停止位(高电平信号)。但波特率与工作方式1相同,由定时器/计数器T1的溢出率和SMOD(PCON.7)决定。也就是说方式3的工作机制与方式2相同,波特率与方式1相同,它是方式1和方式2的综合运用。4、串行工作方式3第二十四页,共51页。串行口四种工作方式的比较四种工作方式的区别主要表现在帧格式及波特率两个方面。表6-2四种工作方式比较工作方式帧格式波特率方式08位全是数据位,没有起始位、停止位固定,即每个机器周期传送一位数据方式110位,其中1位起始位,8位数据位,1位停止位不固定,取决于T1溢出率和SMOD方式211位,其中1位起始位,9位数据位,1位停止位固定,即2SMOD×fosc/64方式3同方式2同方式1第二十五页,共51页。单片机串行通信系统串行通信接口概述1串行通信工作方式3串行通信波特率设置4串行通信应用举例5串行通信波特率设置4串行通信接口2第二十六页,共51页。

MCS-51单片机的串行通信波特率是随着串行口的工作方式不同而改变的。波特率除了与单片机系统的振荡频率fosc、电源控制寄存器PCON的SMOD位有关外,还与定时器T1的设置状态有关。只有正确进行波特率的设置才能使单片机正常工作。四、串行通信波特率设置第二十七页,共51页。1、四种工作方式下的波特率计算工作方式0:波特率固定不变,它与系统的振荡频率fosc的大小有关,其值为fosc/12。工作方式1和方式3:波特率是可变的, 波特率=(2SMOD/32)×定时器T1的溢出率工作方式2:波特率有两种固定值。当SM0D=1时,波特率=(2SM0D/64)×fosc=fosc/32当SM0D=0时,波特率=(2SM0D/64)×fosc=fosc/64第二十八页,共51页。定时器的溢出率是指在1秒钟内产生溢出的次数。 定时器的溢出率与定时器的工作模式有关,可以改变单片机内部的特殊功能寄存器TMOD中的T1方式字段中的M1、M0二位,即TM0D.5和TMOD.4位,选择定时器工作的四种工作模式中的一种进行工作。在串行口通信中,一般都使定时器T1工作在模式2。

在工作方式2时,T1为8位自动装入定时器,由TL1进行计数。因此定时器T1的溢出与系统的时钟频率fosc有关,也与每次溢出后TL1重新装载值N有关。N值越大,定时器T1的溢出率也就越大。当N=0FFH时,每隔12个时钟周期,定时器T1就溢出一次。一般情况下,定时器T1溢出一次所需要的时间为:

(28—N)×12×时钟周期=(28—N)×12/fosc(秒)2、定时器T1的溢出率计算第二十九页,共51页。定时器每秒所溢出的次数为:

定时器T1的溢出率=fosc/(12×(28—N))。式中的N为时间常数,即TH1的预置初值。例如:系统的时钟频率fosc=12MHz,TH1的预置值N=E6H,定时器T1在工作模式2下的溢出率为:

12×106/12/(28—E6H)≈38461.5次/秒。若SMOD=1,串口传输数据的波特率是多少?第三十页,共51页。设波特率用B表示,计数初值用N表示,则波特率B与T1计数初值N之间的关系可以表示为:【例6-1】若fosc=6MHz,波特率为2400波特,设SMOD=1,则定时/计数器T1的计数初值为多少?

N=256-2SMOD×fosc/(2400×32×12)=242.98≈243=F3H将N=F3H带入公式,反过来求B=2403.846,误差率0.16%若fosc=11.0592MHz,波特率为2400,设SMOD=0,则N=F4H。3、波特率与计数初值的关系第三十一页,共51页。解决的方法只有调整单片机的时钟频率fosc,通常采用11.0592MHz晶振。常用波特率及其产生条件

常用波特率通常按规范取1200、2400、4800、9600、…,若采用晶振12MHz和6MHz,则计算得出的T1定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。第三十二页,共51页。第三十三页,共51页。第三十四页,共51页。财富是一时的朋友,而朋友才是永久的财富;每个人都有五个不停旋转的球:工作、健康、家庭、朋友和灵魂。工作是橡胶球,掉下去会弹起来;而另外四个都是玻璃球,掉了-----就碎了。第三十五页,共51页。单片机串行通信系统串行通信接口概述1串行通信工作方式3串行通信波特率设置4串行通信应用举例5串行通信应用举例5串行通信接口2第三十六页,共51页。五、串行通信应用举例1、串行口的编程串行口需初始化后,才能完成数据的输入、输出。初始化过程如下:按选定串行口的工作方式设定SCON的SM0、SM1;对于工作方式2或3,应根据需要在TB8中写入待发送的第9位数据;若选定的工作方式不是模式0,还需设定接收/发送的波特率;设定SMOD的状态,以控制波特率是否加倍;若选定工作方式1或3,则应对定时器T1进行初始化操作,即设定T1的工作方式和初值,以设定其溢出率。第三十七页,共51页。电路如图6-8所示,试编制程序输入K1~K8的状态信息,并存入内RAM40H。图6-8串行通讯方式0应用。图6-8串行通讯方式0应用2、工作方式0应用举例第三十八页,共51页。

4014是一个并入串出转换芯片,Q8端为串行数据输出端,CLK为时钟脉冲输入端,P/S为操作控制端,P/S=1:锁存并行输入数据,P/S=0:允许串行移位操作。要完成题目的要求,应先将开关状态锁存,然后串行输入单片机。

第三十九页,共51页。C语言参考程序:#include<reg51.h>sbitP1_0=P1^0;//定义P1.0口voidmain()//主函数{ unsignedchari; P1_0=1;//锁存并行输入数据 P1_0=0;//允许串行移位操作 SCON=0x00;//设定串行口为方式0 while(!RI){;}//等待接收完毕 i=SBUF;//存入K1~K8状态数据 RI=0;//清中断标志 ……}第四十页,共51页。【例3】设甲乙两机以串行方式1进行数据传送,fosc=11.0592MHz,波特率为1200b/s。甲机发送的16个字节数据存在内RAM40H~4FH单元中,乙机接收后存在内RAM50H为首的地址区域中。

T1初值=解: 串行方式1波特率取决于T1溢出率(设SMOD=0), 计算T1定时初值 3、工作方式1应用举例=232=E8H第四十一页,共51页。C语言参考程序:甲机发送程序:#include<reg51.h>//包含特殊功能寄存器库#defineucharunsignedcharucharidatabuf[16];//要发送的16个数据uchari;//变量i,循环发送的次数记录voidmain()//主函数{ TMOD=0x20;//置T1定时器工作方式2 TL1=0xE8;TH1=0xE8;//置T1计数初值 PCON=0x00;//置SMOD=0 SCON=0x40;//工作在方式1,不允许接收 TR1=1;//T1启动计数 for(i=0;i<16;i++){//循环发送16个数据 SBUF=buf[i];//发送数据

while(TI==0);//等待发送完毕 TI=0;//发送完后清中断标志 }}第四十二页,共51页。乙机接收程序如下:

#include<reg51.h>//包含特殊功能寄存器库#defineucharunsignedchar//定义uchar为无符号字符数据类型uchari;//变量i,作为接收数据的次数记录。voidmain()//主函数{ unsignedchar*P;P=0x50;//定义指针变量并赋初值 TMOD=0x20;//置T1定时器工作方式2 TL1=0xE8;TH1=0xE8;//置T1计数初值 PCON=0x00;//置SMOD=0 SCON=0x50;//工作在方式1,允许接收 TR1=1;//T1启动计数 for(i=0;i<16;i++){//循环体(连续接收16个数据) while(RI==0);//等待接收数据 *P=SBUF;//接收数据,送指定单元 RI=0;//收完一个字节的数据后清中断标志

P++;//地址加1,准备存放下一个数据 }}第四十三页,共51页。【例6-4】设计一个串行方式2收发程序,设SMOD=1,波特率固定为fosc/32。甲机串行发送片内RAM50H-5FH中的数据,第9位数据作为奇偶校验位,接到接收方核对正确的回复信号(用FFH表示)后,再发送下一字节数据,否则再重发一遍。乙机将接收到的数据存在首址为40H的内RAM中,并核对奇偶校验位。核对正确,发出回复信号FFH;发现错误,发出回复信号00H,并等待重新接收。4、工作方式2应用举例第四十四页,共51页。C语言参考程序:甲机发送:

#include<reg51.h>//包含特殊功能寄存器库#defineucharunsignedchar//定义uchar为无符号字符数据类型ucharidatabuf[16];//发送的16个数据存放在buf数组中.uchardat;uchari;sbitP=PSW^0;//定义PSW^0位变量第四十五页,共51页。voidmain()//主函数{ PCON=0x80;//置SMOD=1 SCON=0x90;//串行口工作在方式2,允许接收 do{ //循环体 for(i=0;i<16;i++){//连续发送16个数据 dat=buf[i];//取要发送的数据

ACC=dat;//送累加器A,得奇偶位 TB8=P;//奇偶位作为第9位输出

SBUF=dat;//发送数据

while(TI==0);//等待发送完毕

TI=0;//发送完后清中断标志

while(RI==0);//等待乙机应答 if(SBUF!=0xff)break;//出错则跳出循环

RI=0;//收到后清中断标志 } }while(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论