用定时器控制灯的闪烁梯形图_用西门子的plc如何实现灯光的闪烁

西门子PLC如何实现两灯交替闪烁的两种编程法

我们先来看看这个案例的具体要求:

使用定时器Q0.0和Q0.1,当按下启动按钮时Q0.0亮,1秒后Q0.0灭,同时Q0.1亮,再过两秒后Q0.1灭。以此循环,直到按下停止按钮,Q0.0和Q0.1全灭

首先画时序图。再用定时器加比较的方法会把很多复杂的东西简单化时序图就是表示地址或变量根据时间的变化而变化的图形。

a69b6b9ef72478be42c792776dd74118.png

整个占用的时间为3秒,需要用到100毫秒定时器

设:定时器的当前值为X,0≦X﹤10的时候,Q0.0亮;当10≦X﹤30时,Q0.1亮。

接下来就是循环的问题,循环就是用后一个状态作为个状态的启动条件。

定时器PT值为3秒(数值计作30),使用TNO接通延时定时器,当当前值=设定值,状态输出为1时,即定时器状态位T37=1时,就去复位定时器,再从0开始,这个就是自复位,就是自己复位自己,到了3秒就从0开始。

后梳理下编写程序的思路:

1、  启停控制——输出启动标志位,输出为1,并保持(自锁)

2、  定时器控制——用启动标志位去接通定时器,让其工作

3、  比较——0-1秒Q0.0输出,1-3秒Q0.1输出

于是程序如图:

adc83b93bdd8c35c1db7585ef516a004.png

此外还有第二种方法哦,会使用到震荡电路(闪烁电路)以及两个定时器交替控制,一个控制接通时间,一个控制断开时间,一起来看看。

a19548af41810325216b6ed263762464.png

看完这段程序,建议大家还是自己动手 操作一遍,效果会更好哦!

### 回答1: 当然可以!这是一个简单的51单片机电程序: ``` #include <reg52.h> sbit light = P1^0; void main() { while(1) { light = 1; delay(1000); light = 0; delay(1000); } } void delay(unsigned int t) { unsigned int i, j; for (i = 0; i < t; i++) for (j = 0; j < 125; j++); } ``` 其中,`light`是连接到单片机的电,`delay`函数是延时函数,控制闪烁的频率。 希望对您有所帮助! ### 回答2: 当然可以写一个51单片机的电程序。以下是一个简单的示例代码: ``` #include <reg51.h> // 定义延时函数 void delay() { unsigned int i, j; for (i = 0; i < 500; i++) { for (j = 0; j < 500; j++) { } } } void main() { unsigned char led = 0xFE; // 初始状态 while (1) { // 无限循环 P1 = led; // 控制P1口输出状态 delay(); // 延时一段时间 // 所有位移一位,并判断是否需要重置 if (led == 0x7F) { led = 0xFE; // 的最高位移出后需重新起 } else { led >>= 1; // 的所有位右移一位 } } } ``` 以上代码使用P1口控制LED的状态,每隔一段时间将状态右移一位,实现的循环闪烁效果。代码中的`delay`函数用于增加每次位移的时间间隔,可根据实际需要进行调节。 注意:以上代码仅供参考,不同的开发环境、硬件配置可能有所不同,还需根据实际情况进行修改和适配。 ### 回答3: 当然可以写一个51单片机的电程序。以下是一个简单的示例程序: ```c #include <reg51.h> // 引入51单片机的头文件 void delay() { int i, j; for(i = 0; i< 30000; i++) { for(j = 0; j < 100; j++); } } void main() { while(1) { // 无限循环 P1 = 0xFF; // P1口输出高电平, delay(); //延时一段时间 P1 = 0x00; // P1口输出低电平, delay(); //延时一段时间 } } ``` 这个程序使用了P1端口作为输出端口控制一个LED。通过不断循环执行P1口输出高电平和低电平,可以使LED交替。程序中的延时函数用来控制的速度,可以根据需要进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值