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

下载本文档

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

文档简介

1、授课教师:左敬龙授课教师:左敬龙电话:电话:1382868066013828680660短号:短号:6801268012邮箱:邮箱:单片机原理及应用单片机原理及应用单片机串行通信系统单片机串行通信系统串行通信接口概述串行通信接口概述1 1串行通信工作方式串行通信工作方式3 3串行通信波特率设置串行通信波特率设置4 4串行通信应用举例串行通信应用举例5 5串行通信接口概述串行通信接口概述1 1串行通信接口串行通信接口2 2 串行通信优点:便于长距离传送 缺点:传送速度较慢计算机与外界信息交换称为通信。通信的基本方式可分为并行通信和串行通信:并行通信是数据的各位同时发送或同时接收;串行通信是数据的

2、各位依次逐位发送或接收。并行通信优点:传送速度快 缺点:不便长距离传送一、串行通信接口概述一、串行通信接口概述串行通信按同步方式可分为异步通信和同步通信。串行通信的通信方式异步通信是指发送方和接收方采用独立的时钟,即双方没有一个相同的参考时钟作为基准。在同步通信中,每个数据块的开头以同步字符SYN加以指示,使发送与接受双方取得同步。数据块的各字符之间没有起始位和停止位,提高了通信的速度。但为了能保持同步传送,在同步通信中须用一个时钟来协调收发器的工作,这就增加了设备的复杂性。 ) )字符格式字符格式双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。双方要事先约定字符的编码形式、

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

4、波特率注:在异步通信中,通信双方必须事先约定字符格式和波特率) )串行通信的三种数据传输模式串行通信的三种数据传输模式(1)单工方式:数据仅按一个固定方向传送。常用于串行口的打印数据传输与简单系统间的数据采集。 ()半双工方式:使用同一根传输线,数据可双向传送,但不能同时进行,实际应用中采用某种协议实现收/发开关转换。 ()全双工方式:数据的发送和接收可同时进行,通信双方都能在同一时刻进行发送和接收操作,但一般全双工传输方式的线路和设备比较复杂。 发送端接受端数据线地线单工知式发送/接收端接收/发送端数据线地线半双工制式发送/接收器接收/发送端数据线地线全双工方式单片机串行通信系统单片机串行通

5、信系统串行通信接口概述串行通信接口概述1 1串行通信工作方式串行通信工作方式3 3串行通信波特率设置串行通信波特率设置4 4串行通信应用举例串行通信应用举例5 5串行通信接口串行通信接口2 2串行通信接口串行通信接口2 2 80C5180C51系列单片机有系列单片机有一个一个全双工全双工的串行口,的串行口,这个口既可以用于网络通信,也可以实现串行异这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。步通信,还可以作为同步移位寄存器使用。二、二、80C5180C51串行通信接口串行通信接口指令清指令清0 RI/TI波特率发生器下降沿表示“0”起始位开始波特率因子:16

6、波特率加倍80C5180C51串行通信接口串行通信接口 发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送; 接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。串行口特殊功能寄存器1、串行数据缓冲器SBUF 在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。 在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。2、串行控制寄存器SCONSCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H

7、功能工作方式选择多机通信控制接收 允许发送 第9位接收 第9位发送 中断接收 中断 SM0 SM1 串行口工作方式选择位。 SM2 多机通信控制位。 REN 允许接收控制位。REN=1,允许接收。 TB8 方式2和方式3中要发送的第9位数据。 RB8 方式2和方式3中要接收的第9位数据。 TI 发送中断标志。 RI 接收中断标志。SM0SM0、SM1SM1:串行口工作方式选择位。:串行口工作方式选择位。 用于选择四种工作方式用于选择四种工作方式SM0SM0SM1SM1方式方式功能功能波特率波特率0 00 0方式方式0 0移位寄存器方式移位寄存器方式f foscosc/12/120 01 1方式

