第a10章 51单片机实现顺序控制_第1页
第a10章 51单片机实现顺序控制_第2页
第a10章 51单片机实现顺序控制_第3页
第a10章 51单片机实现顺序控制_第4页
第a10章 51单片机实现顺序控制_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机技术基础教程与实践作者:夏路易电子工业出版社所有第第10章章 51单片机实现顺序控制单片机实现顺序控制按照规定的顺序依次完成各种操作的控制系统称为顺序控制。顺序控制采用按时间顺序或逻辑顺序进行控制的开环控制方式。能轮流显示不同颜色和不同图案的广告霓虹灯是顺序控制系统的一个简单例子。顺序控制器一般用于生产过程的开关量控制、动力设备的起动和停止、加热或冷冻设备的接通和断开、信号灯的亮与灭等都是开关量信号。生产线、自动机床和各种设备都有许多开关量信号需要顺序控制。因此,顺序控制器广泛应用于机械、冶金、电力、石油、化工、煤炭、建材、纺织、轻工和国防等部门。现在实现顺序控制主要是采用可编程控制器(

2、英文缩写PC)利用它可以方便地编制程序,使工业设备实现顺序控制。美国在1969年研制成世界上第一台可编程序控制器。此后可编程序控制器的发展经历了三个阶段:采用固定(硬)布线方式,以代替电磁继电器盘;以逻辑控制为主,采用不固定(软)布线方式,在此之前这类控制器又称可编程逻辑控制器;采用内部装有程序的存储器,程序变动十分容易的单片机实现。1985年生产的可编程序控制器已普遍采用单片机技术,它除了存储容量小、输入输出通道以开关量为主和编程语言不同外,与一般单片机系统十分相似。可编程控制器采用梯形图、语句表设计顺序控制程序。单片机技术基础教程与实践作者:夏路易电子工业出版社所有10.1 梯形图梯形图

3、10.1.1 梯形图简介梯形图简介一个梯形图由左边一条垂直向下的线及若干条与之相交并向右延伸的分支线组成。下图表示的是一个梯形图。左边的线称为母线,相当于电气控制线路中的电源线。分支线称为回路,在回路上有常开或常闭触点的串联或并联。如果触点ON(闭合),从母线来的“能流”就可以通过该触点;若触点OFF(断开),则“能流”不能通过。若“能流”通过一系列串或并的触点到达了继电器线圈(指令),则其被通电,否则,线圈不能通电。习惯上线圈被通电也称为线圈得电,线圈不能通电也称为失电。从计算机程序设计的角度,分支线回路也称为指令行,常开、常闭触点可认为是沿指令行设置的条件,这些条件的逻辑组合(“与”对应触

4、点串联,“或”对应触点的并联),可以决定右边指令的执行结果(如线圈通电(得电)或断电(失电)。n0n1n3n3step1step2step2step3step1step3step1step2.单片机技术基础教程与实践作者:夏路易电子工业出版社所有指令行上垂直的一对线称为条件(即触点),无斜线穿过的条件称为常开条件(NO,常开触点),有斜线穿过的条件称为常闭条件(NC,常闭触点),每个条件上或下标注的数字或符号表示指令的操作数位(继电器触点、输入信号等)。梯形图右侧是指令(继电器线圈),该指令的状态(得电、失电、执行或不执行)由左侧的条件来决定。常开触点闭合,则该触点为1;常开触点断开,则该触点

5、为0。常闭触点闭合,则该触点为0;常闭触点断开,则该触点为1。例如,前图中线圈step1得电的条件是n0=1、n3=0、step2=0、step3=0。单片机技术基础教程与实践作者:夏路易电子工业出版社所有10.1.2 基本术语基本术语(1)常开/常闭条件梯形图中每个条件是否为ON或OFF,取决于分配给它的操作数位的状态。如果操作数位是“1”,则常开条件是闭合(ON),常闭条件是断开(OFF);如果操作数位是“0”,则常开条件是断开(OFF),常闭条件是闭合(ON)。若把操作数位理解为软继电器(不是实际的继电器,是一个可以保存继电器状态的存储单元),则有如下结论:若操作数位是“1”,则继电器线

6、圈通电,继电器的常开触点闭合(ON),常闭触点断开(OFF)。若操作数位是“0”,则继电器线圈断电,继电器的常开触点断开(OFF),常闭触点闭合(ON)。例如图10-2中,n0=1,则step1的线圈得电,使step=1;而n0=0,则step1的线圈失电,使step1=0。n1=0,则step2的线圈得电,使step2=1;而n1=1,则step2的线圈失电,使step2=0;ste p 1ste p 2n 0n 1.单片机技术基础教程与实践作者:夏路易电子工业出版社所有(2)执行条件在梯形图中,一条指令前面的常开、常闭等条件的逻辑组合产生了执行条件,对于继电器线圈类的指令,执行条件为ON(

7、执行条件具备),对应线圈得电;而执行条件为OFF(执行条件不具备),对应线圈失电。对于功能性指令,执行条件为ON(执行条件具备),则对应功能指令的执行;而执行条件为OFF(执行条件不具备),对应功能指令不执行(3)操作数位输入或输出信号(I/O位)、指令(继电器)状态、定时器/计数器等都可以是梯形图中的条件。(4)梯级各种常开、常闭条件的一个逻辑组合又称为一个梯级。单片机技术基础教程与实践作者:夏路易电子工业出版社所有10.1.3 常用梯形图程序常用梯形图程序梯形图程序可以用C语言描述,下面介绍常用梯形图程序以及他们的C语言描述。在C语言描述中,变量n0、n1等是按钮,而step0、step1

8、等是继电器。1.单继电器线圈控制程序“失电优先”和“得电优先”电路如图所示,其中a是失电优先电路,图b是得电优先电路。图中n0是起动按钮、n1是停止按钮。若是两个按钮同时按下,若是step1=1则为得电优先,若是step1=0,则为失电优先。n0n1step1step1.n0n1step1step1.a)b)常开按钮是正逻辑,有效(动作)状态是1,若用n0表示常开按钮,则用原变量n0表示;表示没有动作时n0=0。常闭按钮是负逻辑,有效(动作)状态是0,若用n1表示常闭按钮,则应该用反变量!n1表示,表示没有动作时!n1=1。采用C语言描述:失电优先:if(n0|step1)&!n1)step1

