㈠ 單片機控制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;}