8、方式1 18 8位异步通信方式位异步通信方式可变可变1 10 0方式方式2 29 9位异步通信方式位异步通信方式f foscosc/32/32或或f foscosc/64/641 11 1方式方式3 39 9位异步通信方式位异步通信方式可变可变3 3、电源控制寄存器、电源控制寄存器PCONPCONPCONPCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称SMODSMODGF1GF1GF0GF0PDPDIDLIDLSMOD=1SMOD=1,串行口波特率加倍。,串行口波特率加倍。PCONPCON寄存器不能进行位寻址。寄存器不能进行位寻址。一一 雨后,一只蜘蛛艰难地

9、向墙上已经支离破碎的网爬去,由于墙壁潮湿,它爬到一定的高度,就会掉下来,它一次次地向上爬,一次次地又掉下来 第一个人看到了,他叹了一口气,自言自语:“我的一生不正如这只蜘蛛吗?忙忙碌碌而无所得。”于是,他日渐消沉。 第二个人看到了,他说:这只蜘蛛真愚蠢,为什么不从旁边干燥的地方绕一下爬上去?我以后可不能像它那样愚蠢。于是,他变得聪明起来。 第三个人看到了,他立刻被蜘蛛屡败屡战的精神感动了。于是,他变得坚强起来。 秘诀:有成功心态者处处都能发觉成功的力量。秘诀:有成功心态者处处都能发觉成功的力量。优秀是一种习惯单片机串行通信系统单片机串行通信系统串行通信接口概述串行通信接口概述1 1串行通信工作

10、方式串行通信工作方式3 3串行通信波特率设置串行通信波特率设置4 4串行通信应用举例串行通信应用举例5 5串行通信工作方式串行通信工作方式3 3串行通信接口串行通信接口2 280C51串行通信共有4种工作方式,由串行控制寄存器SCON中SM0 SM1决定。 1、串行工作方式0(同步移位寄存器工作方式) 以RXD(P3.0)端作为数据移位的输入/输出端, 以TXD(P3.1)端输出移位脉冲。 移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。 其帧格式为: D0D1D2D3D4D5D6D7 方式0可将串行输入输出数据转换成并行输入输出数据。三、 串行通信工

11、作方式 数据发送 将数据写入发送缓冲器SBUF后,TXD端输出移位脉冲,串行口把SBUF中的数据依次由低到高以fosc/12波特率从RXD端输出,一帧数据发送完毕后硬件置发送中断标志位TI为1。若要再次发送数据,必须用指令将TI清零。 发送: SBUF= 0 x55; /启动发送 while(!TI);/等待发送结束 TI =0;/清发送中断标志 接收: while(1)/不停地等待接收if(RI) RI=0;/清接收中断标志ACC=SBUF; /将接收数据送累加器A 在RI=0的条件下,用指令置REN=1即可开始串行接收。TXD端输出移位脉冲,数据依次由低到高以fosc/12波特率经RXD端

12、接收到SBUF中,一帧数据接收完成后硬件置接收中断标志位RI为1。若要再次接收一帧数据,应该用指令MOV A,SBUF将上一帧数据取走,并用指令将RI清零。用方式0通信时,多用查询方式。 数据接收接收: while(RI);等待接收 RI=0;;清接收中断标志table=SBUF;将接收数据送累加器A 接收: while(1)/不停地等待接收if(RI) ACC=SBUF; /将接收数据送累加器ARI=0;/清接收中断标志复位时,SCON被清零,因此,工作方式的缺省值为方式0。接收前,务必先置位REN=1方允许接收数据。 在RI=0的条件下,用指令置REN=1即可开始串行接收。TXD端输出移位

13、脉冲,数据依次由低到高以fosc/12波特率经RXD端接收到SBUF中,一帧数据接收完成后硬件置接收中断标志位RI为1。若要再次接收一帧数据,应该用指令MOV A,SBUF将上一帧数据取走,并用指令将RI清零。用方式0通信时,多用查询方式。 数据接收2、串行工作方式1起始D0D1D2D3D4D5D6D7停止1) 数据发送 发送时只要将数据写入SBUF,在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串行输出。一帧数据发送完毕后硬件自动置TI=1。再次发送数据前,用指令将TI清零。方式1是一帧10位的异步串行通信方式,包括1个起始位,8个数据位和一个

