MCS-51单片机原理、系统设计与应用第5章

上传人:仙*** 文档编号:244010660 上传时间:2024-10-02 格式:PPT 页数:147 大小:3.77MB
收藏 版权申诉 举报 下载
MCS-51单片机原理、系统设计与应用第5章_第1页
第1页 / 共147页
MCS-51单片机原理、系统设计与应用第5章_第2页
第2页 / 共147页
MCS-51单片机原理、系统设计与应用第5章_第3页
第3页 / 共147页
资源描述:

《MCS-51单片机原理、系统设计与应用第5章》由会员分享,可在线阅读,更多相关《MCS-51单片机原理、系统设计与应用第5章(147页珍藏版)》请在装配图网上搜索。

1、单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,*,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,*,第,5,章,MCS-51,定时,/,计数器,,串行口及中断系统,5.1 MCS-51,定时,/,计数器,5.2 MCS-51,串行口,5.3 MCS-51,单片机,中断系统,下页,,,5.1 MCS-51,定时,/,计数器,51,系列内部有,2,个,16,位的定时,/,计数器,T0,、,T1,52,系列内部有,3,个,16,位的定时,/,计数器,T0,、,T1,、,T2,功能:,定时,

2、计数,串行口的波特率发生器,定时,/,计数器的可编程特性:,⑴,确定其工作方式是定时还是计数,⑵,预置定时或计数初值,⑶,当定时时间到或计数终止时,要不要发中断请求,⑷,如何启动定时或计数器工作,上页,下页,回目录,T2,可编程,可 编 程 的,,一、定时计数器的结构与工作原理,1,、结构,CPU,TH1(8位),TL1 (8位),T1,,T1(P,3.5,),(8DH),(8BH),7 0,7 0,TH0(8位),TL0 (8位),T0,,T0(P,3.4,),(8CH),(8AH),7 0,7 0,TCON(88H),TMOD(89H

3、),启动,启动,溢出,溢出,工作方式,工作方式,图,5-1,定时,/,计数器逻辑结构,上页,下页,回目录,“+1`”,“+1`”,,结构,2,个,16,位,T/C,分别由,8,位计数器,TH0,、,TL0,、,,,,TH1,、,TL1,组成,“,+1”,计数器,控制寄存器,TCON,:,控制,T/C,的启停、中断等,方式寄存器,TMOD,:,控制,T/C,的,工作方式,2,、工作原理,⑴,定时器,定时输入信号:机器内部震荡信号的,1/12,分频,即每一个机器周期做一次,“,+1”,运算,上页,下页,回目录,T0,T1,,若,单片机的晶振主频为,12MHz,则,计数周期为,1,µ,s,⑵,计数器

4、,由外部引脚(,T0,为,P,3.4,,,T1,为,P,3.5,),输入计数脉冲,结论,:,T,外,>2T,机,→f,外,T,CY,>T,CY,上页,下页,回目录,外部输入脉冲发生负 跳变时,进行,“,+1”,计数,下降沿,高电平,低电平,T,CY,:,为机器周期,,二、定时计数器的方式寄存器和控制寄存器,1,、方式寄存器,TMOD,GATE,C/T,M1,M0,GATE,C/T,M1,M0,LSB,MSB,(,89H,),TMOD,控制,T1,控制,T0,门控位,功能选择位,工作方式选择,上页,下页,回目录,TMOD,和,PCON,两个特殊功能寄存器只能

5、字节寻址不能位寻址。,,GATE,C/T,M1,M0,GATE,C/T,M1,M0,,,INT1 INT0,引脚输入电平的控制,GATE,:,门控位。设定,T1,、,T0,运行时,是否受,GATE=,,0,不受外部中断控制,C/T=,,0 0,方式,0 13,位计数器,,0 1,方式,1 16,位计数器,,1 0,方式,2,可自动,重新装载,初值,的,8,位计数器,,1 1,方式,3 T0,分为,2,个,8,位计数器,,T1,停止计数,M1M0,操作方式,功 能,表,5-1,操作方式选择,上页,下页,回目录,1,受外部中断控制

6、,,0,为定时功能,,,1,为计数功能,,上页,下页,回目录,2,、控制寄存器,TCON,LSB,MSB,(,88H,),TCON,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,T,1,、,T,0,,启,/,停控制位,T,1,、,T,0,,溢出标志位,与外部中断,INT,1,、,INT,0,有关,己在中断系统介绍,“,0”,停止,“,1”,启动,“,1”,有溢出,“,0”,无溢出,可编程 可控制,“+1”,亦可由指令清“,0”,工作,“1”,“0”,记录有无溢出,,上页,下页,回目录,三、定时,/,计数器的,4,种工作方式,⑴,方式,0 M1M0=00,13,位的定

7、时计数器,由,TH,的,8,位和,TL,的低,5,位组成,T1(P,3.5,),GATE,TR1,INT1,震荡器,÷12,TL1,5位,TH1,8位,TF1,中断,K,C/T=0,C/T=1,控制,图,5-3,定时,/,计数器方式,0,逻辑图,1,1,1,“+1”,中断,TL,4,~,0,以,T1,为例:,13,位计数器,TF1,“+1”,“+1”,,上页,下页,回目录,⑵,方式,1 M1M0=01,16,位的定时计数器,由,TH,的,8,位和,TL,的,8,位组成,T1(P,3.5,),GATE,TR1,INT1,震荡器,÷12,TL1,8位,TH1,8位,TF1,中断,K,C/T

