如何用PLC梯形图做一个8盏灯轮流闪烁的流水灯 求:梯形图

如何用PLC梯形图做一个8盏灯轮流闪烁的流水灯 求:梯形图,第1张

x0为启动按钮,x1为停止按钮。y0~y7为8盏灯。程序在按下启动按钮后,灯1先亮,1秒(T0延时)后灭,1秒后(T1延时)灯2亮,依次循环。当按下x1后,循环结束。

按下x0后,m0得电为1并自保持,此时1秒计时器T0计时,1秒后T0常开点闭合1秒计时器T1计时,再过1秒T1计时结束常闭点断开T0线圈。

使用注意事项:

当M0为1时,在T0触点的上升沿来时k3M10这个二进制数乘以2再写入k3M10中。

K3M10代表M10~M21共12个辅助继电器的组合,那么可以将K3M10看作是一个二进制数。程序未启动时,M10~M21均为0。

此时M10~M21为1,当T0触点的上升沿来时k3M10(此时为1)这个二进制数乘以2再写入k3M10中(写入后为2)。

流程:

1.点亮1个灯;

2.延时100毫秒

3.灭第一个灯,点亮第二个灯;

4延时100毫秒;

。。。

依次类推,直到灭第8个灯,再返回到1,重新开始。

设一个标志位flag, 以标志位的5种状态对应发光二极管的5种工作状态,如当flag=1发光二极管工作在1,当flag=2发光二极管工作在2,......!然后根据定时器定时功能,5秒到,刷新flag的值,程序如下

/*程序功能:定时5S到切换LED显示状态.

作者:w418781840.2008.5.29 */

FLAG BIT 30H 定义标志位

ORG 0

LJMP MAIN

ORG 0BH

LJMP AGA

主程序

ORG 0030H

MAIN: MOV FLAG,#01H 标志位清0

MOV TMOD,#01H 赋值50MS

MOV TH0,#3CH

MOV TL0,#0B0H

MOV R0,#100 中断100*50=5S

SETB EA

SETB ET0

SETB TR0

SJMP $

中断服务程序

AGA: MOV TH0,#3CH

MOV TL0,#0B0H

DJNZ R0,LOOP 5S到否?否,返回

INC FLAG 到,标志加1

MOV A,FLAG

CJNE A,#05,L1 扫描5种状态了否?

MOV FLAG,#01H 是,归0,重新开始

切换程序

L1: CJNE A,#01H,L2 判断是否是状态1?否,转判断2

LCALL LED1 是,调有状态1

SJMP LOOP 返回

L2: CJNE A,#02H,L3 以下跟上面判断相同

LCALL LED2

SJMP LOOP

L3: CJNE A,#03H,L4

LCALL LED3

SJMP LOOP

L4: CJNE A,#04H,L5

LCALL LED4

SJMP LOOP

L5: CJNE A,#05H,LOOP

LCALL LED5

LOOP: RETI

LED子程序区

LED1: RET

LED2: RET

LED3: RET

LED4: RET

LED5: RET

/////////////////

///////////////////////////////

/*程序功能:定时5S到切换LED显示状态.

作者:w418781840.2008.5.29 */

//========声明区===========

#include <reg51.h>

unsigned char count=0

unsigned char flag=1

void led1(void)

void led2(void)

void led3(void)

void led4(void)

void led5(void)

//=========函数=========

main()

{ TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

EA=1

ET0=1

TR0=1

while(1)

{ switch(flag)

{ case 1:led1()break

case 2:led1()break

case 3:led1()break

case 4:led1()break

case 5:led1()break

}

}

}

//==========中断服务============

void timer0(void) interrupt 1

{ TH0=(65536-50000)/256

TL0=(65536-50000)%256

if(++count==100)

{ count=0

flag++

if(flag==5)

flag=1

}

}

//========5种状态函数区=========


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11772945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存