你的意思是K1按下,D1输出低电平,再按一次K1,D1输出高电平?
这……这里的按键检测就不需要使用延时了,使用while不用怕会阻塞后面的程序执行。事实在公司写程序,在检测按键时我从来不用延时,当然也不是使用这种while等待按键松开的方式。有兴趣可以一起研究一下,呵呵
#include <reg51h>#define KEY1 ( 1 << 0 )
#define KEY2 ( 1 << 1 )
#define KEY3 ( 1 << 2 )
#define KEY4 ( 1 << 3 )
#define KEY5 ( 1 << 4 )
#define KEY6 ( 1 << 5 )
sbit D1 = P0 ^ 0;
sbit D2 = P0 ^ 1;
sbit D3 = P0 ^ 2;
sbit D4 = P0 ^ 3;
sbit D5 = P0 ^ 4;
sbit D6 = P0 ^ 5;
void main( void )
{
while(1)
{
P1 = 0xff;
if( !(P1&KEY1) )
{
D1 = ~D1;
while( !(P1&KEY1) );
}
if( !(P1&KEY2) )
{
D2 = ~D2;
while( !(P1&KEY2) );
}
if( !(P1&KEY3) )
{
D3 = ~D3;
while( !(P1&KEY3) );
}
if( !(P1&KEY4) )
{
D4 = ~D4;
while( !(P1&KEY4) );
}
if( !(P1&KEY5) )
{
D5 = ~D5;
while( !(P1&KEY5) );
}
if( !(P1&KEY6) )
{
D6 = ~D6;
while( !(P1&KEY6) );
}
}
}
具体 *** 作步骤如下:
首先电脑中应该安装有三菱编程软件及仿真软件,我们安装为以下版本GX Developer-708;GX Simulator6-C。然后打开编程软件。从工程菜单中创建新工程,并选择我们使用plc的系列及类型。编写一个简单的自锁程序,编写完毕后点击“程序变换”图标。变换之后我们运行仿真程序,这时点击“梯形图逻辑测试”图标,这时我们编写的程序将传送至“模拟PLC”。传送完毕点击模拟窗口的“寄电器内存监视”然后从d出的对话框选择软元件“X”和“Y”,这时我们看到的是所有输入和输出软元件的仿真按钮。我们双击X0,这时即可看到输出Y0灯亮,同时自锁,Y0常亮。即使再次双击X0关闭,Y0仍然处于点亮状态。我们点击停止按钮X1,这时Y0才能够断开。
这就是整个程序的仿真过程。通过仿真我们就可以判断程序是否正确,非常方便!
首先这是用一台西门子PLC编程。西门子PLC输入点用I,输出用Q表示。不是图中O。所以输出是右行Q00。左行是Q01。(图中也没有加小数点。这些都是细节问题,以后要注意。)
下面正式解答图中程序意思。
第一段程序:按下I00(右移开关)PLC输出Q00,这时候Q00完成三个动作。
1、对第二段程序完成互锁,不让其触发。防止左右移接触器同时通电工作。
2、第一段程序电路形成自保(松开按钮电路任然可以正常工作)。
3、硬件电路上Q00输出信号触发右移接触器,接触器吸合,电机带动小车右移。
等到碰触右限位开关I04瞬间。
I04完成三个动作。
1、解锁了Q00自锁程序,Q00停止输出。
2、Q00停止输出,硬件上右移接触器断开,电机停止右移。
3、I04信号触发了PLC输出Q01 。
这时第二段程序开始执行。
由于Q01工作瞬时间完成三个动作。
1、对第一段程序互锁,不让其触发。防止左右移接触器同时通电工作。
2、第二段程序电路自保(离开限位开关电路也可以工作)
3、硬件电路上Q01输出信号触发左移接触器,接触器吸合,电机带动小车左移。直到左限位开关I03被左移小车触发。
如此反复,直到按下I02停止。
在这一条电路中,I02 是急停按钮按下后所有动作都不被执行。
I05是电机热过保护,电机过载时,小车停止。同时按任何按钮程序不会启动。
I03与I04是限位开关。
I00与I01启动按钮相互互锁。
Q00与Q01触发信号相互互锁。
以上就是关于求助,关于51单片机的自锁开关C程序。全部的内容,包括:求助,关于51单片机的自锁开关C程序。、三菱PLC怎么控制solidworks进行仿真、一道PLC题目,求帮助,解释一下第二张图的答案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)