8、=0,C/T=1,控制,图,5-4,定时,/,计数器方式,1,逻辑图,16,位计数器,“+1”,1,以,T1,为例:,中断,TF1,“+1”,“+1”,,上页,下页,回目录,⑶,方式,2 M1M0=10,可,自动,重装载,的,8,位计数器,TH1,(,TH0,),被定义为赋值寄存器,TL1,(,TL0,),被定义为计数器,图,5-5,定时,/,计数器方式,2,逻辑图,T1(P,3.5,),,GATE,TR1,INT1,震荡器,÷12,TL1,8位,TF1,中断,K,C/T=0,C/T=1,控制,TH1,8位,重装载,重装载,1,“+1”,以,T1,为例:,中断,TL1,,8,位,TF

9、1,“+1”,“+1”,,上页,下页,回目录,⑷,方式,3 M1M0=11,T0,被分成,2,个相互独立的,8,位计数器,TL0,、,TH0,TL0,使用自己本身的一些控制位,C/T,、,GATE,、,TR0,,TF0,、,INT0,等。,TH0,只能做定时器,并使用,T1,的控,,制位,TR1,、,TF1,,,同时占用,T1,的中断源,,震荡器,÷12,1/12f,0sc,TL0,8位,TF0,中断,K,C/T=0,C/T=1,控制,1/12f,0sc,T0(P,3.4,),GATE,TR0,INT0,K,TH0,8位,TF1,中断,控制,1/12f,0sc,TR1,图,5-6,定

10、时,/,计数器方式,3,逻辑图,上页,下页,回目录,1,TH0,借用了,T1,的,TR1,和,TF1,,,因此控制了,T1,的中断,,此时,T1,只能用在一些不要中断的情况下,“+1”,“+1”,1,“+1”,“+1”,TF0,TF1,,中,,断,,中,,断,“+1”,,上页,下页,回目录,四、定时,/,计数器的初始化,初始化一般有以下几个步骤:,⑴,确定工作方式,对方式寄存器,TMOD,赋值,⑵,预置定时或计数初值,直接将其写入,T0,、,T1,中,⑶,根据需要对中断允许寄存器有关位赋值,以开放,,或禁止定时,/,计数器中断,⑷,启动定时,/,计数器,将,TR,i,,赋,值为“,1”,计数初

11、值的设定:,最大计数值,M,:,不同的工作方式,M,值不同,方式,0,:,M = 2,13,= 8192,方式,1,:,M = 2,16,= 65536,方式,2,、,3,:,M = 2,8,= 256,,计数初值,X,的计算方法:,计数方式:,X = M,-,计数值(,X,即为计数值的补码数,),上页,下页,回目录,定时方式:,(,M,-,X,),×T =,定时值,∴ X = M,-,定时值,/ T,其中,T,为机器周期,时钟的,12,分频,,,若晶振为,6MHz,,则,T =,2,µ,s,,,,若晶振为,12MHz,,则,T =,1µs,,例,5-1,,若单片机晶振为,12MHz,,,,要

12、求产生,500,µs,定时,试计算,X,的初值。,解:,由于,T = 1,µs,,产生,500,µs,定时,,,需要,“,+1”,500,次,定时器方能产生溢出。,采用方式,0:,(,,13,位计数器,),X= 2,13,-(500×10,-6,/10,-6,),,= 8192 -500 = 7692 = 1E0CH,采用方式,1,:,(,,16,位计数器,),X= 2,16,-(500×10,-6,/10,-6,)= 65036 = FE0CH,THi,TLi,= 0001 1110 0000 1100B→,000,1 1110 000,0 1100B→,,,1 1110 000,,000,

13、0 1100,B,=,F0,0C,H,要点,:,只取低,13,位,,,高,8,位赋给,TH0,,低,5,位前加,3,个,0,凑成,8,位赋给,TL0,,上页,下页,回目录,五、定时,/,计数器应用举例,1,、作定时器用,例,5-2,,设主频为,12MHz,,,利用定时器,T1,定时。,,使,P1.0,输出周期为,2,ms,的方波。,解:,用,P1.0,作方波输出信号,周期为,2,ms,的,方波,,即可用每,1,ms,改变一次电平的方法完成,,,故定时值可设置为,1,ms,。,,,可做,“,+1”,运算,1000,次,使,T1,工作在方式,0,,,,即,13,位计数器,定时初值:,X= M,-,

14、计数次数,= 8192,-,1000 = 7192 = 1C18H,,上页,下页,回目录,由于,TL1,的高,3,位不用,,1C18H,可写成:,1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0,TL1,的高,3,位不用,=E018H,TH1,初值为,E0H,,,TL1,初值为,18H,GATE,C/T,M1,M0,,,,,,,控制,T1,控制,T0,0 0 0 0,选择方式,0,,,13,位计数器,选择定时器方式,INT1,不参与控制,TMOD,=E018H,,,程序:,上页,下页,回目录,,ORG 0000H,

15、,AJMP START,,ORG 001BH,,AJMP BR1,,ORG 0030H,,START: MOV TMOD,,,#0,,MOV TH1,,,#0E0H,,MOV TL1,,,#18H,,SETB EA,,SETB ET1,,SETB TR1,,SJMP $,,BR1,:,MOV TH1,,,#0E0H,,MOV TL1,,,#18H,,CPL P1.0,,RETI,,计数初值转换的一种简便方法,(补充),,(1).,方式,0:TL0=X.MOD.32,,(,即等于,X,除以,32,后所得到的余数部分,),

16、,TH0=INT(X/32),,(,即等于,X,除以,32,后所得到的整数部分,),,(2).,方式,1:TL0=X.MOD.256,,(,即等于,X,除以,256,后所得到的余数部分,),,TH0=INT(X/256),,(,即等于,X,除以,256,后所得到的整数部分,),,注:上面的式子中,X,为计数初值,,TL0,、,TH0,存放计数初值。,,例,5-3,,单片机晶振为,12MHZ,,要求利用,T1,,工作方式,1,产生周期为,2,ms,的方波。,解:,利用方式,1,,,16,位计数器,当定时时间到,,,,T1,计数器溢出使,TF1,置“,1”,,由于不采用,,中断方式,,TF1,置“