9、=1elsestep1=0;得电优先:if(n0|(step1&!n1))step1=1elsestep1=0;单片机技术基础教程与实践作者:夏路易电子工业出版社所有2.多继电器线圈控制程序多继电器线圈控制有多种方法,右图是可以同时控制4个继电器线圈的电路图,其中n0是起动按钮,n1是停止按钮。采用C语言描述:if(n0|step1)&!n1)step1=1;step5=1;step9=1;step13=1;elsestep1=0;step5=0;step9=0;step13=0;step1step5step9step13step1n0n1.图10-4多继电器线圈控制单片机技术基础教程与实践作

10、者:夏路易电子工业出版社所有3.多地控制程序下图是两个地方控制一个继电器线圈的程序。其中n0和n1是一地的起动与停止按钮,n2和n3是另外一地的起动与停止按钮。采用C语言描述:if(n0|n2|step1)&!n1&!n3)step1=1;elsestep1=0;step1step1n2n0n1n3.单片机技术基础教程与实践作者:夏路易电子工业出版社所有4.互锁控制程序下图是三个梯级互锁的电路。其中n0、n1和n2是起动按钮,n3是停止按钮。采用C语言描述:if(n0|step1)&!n3&!step2&step3)step1=1;elsestep1=0;if(n1|step2)&!n3&!s

11、tep1&step3)step2=1;elsestep2=0;if(n1|step3)&!n3&!step1&step2)step3=1;elsestep3=0;n0n1n2n3n3n3step1step2step3step1step2step3step1step2step3step1step2step3.单片机技术基础教程与实践作者:夏路易电子工业出版社所有5.互控程序下图所示的互控电路中,n0、n1和n2中任意一个闭合,就可以起动step1、step2和step3中对应的一个,同时关闭其它两个。若n0、n1和n2同时按下时,可以同时使step1、step2和step3得电。采用C语言描述:

12、if(n0|(step1&!step3&!step2)&!n3)step1=1;elsestep1=0;if(n1|(step2&!step1&!step3)&!n3)step2=1;elsestep2=0;if(n2|(step3&!step1&!step2)&!n3)step3=1;elsestep3=0;ste p 1ste p 2ste p 3ste p 1ste p 2ste p 3ste p 1ste p 1ste p 3ste p 2ste p 2ste p 3n 0n 1n 2n 3n 3n 3.单片机技术基础教程与实践作者:夏路易电子工业出版社所有6.顺序起动程序顺序控制电路

13、如图所示,该梯形图中,只有step1运行了,step2才能运行,只有step1和step2运行了step3才能运行,图中n0是step1的起动按钮,n1是step2的起动按钮,,n3是step3的起动按钮,n4是总停止按钮。采用C语言描述:图10-9周期脉冲电路if(n0|(step1&!step3&!step2)&!n3)step1=1;elsestep1=0;if(n1|(step2&!step1&!step3)&!n3)step2=1;elsestep2=0;ste p 1ste p 2ste p 3ste p 1ste p 1ste p 2ste p 3ste p 1ste p 2n

14、0n 1n 2n 3n 3n 3.单片机技术基础教程与实践作者:夏路易电子工业出版社所有7.脉冲电路(1)周期脉冲电路下图所示的就是周期脉冲电路,就是用时钟控制位输出时钟脉冲的程序,时钟控制位就是每隔0.1s、0.2s和1s闭合常开触点的控制位。,其中t01、t02、t1是时间控制的常开触点。用C语言实现脉冲周期电路:(a)用定时器产生50ms的中断,(用12MHz的时钟,定时器0计数50000次,则产生50ms的中断),定时器0初始化语句如下:step1step2step3t01t02t1.单片机技术基础教程与实践作者:夏路易电子工业出版社所有TMOD=0 x01;/定时器0,M1,M0=0

