plc三个灯循环亮每两个灯一起亮时间间隔3秒怎么编程序用三个计时器,第一个定时器开始亮两个灯AB,计时到两两个BC,同时第二个计时器开始计时,计时到两CA,同时第三个计时器开始计时,计时到清三个计时器;西门子的PLC编程可以用SHRB指令,三菱的PLC编程可以用SFTL左移或SFTR右移指令,配合定时器指令就可以写出来了 龙丰自动化 下面是以西门子200写的一段8盏灯的,15个指示灯的可以将下面的8改为15,Q07改为Q17即可;ORG 0000H KSMOV A, #127 MOV R3, #5 LP1MOV R2, #8 LOPMOV P1, A CALL YS RR A DJNZ R2, LOP DJNZ R3, LP1 MOV R3, #5 LP2MOV R2, #8 LO1MOV P1, A;打开VC++60,界面如下,按左上角菜单栏的“文件”“新建”,打开如下界面 在左边的列表中选择“Win32 Console Application”,即win32控制台工程,控制台就类似windows中的cmd窗口,刚开始编程,选择创建这个工程就可以。
然后在一个无限循环中,通过判断P10引脚是否为高电平,来控制P12引脚的输出状态如果P10引脚为高电平,则将P12引脚设置为高电平,点亮控制信号灯否则,将P12引脚清零,熄灭控制信号灯;如下即可includeltreg52hvoid main unsigned int i, j P1 = 85 while1 P1 ^= 255 fori = 100 i 0 i forj = 800 j 0 j;若P17P10对应LED7LED0 ,低电平点亮,高电平熄灭 初始值 A=0xfe ,即LED0 亮,其余灭 执行CLR CRLC AA=0xfc ,LED0LED1亮 执行CLR CRLC AA=0xf8 ,LED0LED1LED2亮 以此类推CLR C;1 左移一位,点亮下一位LED delay55 向右循环点亮LED fori=0 i 右移一位点亮上一位LED delay55 延时函数,延时a毫秒void delayuint a uint x,y forx=ax0;先设个变量unsigned char a=0xfe我这个是输出低电平让小灯亮,然后执行一次该命令a=_crol_a,1P1=a小灯循环一位,放到while里就可以循环点亮了,然后加个键盘扫描程序就行了,具体的要看你的硬件部分了。
二编程操作 接着,编写程序,设置数字输出端口,将接线好的八盏灯分别设定为18口,编写时序程序,循环点亮8个信号脚和led灯,进行点亮和关灯,完成点亮循环工作三调试程序 最后,就可以进行程序调试,将调试好的程序;设32个发光管串联接100伏10mA可关断恒流源,控制端接 P10 程序为include ltreg52h#define ON 0sbit LED_CONTROL P1^0 void main while1 LED_CONTROL = ON;includeltreg51h voiddelayvoid unsignedinti,jfori=0ilt200i++forj=0jlt1000j++ voidmainvoid while1 P3=0xfe第一个灯亮 delay延时 P3=0xfd第二个灯亮 delay;最简单方法是使用一个计数器和一个输出变量Counter变量用于追踪当前点亮的灯的编号,Output变量用于控制输出端口,将其与相应的灯连接,每次循环,计数器会递增,然后根据计数器的值设置Output变量,从而逐个点亮灯;具体看你的灯是高电平点亮还是低电平点亮,还有驱动的IO口是哪个例如驱动IO是P10,高电平点亮程序P1 = 0x01。
第一种,总线方法实现流水灯这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭C程序如下cpp view plain copy include ltreg;晶振认为是12MHz定时器中断时间为50ms,累计20次中断的时间为1s 这个程序是精确定时的,不像楼上的delay函数定时不精确 include include unsigned char i=0void initvoid main initwhile 1 ifi==20;附件里有Proteus仿真Keil C工程和程序文件,可以看看效果include ltreg51h#include ltintrinsh#define uchar unsigned char#define uint unsigned int变量uchar Count,LED主程序void main P0=0xff Count。
includeltintrinsh void delayunsigned int z void main unsigned int aunsigned char b=0xfefora=0alt8a++ P1=bP1口接8个LED灯 delay200b=_crol_ b,1 void delayunsigned。