Ⅰ 單片機控制led燈亮度原理
單片機控制LED亮度原理:控制單片機輸出pwm信號的占空比,占空比越大,燈越亮。反之,越暗。
Ⅱ 怎樣用單片機io口控制大功率led燈亮滅,用1117晶元
1117晶元是3.3V穩壓晶元,採用該晶元說明使用的單片機也是3.3V供電,為控制大功率LED燈,可以採取以下措施:
1、大功率的LED燈一般電壓都為12V或24V,所以不能由單片機IO直接控制,需要加三極體驅動。
2、為了避免干擾,單片機與外部LED驅動電路之間,加光電隔離。
3、內部邏輯電路和外部驅動電路電源不共地。
Ⅲ 單片機驅動大功率LED的問題
單片機 PWM 信號輸出 控制 大功率LED 燈的 亮度,
一般 1W 的 LED 燈 電流 大約在 300 mA 左右,三極體 功率 要大一些,
或者可以 用 MOSFET 管。
Ⅳ 求教如何用單片機控制LED燈的亮度
控制ked亮度不難,你硬體直接連連接好led燈,串個限流電阻。如果引腳一直給電平那麼燈肯定最亮,那你如果改變給燈的時間燈就能調亮度了,如你用定時器或者延時多少個時間引腳電平取反一次。例如每間隔1毫秒電平取反一次就可以改變亮度。那你在用個變數值來給這個時間賦值。就能調亮度了啊,比如你接個電位器電位器值改變你程序你就讓定時器時間也相應跟著變動
程序名稱:一隻按鍵控制兩只LED燈十種亮度顯示
編程人:xx
備註:此程序簡單
#include<stc12c2052ad.h>
*** it d1=P1^7;、、 定義LED燈1
*** it d2=P1^6; 定義LED燈2
*** it key1=P3^0; 定義按鍵燈
void delay(unsigned int a){ 延時程序
unsigned int i;
while( a-- != 0){
for(i = 0; i < 100; i++);
}
}
void main(){
while(1){
unsigned int a,b,c,d;
if(key1==0)d++; 按鍵判斷
switch(d) 按鍵信息比較
{
case 1: b=9;;a=1;break;
case 2: b=8;;a=2;break;
case 3: b=7;;a=3;break;
case 4: b=6;;a=4;break;
case 5: b=5;;a=5;break;
case 6: b=4;;a=6;break;
case 7: b=3;;a=7;break;
case 8: b=2;;a=8;break;
case 9: b=1;;a=9;break;
}
while(key1==0); 判判斷按鍵是否松開
if(d==10)d=0; 按鍵9種亮度判斷,是否是第9種,如果是,則d=0
for(c=0;c<2;c++){ 亮度模式循環顯示
d1=0;
d2=1;
delay(a);
d1=1;
d2=0;
delay(b);
}
}
}
、2010.10.05 20;06修改
此程序是我寫的簡單程序,已做過實驗,並且通過!
用pic的脈寬調制功能就可以了,只需要給單片機不同的占空比的值,單片機就可以產生不同占空比的信號,將這個信號用三極體放大驅動LED就行了。還有什麼問題可以給我留言
第一,要理解中斷在這里的作用是固定的「一小段」時間進入一次。 第二,PWM_ON在程序中的作用很大,它會由0------>CYCLE------>0並且一直循環下去。可以把它看成一個有規律的變化的量。 第三,每進入中斷一次count++,滿足條件count==PWM_ON或coun..
接好單片機的硬體電路,然後編寫程序,再然後燒寫程序,然後就可以程序了,沒問題的話就可以按你的要求點亮了
# include<reg51.h>
void delay(unsigned int j)
{
unsigned int i;
for (;j>0;j--)
{
for(i=0;i<1000;i++)
;
}
}
void main()
{
while(1)
{
P1^0=0;
delay(100);
P1^0=1;
delay(100);具體數值根據你單片機晶振頻率而定
}
}
原理是PWM波占空比不同,其功率亦不同,只要PWM頻率很大,人眼分辨不出其閃爍,就可通過控制占空比(高電平時間和周期之比)的大小來控制其亮度。
才用PWM調制
LED燈不好控制亮度,在電流變化較大的范圍中,亮度變化不明顯
如果是電燈泡還可以的
控制LED燈的亮度 這個其實有難度的, 先練習聲音控制開關燈,成功後再考慮控制亮度
LED亮度是通過的電流決定的,控制亮度其實就是控制電流.這一點至今沒辦法做到便宜又簡單.
當然,也有種簡易的辦法是PWM控制亮關比,優點是容易,缺點是閃爍.
還有就是目前燈亮度有幾種控制方式,連續變化的貴,高中低分檔位的便宜些.
void main()
{
unsigned int temp,i;
temp=1;
while(1)
{
P1=temp&0x00ff; 取temp低8位
P2=(temp&0xff00)>>8; 取temp高8位
for(i=0;i<65535;i++)
{} 延時
if(temp!=0x8000)
temp<<=1; temp左移一位
else temp=1;
}
}
如果不需要控制轉速,一個三極體一個繼電器就可以控制馬達了。
Ⅳ 單片機利用pwm對大功率led燈調光是出現閃爍是什麼原因
1、軟體問題,用示波器看看頻率是否足夠高。
2、硬體問題,用示波器看看是否LED功率太大引起的電源電壓波動導致的MCU工作不穩定。