15、1(模式1),gate=0(外中断不起作用),C/T=0TH0=0 x3c;/设置TH初值0 x3cb0=65536-50000=15536,50ms中断一次,每秒20次中断TL0=0 xb0;/TL初值TR0=1;/启动定时器0ET0=1;/设置中断使能寄存器,允许定时器0中断EA=1;/允许所有中断(b)在中断服务程序中,用全局变量(时钟控制位)产生需要时间间隔的循环。voidtimer0()interrupt1/定时器中断服务程序TH0=0 x3c;/重置定时器0初值TL0=0 xb0;/重置定时器0初值t01+;if(t011)t01=0;/时钟控制位t01,0-1-0-1定时间隔为0

16、.1st02+;if(t023)t02=0;/时钟控制位t02,0-1-2-3-0-1-2-3-0定时间隔为0.2st03+;if(t0319)t03=0;/时钟控制位t1。0-1-2-3-18-19-0定时间隔为1s单片机技术基础教程与实践作者:夏路易电子工业出版社所有(c)写C语言实现的梯形图程序如下是主程序中的时钟控制位控制语句,语句中使被控继电器的得电与失电时间各占1/2。while(1)if(t01)step1=1;elsestep1=0;/时钟控制位t01控制step1的得电与失电if(t021)step2=1;elsestep2=0;/时钟控制位t02控制step2的得电与失电i

17、f(t0310)step3=1;elsestep3=0;/时钟控制位t03控制step3的得电与失电(2)1分钟脉冲在中断程序中,使定时器产生50ms为周期的中断,则每中断20次,使变量tmin加1,则中断1800次,则产生每分钟为周期的脉冲。主程序中,若是需要得电30分钟,则C语言程序如下:nn+;/每次中断,变量nn加1if(nn=20)/如果中断20次,定时为1秒nn=0;tsec+;/每秒钟,变量tsec加1if(tsec59)/如果中断1200次,则产生1分钟定时信号tsec=0;tmin=1elsetmin=0;主程序中,若是需要step7每分钟得电一次,则C语言程序如下:if(t

18、min30)step7=1;elsestep7=0;step7tmin.图10-101分钟脉冲程序单片机技术基础教程与实践作者:夏路易电子工业出版社所有(3)上升沿微分上升沿微分程序利用微分功能,对工作位n0的上升沿(断开变为接通)进行微分,在上升沿出现瞬间,工作位n0=1,使step1得电,然后等待t0增加,定时器0每中断一次,t0增加1,当t0大于3时,step1失电,所以step1得电时间内为1,step1为1的时间就是微分时间。定时器0中断服务程序中:t0+;/每次中断t0加1if(t04)t0=4;/若是t0大于4,保持t0为4主程序中:if(n0=0)t0=0;/按钮断开时,t0变

19、量保持为0。if(n0=1|step1)&!time0)/若是n0=1同时time0=0时,step1得电step1=1;elsestep1=0;/若是time0=1时,step1失电if(t03)time0=1;elsetime0=0;/若是t03,time0为1,使step1失电n0step1t0n0time0step1step1.time0t03.单片机技术基础教程与实践作者:夏路易电子工业出版社所有(4)极窄脉冲可以利用程序顺序执行的特点产生极窄脉冲,极短脉冲的C程序如下:if(n0=0)step2=0;/输入信号n0=0,使step2=0,为产生窄脉冲做准备if(n0|step1)&

20、!step2)/如果输入信号n0=1,同时step2为0时,则step1为1step1=1;elsestep1=0;/如果输入信号为0,则step1为0if(step1|step2)/如果step1为1则step2为1,step2=1;elsestep2=0;/否则step2为0由于step2为1,所以当程序再次循环执行时,step1的得电条件不成立,所以step1为0,这样在一个while(1)循环中,step1=1。图(a)显示的是C语言描述的梯形图,n0step2step1step1.step1n0step2step2.DFF.n0step1.(a)(b).(c)n0step1step2

21、单片机技术基础教程与实践作者:夏路易电子工业出版社所有8.定时计数程序(1)单按钮起停程序单按钮起停程序下图,该电路中使n0接点接通一次,使step3得电并自锁,再使n0接点接通一次,可以使step3失电。程序中使用了微分功能,就是对n0的上升沿进行微分,使step1短时间得电输出微分脉冲,计数器对step1得电次数进行计数,计第一个数时使step3得电自锁,再计一个数时使step3失电。C程序如下:if(n0=0)step2=0;/微分程序开始if(n0=1|step1)&!step2)step1=1;elsestep1=0;if(step1|step2)step2=1;elsestep2=

22、0;/step1是微分输出信号if(step1)count+;if(count=2)/计数程序开始,对step1的得电次数计数cnt=1;count=0;/cnt是计数器计数到信号elsecnt=0;if(step1|step3)&!cnt)step3=1;elsestep3=0;/计数控制使step3失电的程序if(step3)P2_0=0;elseP2_0=1;/用P2_0引脚相连的发光二极管显示step3的状态cntn0step1=2COUNTstep1cntstep3step3.DFFstep1.单片机技术基础教程与实践作者:夏路易电子工业出版社所有(2)可以改变脉冲宽度的单脉冲程序可