17、,1”,后,不会自动复“,0”,,,故需要指令给,TF1,清“,0”,上页,下页,回目录,初值,=,0,,0 0,,0 H,-) 0 3 E 8 H,8,1,C,F,H,FC18H,,,1000,初值:,65536-1ms/1us=65536-1000=64536=FC18H,,ORG 0000H,,AJMP START,,ORG 0030H,,START: MOV TMOD,#10H,,MOV TH1,#0FCH,,MOV TL1,#18H,,SETB TR1,,LOOPER:JBC TF1,PE,,AJMP LOOPER,,PE: MOV TH1,#0FCH,,

18、MOV TL1,#18H,,CPL P1.0,,AJMP LOOPER,,END,查询方式,,中断方式,ORG 0000H,,AJMP START,,ORG 001BH,,AJMP T00,,ORG 0030H,,START: MOV TMOD,#10H,,MOV TH1,#0FCH,,MOV TL1,#18H,,SETB ET1,,SETB EA,,SETB TR1,,SJMP $,,T00: MOV TH1,#0FCH,,MOV TL1,#18H,,CPL P1.0,,RETI,,END,,2,、作计数器用,例,5-4,,用,T0,监视一生产流水线,每生产,100,个工件,,发出一包装

19、命令,包装成一箱,并记录其箱数,上页,下页,回目录,MCS-51,P,1.0,T,0,Vcc,包装机,包装命令,100个,光源,光,,敏,,上页,下页,回目录,GATE,C/T,M1,M0,控制,T1,控制,T0,TMOD,选方式,2,选计数器,INT0,不参与控制,0 1 1 0,⑵,计数初值,X = M,-,64H = 9CH,⑶,用,P1.0,启动外设发包装命令,⑷,用,R5R4,作箱数计数器,⑴,方式字,TMOD = 06H,,程序:,MOV TMOD,#6,MOV P1.0,#0,MOV R5,#0,MOV

20、R4,#0,MOV TH0,#9CH,MOV TL0,#9CH,SETB EA,SETB ET0,SETB TR0,SJMP $,ORG 000BH,AJMP COUNT,;P1.0,为低,;,箱数计数器清“,0”,;,置,T0,工作方式,;,计数初值送计数器,;,;T0,开中断,;CPU,开中断,;,启动,T0,;,;,模拟主程序,;T0,中断入口,;,转向中断服务,上页,下页,回目录,,COUNT: MOV A,R4,ADD A,#1,MOV R4,A,MOV A,R5,A

21、DDC A,#0,MOV R5,A,SETB P1.0,MOV R3,#100,DLY: NOP,DJNZ R3,DLY,CLR P1.0,RETI,中断服务:,;,;,;,;,箱计数器加“,1”,;,;,;,启动外设包装,;,给,外设足够时间,;,;,延时,;,停止包装,;,中断返回,上页,下页,回目录,,3,、门控位,GATE,的应用,GATE,C/T,M1,M0,控制,T1,控制,T0,TMOD,选方式,1,选定时器方式,INT1,为高时,,T1,开始计数,1 0 0 1,上页,下页,回目录,例,5

22、-5,,用,GATE,控制位,测量,INT1(P,3.3,),引脚上,,正脉冲的宽度(设:晶振为,12MHz,),,T1(P,3.5,),GATE,TR1,INT1,震荡器,÷12,TL1,8位,TH1,8位,TF1,中断,K,C/T=0,C/T=1,控制,16,位计数器,“+1”,1,INT1,INT1,为高时,T1,,开始计数,INT1,为低时,T1,停止计数,0,0,1,1,1,宽度,≤65,ms,≦,计数值,,,即,µs,数,1,上页,下页,回目录,“+1”,“+1”,0,0,0,,INT1,INT1,为高时,T1,,开始计数,INT1,为低时,T1,停止计数,上页,下页,回目录,MO

23、V TMOD, #90H,MOV TL1, #0,MOV TH1, #0,,,JB P3.3, $,,SETB TR1,JNB P3.3, $,JB P3.3, $,CLR TR1,:,.,编程:,;,置,T1,方式控制字,;,;T1,从,0,开始计数,;,等,INT1,低电平,;T1,允许计数,;,等,INT1,高电平,;,等,INT1,低电平,;,停止计数,“,与”,,计数时间,问题:计数结果放在哪?,,思考与讨论,:,如何测量一个周期信号的频率,?,1.,测频法(频率大于,2KHZ,时),,

24、在一定的时间,t (,如,1,秒,),内,直接对信号的个数进行计数。若,1,秒内计得信号的个数为,N,,则信号的频率,=N,。,,实现方法:用一个定时器给出定时时间,t,,待测信号从一个外部中断或另一个计数器输入。,,2.,测周法(频率小于,2KHZ,时),,直接测出一个周期的时间。,,实现方法:例,5-5,,,,(1),长定时方法:增加一个软件计数器(如,R7),,记录中断次数。 例,6. P1.7,驱动,LED,亮,1,秒灭,1,秒地闪烁,设时钟频率为,12MHz,。,思路:,1S=10ms×100,,即,10ms,中断一次,中断,100,次即为,1S,。每,100,次中断,(100×10

25、ms=1s),改变一次,LED,的亮灭。可采用,T1,工作于方式,1,(非门控),灯的亮灭在中断服务程序中控制。,,定时,10ms,的计数值,N=10ms/1us=1000(D),,,,故初值,X=65536-10000=55536,(,D,),=0D8F0H,,采用方式,1,(,16,位计数器)。,1s,4,、,长定时方法,的应用,(,补充,),,,ORG 0000H,,AJMP START,,ORG 001BH,,AJMP PT1INT,,ORG 0030H,,START,:,MOV R7,#00H,,,MOV TMOD,,,#10H,,MOV TL1,,,#0F0H,,M