14、停止位。波特率可变,由定时器/计数器T1的溢出率和SMOD(PCON.7)决定。其帧格式如下:2) 数据接收 接收时,在REN=1前提下,当采样到RXD从1向0跳变状态时,就认定为已接收到起始位。随后在移位脉冲的控制下,数据从RXD端输入。 在方式1接收数据时,必须同时满足以下两个条件:RI=0,SM2=0或接收到的停止位=1。若有任一条件不满足,则所接收的数据帧就会丢失。在满足上述接收条件时,接收到的8位数据位进入接收缓冲器SBUF,停止位送入RB8,并置中断标志位RI=1。再次接收数据前,需用指令将RI清零。 3 3、串行工作方式、串行工作方式2 2起始位起始位 数据位数据位停止位停止位0

15、 0D0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7TB8TB81 11 1)数据发送)数据发送: : 发送数据前,由指令将发送数据前,由指令将TB8TB8置位或清零,将数据写入发送置位或清零,将数据写入发送缓冲器缓冲器SBUFSBUF后,在串行口由硬件自动加入起始位和停止位来后,在串行口由硬件自动加入起始位和停止位来构成完整的字符帧,并在移位脉冲的作用下将其通过构成完整的字符帧,并在移位脉冲的作用下将其通过TXDTXD端向端向外串行发送,发送完毕后硬件自动置外串行发送,发送完毕后硬件自动置TI=1TI=1。在工作方式在工作方式2 2下,下,波特率只有二种波特率只有二种:SMO

16、DSMOD0 0时,波特率为时,波特率为f f0SC0SC/64/64;SMODSMOD1 1时,波特率为时,波特率为f f0SC0SC/32/32。 串行接口工作方式串行接口工作方式2 2为为9 9位异步通信接口,传送一帧数据有位异步通信接口,传送一帧数据有1111位。位。1 1位起始位位起始位( (低电平信号低电平信号) ),8 8位数据位位数据位( (先低位后高位先低位后高位) ),1 1位可编程位,位可编程位,1 1位停止位位停止位( (高电平信号高电平信号) )。其格式如下:。其格式如下:2)数据接收 在REN=1的条件下,串行口采样RXD端,当检测到有从1向0的状态跳变的起始位时,

17、便在移位脉冲的控制下,从RXD端接收数据。在方式2的接收中,也必须同时满足以下两个条件:RI=0,SM2=0或接收到的停止位为1。若有任一条件不满足,则所接收的数据帧就会被丢失。在满足上述接收条件时,接收到的8位数据位进入接收缓冲器SBUF中,第9位数据位送入RB8中,并置RI=1。再次接收数据时,需用指令将RI清零。 串行接口工作方式3也是9位异步通信接口,传送一帧数据有11位。1位起始位(低电平信号),8位数据位(先低位后高位),1位可编程位,1位停止位(高电平信号)。 但波特率与工作方式1相同,由定时器/计数器T1的溢出率和SMOD(PCON.7)决定。 也就是说方式3的工作机制与方式2

18、相同,波特率与方式1相同,它是方式1和方式2的综合运用。4、串行工作方式3串行口四种工作方式的比较四种工作方式的区别主要表现在帧格式及波特率两个方面。表6-2 四种工作方式比较工作方式帧 格 式波 特 率方式08位全是数据位,没有起始位、停止位固定,即每个机器周期传送一位数据方式110位,其中1位起始位,8位数据位,1位停止位不固定,取决于T1溢出率和SMOD方式211位,其中1位起始位,9位数据位,1位停止位固定,即2SMODfosc /64方式3同方式2同方式1单片机串行通信系统单片机串行通信系统串行通信接口概述串行通信接口概述1 1串行通信工作方式串行通信工作方式3 3串行通信波特率设置