23、以改变脉冲宽度的梯形图程序如图所示。该程序中接点n0接通时,step1和step2得电,其中step1自锁,定时器time0开始定时,当定时时间到,step1和step2失电。step1和step2得电时间(单脉冲宽度),由定时器定时时间t0确定。源程序如下:if(n0=1|step1)&!time0)/如果n0=1,同时time0=0,则step1=1,定时器启动step1=1;elsestep1=0;t0=0;/否则step=0,t0=0if(t08)time0=1;elsetime0=0;/如果定时器计数t08,则time0=1if(step1&!time0)step2=1;elsest

24、ep2=0;/如果step1=1,同时time0=0,则step2=1if(step1)P2_1=0;elseP2_1=1;/如果step1=1,则P2_1连接的发光二极管亮if(step2)P2_3=0;elseP2_3=1;/如果step2=1,则P2_3连接的发光二极管亮step1step2step1step1n0time0time0time0t08.t0n0step1单片机技术基础教程与实践作者:夏路易电子工业出版社所有(3)瞬时得电和延时失电程序瞬时得电和延时失电程序如图所示。接点n0闭合,step1得电,当n0断开后,定时器time0开始计时,当计时时间到的时候,step1失电。而

25、step2在n0断开后得电,在定时器时间到时失电。if(n0|step1)&!time0)/如果n0=1同时time0=0,step1得电step1=1;elsestep1=0;if(step1&!n0)step2=1;elsestep2=0;t0=0;/如果step1和n0=0,则step2=1,启动定时变量t0加1if(t09)time0=1;elsetime0=0;/如果定时变量t09,则time0=1if(step1=1)P2_0=0;elseP2_0=1;/用LED灯显示step1的得电/失电状态if(step2=1)P2_1=0;elseP2_1=1;/用LED灯显示step2的得

26、电/失电状态step1n0step1step1time0n0time0t09.t0.step2n0step2step1.单片机技术基础教程与实践作者:夏路易电子工业出版社所有(4)延时得电和延时失电程序延时得电和延时失电程序如图所示。当接点n0闭合,time0开始定时,定时6s时间到,step3得电。当n0断开时,time1开始定时,8秒钟后step3失电。程序如下:if(n0=1|step1)&!time0)/n0=1同时time0=0使step1=1,启动定时器t0step1=1;elsestep1=0;t0=0;if(t06)time0=1;elsetime0=0;/当t06使time0

27、=1if(step3&!n0)step2=1;elsestep2=0;t1=0;/n0=0同时step3=1使step2=1,启动定时器t1if(t18)time1=1;elsetime1=0;/如果t18使time1=1if(time0|step3)&!time1)step3=1;elsestep3=0;/如果time0=1同时time1=0使step3=1step3n0step3n0time0time1step3time0t06time1t1868n0step3.step2step1time0step1.单片机技术基础教程与实践作者:夏路易电子工业出版社所有(5)使用一个按钮的延时得电和延

28、时失电程序下图所示的是使用一个按钮的延时得电和延时失电程序,接点n0接通一次后,延时5秒钟,step4得电,当接点n0接通第二次后,延时8秒,step4失电。step5time0time1step4step3time0t05time1t1858step3step4.DIFFn0step1step1COUNT=2step1cntstep3step3.step1n0cntstep4step4.单片机技术基础教程与实践作者:夏路易电子工业出版社所有(6)定时器和计数器配合使用实现长延时定时器和计数器配合使用的程序如图所示。n0step2step1time0t08cnt0COUNT5.step1n0c

29、nt0.step1.cycletime0step3.step2.step2step2time0.step3step3CLR.对time0信号微分step2是微分窄脉冲信号.单片机技术基础教程与实践作者:夏路易电子工业出版社所有(7)定时器接力程序定时器接力程序如图所示。step1step2n0step1time0time1time0time1step2time0t08time1t19.图10-19定时器接力程序step1n0cnt0step1time0n0cnt0count5.time0t03.cycle.图10-20计数器定时程序(8)计数器定时程序计数器定时程序如图所示。单片机技术基础教程

30、与实践作者:夏路易电子工业出版社所有(9)计数器串联程序计数器串联程序如图所示t0count5.time0t03.cycle.count8.图10-21计数器串联程序单片机技术基础教程与实践作者:夏路易电子工业出版社所有9.顺序控制程序顺序控制程序如图所示。程序由接点n0起动,step1得电并自锁,定时器time0和time1起动计时,进入程序第一步,在time1计时6s时,第一步结束。当time0计时4s时间到,使step2得电、自锁,同时起动定时器time2和time3,程序的第二步开始,当time3计时6s时第二步结束。当time2计时3s时,使step3得电、自锁,同时起动time4,

31、程序第三步开始,当time4计时8s时step3失电,第三步结束。step1n0n1time1step1time0t04step2time0n1time3step2step3time2n1time4step3time4t48.step3time1t16time2t23time3t36.图10-22顺序控制程序单片机技术基础教程与实践作者:夏路易电子工业出版社所有源程序如下:if(n0|step1)&!n1&!time1)step1=1;elsestep1=0;t0=0;t1=0;if(t04)&step1)time0=1;elsetime0=0;/第1步if(t16)&step1)time1=