26、OV TH1,,,#0D8H,,SETB EA,,SETB ET1,,SETB TR1,,HERE,:,SJMP HERE,,PT1INT: MOV TL1,,,#0F0H,,MOV TH1,,,#0D8H,,INC R7,,CJNE R7,#100, PEND,,MOV R7, #00H,,CPL P1.7,,PEND: RETI,,end,程序,,,例,7.,设在,P1.7,端接有一个发光二极管,LED,,要求利用定时器控制,使,LED,亮一秒灭一秒,周而复始,.,己知晶体频率为,6MHZ,。,,思路:,T0,为,100ms,定时,方式,1,,当定时时间

27、到后,,P1.0,输出反相,加到,T1,输入端作计数脉冲,定时,2,次构成一个完整的计数脉冲,(,周期为,200ms),。,T1,计数次数为,5,次,,,完成,1,秒定时,(200ms×5=1s),,方式,2,。如下图:,T1,(2),长定时方法:利用两个定时,/,计数器级联。,该反相器可以不要。,,TMOD,:,61H,,T0,计数值,=100ms/2us=50000,,方式,1,,定时,100ms,,,,初值,=65536-50000=15536=3CB0H,;,TH0=3CH,,,TL0=0B0H,。,,T1,计数值,=5,,方式,2,,计数初值,=256-5=251=0FBH,,,,同

28、时装入,TH1,和,TL1,,即,TH1=TL1=0FBH,。,,,采用中断的编程,,org 0000h,,AJMP MAIN,,org 000bh,,,ajmp,t00,,org 001bh,,,ajmp,t11,,ORG 0030H,,MAIN:setb,et0,,,setb,et1,,,setb,ea,,CLR P1.7,,SETB P1.0,,,,MOV TMOD,#61H,,MOV TH1,#0FBH,,MOV TL1,#0FBH,,SETB TR1,,MOV TH0,#3CH,,MOV TL0,#0B0H,,SETB TR0,,,sjmp,$,,t11:CPL P1.7,,,ret

29、i,,t00:CPL P1.0,,,reti,,END,,,ORG 2000H,,MAIN:CLR P1.7;,灯灭,,,SETB P1.0,,MOV TMOD,#61H,,MOV TH1,#0FBH,,MOV TL1,#0FBH,,SETB TR1,,LOOP1:CPL P1.7,,LOOP2:MOV TH0,#3CH,,MOV TL0,#0B0H,,SETB TR0,,LOOP3:JBC TF0,LOOP4,,SJMP LOOP3,,LOOP4:CPL P1.0,,JBC TF1,LOOP1,,SJMP LOOP2,,END,,采用查询的编程,,5,、利用定

30、时,/,计数器作外部中断输入使用的方法,T0,作为外部中断源的初始化程序:,MOV TMOD,#06H,MOV TL0,#0FFH,MOV TH0,#0FFH,SETB EA,SETB ET0,SETB TR0,…,;,T0,计数方式,自动装载,;置,计数初值,;,;,T0,开中断,;,CPU,开中断,;,启动,T0,工作,上页,下页,回目录,计数器,“+1”,计数器,向,CPU,发中断请求,向,CPU,发中断请求,TF,0,FFH,T0,FFH,方式,2,(,8,位),FFH,FFH,TF,0,00H,FFH,FFH,P,3.4,P

31、187,,六、运行中读取定时,/,计数器值的,讨论(,补充,),8051,可以随时读取,TH,X,和,TL,X,的值,比如用于实时显示计数值等。,,但在读取时应注意分时读取,TH,X,和,TL,X,而带来的特殊性。假如先读,TL,X,,再读,TH,X,,由于这时定时,/,计数器还在运行,如果在读取,TH,X,之前刚好发生,TL,X,溢出向,TH,X,进位,这样读得的,TL,X,值就不正确,,,先读,TH,X,,后读,TL,X,,也可能发生这种错误。,,解决办法(,“飞读”,):,先读,TH,X,,后读,TL,X,,再读,TH,X,,若两次读得的,THX,值一样,则读入的数据是正确的,若不一样,

32、则必须重读。,,“飞读”程序,RDTIME,:,MOV A,,,TH0,;读,TH0,,MOV R0,,,TL0,;读,TL0,并存入,R0,,CJNE A,,,TH0,,,RDTIME,;再读,TH0,,与上次,,;读入的,TH0,比较,,,;若不等,重读,,,MOV R1,,,A,;存,TH0,在,R1,中,,,RET,,,作业,,,,P204: 6 - 31,,,作业,,,,P,190,:7.8.31,,,,课后,P190-7,(,2,),,方法一:查询法(更换初值),,方法二:中断法,,做标志,更换初值,,做标志,设置时间倍数,,5.2 MCS - 51,单片机的串行接口,

33、,,5.2.0,计算机并行通信与串行通信概述,,一、串行通信的基本方式,,,1.,异步通信,,,以字符为传送单位,用起始位和停止位标识每个字符的开始和结束字符,间隔不固定。,指的是字符间的异步,字符内的各位是同步的。,,,异步通信常用格式(,即字符的编码形式及规定),:一个字符帧由起始位到停止位的所有位构成一个字符的全部信息,称为,一帧,。,D,0,D,1,D,2,D,3,D,4,D,5,D,6,D,7,停止位,起始位,5.2.1,串行通信基础知识,,图,8.30,异步传送数据格式,,(a),有空闲位;,(b),无空闲位,发送,/,接收时,数据皆低位在前,。,,,起始位,:每个字符的开始必须是