19、串行通信波特率设置4 4串行通信应用举例串行通信应用举例5 5串行通信波特率设置串行通信波特率设置4 4串行通信接口串行通信接口2 2 MCS-51单片机的串行通信波特率是随着串行口的工作方式不同而改变的。波特率除了与单片机系统的振荡频率fosc、电源控制寄存器PCON的SMOD位有关外,还与定时器T1的设置状态有关。只有正确进行波特率的设置才能使单片机正常工作。四、串行通信波特率设置1、四种工作方式下的波特率计算工作方式0:波特率固定不变,它与系统的振荡频率fosc的大小有关,其值为fosc/12。工作方式1和方式3:波特率是可变的,波特率=(2SMOD/32)定时器T1的溢出率工作方式2:

20、波特率有两种固定值。当SM0D=1时,波特率=(2SM0D/64)fosc=fosc/32当SM0D=0时,波特率=(2SM0D/64)fosc=fosc/64 定时器的溢出率是指在1秒钟内产生溢出的次数。定时器的溢出率与定时器的工作模式有关,可以改变单片机内部的特殊功能寄存器TMOD中的T1方式字段中的M1、M0二位,即TM0D.5和TMOD.4位,选择定时器工作的四种工作模式中的一种进行工作。在串行口通信中,一般都使定时器T1工作在模式2。 在工作方式2时,T1为8位自动装入定时器,由TL1进行计数。 因此定时器T1的溢出与系统的时钟频率fosc有关,也与每次溢出后TL1重新装载值N有关。