32、1;elsetime1=0;if(time0|step2)&!n1&!time3)step2=1;/第2步elsestep2=0;t2=0;t3=0;if(t23)&step2)time2=1;elsetime2=0;if(t36)&step2)time3=1;elsetime3=0;if(time2|step3)&!n1&!time4)step3=1;/第3步elsestep3=0;t4=0;if(t48)&step3)time4=1;elsetime4=0;单片机技术基础教程与实践作者:夏路易电子工业出版社所有10.三个灯轮流闪烁程序DIFFS4step2step6S5S4n0t0S5st

33、ep2step4S6S5S6step2step5S4S6step2.S4.step4.S5.step5.S6.step6.单片机技术基础教程与实践作者:夏路易电子工业出版社所有11.另一个三个灯轮流闪烁的程序图10-24另一个三灯轮流闪烁梯形图step0step1step2time2step1step0n0time0step1step2step0time1step2time0t03time1t14time2t25.单片机技术基础教程与实践作者:夏路易电子工业出版社所有step0step1step2n0step2step1step0startn1step0step2step1n2step1ste

34、p0step2.图10-25由开关条件控制的顺序控制程序单片机技术基础教程与实践作者:夏路易电子工业出版社所有10.2 顺序功能图顺序功能图SFC设计方法设计方法SFC功能图设计方法是专用于工业顺序控制程序设计的一种方法,该方法能够描述被控系统的工作过程,是设计电气控制系统的重要方法。该方法广泛用于可编程控制器PLC的程序设计,也可以用于单片机控制程序的C语言描述。10.2.1 SFC基础基础SFC图的基本元素是流程步、有向线段、转移和动作说明。1.流程步,又称为工作步,它是控制系统中的一个稳定状态,流程步用矩形方框表示,框中用数字表示该步的编号,编号可以是实际的控制步序号,常用C语言中的静态

35、变量表示。对应于系统的初始状态工作步,称为初始步,该步是系统运行的起点,一个系统至少需要有一个初始步,初始步用双线矩形框表示,流程步如图所示,其中a是工作步,b是初始步。80a)b).图10-26流程步单片机技术基础教程与实践作者:夏路易电子工业出版社所有2.转移转移就是从一个步向另外一个步之间的切换条件,两个步之间用一个有向线段表示可以从一个步切换到另一个步,代表向下转移方向的箭头可以忽略。通常转移用有向线段上的一段横线表示,在横线旁可以用文字、图形符号或逻辑表达式标注描述转移的条件,当相邻步之间的转移条件满足时,就从一个步按照有向线段的方向进行切换。有向线段和转移如图所示。456.单片机技

36、术基础教程与实践作者:夏路易电子工业出版社所有3.动作说明流程步并不是单片机输出端口的动作,步只是控制系统中的一个稳定的状态,在这个状态,可以有一个或多个单片机端口引脚输出的动作,但也可以没有任何输出动作,例如某步只是起动了定时器或是一个等待过程,所以步和单片机输出端口的动作是两个事情。对于一个步,可以有一个或几个动作,表示的方法是在步的右侧加一个或几个矩形框,并在框中加文字对动作进行说明。如图所示。常见的动作的种类:动作不自锁,步结束时动作就结束。动作自锁,步结束时还继续,直到复位到达之后。复位作用,动作的任务是复位以前自锁的动作。起动定时器,定时器可以在步结束时或时间复位信号到达时结束。脉

37、冲作用,当步开始时激活脉冲,该脉冲只作用一次。在时间延迟之后,起动自锁和定时器,直到复位信号到达。当步被激活时,自锁和定时器起动,直到定时时间到达和复位信号到达。起动功能指令,完成特定的动作。9电 机 MM5启 动指 示 灯 亮.启 动 定 时 器.单片机技术基础教程与实践作者:夏路易电子工业出版社所有4.一些规则(1)步和步之间必须有转移隔开。(2)转移和转移之间必须有步隔开。(3)步和转移,转移和步之间用有向线段连接,正常画SFC图的方向是从上向下或是从左向右,按照正常顺序画图时,有向线段可以不加箭头,否则必须加箭头。(4)一个SFC图中至少有一个初始步。012等 待电 机 MM1启 动电

38、 机 MM2启 动启 动 M1按 钮T000时 间 到按 下 停 止 按 钮启 动 T000定 时 器.单片机技术基础教程与实践作者:夏路易电子工业出版社所有10.2.2 SFC图的结构图的结构1.顺序结构顺序结构是最简单的一种结构,该结构的特点是步与步之间只有一个转移,转移和转移之间只有一个步。2.选择性分支结构选择性分支如右图所示。图中共有2,3、4,5、6和7、8、9四个分支,根据分支转移条件A、C、F和I来决定究竟选择哪一个分支。分支用水平线相连,每一条单一顺序的进入都有一个转移条件,每个分支的转移条件都位于水平线下方,单水平线上方没有转移。如果某一分支转移条件得到满足,则执行这一分支