34、持续一个比特时间的逻辑“,0”,电平,标志着一个字符的开始。,,,数据位,:有,5,,8,位,紧跟起始位之后,是字符中的有效数据位。传送字符时,先送低位,后送高位。,,,奇偶校验位,:仅占一位。可根据需要设置为奇校验或偶校验,也可以不设校验位。,,,停止位,:可设置为,1,位、,1.5,位或,2,位,并规定为逻辑“,1”,状态。,,,2.,同步通信,,所谓,同步传送,,就是指取掉异步传送时每个字符的起始位和停止位,仅在数据块开始处用,1,,2,个同步字符来表示数据块传送的开始,然后串行的数据块信息以连续的形式发送,每个发送时钟周期发送一位信息,故同步传送中要求对传送信息的每一位都必须在收、

35、发两端严格保持同步,实现“位同步”。,,,,,,图中,除数据场的字节数不受限制外,其他均为,8,位。,,,同步通信的特点,,以同步字符作为发送新数据开始的标志,,,每个数据占一定的长度,数据之间不留空隙。当线路空闲时不断发送同步字符。,,同步通信的传送速率高于异步通信,能达到,56kb/s,,但它要求有准确的时钟来实现发送端和接收端之间的严格同步,故而对硬件要求较高。,,同步通信用于传送信息量大、传送速率要求高的场合。,,,二、串行通信中的几个问题,(,一,).,波特率和发送,/,接收时钟,,,1.,波特率:波特率,(Baud rate),是指每秒钟传送的二进制位数,单位为波特(,Baud),

36、或位,/,秒,(bit/s),。串行通信时发送端和接收端的波特率必须一致。,,,码元(符号)速率:每秒钟传送的符号(码元或脉冲)数量,单位为“波特”,或“,baud”, “B”,,,又称传码率、波特率。,,信息速率:每秒钟传送的信息速率,单位为“比特,/,秒”或者“,bit/s”,,,又称传信率。,,码元速率与信息速率之间的关系:若码元速率,为,Rs,,,信息速率为,Rb,,,每个码元有,N,种,可能采用的符号(,N,进制),则它们之间的关系为,,,Rb,=,Rs,log2,N,(bit/s),,,Rs,,=,Rb/,log2,N,(baud),;,N=2,时,,Rs,=,Rb,,,[,例,]

37、:,设计算机数据传送的速率是,120,字符,/s,,而每个字符假设有,10,个比特,(bit),位,即每帧每帧为,10,位,,(,包括,1,个起始位、,7,个数据位、,1,个奇偶校验位和,1,个停止位,),。,,则其波特率为:,,,120,字符,/s,,10 bit/,字符,=1200 bit/s=1200,波特,,每位所用的传送时间,Td=1/,波特率,=1/1200= 0.83ms,,,最常用的波特率有,110,、,300,、,600,、,1200,、,1800,、,2400,、,4800,、,9600,和,19200b/s,。,,通常用选定的波特率除以,10,来估计每秒钟可以传送的字符

38、数。,,2.,发送,/,接收时钟,,二进制数据序列在串行传送中以数字信号波形出现,不论发送还是接收,都必须有时钟信号对传送的数据进行定位。,,,实际需要:发送,(,接收,),时钟频率,f,c,=n×,波特率,(,f,d,),,n~,波特率因子,,n=1,、,16,、,64,。,同步时,,n=1,;异步时,,n=16,,,每一位的传送时间,T,d,和发送接收时钟的财期,T,c,之间的关系是:,T,d,=n,T,c,发送时钟,接收时钟,1,个数据位,1,个数据位,Td,Tc,Td,Tc,,,,异步通信方式下的数据接收处理,一般来说,从接收数据线上检测到一个下降沿开始,若其低电平能保持,n Tc/2

39、(,半位时间,),,则确定为起始位,其后每隔,n,Tc,(,一个数据位时间,),在每个数据位的中间采样。,,为了保证接收数据的正确无误,对每位数据的检测采用“测三取二”的方法。即把一个位周期(,1/,波特率)分为,16,个状态,在第,7,,,8,,,9,状态检测接收数据线的电平,取其,≥,2,的相同值作为测得值。,,(,二)、数据传送模式,串行通信中数据的传送模式,,(a),单工通信模式;,(b),半双工通信模式;,(c),全双工通信模式,,(三)、数据校验的常用方法,,奇校验,:,发送时在每一个字符的最高位之后(发送总是先发低位后发高位)附加一个校验位(,0,或,1,),使所发送的每个字符中

40、(包括校验位)“,1”,的个数为奇数。,偶校验,:,使所发送的每个字符中(包括校验位)“,1”,的个数为偶数。 例:发送一个字符“,A”,(以,ASCII,码形式,41H,,第,7,位为校验位),增加一个校验位,使其为(,1,)奇校验,(,2,)偶校验。 奇校验:,1,100 0001,偶校验:,0,100 0001,奇偶校验的方法是对一个字符校验一次,通常只用于异步通信中。奇偶校验位的产生和检验,可用软件或硬件的办法实现。,,奇校验一例,:设累加器以,R0,中的内容为地址的单元中放有一,ASCII,码,,,现要进行奇校验,,A,的最高位为奇偶校验位。,,,MOV A

41、,@R0,,MOV C,PSW.0,,CPL C,,MOV ACC.7,C,,(四)信号的调制与解调,,异步常用调制解调方法,:,频移键控,FSK,;同步常用调制解调方法,:,调相,PSK\DPSK,、正交幅度调制,QAM,。,,(五)、串行通信的实现,,1.,并行,/,串行转换,,2.,串行,/,并行转换,,3.,发送时要增加起始位、奇偶校验位和停止位等,接收时在删去起始位、奇偶校验位和停止位,进行奇偶校验等。,,4.,有中断功能,要实现这样的功能既可以采用硬件方法,也可以采用软件方法。软件方法会占用,CPU,不少时间,,,故通常用硬件方法。,MCS-51,系列单片机内部有一个全双工的异

