㈠ 单片机控制LED灯亮的时间
你的意思是想让这个LED亮大约10-15分钟后永久关闭是吗?方法很简单我说出我的想法,
用一片价格低廉的单片机,单片机供电加一个低W保险丝、程序控制IO点亮LED 10-15分钟后,在控制另一IO口驱动三级管(或其他开关器件)烧断保险丝,这样即使更换电池LED也不可能在亮,
㈡ 单片机控制led灯亮度原理
让单片机控制LED的引脚以较高频率(50HZ以上)输出方波,改变方波的占空比即可改变LED的平均电压,从而改变LED的亮度,也就是我们常说的PWM调节。
㈢ 求教如何用单片机控制LED灯的亮度
控制ked亮度不难,你硬件直接连连接好led灯,串个限流电阻。如果引脚一直给电平那么灯肯定最亮,那你如果改变给灯的时间灯就能调亮度了,如你用定时器或者延时多少个时间引脚电平取反一次。例如每间隔1毫秒电平取反一次就可以改变亮度。那你在用个变量值来给这个时间赋值。就能调亮度了啊,比如你接个电位器电位器值改变你程序你就让定时器时间也相应跟着变动
㈣ 单片机PWM控制LED亮度
【1】任何一款单片机都能输出PWM波,即脉冲宽度调制器。用定时器即可输出占空比变化的方波。
【2】LED亮度调节,首先应当明确LED的伏安特性曲线。还要知道项目中有没有多基色要求、LED灯数量、它们的连接方式。
【3】用PWM控制,应该控制的实际LED驱动电路为恒压驱动方式。
【4】以最简单的单个LED亮度调节为例,一个PNP三极管和基极电阻就搞定了。先根据伏安特性,确定一个最大工作电压和电流点。用对应的电阻串接直流电流表代替LED做实验。产生的方波最小占空比为工作电压(如2.0V)除以电源电压(如5.0V)。控制方波,用示波器、电流表检验调节情况。最后用LED代换。为防止单片机方波失效烧坏LED,后期增加限流电路(如5mA恒流源)保护LED。
㈤ 怎样用单片机io口控制大功率led灯亮灭,用1117芯片
1117芯片是3.3V稳压芯片,采用该芯片说明使用的单片机也是3.3V供电,为控制大功率LED灯,可以采取以下措施:
1、大功率的LED灯一般电压都为12V或24V,所以不能由单片机IO直接控制,需要加三极管驱动。
2、为了避免干扰,单片机与外部LED驱动电路之间,加光电隔离。
3、内部逻辑电路和外部驱动电路电源不共地。
㈥ 怎样用单片机控制大功率led灯珠亮度
要是控制1W或是3W的LED,最好是用CMOS管驱动。CMOS管的栅极接单片机的PWM脉冲输出脚。LED单独供电时,要单片机电源与LED电源共地。如图所示共同进步
㈦ 51单片机接超声波传感器控制LED灯的暗灭主程序
#include "reg51.h"
#include <intrins.h>
#define uchar unsigned char//无符号字符(8位)
#define uint unsigned int //无符号整数(16位)
uint time=0;
uint timer=0;
uint stoptime=0;
uint ringtimes=0;
unsigned long S=0;
bit flag =0;
sbit LED=P3^7;
unsigned char l_disbuff[4]={ 0xff,0,0,0,};//显示缓冲
unsigned char l_posit=1; //位选择
sbit RX = P1^1; //模块引脚
sbit TX = P1^0;
/********************************************************/
/**************1ms延时程序******************/
delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
/********************************************************/
void Conut(void)
{ time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出来是CM
if((S>=40)||flag==1) //超出测量范围显示“-”
{flag=0;
LED=1;
}
else
{
LED=0;
}
}
/********************************************************/
void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围
{
flag=1; //中断溢出标志
}
/********************************************************/
void zd3() interrupt 3 //T1中断用来扫描数码管和计1S启动模块
{
TH1=0xf8;
TL1=0x30;
timer++;
if(timer>=500)
{
timer=0;
TX=1; //1S 启动一次模块
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
}
/*********************************************************/
void main( void )
{
TMOD=0x11; //设T0,T1为方式1
TH0=0;
TL0=0;
TH1=0xf8; //2MS定时
TL1=0x30;
ET0=1; //允许T0中断
ET1=1; //允许T1中断
TR1=1; //开启定时器
EA=1; //开启总中断
while(1)
{
while(!RX); //当RX为零时等待
TR0=1; //开启计数
while(RX); //当RX为1计数并等待
TR0=0; //关闭计数
Conut(); //计算
}
}
用的是常见HC-SR04模块
㈧ 单片机通过按钮控制一个LED小灯的亮灭,请问这个程序怎么写
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led
的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后
就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); //
等待按键放开led1=~led1;}