




免费预览已结束,剩余78页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与应用-单片机串行通信系统,内容概要串行通信基本概述串行口的基本工作原理与串行口有关的特殊功能寄存器串行口的4种工作方式串行口通信的应用编程,重点内容:MCS-51单片机串行接口的工作原理及工作方式MCS-51单片机串行接口应用程序设计方法,难点内容:MCS-51单片机串行接口的工作原理及工作方式MCS-51单片机串行接口应用程序设计方法,概述,单片机应用于数据采集或工业控制时,往往作为前端机安装在工业现场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。如下图所示。,什么是通信?,计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。,通信方式,并行通信,串行通信,并行通信通常是将数据字节的各位用多条数据线同时进行传送。,并行通信特点:控制简单、传输速度快;由于传输线较多,长距离传送时成本高且通信线路复杂。适合于近距离传输。,例如:计算机并口,打印机,8255等,串行通信串行通信使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。,串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。合适于远距离通信。,例如:微型机与计算中心之间,单片机之间,单片机与PC之间,同步串行通信方式,串行通信的两种基本方式,串行通信有同步和异步两种方式,同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步;一般一次传送一个数据块,每一个数据块的开头以同步字符SYN加以指示;每次传送的一帧数据由同步字符、数据字符和校验字符三部分组成;,7.1串行通信基础,同步串行通信方式,串行通信的两种基本方式,串行通信有同步和异步两种方式,传输数据块的各字符之间没有起始位和停止位,不留间隙。空闲位需发送同步字符。,7.1串行通信基础,同步串行通信方式,串行通信的两种基本方式,串行通信有同步和异步两种方式,同步通信传输速度较快,但要求有准确的时钟来实现收发双方的严格同步,对硬件要求较高,适用于成批数据传送。,7.1串行通信基础,异步串行通信方式,异步通信对硬件要求较低,实现起来比较简单、灵活,适用于数据的随机发送/接收,但因每个字节都要建立一次同步,即每个字符都要额外附加两位,所以工作速度较低,在单片机中主要采用异步通信方式。,异步串行通信是指通信的发送与接收设备使用各自的时钟控制数据的发送与接收过程。,以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的;每个字符中的各位是以固定的时间传送的,即字符之间是异步的,但同一字符内的各位是同步的。,数据帧(一帧数据):,在异步传送中的一个字符称为数据帧,数据帧由4部分组成:起始位(“0”电平)、数据位、奇偶校验位、停止位(“1”电平),一帧数据,起始位,数据位,奇偶位,停止位,第n个字符,第n+1个字符,数据位:,起始位:,奇偶位:,58位。传输时数据的最低位在前,最高位在后。,紧跟在最高位之后,占用一位,奇偶校验时,根据协议置“1”或“0”,可省略。,停止位:,为逻辑“1”信号,占用1位、1位半或2位,当接收端收到停止位时,表示一帧数据结束。,在异步串行通信中,通信双方事先应该做好以下约定:,字符格式,双方要实现约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。,波特率,波特率:串行通信中数据的传送速率,其含义为每秒传送的二进制位数,单位为位/s(b/s).,注:在异步通信中,发送端与接收端的波特率必须一致。,串行通信的校验,奇偶校验在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。,数据在串行传输过程中,由于干扰可能使传输的数据发生错误,这种情况称为出现了“误码”。为了使系统能够可靠、稳定地通信,在编程时应当设计通信协议,并应考虑数据的纠错,一般在通信时采取数据校验的办法,可有效保证数据传输的可靠性,目前较为流行的方法有奇偶校验、累加和校验、循环冗余码校验几种:,循环冗余校验这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,广泛应用于同步通信中。,代码和校验代码和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。,单工通信一方固定发送,一方固定接收;半双工通信双方都可以收发,但是只能收或者发,不能同时进行;全双工通信双方可以同时进行收发;,串行通信的传输方向,串行通信模式,在串行传输中,通信的双方都按通信协议进行,所谓通信协议就是通信双方必须共同遵守的一种约定,约定包括数据的格式、同步的方式、传送的步骤、检纠错方式及控制字符的定义等。,串行接口的基本任务:,串口主要功能,2)格式信息的插入和滤除格式信息:异步通信格式中,启始位、奇偶校验位、停止位等。串化过程:将格式信息插入,和数据位一起构成完整数据帧。反串化过程:滤除格式信息,保留数据位。,3)错误检验检验数据通信过程是否正确。,1)数据的串化、反串化数据串化:将并行数据变为串行数据;(发送器)数据反串化:将串行数据变为并行数据;(接收器),所有串行接口电路都是以并行数据形式和CPU接口;以串行数据形式和外部通信接口。,7.2MCS-51的串行口简介,51系列单片机内有一个全双工的异步串行通信接口,它可作UART(通用异步收发器)用,也可作同步移位寄存器。通过对串行接口写控制字可以选择其数据格式,同时内部有波特率发生器,提供可选的波特率,可完成双机通信或多机通信。,51单片机异步串行口特点:,可编程的全双工的异步通讯串行口4种工作方式,波特率由片内定时器/计数器控制每发送或接收一帧数据,均可发出中断请求除用于串行通讯,还可用来扩展并行I/O口,有两个物理上独立的串行数据缓冲寄存器SBUF(属于特殊功能寄存器):发送控制器接收控制器输入移位寄存器串行控制寄存器SCON若干控制门电路,7.2.1MCS-51串行口结构,串行数据缓冲器SBUF:发送缓冲器:接收缓冲器:,7.2.1MCS-51串行口结构,两个缓冲器共用一个特殊功能寄存器字节地址(99H),只能写入不能读出,用于存储发送信息,只能读出不能写入,用于存储接收到的信息,数据的发送与接收:,7.2.1MCS-51串行口结构,MOVSBUF,A将A中的数据送入发送缓冲寄存器SBUF,并启动一次数据发送;,MOVA,SBUF将接收缓冲寄存器SBUF中的数据送入A中,完成一次数据接收;,甲方发送时,CPU执行指令MOVSBUF,A,启动了发送过程,数据并行送入SBUF,在发送时钟shift的控制下由低位到高位一位一位通过TXD引脚发送,甲方一帧数据发送完毕,置位发送中断标志TI为1,该位可作为查询标志(或引起中断)。,串行通信的传送过程用下面简图说明,乙方接收时,在接收时钟shift的控制下通过RXD引脚由低位到高位顺序进入移位寄存器,然后再并行送入接收SBUF。乙方一帧数据到齐即接收缓冲器满,置接收中断标志RI为1,该位可作为查询标志(或引起接收中断),通过MOVA,SBUF,CPU将这帧数据并行读入。,串行通信的传送过程用下面简图说明,由上述可知:甲、乙方的移位时钟频率应相同,即应具有相同的波特率,否则会造成数据丢失。发送方是先发数据再查标志,接收方是先查标志再收数据。CPU通过指令和SBUF并行交换数据,并不能控制数据的串行移位,它只能查询标志位来确定数据的移位是否完成。,串行通信的传送过程用下面简图说明,由上述可知:在进行下一帧数据的接受(或发送)时,一定要先将RI(或TI)用软件清0;,串行通信的传送过程用下面简图说明,SBUF:串行数据缓冲寄存器SCON:串行口控制寄存器PCON:电源控制寄存器,7.2.2相关寄存器,SBUF(99H),发送时:数据写入SBUF,经过TXD引脚发送出去接收时:存储的是从RXD接收到的数据,串行通信控制寄存器SCON(98H),字节地址为98H,可位寻址,位地址为98H9FH,SM0SM1SM2RENTB8RB8TIRI,SCON(98H),SM0、SM1:串行口工作方式选择位,如表所示,000移位寄存器方式(用于I/O扩展)波特率为fosc/12,0118位UART,波特率可变(由定时器控制),1029位UART,波特率为fosc/32或fosc/64,1139位UART,波特率可变(由定时器控制),表串行口工作方式,REN:,TB8:,在方式2和方式3中作为要发送的第9位数据;在通信协议中,可作为奇偶校验位使用;在多机通信中,作为地址帧或数据帧的标志:,1:地址帧,发送的是地址0:数据帧,发送的是数据,需要时由软件置位或复位。,TI:,发送中断标志。在方式0串行发送第8位结束时由硬件置“1”,或在其他方式中串行发送停止位后置“1”,必须由软件清“0”。,RI:,接收中断标志。在方式0接收数据第8位结束时由硬件置“1”,或在其他方式中接收到停止位时置“1”,必须由软件清“0”,RB8:,在方式2和方式3中要接收的第9位数据;在方式1时,如SM2=0,RB8是接收到的停止位;在方式0中,不使用RB8。,SM2:多机通信控制位主要用于方式2或方式3中。当串口以方式2或方式3接收时,如果SM2=1,则只有当接收到的第9位数据(RB8)为“1”时,才使RI置“1”,产生中断请求,并将接收到的前8位数据送入SBUF。当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。当SM2=0时,则不论第9位数据是1还是0,都将前8位数据送入SBUF中,并使RI置1,产生中断请求。在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。在方式0时,SM2必须为0。,其字节地址87H,没有位寻址功能。,PCON(87H),SMOD:波特率选择位。,在串行口方式1、方式2、方式3时,当SMOD=1时,波特率提高一倍。当SMOD=0时,波特率不加倍。,电源控制寄存器PCON(87H),7.3串行通信工作方式及应用,SM0、SM1:串行口工作方式选择位,由软件置位或清零。,7.3.1串行通信工作方式,移位寄存器方式,可外接同步移位寄存器,以扩展I/O口,也可外接同步输入输出设备。,RXD:为串行数据的发送端或接收端,TXD:移位脉冲输出端数据格式:8位数据为一帧,不设起始位和停止位,先发送或接收最低位。,1、工作方式0,方式0的波特率为:,波特率=fosc/12,7.3.1串行通信工作方式,1、工作方式0,方式0发送,74LS164,数据输出,移位脉冲,D7D0,数据写入SBUF后,TXD输出移位脉冲,串口将数据从RXD以fosc/12波特率输出,一帧数据发送完TI置1。,若要再次发送,必须用指令将TI清0。,图方式0扩展I/O口硬件逻辑图,7.3.1串行通信工作方式,1、工作方式0,图方式0发送时序,7.3.1串行通信工作方式,1、工作方式0,方式0接收,将REN置1,TXD输出移位脉冲,串口将数据由低到高从RXD输入(波特率fosc/12),一帧数据接收完后RI置1。,图方式0扩展I/O口硬件逻辑图,7.3.1串行通信工作方式,1、工作方式0,图方式0接收时序,注:若要再次接收一帧数据,应先将上一帧数据取走,同时将RI清零。,使用方式0,进行数据移位输入、输出时,是将串行口作为并行口使用,是一种并行口扩展应用,通过外接串入并出移位寄存器扩展输出接口;通过外接并入串出移位寄存器扩展输入接口。,方式0时,移位操作的波特率固定,为单片机晶振频率的1/12。晶振fosc=6MHz,波特率为500K/秒,2s移位一次;晶振fosc=12MHz,波特率为1M/秒,1s移位一次;,7.3.1串行通信工作方式,2、工作方式1,波特率可变的8位异步通信接口方式。,一帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。,数据发送,7.3.1串行通信工作方式,2、工作方式1,CPU执行一条写SBUF指令,就启动了串口发送。,数据从TXD输出。,一帧数据送完后硬件自动置TI为1。,注:1)数据写入SBUF后,在串行口由硬件自动加入起始位和停止位,构成完整的字符帧。2)再次发送数据前,用指令将TI清零。,7.3.1串行通信工作方式,2、工作方式1,数据接收,REN=1,串行口采样RXD端,当采样到由1到0跳变时,认定接收到起始位。在移位脉冲作用下,开始接收数据。,数据接收:REN=1,串行口采样RXD端,当采样到由1到0跳变时,认定接收到起始位,启动一次接收过程。在8位数据接收完,并检测到高电平停止位后,把接收到的数据装入SBUF,停止位进入RB8中,置位RI,通知CPU从SBUF取走接收到的数据。,7.3.1串行通信工作方式,3、工作方式2,9位异步通信接口方式。,一帧数据为11位,1个起始位(0),9个数据位,1个停止位(1),先发送或接收最低位。发送的第9位数据放于TB8中,接收的第9位数据放于RB8中。,波特率=(2SMOD/64)fosc,7.3.1串行通信工作方式,3、工作方式2,注:发送前,先根据通信协议由软件设置TB8(如奇偶校验位或多机通信的地址/数据标志位),然后将要发送的数据写入SBUF,即启动发送。TB8自动装入第9位数据位,逐一发送。发送完毕,使TI位置“1”。,数据发送,数据由TXD端输出,附加的第9位数据由SCON中的TB8提供。CPU执行一条写SBUF指令,就启动了串口发送,发送完TI置1,7.3.1串行通信工作方式,3、工作方式2,数据接收,与方式1相似,REN被置“1”后,串行口采样RXD端的电平,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收数据。,在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF(接收缓冲器)。(1)RI=0,意味着接收缓冲器为空。(2)SM2=0或接收到的第9位数据位RB8=1。,当满足上述两个条件时,收到的数据送SBUF(接收缓冲器),第9位数据送入RB8,且RI置“1”。若不满足这两个条件,接收的信息将被丢弃。,7.3.1串行通信工作方式,3、工作方式2,数据接收,7.3.1串行通信工作方式,4、工作方式3,9位异步通信接口方式,波特率可变。,其他与方式2类似,波特率与工作方式1相同,四种工作方式比较,7.3.1串行通信工作方式,四种工作方式的区别主要表现在帧格式及波特率两个方面。,7.3.2串行通信波特率设置,波特率是串行通信中数据传输速率的单位,其含义为每秒传送多少位二进制数(B/S)例:数据传送的速率为120个字符每秒,每个字符有1个起始位、8个数据位和一个停止位组成,则其传送波特率为:,波特率计算,方式0的波特率是固定的:,波特率=fosc/12,方式2波特率取决于SMOD,波特率=(2SMOD/32)定时器T1的溢出率,方式2波特率=(2SMOD/64)fosc,SMOD=0时,波特率=fosc/64,SMOD=1时,波特率=fosc/32,方式1、3波特率取决于T1的溢出率,SMOD=0时,波特率=T1的溢出率/32,SMOD=1时,波特率=T1的溢出率/16,溢出率计算,定时器溢出率:单位时间(1s)定时器溢出的次数;,溢出率为溢出周期的倒数。,溢出周期:定时器溢出一次所需要的时间。,当定时器1作为波特率发生器时,通常选用定时工作方式2(8位自动加载)。,T1溢出一次所需要的时间为:,T1每秒所溢出的次数为:,设X为计数初值,则:,波特率为:,计数初值计算,通常,是知道波特率,求计数初值X,实际使用时:首先确定波特率;再计算定时器1的计数初值;然后进行定时器的初始化。,【例】若fosc=6MHz,波特率为2400波特,设SMOD=1,则定时/计数器T1的计数初值为多少?,若fosc=11.0592MHz,波特率为2400,设SMOD=0,则,解决的方法只有调整单片机的时钟频率fosc,通常采用11.0592MHz晶振。,常用波特率及其产生条件,常用波特率通常按规范取1200、2400、4800、9600、,若采用晶振12MHz和6MHz,则计算得出的T1定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。,7.3.3串行通信应用,串行口初始化,设定SCON的SM0、SM1;对工作方式2或3,应根据需要在TB8中写入待发送的第9位数据;除模式0外,还需设定接收/发送的波特率;设定SMOD状态,以控制波特率是否加倍;若工作在方式1或3,则应对定时器T1进行初始化,设定其工作方式和初值;串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。,初始化后,设置串口工作。发送:直接写SBUF,查询TI/中断接收:REN置1,查询RI/中断,工作方式0应用,例:74LS165芯片的输入端接八个开关,利用单片机串行方式0将开关的状态串行输入单片机,并在LED上显示。,74LS165芯片资料,74LS165是8位并入串出移位寄存器。各引脚功能如下:,高电平表示移位,低电平表示置位。,74LS165芯片资料,74LS165是8位并入串出移位寄存器。各引脚功能如下:,INH(clockinhibit时钟抑制):时钟禁止端。当INH为低电平时,充许时钟输入。,编程思路:,C语言参考程序:,#include#defineuintunsignedint#defineucharunsignedcharsbitP3_2=P32;voiddelay(uintx)uchari;while(x-)for(i=0;i120;i+);,voidmain()SCON=0 x10;/串口方式0,允许接收数据while(1)P3_2=0;/并行输入数据P3_2=1;/允许串行移位操作while(RI=0);/循环等待接收完毕RI=0;/清中断标志P2=SBUF;/送P2口delay(20);/延时,工作方式1应用,【例】设甲乙两机以串行方式1进行数据传送,fosc=11.0592MHz,波特率为1200b/s。甲机发送的1、2、3、4、5、6、7、8个数据存在内部RAM40H4FH单元中,乙机接收后在数码管中显示。,设SMOD=0,PCON=0 x00;,T1工作在方式2,T1内启动,定时,故TMOD=0 x20,T1用于波特率发生器,故禁止中断,ET1=0;TR1=1启动T1计数,寄存器初始化:,T1计数初值设置:,=232=E8H,TL1=TH1=0 xE8,串口设置,串口工作在方式1,SM1SM0=01,查询方式传送,禁止串口中断,ES=0。,甲机发送,不允许接收,REN=0;SCON=40H;,乙机接收,REN=1;SCON=50H,甲机发送程序,#include#defineucharunsignedcharucharidatabuf8=1,2,3,4,5,6,7,8;/定义要发送的数据uchari;voidmain()TMOD=0 x20;/设置T1工作方式2TL1=0 xe8;TH1=0 xe8;/赋初值PCON=0 x00;/设置SMOD=0SCON=0 x40;/设置串口工作方式1,不允许接收IE=0 x00;TR1=1;/启动T1for(i=0;i8;i+)/循环接收SBUF=bufi;while(TI=0);TI=0;,#include#defineucharunsignedcharuchari;constunsignedcharLED_TAB10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/段码表voiddelay(unsignedintx)/延时函数ucharj;while(x-)for(j=0;j123;j+);,乙机接收程序,voiddisplay(void)/显示函数unsignedchark,*DATA;/定义字符变量k,指针变量DATADATA=0 x50;/地址赋初值for(k=0;k8;k+)/循环显示8个数字P2=LED_TAB*DATA;/间接寻址送显示字形到P2口DATA+;/地址值加1delay(300);,voidmain()unsignedchar*P;/定义指针变量P=0 x50;/赋初值TMOD=0 x20;/T1工作在定时器方式2TL1=0 xe8;TH1=0 xe8;/置初值PCON=0 x00;/SMOD=0SCON=0 x50;/工作在方式1,允许接收IE=0 x00;/关中断TR1=1;/启动定时器T1for(i=0;i8;i+)/循环接收8个数据while(RI=0);/等待接收8个数据RI=0;*P=SBUF;/接收数据送指定单元P+;/单元地址加1,存放下一个数据while(1)/循环显示display();,【例】设计一个串行方式2收发程序,设SMOD=1,波特率固定为fosc/32。甲机串行发送片内RAM50H-5FH中的数据,第9位数据作为奇偶校验位,接到接收方核对正确的回复信号(用FFH表示)后,再发送下一字节数据,否则再重发一遍。乙机将接收到的数据存在首址为40H的内RAM中,并核对奇偶校验位。核对正确,发出回复信号FFH;发现错误,发出回复信号00H,并等待重新接收。,工作方式2应用,C语言参考程序:甲机发送:#include/包含特殊功能寄存器库#defineucharunsignedchar/定义uchar为无符号字符数据类型ucharidatabuf16;/定义数组,设将要发送的16个数据存放在buf数组中.uchardat;uchari;/定义变量dat,i.dat作为要发送数据的缓存器,i作为循环此时的计数。sbitp=PSW0;/定义PSW0位变量voidmain()/主函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社会听话测试题及答案
- 港务集团面试题及答案
- 公平主义面试题及答案
- 导购服务意识培训
- 中国系统java面试题及答案
- 船舶技工面试题及答案
- 肿瘤康复后的心理护理
- 2025年高效蒸汽管网设备项目申请报告模范
- 肿瘤科护理基本流程
- 火力发电原理课件
- 广东省肇庆市2022-2023学年高二下学期期末教学质量检测生物学试题(Word版含答案)
- 部编版语文六年级下册名校毕业升学模拟测评卷含答案(六套)
- 早产儿出院后喂养
- 脓毒血症指南解读
- 北京市海淀区101中学2022-2023学年七年级数学第二学期期末质量检测试题含解析
- GB/T 14594-2005无氧铜板和带
- 广东电网“两种人”安规题库-配电“两种人”类(试题及答案)
- 某射击馆照明平面回路设计及智能照明控制分析
- (完整word版)儿童迷宫图 清晰可直接打印
- 土地利用变更调查课件
- DB13T 5181-2020 尾矿库溃坝泥石流数值模拟技术规程
评论
0/150
提交评论