42、步通信接口,UART,。,,(六)异步通讯双方的两项约定,(,1,)字符格式规定,(,一帧,),:,,数据位,奇偶校验位,起始位和停止位。,,(,2,)波特率,(,位,/,秒,),对传送速率的规定。,,,,5.2.2,串行口结构,A,,移位寄存器,,,,,1.,波特率发生器,:主要由定时,/,计数器,T1,及其内部的一些控制开关和分频器所所组成。它提供串行口的时钟信号,T,XCLK,(发送时钟)和,R,XCLK,(接收时钟),这两个时钟用于控制发送或接收的速率。控制波特率发生器的,SFR,主要有:,TMOD,、,TCON,、,PCON,、,TL1,、,TH1,等。,,2.,数据缓冲器,SBUF

43、,,发送,SBUF,和接收,SBUF,共用一个地址,99H,。,,(,1,),发送,SBUF,存放待发送的,8,位数据,写入,SBUF,将同,,时启动发送。,,发送指令:,MOV SBUF,,,A,,(,2,),接收,SBUF,存放已接收成功的,8,位数据,供,CPU,读取。,,读取串行口接收数据指令:,MOV A,,,SBUF,,,3.,串行口控制,/,状态寄存器,SCON(98H),SM0,,,SM1,:选择串行口,4,种工作方式。,,SM0 SM1,模 式,功 能,波 特 率,0 0,,0 1,,1 0,,1 1,0,,1,

44、,2,,3,同步移位寄存器,,8,位,UART,,9,位,UART,,9,位,UART,f,OSC,/12,,可变,(T1,溢出率,),,f,OSC,/64,或,f,OSC,/32,,可变,(T1,溢出率,),,SM2:,多机通信控制,,,由软件设定。串行口的方式,2,和方式,3,适用于多机通信。,,1,),.,在方式,2,或方式,3,中,,,(1).,当,SM2=l,时,,,若接收到的第,9,位数据,(RB8),为,0,,则不置位,RI,(,RI=0,,不提出中断请求,,,相当于数据无效);,,只有收到,RB8=1,,才置位,RI,(,RI=1,,申请中断,数据有效),用于多机通信中只接收地

45、址帧,(RB8=1),,不接收数据帧,(RB8=0),,。,,,(2).,当,SM2=0,时,收到停止位后必置位,RI,,即不论地址帧(,RB8=1,)或数,,据帧(,RB8=0,)都能接收,并申请中断。,,2,),.,在方式,1,中,,若,SM2=1,,则只有收到,有效,停止位,(“1”),时才置位,RI,;若,,,SM2=0,,不管停止位的有效性,收完一帧,,RI,都置“,1”,(中断)。,,3,),.,在方式,0,中,,应使,SM2=0,。,,,REN:,允许接收控制位,,REN=1,,允许接收;,REN=0,,禁止接收。,,TB8:,发送的第,9,位数据位,可用作校验位和地址,(“1”

46、)/,数据,(“0”),标识位。,,RB8:,接收的第,9,位数据位,(,方式,2,或,3,中,),或停止位,(,方式,1,,若,SM2=0),,TI:,发送中断标志位,由硬件置位。在方式,0,发送第,8,位结束时或在其它方式,,下发送停止位的开始时,,TI,被置位。,TI=1,时,请求中断,,CPU,响应中断,,后再发送下一帧数据。注意,TI,必须由软件清零。,,,RI:,接收中断标志位,由硬件置位。在方式,0,接收到第,8,位结束时或在其它方,,式下接收到停止位的中间时,,RI,被置位。,RI=1,时,请求中断,,CPU,响应,,中断后,从,SBUF,中取走数据。注意,RI,必须由软件清零

47、。,,问题:,为什么,TI,、,RI,要人工清零(软件清零)而其它的中断标志不要?,,注,:,从上面的分析可看出,,,在任何工作方式下,, SM2=0,时,,,都是正常操作。,,,应用上,:方式,0,,,1,都可将,SM2,置成“,0”,,只有在方式,2,、,3,时,为了实现多机通信时,才将,SM2,置成“,1”,。,,4.,节电控制寄存器,PCON,(,97H,),,,,SMOD(PCON.7),:波特率加倍控制位。,,,SMOD=1,,波特率加倍;,SMOD=0,,则不加倍。,,,根据,SM0,,,SM1,选择四种工作方式。,,一、方式,0,:同步移位寄存器方式。用于扩展并行,I/O,接口

48、。,,1,、特点,,(,1,),.,一帧,8,位,无起始位和停止位。,,(,2,),. RXD,:,数据输入,/,输出端。,,,TXD,:,同步脉冲输出端,每个脉冲对应一个数据位。,,(,3,),.,波特率,B = fosc/12,,,如:,fosc,=12MHz,,,B=1MHz,,,每位数据占,1,,s,,即每个机器周期移动一位数据。,,(,4,),.,发送过程:写入,SBUF,,启动发送,一帧发送结束,,TI=1,。,,接收过程:,REN=1,且,RI=0,,启动接收,一帧接收完毕,,RI=1,。,,5.2.3,串行接口的工作方式,,串行口方式,0,发送时序,2,、时序,,二、 方式,

