A. PWM輸出控制LED的亮暗程度原理
pwm控制led燈亮度原理:
旋轉電阻就是可調電阻,單片機不能直接得到電阻量。所以得將電阻的變化轉換為模擬信號或數字信號,可搭建一個簡單的分壓電路。單片機轉換成數字量,通過程序判斷後,調節PWM參數,進使LED亮度變化。
PWM是一種對模擬信號進行數字編碼的方法。通過高解析度計數器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。
PWM信號仍然是數字的,因為在給定的任何時刻,滿幅值的直流供電要麼完全有(ON),要麼完全無(OFF)。
電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。
而應用到led燈具的控制上就要根據led在電壓與電流變化時的具體情況,進行控制了。
其中的「寬度」,就是脈沖的高電平的時間。PWM信號調節LED亮度時,信號頻率是不變的,改變的是脈沖的高電平的時間,即LED的導通時間。這種信號調節亮度相當於調節LED的平均電流,所以電流會變化。
(1)單片機控制led燈陣原理擴展閱讀:
把每一脈沖寬度均相等的脈沖列作為PWM波形,通過改變脈沖列的周期可以調頻,改變脈沖的寬度或占空比可以調壓,採用適當控制方法即可使電壓與頻率協調變化。
可以通過調整PWM的周期、PWM的占空比而達到控制充電電流的目的。
模擬信號的值可以連續變化,其時間和幅度的解析度都沒有限制。9V電池就是一種模擬器件,因為它的輸出電壓並不精確地等於9V,而是隨時間發生變化,並可取任何實數值。
與此類似,從電池吸收的電流也不限定在一組可能的取值范圍之內。模擬信號與數字信號的區別在於後者的取值通常只能屬於預先確定的可能取值集合之內,例如在{0V,5V}這一集合中取值。
B. 89C52單片機控制LED燈顯示的原理是什麼
89C52一般有四組共32個IO口,每一個IO口均可以程序控制其輸出電平為高(1)或低(0),在LED的正極接VCC,負極接89C52的IO口,通過控制IO口的輸出為低電平(0V),則VCC經LED與89C52的IO形成電流迴路,LED點亮。
C. 要求用51單片機控制8個LED亮滅的原理圖+程序+解說
本來以為這個程序很簡單的,沒想到寫了快三個小時。哎學藝不精啊。貼出來給你研究吧。我不想做過多的解釋了,我是按我理解的你出的題目做的,可能和你的本意不是很一樣,
1、依次亮,依次滅:從一個燈亮到全亮,再到全滅,每次改變一個燈亮滅
2、奇偶號燈間隔亮滅:隔一個燈亮一個燈亮燈時間為1s,沒有燈全滅的時候
3、依次閃爍、切換時間為3秒,閃爍時間為2秒,我理解的是,沒三秒鍾有一個燈在閃爍,其中有一秒鍾是滅燈狀態
程序中使用了P1口與8個發光二極體相連,具體電路圖你網路一下吧,還有使用了一個按鍵,該按鍵與P3.7相連,低電平為按下狀態。
程序如下:
#include <reg52.h>
#include <intrins.h>
/*變數聲明:
i、j、k都是記錄計時器溢出次數的變數,
stat是記錄當前顯示狀態的變數,由按鍵key控制
temp是狀態2中保護P1口狀態的變數*/
unsigned char i=0,j=0,k=0,stat=0,temp;
bit flag=1; //狀態1處於滅燈還是亮燈狀態的變數,1為依次亮燈,0為依次亮燈
sbit key=P3^7; //按鍵控制
void init(); //初始化函數
void delay(unsigned int N); //延時函數
void keyscan(); //鍵盤掃描函數
void main()
{
init();
while (1)
{
switch (stat)
{
case 0: //0方案
if(i==20&&flag)
{
i=0;
P1=P1<<1; //依次亮燈
temp=P1;
if(temp==0)
{
flag=0;
}
}
if(i==20&&!flag)
{
i=0;
if(P1==0xff)
{
flag=1;
P1=0xfe;
}
if(!flag)
{
P1=P1<<1; //依次滅燈
temp=P1;
P1=temp+1;
}
}
break;
case 1: //2方案
if(i==20)
{
i=0;
P1=~P1; //去反後亮燈狀態為滅燈,P1初值取0x55或0xaa,奇偶交替亮燈
}
break;
case 2: //3方案
if(j==60)
{
P1=temp;
P1=_crol_(P1,1);
temp=P1; //保護P1口亮燈狀態
k=0;
j=0;
}
//閃爍部分,應該可以優化
if(k<5)
{
P1=0xff;
}
else if(k>=5&&k<10)
{
P1=temp;
}
else if(k>=10&&k<15)
{
P1=0xff;
}
else if(k>=15&&k<20)
{
P1=temp;
}
else if(k>=20&&k<25)
{
P1=0xff;
}
else if(k>=30&&k<35)
{
P1=temp;
}
else if(k>=35&&k<40)
{
P1=0xff;
}
//-----------------------------------
break;
}
keyscan();
}
}
void init()
{
TH0=0x3c; //定時器賦初值定時時間50ms
TL0=0xB0;
TMOD=0x01; //設置定時器工作方式為方式1
EA=1; //開總中斷
ET0=1; //開中斷允許位
TR0=1; //定時器計數
P1=0xfe; //這里假設led燈與P1口相連並且
//低電平有效
}
void delay(unsigned int N)
{
int i,j;
for (i=0;i<N;i++);
for (j=0;j<110;j++);
}
void keyscan()
{
if(!key)
{
delay(10); //消抖
if(!key); //確認有鍵按下
stat++;
if(stat==3)
{
stat=0;
}
//右鍵按下復位
i=0;
j=0;
k=0;
TH0=0x3c;
TL0=0xB0;
switch (stat)
{
case 0:
P1=0xfe;
flag=1;
stat=0;
break;
case 1:
P1=0x55;
break;
case 2:
P1=0xfe;
temp=P1;
break;
}
//-----------------------------------
while(!key) //此循環中的函數和主函數中的顯示函數是同一個
//用於長按鍵的顯示,可以去掉,去掉長按鍵不會正常顯示,松開按鍵後正常
{
switch (stat)
{
case 0:
if(i==20&&flag)
{
i=0;
P1=P1<<1;
temp=P1;
if(temp==0)
{
flag=0;
}
}
if(i==20&&!flag)
{
i=0;
if(P1==0xff)
{
flag=1;
P1=0xfe;
}
if(!flag)
{
P1=P1<<1;
temp=P1;
P1=temp+1;
}
}
break;
case 1:
if(i==20)
{
i=0;
P1=~P1;
}
break;
case 2:
if(j==60)
{
P1=temp;
P1=_crol_(P1,1);
temp=P1;
k=0;
j=0;
}
if(k<5)
{
P1=0xff;
}
else if(k>=5&&k<10)
{
P1=temp;
}
else if(k>=10&&k<15)
{
P1=0xff;
}
else if(k>=15&&k<20)
{
P1=temp;
}
else if(k>=20&&k<25)
{
P1=0xff;
}
else if(k>=30&&k<35)
{
P1=temp;
}
else if(k>=35&&k<40)
{
P1=0xff;
}
break;
}
}
}
}
void timer0() interrupt 1
{
TH0=0x3c;
TL0=0xB0; //溢出後重新賦初值
//定時器中斷時間為50ms
i++; //20次中斷時間為1s
j++; //40次中斷時間為2s
k++; //60次中斷時間為3s
}
有什麼不懂的可以網路Hi我
D. 單片機led燈亮的原理
給 LED 合適的電壓,它就發光了。
發光原理,不懂的。
E. 51單片機流水燈原理
單片機流水燈控制原理就是將多個LED燈珠連接到不同的單片機輸出端上,編程使單片機的這些輸出端逐個的輸出信號點亮LED,在設置好各個LED的通電時間和通電間隔時間後,就可以看到這些LED燈珠此起彼伏的亮起,如同流水一樣.
F. 單片機呼吸燈的原理還是不太明白,誰能用通俗的語言給我講一下
呼吸燈就是燈的亮度按照一定的規律逐漸從滅到亮再到滅。
單片機可以控制LED燈的亮度,簡單的一般是用PWM控制。
單片機控制LED燈的亮度按照一定的規律進行變化,從滅到亮再到滅,這就是呼吸燈。
G. 單片機led工作原理
單片機通過輸出高電平和低電平的控制來達到讓LED發光或者熄滅,其原理是單片機內部有CPU存儲器和進行一系列的運算!
H. 用51單片機,怎麼來控制1000個左右的LED燈呢
方法1:1000個左右的燈,需要10根地址線選通,51的IO管腳應該是沒有問題。剩下的就是要用大量的解碼器,把二進制信息轉換為管腳信息。
估計你僅僅是控制亮和滅,如果是這樣選通也就可以進行明暗的控制,否則輸出的信息也要加進去,就是說需要加驅動電路。
方法2:用移位電路,比如HC595,在51中地址做為串列信號發出,轉換為對應的地址線,然後在連接解碼器,這樣,51的管腳比較節省,但,編程的難度稍大。
你可以參考一下鍵盤解碼器的電路,控制16個和控制1000個的原理是一樣的。
I. 單片機一個按鍵控制一個led的原理是什麼
LED(Light Emitting Diode),發光二極體,是一種固態的半導體器件,它可以直接把電轉化為光。LED的心臟是一個半導體的晶片,
LED燈(6張)晶片的一端附在一個支架上,一端是負極,另一端連接電源的正極,使整個晶片被環氧樹脂封裝起來。半導體晶片由兩部分組成,一部分是P型半導體,在它裡面空穴佔主導地位,另一端是N型半導體,在這邊主要是電子。但這兩種半導體連接起來的時候,它們之間就形成一個P-N結。當電流通過導線作用於這個晶片的時候,電子就會被推向P區,在P區里電子跟空穴復合,然後就會以光子的形式發出能量,這就是LED發光的原理
J. 單片機如何控制矩陣型LED燈的亮滅。
這個你要看原理圖。流水燈的控制是通過單片機p口接上595晶元來驅動,軟體實現移位實現流水燈現象
具體的步驟:
1:畫出你的原理圖,最小系統,外加led,595晶元
2:些軟體程序,通過keil編譯並下載到你的單片機
3:觀測效果
具體的程序根據你的原理圖
可以參考《吳鑒鷹單片機項目實戰精講》裡面關於搖搖棒的設計