39、,一旦进入这一分支后,就再也不执行其它分支了。分支结束用水平线将各个分支会合,水平线上方的每个分支都有一个转移条件,而水平线下方没有转移条件。123456789ACFIBDGJEHKL10.单片机技术基础教程与实践作者:夏路易电子工业出版社所有3.并发性分支结构如果在某一步执行完后,需要起动若干条分支,这种结构称为并发分支结构。并发分支结构如图所示。分支开始是用水平双线将各个分支相连,双水平线上方需要一个转移,转移对应的条件称为公共转移条件,如果公共转移条件满足,则同时执行下面所有分支,水平线下方一般没有转移条件,特殊情况下允许有分支转移条件。公共转移条件满足时,同时执行多个分支,但是由于各个

40、分支完成的时间不同,所以每个分支的最后一步通常设置一个等待步。分支结束用水平双线将各个分支汇合,水平双线上方一般没有转移,下方有一个转移。1234567ABCD.12345ABCDE.单片机技术基础教程与实践作者:夏路易电子工业出版社所有4.循环结构循环结构用于一个顺序过程的多次反复执行,结构示意图如图所示。5.复合结构复合结构就是在一个集顺序、选择性分支、并发分支和循环结构于一体结构,由于结构复杂,必须仔细才能正确的描述实际问题1234567ABCD.12345ABCDE.单片机技术基础教程与实践作者:夏路易电子工业出版社所有10.2.3 C语言描述语言描述SFC图图1.进入有效工作步(1)

41、起动单片机就进入有效工作步可以设置一个局部变量,该变量在while(1)循环语句外为1,在循环语句结束前使该变量为0,这样该局部变量只在第一个while(1)循环中为1,因此可以作为进入有效工作步的条件。(2)还可以使用按钮进入有效工作步,但是应该加限制条件,就是避免按钮的按下影响工作步正常转移的情况。2.停止有效工作步可以使用按钮停止流程,方法是在while(1)循环结束前,增加语句:if(n0)step0=0;step1=0;stepn=0;/n0是按钮,stepn是工作步若是停止有效工作步后,返回到工作步step0,则可以按照如下语句描述:if(n0)step0=1;step1=0;st

42、epn=0;/n0是按钮,stepn是工作步单片机技术基础教程与实践作者:夏路易电子工业出版社所有3.最后一个工作步一般情况下,需要在最后一个工作步完成之后,返回第一个工作步,但是有时需要做一些判断,例如,在1个工艺流程结束后,是否进行第2个工艺流程等。如果在程序中有tj=1停止有效工作的语句,以及tj=0返回第1工作步的语句,则可实现下一个流程的起动与停止操作。判断语句如下:if(n1)tj=1;elsetj=0;/n1是钮子开关信号,如果n1=1,则tj=1,否则tj=04.工作步的转移条件转移条件可以是来自单片机外部的按钮、行程开关、传感器等输出的信号,也可以是来自内部的定时器的时间到条

43、件、计数器的计数数值条件等。单片机中可以直接使用定时器的时间数值,例如if(t012),表示定时器t0的数值大于12以后就满足转移条件,其中t0是对单片机定时器中断计数的全局变量;又例如,if(cnt8)表示计数器cnt数值大于8时就满足转移条件,其中cnt是可以对按钮动作、流程循环次数等计数的全局变量。单片机技术基础教程与实践作者:夏路易电子工业出版社所有5.工作步得电和失电工作步的得电条件是:该步的上一个工作步是有效工作步,而该步的下一步没有工作,这时若出现转移条件,则该工作步就会得电变成有效工作步。工作步失电的条件是:该步的下个工作步得电,则该工作步失电。一般情况下工作步都需要自锁。例如

44、:若step0、step1和step2是三个顺序执行的工作步,则step1得电与失电的条件可以写为:if(step0|step1)&!step2)step1=1;elsestep1=0;一般工作步得电与失电条件的梯形图如图所示。上一步得电 转移条件下一步没有工作停止条件启动条件本步自锁工作步(失电条件).单片机技术基础教程与实践作者:夏路易电子工业出版社所有6.选择性分支选择性分支就是在工作步得电的条件中增加一个选择条件,若满足选择条件,则工作步得电,若不满足选择条件的工作步就不能得电。若在起动程序时出现选择分支,则工作步的得电条件应该为起动条件“与”选择条件。若在工作步转移时出现选择性分支,

45、则工作步的得电条件应为转移条件“与”选择条件。选择性分支如图所示,图中n0、n1、n2、n3是按钮或是开关条件。与图对应的C语言描述如下:start=1;while(1)if(n0&step3)|step0|start)&!step1&!step2)step0=1;elsestep0=0;if(n1&step0)|step1)&!step3)step1=1;elsestep1=0;/分支step1if(n2&step0)|step2)&!step3)step2=1;elsestep2=0;/分支step2if(n3&step1|n3&step2)|step3)&!step0)step3=1;e