49、1,:,8,位数据异步通讯方式,。,,,,1,、特点,,(,1,),.,一帧,10,位:,8,位数据位,,1,个起始位,(0),,,1,个停止位,(1),。,,(,2,),. RXD,:,接收数据端。,TXD,:,发送数据端。,,(,3,),.,波特率:用,T1,作为波特率发生器,,,R,b,=(2,SMOD,/32)×T1,溢出率。,,(,4,),.,发送:写入,SBUF,,同时启动发送,一帧发送结束,,TI=1,。,,,接收:,REN=1,,,允许接收。接收完一帧,若,RI=0,且停止位为,1 (,或,SM2=0),,,将接收数据装入,SBUF,,,停止位装入,RB8,,,并使,RI=1,

50、;,否则丢弃接收数据,不置位,RI,。,,2,、时序,,1.,特点,,(1).,一帧为,11,位:,9,位数据位,,1,个起始位,(0),,,1,个停止位,(1),。第,9,位数据位在,TB8/RB8,中,常用作校验位和多机通讯标识位。,,(2). RXD,:,接收数据端,,TXD,:,发送数据端。,,(3).,波特率: 方式,2,:,B=(2,SMOD,/64)×fosc,。,,,方式,3,:,B=(2,SMOD,/32)×T1,溢出率 。,,(4).,发送:先装入,TB8,,写入,SBUF,并启动发送,发送结束,,TI=1,。,,接收:,REN=1,,允许接收。接收完一帧,若,RI=0,

51、且第,9,位为,1 (,或,SM2=0),,将接收数据装入接收,SBUF,,第,9,位装入,RB8,,使,RI=1,;否则丢弃接收数据,不置位,RI,。,,三、 方式,2,和方式,3:,9,位数据异步通讯方式。,,发,,送,,时,,序,写入,,SBUF,TXD,输出,TI,RXD,输入,接,,收,,时,,序,RI,D,0,D,1,D,2,D,3,D,4,D,5,D,6,TB,8,停止位,起始位,D,7,D,0,D,1,D,2,D,3,D,4,D,5,D,6,RB,8,停止位,起始位,D,7,检测,,负跳变,2.,时序,,,5.2.4,波特率的计算,,,,串行口每秒钟发送或接收的数据位数称为波

52、特率。 假设发送一位数据所需时间为,T,,则波特率为,1/T,。 ,,,(1),模式,0,的波特率等于单片机晶振频率的,1/12,,即每个机器周期接收或发送一位数据。 ,,,(2),模式,2,的波特率与电源控制器,PCON,的最高位,SMOD,的写入值有关,: ,,,即,SMOD=0,,波特率为,(1/64),f,OSC,; SMOD=1,,波特率为(,1/32,),f,OSC,。,,,(3),模式,1,和模式,3,的波特率除了与,SMOD,位有关之外,,,还与定时器,T1,的溢出率有关。,定时器,T1,,作为波特率发生器,,,常选用,定时方式,2,(,8,位重装载初值方式),,,并且

53、禁止,T1,中断。此时,TH1,从初值计数到产生溢出,,,它每秒钟溢出的次数称为溢出,率。,设计数初值为,X,,则溢出,(,定时,),周期,t=(256-x)×12/f,osc,,所以:溢出率,=1/t=f,osc,/[12×(256-X)],。于是:,,表,5-4,定时器,T1,产生的常用波特率,,,例:,假设某,MCS - 51,单片机系统,,,串行口工作于模式,3,,要求传送波特率为,1200 Hz,,作为波特率发生器的定时器,T1,工作在方式,2,时,,,请求出计数初值为多少? 设单片机的振荡频率为,6 MHz,。 ,,,因为串行口工作于模式,3,时的波特率为,所以,,当,SMOD

54、=0,时,,,初值,TH1=256-6×10,6,/(1 200×12×32/1) =243=0F3H,,当,SMOD=1,时,,,初值,TH1=256-6×10,6,/,(,1200×12×32/2) =230=0E6H,,1,、串行口的编程,,,串行口需初始化后,,,才能完成数据的输入、输出。其初始化过程如下,: ,,(1),按选定串行口的操作模式设定,SCON,的,SM0,、,SM1,两位二进制编码。,,,(2),对于操作模式,2,或,3,,,,应根据需要在,TB8,中写入待发送的第,9,位数据。,,,(3),若选定的操作模式不是模式,0,,还需设定接收,/,发送的波特率。,,

55、设定,SMOD,的状态,以控制波特率是否加倍。,,若选定操作模式,1,或,3,,则应对定时器,T1,进行初始化以设定其溢出率。,5.2.5,串行口的应用,,串行口初始化编程格式:,,,SIO,:,MOV SCON,,,#,控制状态字;写方式字且,TI=RI=0,,(MOV PCON,,,#80H),;,波特率加倍,,,( MOV TMOD,,,#20H ),;,T1,作波特率发生器,,,,( MOV TH1,,,#X ),;,选定波特率,,,,( MOV TL1,,,#X ),,( SETB TR1),,( SETB EA),;开串行口中断,,,,( SETB ES),2

56、,、串行口初始化,,(,1,),.,扩展为若干并在行输出口,外接移位寄存器输出,,3.,方式,0,应用,,外接移位寄存器输入,,(,2,),.,扩展为若干并在行输入口,11111110,,左移,,,过零检测,移位,/,装入,,例,1,:,用,8051,串行口外接,74LS165,移位寄存器扩展,8,位输入口,,,输入数据由,8,个开关提供,,,另有一个开关,K,提供联络信号。电路示意如图,6.11,所示。当开关,K,合上时,,,表示要求输入数据。输入,8,位开关量,,,处理不同的程序。,,程序如下,: ,,START: JB P1.0, $ ;,开关,K,未合上,,,等待,,,C

57、LR P1.1,,; 165,并行输入数据,,,,SETB P1.1,,;,开始串行移位,,,MOV SCON,,#,10H ;,串行口模式,0,并启动接收,,,JNB RI, $ ;,查询,RI,,CLR RI ;,查询结束,,,清,RI,,MOV A, SBUF ;,输入数据,,,;,根据,A,处理不同任务,,,SJMP START ;,准备下一次接收。,…,,例,2,:编写程序,在数码管下每秒钟显示一位,循环显示,0~9,这,10,个数字,系统晶振频率为,11.0592MHZ,。,(,数码管为共阳极,),,,