21、N值越大,定时器T1的溢出率也就越大。 当N=0FFH时,每隔12个时钟周期,定时器T1就溢出一次。一般情况下,定时器T1溢出一次所需要的时间为: (28N)12时钟周期=(28N)12/fosc(秒) 2、定时器T1的溢出率计算定时器每秒所溢出的次数为: 定时器T1的溢出率=fosc/(12(28N)。 式中的N为时间常数,即TH1的预置初值。 例如:系统的时钟频率fosc=12MHz,TH1的预置值N=E6H,定时器T1在工作模式2下的溢出率为: 12106/12/(28E6H)38461.5次/秒。 若SMOD=1,串口传输数据的波特率是多少? 设波特率用B表示,计数初值用N表示,则波特

22、率B与T1计数初值N之间的关系可以表示为:)256(12322NfBOSCSMODBfBfNOSCSMODOSCSMOD384225612322256【例6-1】若fosc=6MHz,波特率为2400波特,设SMOD=1,则定时/计数器T1的计数初值为多少? N = 256-2SMODfosc /(24003212) = 242.98243 =F3H将N=F3H带入公式,反过来求B=2403.846,误差率 0.16%若fosc=11.0592MHz,波特率为2400,设SMOD=0,则N=F4H。3、波特率与计数初值的关系 解决的方法只有调整单片机的时钟频率fosc,通常采用11.0592M

23、Hz晶振。常用波特率及其产生条件 常用波特率通常按规范取1200、2400、4800、9600、,若采用晶振12MHz和6MHz,则计算得出的T1定时初值将不是一个整数,产生波特率误差而影响串行通信的同步性能。 财富是一时的朋友,而朋友才是永久的财富; 每个人都有五个不停旋转的球:工作、健康、家庭、朋友和灵魂。工作是橡胶球,掉下去会弹起来;而另外四个都是玻璃球,掉了-就碎了。单片机串行通信系统单片机串行通信系统串行通信接口概述串行通信接口概述1 1串行通信工作方式串行通信工作方式3 3串行通信波特率设置串行通信波特率设置4 4串行通信应用举例串行通信应用举例5 5串行通信应用举例串行通信应用举

24、例5 5串行通信接口串行通信接口2 2五、串行通信应用举例1、 串行口的编程 串行口需初始化后,才能完成数据的输入、输出。初始化过程如下: 按选定串行口的工作方式设定SCON的SM0、SM1;对于工作方式2或3,应根据需要在TB8中写入待发送的第9位 数据;若选定的工作方式不是模式0,还需设定接收/发送的波特率;设定SMOD的状态,以控制波特率是否加倍;若选定工作方式1或3,则应对定时器T1进行初始化操作,即设定T1的工作方式和初值,以设定其溢出率。 电路如图6-8所示,试编制程序输入K1K8的状态信息,并存入内RAM 40H。 图6-8 串行通讯方式0应用。图6-8 串行通讯方式0应用2、

25、工作方式0应用举例 4014 是一个并入串出转换芯片,Q8端为串行数据输出端,CLK为时钟脉冲输入端,P/S为操作控制端,P/S=1:锁存并行输入数据,P/S=0:允许串行移位操作。 要完成题目的要求,应先将开关状态锁存,然后串行输入单片机。 C语言参考程序: # include sbit P1_0=P10; /定义P1.0口void main() /主函数unsigned char i; P1_0=1; /锁存并行输入数据P1_0=0; /允许串行移位操作SCON=0 x00; /设定串行口为方式0while (!RI) ; /等待接收完毕i=SBUF; /存入K1K8状态数据RI=0; /

26、清中断标志【 例 3 】 设 甲 乙 两 机 以 串 行 方 式 1 进 行 数 据 传 送 ,fosc=11.0592MHz,波特率为1200b/s。甲机发送的16个字节数据存在内RAM40H4FH单元中,乙机接收后存在内RAM 50H为首的地址区域中。 T1初值 =解:串行方式1波特率取决于T1溢出率(设SMOD=0),计算T1定时初值3、 工作方式1应用举例120012110592003222560= 232 = E8HC语言参考程序:甲机发送程序:#include /包含特殊功能寄存器库#define uchar unsigned charuchar idata buf16; /要发送

27、的16个数据uchar i; /变量i, 循环发送的次数记录void main( ) /主函数TMOD=0 x20; /置T1定时器工作方式2TL1=0 xE8; TH1=0 xE8; /置T1计数初值PCON=0 x00; /置SMOD=0SCON=0 x40; /工作在方式1,不允许接收 TR1=1; / T1启动计数for(i=0;i16;i+) /循环发送16个数据SBUF=bufi; /发送数据while(TI= =0); /等待发送完毕TI=0; /发送完后清中断标志 乙机接收程序如下: #include /包含特殊功能寄存器库#define uchar unsigned char

28、 /定义uchar为无符号字符数据类型uchar i; /变量i,作为接收数据的次数记录。void main( ) /主函数unsigned char *P; P=0 x50; /定义指针变量并赋初值TMOD=0 x20; /置T1定时器工作方式2TL1=0 xE8; TH1=0 xE8;/置T1计数初值PCON=0 x00; /置SMOD=0SCON=0 x50; /工作在方式1,允许接收 TR1=1; / T1启动计数for(i=0;i16;i+) /循环体(连续接收16个数据)while(RI= =0); /等待接收数据*P =SBUF; /接收数据,送指定单元RI=0; /收完一个字节

29、的数据后清中断标志P+; /地址加1,准备存放下一个数据 【例6-4】设计一个串行方式2收发程序,设SMOD=1,波特率固定为fosc/32。甲机串行发送片内RAM50H-5FH中的数据,第9位数据作为奇偶校验位,接到接收方核对正确的回复信号(用FFH表示)后,再发送下一字节数据,否则再重发一遍。乙机将接收到的数据存在首址为40H的内RAM中,并核对奇偶校验位。核对正确,发出回复信号FFH;发现错误,发出回复信号00H,并等待重新接收。4、 工作方式2应用举例C语言参考程序:甲机发送: #include /包含特殊功能寄存器库#define uchar unsigned char /定义uchar为无符号字符数据类型uchar idata buf16; /发送的16个数据存放在buf数组中.uchar dat; uchar i; sbit P=PSW0; /定义PSW0位变量void main( ) /主函数PCON=0 x80; /置SMOD=1SCON=0 x90; /串行口工作在方式2,允许接收do /循环体for(i=0;i16;i+) / 连续发送16个数据dat = buf i;

温馨提示

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

评论

0/150

提交评论