46、lsestep3=0;start=0;图10-37简单选择分支结构step0step1step2n1n2n3n0startstep3.单片机技术基础教程与实践作者:夏路易电子工业出版社所有7.并发分支并发工作步是在一个得电条件下,几个并发分支都得电,所以几个并发分支的得电条件是一样的。所有并发工作步都结束后才能进行工作步转移,所以若要工作步转移,则需要所有并发分支的的转移条件相“与”。下图所示的是一个具有并发分支的SFC图。该图中工作步step1和工作步step2是并发分支,n0、n1、n2、n3是按钮或是开关条件。start=1;/第1周期信号while(1)if(n0&step3)|ste

47、p0|start)&!step1&!step2)step0=1;elsestep0=0;if(n1&step0)|step1)&!step3)step1=1;elsestep1=0;/并发分支step1if(n1&step0)|step2)&!step3)step2=1;elsestep2=0;/并发/分支step2if(n2&step1&n3&step2)|step3)&!step0)step3=1;elsestep3=0;start=0;step0step1step2step3startn1n2&n3n0.单片机技术基础教程与实践作者:夏路易电子工业出版社所有8.第0工作步第0工作步是单片

48、机上电后的状态,当除第0工作步以外的工作步都无效时,第0工作步有效,所以第0工作步的一个得电条件是除第0工作步以外的工作步都无效。停止条件出现后,程序应该回到第0工作步。9.动作输出在有些系统中,工作步就是动作输出,在这种情况下,工作步的继电器就是单片机的输出引脚。而在有些系统中,动作输出是工作步的逻辑组合。动作开始时刻就是工作步得电时刻,动作结束时刻就是工作步失电时刻,若是动作时间是一个工作步,则工作步就可以是输出;若是该动作还需要在下一个工作步继续动作,则这时该动作就是这两个工作步的“或”。单片机技术基础教程与实践作者:夏路易电子工业出版社所有10.描述SFC的一般C语言结构描述SFC的一

49、般C语言结构如下:while(1)输入扫描部分工作步流程部分输出部分其他其中:(1)输入扫描部分就是处理按钮、行程开关、传感器等信号。(2)工作流程部分就是按照输入条件,实现工作步的转移,输入条件可以是按钮、行程开关或是传感器等外部输入的信号,也可以是单片机内部的定时器或是计数器信号。(3)输出部分就是描述对应各个工作步的输出动作(4)其他部分描述:停止信号、首次while(1)循环有效信号、按钮信号归0等信号。单片机技术基础教程与实践作者:夏路易电子工业出版社所有例题10-1下图是送料小车示意图,小车可以在A、B之间运动,在A、B点各有一个行程开关。小车从A点向B点前进,到达B点,停车6s后

50、,从B点后退到A点,在A点停车8s后再向B点前进,如此往复不止。要求可以人为控制小车的前进起动和后退起动,并且能够任何时候都可以停止小车运行。该题的步是小车前进、定时6秒、小车后退和定时8秒共四个步,转移条件是小车到达B点时的行程开关闭合、B点定时6秒时间到、小车到达A点时的行程开关闭合和A点定时8秒时间到,动作是小车从A点向B点的前进动作、起动6s定时器动作、小车从B点向A点的退回动作和起动8s定时器动作。AB.单片机技术基础教程与实践作者:夏路易电子工业出版社所有该题要求能够前进起动和后退起动,这需要选择分支结构,当按下前进起动按钮时,小车向B点前进,当按下后退起动按钮时,小车向A点后退。

51、停止按钮的动作是停止正在工作的步,回到步0。前进后退前进启动后退启动停止运行PLC行程开关A行程开关B.1234小车向前前进启动B点行程开关闭合启动定时器,延时10s6s定时时间到小车后退后退启动A点行程开关闭合启动定时器,延时20s8s定时时间到0.停止停止停止停止. .start单片机技术基础教程与实践作者:夏路易电子工业出版社所有地址信号地址信号n0前进按钮step0上电状态n1后退按钮step1小车前进运行n2停止按钮step2B点定时工作步n3B点行程开关step3小车后退运行n4A点行程开关A点定时工作步run0前进起动run1后退起动time0B点定时器time1A点定时器单片机

52、技术基础教程与实践作者:夏路易电子工业出版社所有该题的C语言程序如下:#includeAT89X51.hunsignedintcodetable=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;unsignedintn0,n1,n2,n3,n4,sn;unsignedintkk=8,start,run0,run1;unsignedintstep0=0,step1=0,step2=0,step3=0,step4=0;unsignedinttime0,time1;unsignedintt0,t1;voidmain()unsig