58、TIMER EQU 30H ;,设置片内,RAM,单元,,,ORG 0000H,,AJMP START,,ORG 000BH ;T0,中断入口,,,AJMP INT0,,ORG 0040H,,START:MOV SP,#60H ;,设置堆栈指针,,,MOV TMOD,#01H ;T0,定时,方式,1,,MOV TL0,#00H,,MOV TH0,#4CH ;,延时,50ms,的计数初值,,,MOV R0,#0H ;,设置

59、显示,”,0”,,初值,,,MOV TIMER,#20 ;,延时,1S,的常数,,,MOV SCON,#00H ;,串口方式,0,,,,,SETB TR0 ;,启动,T0,,SETB ET0 ;T0,开中断,,,SETB EA ;CPU,中断,,,SJMP $,,INT0:,;PUSH ACC ;,保护,A,,;,PUSH PSW ;,保护,PSW,,;CLR EA

60、 ;,关,CPU,中断,,,;CLR TR0 ;,停止,T0,,MOV TL0,#00H ;,重新设置,T0,,MOV TH0,#4CH ;50ms,延时计数初值,,,,;SETB TR0 ;,启动,T0,,DJNZ TIMER,EXIT ;,到,1s,定时吗,?,,MOV TIMER,#20 ;,重设定时,1s,常数,,,MOV DPTR,#DA

61、TA1 ;,置段码表的的基址,,,MOV A,R0 ;,取偏移量,,,MOV,C,A,@A+DPTR ;,取段码,,,,,CLR TI ;,清,TI,,CPL A ;,段码表取反,(,变为共阳极段码,),,MOV SBUF,A ;,段码输出,,,INC R0 ;,下一个显示数码,,,CJNE R0,#0AH,EXIT ;,判断是否到表尾,,,MOV R0,#00H

62、 ;,从头显示,,EXIT:,;SETB EA ;CPU,开中断,,,;POP PSW ;,恢复现场,,,;POP ACC,,RETI,,ORG 3000H,,DATA1:DB 0FCH,60H,0DAH,0F2H,66H,,DB 0B6H,0BEH,0E0H,0FEH,0F6H;,共阴极段码表,,,;,送出的低位去,dp,,,高位去,a.,,END,,例,5-6,应用串口方式,0,输出,在串行口外接移位寄存器,构成显示器接口,,,如下图所示。,,,,4.,方式,1,应用,,,,,

63、,5.,方式,2,应用,例,:,如下图,,,要求将甲机,(,上方单片机,)P1,口的开关状态通过串口发送给乙机,(,下方单片机,),,用,LED,灯显示出来,.,,甲机程序,,ORG 0000H,,AJMP START,,ORG 0030H,,START:MOV SCON,#80H,,MOV PCON,#00H,,MAIN: MOV A,P1,,MOV SBUF,A,,WAIT: JBC TI,MAIN,,SJMP WAIT,,END,,乙机程序,,ORG 0000H,,AJMP START,,ORG 0030H,,START:MOV SCON,#90H,,MOV PCON,#00H,,LOO

64、P: JBC RI,READ,,SJMP LOOP,,READ: MOV A,SBUF,,MOV P0,A,,AJMP LOOP,,END,方法一,:,查询接收,方法二,:,中断接收,,ORG 0000H,,AJMP START,,ORG 0023H,,AJMP SERIN,,ORG 0030H,,START:MOV SCON,#90H,,MOV PCON,#00H,,SETB ES,,SETB EA,,SJMP $,,SERIN:CLR RI,;,必须要加,,,MOV A,SBUF,,MOV P0,A,,RETI,,END,,若要求甲机乙机双向通信该如何编程,?,,,例,4,利用串行口进行双

65、机通信。,,双机通信系统,如下图所示,是双机通信系统。要求将甲机,8051,芯片内,RAM,中的,40H~4FH,的数据串行发送到乙机。甲机工作于模式,2,,,TB8,为奇偶校验位;乙机用于接收串行数据,工作于模式,2,,并对奇偶校验位进行校验,接收数据存于,60H~6FH,的单元中。,,串行通信的两项约定:,,(,1,)字符格式规定,(,一帧,),、工作方式要一致。,,数据位,奇偶校验位,起始位和停止位。,,(,2,)波特率,(,位,/,秒,),要一致。,,,5.,方式,2,应用,,甲机发送(采用查询方式),:,,MOV SCON,,#,80H ;,设置工作方式,2,,MOV P

66、CON,,#,00;,置,SMOD=0,,波特率不加倍,,,MOV R0,,#,40H ;,数据区地址指针,,,,,MOVR2,,#,10H ;,数据长度,,LOOP: MOV A, @R0 ;,取发送数据,,,MOV C, P ;,奇偶位送,TB8,,MOVTB8, C,,MOV SBUF, A ;,送串口并开始发送数据,,WAIT: JBCTI, NEXT ;,检测是否发送结束并清,TI,,SJMP WAIT,,NEXT: INC R0;,修改发送数据地址指针,,,DJNZR2, LOOP,,RET,,乙机接收(查询方式),:,,MOV SCON,,#,90H;,模作模式,2,,并允许接收,,MOV PCON,,#,00H;,置,SMOD=0,,MOV RO,,#,60H ;,置数据区地址指针,,MOV R2,,#,10H ;,等待接收数据长度,,LOOP: JBC RI, READ ;,等待接收数据并清,RI,,SJMP LOOP,,READ: MOV A, SBUF ;,读一帧数据,

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!