焊接资讯

您现在的位置是:首页 > led灯 > 正文

led灯

用定时器实现对led灯的定时控制(定时器控制led灯闪烁的电路)

工品易达2022-11-10led灯10

怎样用PLC的一个定时器控制一个灯的闪烁

在很多工业场合中,经常用LED按一定的频率闪烁来实现信号指示功能,例如红灯闪烁表示报警,黄灯闪烁表示设备处于准备状态等。如何实现LED灯的闪烁效果呢?通常使用以下两种方法:

例题:Q0.0外接一个LED发光二极管作为信号指示灯,要求PLC系统上电后LED灯以1Hz频率闪烁。

方法一:两个定时器交替工作产生脉冲信号,程序如下图所示

方法二:使用系统时钟脉冲存储器直接产生脉冲信号

在S7-1200PLC程序中除了使用两个定时器来产生脉冲信号,还可以应用PLC的系统和时钟存储器来产生特定频率的脉冲信号。时钟存储器的设置和使用步骤如下:

(1)在博图项目文件中双击“设备和网络”;

(2)鼠标双击PLC的CPU图标,下方将弹出该PLC的属性窗口;

(3)在属性窗口左侧目录中双击“系统和时钟存储器”选项;

(4)勾选启用时钟存储器字节将其激活;

(5)如下图所示可以看到PLC中支持几种特定频率的时钟存储器,我们需要选用的是1Hz的始终存储器,其默认地址为M0.5。

(6)在程序中只需调用该存储器就可以产生1Hz的脉冲信号,编程PLC程序如下图所示

这种方式的优点是程序结构简单,使用方便。缺点是产生的时钟脉冲频率是固定的。

专栏

轻松学会KUKA工业机器人

作者:电气技术微课堂

29币

47人已购

查看

用定时器实现51单片机上LED灯每隔两秒亮暗闪烁

你用的是几个灯啊?比如说8个灯吧,用p0口,

就是直接讲p0口与led直接相连就行了啊,注意led的另一端要接在一起,共地或者高电平都可以,但是为了保护led,最好在每个小灯上串上一个电阻(若单片机采用的是5v电压,电阻可选用500欧左右的就可以了),以减小通过led的电流。剩余的就是单片机的最小系统了,没什么好说的吧,就是晶振,复位而已。

程序嘛,也很简单啊,你说用定时器,每个两秒如果单纯用一个定时器的话肯定不够用的,要结合循环判断语句,比如你采用12m的晶振,并且将定时中断时间定为50ms,那么设置一个变量,每20次就是一秒了,所以40次就是两秒。这样的话,每个40次就让led的状态(用0和1表示亮与灭)改变就可以了。main函数中应该设置一个死循环函数,可用while(1),让单片机不断的循环工作。

51单片机定时器控制8个LED灯亮3秒灭8秒再亮12秒的程序

一、利用定时器实现:

/*****************************预处理命令*****************************/

#includereg52.h

#define OUT P0

//晶振:12MHZ

/********************重新定义数据类型*******************************/

typedef unsigned char unit8;

typedef unsigned short unit_16;

/*

函数名:main()

函数功能: 主函数

输入:无

输出:无

*/

void main()

{

TMOD = 0x01;

TR0 = 1;

ET0 = 1;

EA = 1;

while(1);

}

/*

函数名:Timer0_Rountine() interrupt 1

函数功能:内部中断T0 服务函数

输入: 无

输出:无

*/

void Timer0_Rountine() interrupt 1

{

static unit_16 Count=0;

static unit8 Count_Sign=0;

static bit Sign=0;

TH0 = 0xfc;

TL0 = 0x18;

Count++;

if(!Sign)

OUT = 0xaa; //奇数 (1秒)

if(Count=1000)

{

Sign=1;

Count=0;

if(Count_Sign3) //2秒

OUT = 0xaa; //奇数

else if(Count_Sign=3Count_Sign=10) //8秒

OUT = 0x55; //偶数

else if(Count_Sign10Count_Sign=22) //12秒

OUT = 0x00; //全部

else if(Count_Sign22)Count_Sign=Sign=0;

Count_Sign++;

}

}

二、利用软件延时实现:

#includereg52.h

#define OUT P0

typedef unsigned char unit8;

typedef unsigned int unit16;

/*

函数名:delay_ms(unit16 x)

函数功能: 延时函数1MS

输入:x

输出:无

*/

void delay_ms(unit16 x)

{

unit8 a,b;

while(x--)

{

for(b=142;b0;b--)

for(a=2;a0;a--);

}

}

/*

函数名:main()

函数功能: 主函数

输入:无

输出:无

*/

void main()

{

while(1)

{

OUT = 0xaa; //奇数

delay_ms(3000); //3秒

OUT = 0x55; //偶数

delay_ms(8000); //8秒

OUT = 0x00; //全部

delay_ms(12000);//12秒

}

}

如何用定时器控制LED1亮2秒,灭1秒,LED2亮5秒,灭2秒,以至多个LED可以按自己要求控制

这个很简单,定时器设置成100ms中断一次(或是200ms,看自己需求),在中断里放标志位,在主程序while(1)内处理标志位,并++计数,10次就是1秒,20次就是2秒,50次就是5秒,随便怎么处理

怎样用定时器编写一个LED灯间隔1秒钟亮灭C程序?

#include reg51.h

#define uchar unsigned char

sbit LED=P1^0;

uchar time;

void InitTimer0(void)

{

TMOD = 0x01; //定时器0,工作方式1

TH0 = 0x3c;

TL0 = 0xb0; //50ms中断一次

EA = 1;

ET0 = 1;

TR0 = 1;

}

void main(void)

{

InitTimer0();

while(1)

if(time==20) //中断20次,1s

{

time=0;

LED=!LED; P1.0上的LED1s亮灭一次

}

}

void Timer0Interrupt(void) interrupt 1

{

TH0 = 0x3c;

TL0 = 0xb0;

time++;

}

关于用定时器实现对led灯的定时控制和定时器控制led灯闪烁的电路的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。微信号:ymsc_2016

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~