53、nedintnn;/定时器0初始化TMOD=0 x01;/定时器0,M1M0=01(模式1),gate=0(外中断不起作用),C/T=0TH0=0 x3c;/TH初值0 x3cb0=65536-50000=15536,50ms中断一次,每秒20次,时钟12MHzTL0=0 xb0;/TL初值TR0=1;/启动定时器0ET0=1;/设置中断使能寄存器,允许定时器0中断EA=1;/允许所有中断单片机技术基础教程与实践作者:夏路易电子工业出版社所有start=1;/启动标志置1while(1)P3=0 xff;/P3口连接8个按键作为输入if(P3_0=0)/如果P3_0引脚连接的按键按下for(n

54、n=0;nn1000;nn+);/延时消抖if(P3_0=0)n0=1;kk=0;/如果按键还在按下状态,则n0=1elsen0=0;if(P3_1=0)/如果P3_1引脚连接的按键按下for(nn=0;nn1000;nn+);if(P3_1=0)n1=1;kk=1;/如果按键还在按下状态,则n1=1elsen1=0;单片机技术基础教程与实践作者:夏路易电子工业出版社所有if(P3_2=0)/如果P3_2引脚连接的按键按下for(nn=0;nn1000;nn+);if(P3_2=0)n2=1;kk=2;elsen2=0;if(P3_3=0)/如果P3_3引脚连接的按键按下for(nn=0;nn

55、1000;nn+);if(P3_3=0)n3=1;kk=3;elsen3=0;if(P3_4=0)/如果P3_4引脚连接的按键按下for(nn=0;nn6)time0=1;elsetime0=0;/如果t06,定时器time0=1if(run1|time0&step2|step3)&!step4)step3=1;elsestep3=0;/后退步,step3=1if(n4&step3|step4)&!step1)step4=1;elsestep4=0;t1=0;/到达A点,step4=1,启动定时t1if(t18)time1=1;elsetime1=0;/如果t18,定时器time1=1if(s

56、tep1)P2_6=0;elseP2_6=1;/前进动作信号输出,LED灯显示小车前进if(step3)P2_7=0;elseP2_7=1;/后退动作信号输出,LED灯显示小车后退if(n2)step0=1;step1=0;step2=0;step3=0;step4=0;/停止按钮按下,回到初始步step0start=0;/上电启动标志清0单片机技术基础教程与实践作者:夏路易电子工业出版社所有if(step0)sn=0;/将工作步转换成数值在数码管上显示if(step1)sn=1;if(step2)sn=2;if(step3)sn=3;if(step4)sn=4;P0=tablesn;/P0口

57、连接的数码管显示工作步if(step0)P2_0=0;elseP2_0=1;/用LED灯显示工作步if(step1)P2_1=0;elseP2_1=1;if(step2)P2_2=0;elseP2_2=1;if(step3)P2_3=0;elseP2_3=1;if(step4)P2_4=0;elseP2_4=1;if(step2)P1=tablet0;/将定时数据显示在P1口连接的数码管上if(step4)P1=tablet1;单片机技术基础教程与实践作者:夏路易电子工业出版社所有voidtimer0()interrupt1/定时器0中断服务程序staticunsignedintjj;TH0=

58、0 x3c;/重置初值TL0=0 xb0;/重置初值jj+;if(jj=20)/如果jj=20,则为1s,为调试方便,可以减小jj值jj=0;t0+;if(t010)t0=0;t1+;if(t110)t1=0;实际调试时可用连接在P3口的按钮代替行程开关和控制按钮。单片机技术基础教程与实践作者:夏路易电子工业出版社所有例题10-2 交通信号灯的动作如图所示,请画出该交通灯控制的SFC图。要求可以用按钮强制使南北通或东西通。东西绿灯9s东西绿灯闪5s 东西黄灯3s东西红灯南北绿灯7s东西绿灯闪5s 东西黄灯3s南北红灯.PLC南北方向强制按钮东西方向强制按钮东西绿灯东西黄灯东西黄灯南北绿灯南北黄

59、灯南北红灯.单片机技术基础教程与实践作者:夏路易电子工业出版社所有东西绿灯亮,南北红灯亮,启动30s定时器东西方向强制按钮9s定时时间到东西绿灯闪,南北红灯亮,启动5s定时器5s定时时间到东西黄灯亮,南北红灯亮,启动2s定时器3s定时时间到南北方向强制按钮南北绿灯亮,东西红灯亮,启动20s定时器南北绿灯闪,东西红灯亮,启动5s定时器东西黄灯亮,南北红灯亮,启动2s定时器7s定时时间到5s定时时间到3s定时时间到123456.start.设计中没有考虑停止按钮,若要交通灯停止工作,只要关掉控制器电源就可以了,南北方向强制按钮用于强制南北绿灯,东西方向强制按钮用于强制东西绿灯。该控制器在通电时自起

60、动。单片机技术基础教程与实践作者:夏路易电子工业出版社所有地址信号地址信号n0南北方向强制按钮step1第1步,东西绿灯n1东西方向强制按钮step2第2步,东西绿灯闪烁start第一周期标志step3第3步东西黄灯second秒标志step4第4步南北绿灯step5第5步南北绿灯闪烁step6第6步南北黄灯time1东西绿灯定时time2东西绿灯闪烁定时time3东西黄灯定时time4南北绿灯定时time5南北绿灯闪烁定时time6南北黄灯定时单片机技术基础教程与实践作者:夏路易电子工业出版社所有#includeAT89X51.hunsignedintcodetable=0 xC0,0 xF

温馨提示

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

评论

0/150

提交评论