Ⅰ 單片機控制led燈的創新點是什麼
單片機控制led燈的創新點是,LED的陽極全部接到了正極(電源),當負極接到LED的陰極時就會發光,因為LED的陰極與單片機的P2口相接,如果你想點亮那一個LED就把單片機相應的引腳賦值為低電平。具體如下:1、LED基礎知識
LED是發光二極體的一種,它具有單向導電的特點,在51開發板上使用的是貼片式發光二極體,正向導電電壓在1.8-2.2v之間,工作時的電流在1-20mA。當電流在1-5mA之間變化時,肉眼可以觀測到亮度的變化,但是當電流在5-20mA之間變化時,亮度變化不太明顯。如果電流一直增大二極體可能會燒壞。其餘LED知識就不再進行敘述,其中LED原理圖如下圖所示。
LED原理圖
2、點亮第一個LED燈
由原理圖可知,LED的陽極全部接到了正極(電源),當負極接到LED的陰極時才會發光,因為LED的陰極與單片機的P2口相接,如果你想點亮那一個LED就把單片機相應的引腳賦值為低電平,具體程序如下:
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
sbit led=P2^0; //將單片機的P2.0埠定義為led
void main()
{
while(1)
{
led=0;//P2.0埠設置為低電平
}
}
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
3、LED閃爍
如果想讓LED進行閃爍就要涉及到延時,針對單片機進行延時的方法有很多,在此向大家推薦一種比較簡單的程序助手—單片機小精靈,可以直接進行設置時間,並且生成相應的代碼。
將P2^0引腳的LED進行間隔一秒閃爍的程序如下:
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
#include "intrins.h" //頭文件
sbit led=P2^0; //將單片機的P2.0埠定義為led
void delay1s() //延時1s,誤差 0us
{
unsigned char a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
void main()//主程序
{
while(1)
{
led=0;//P2.0埠設置為低電平
delay1s();//調用延時函數
led=1;//P2.0埠設置為低電平
delay1s();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
為了使程序更好的進行表達,使用16進制進行表述,程序如下:
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
#include "intrins.h" //頭文件
void delay1s() //延時1s,誤差 0us
{
unsigned char a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
void main()//主程序
{
while(1)
{
P2=0xFE;//P2.0埠設置為低電平
delay1s();//調用延時函數
P2=0xFF;//P2.0埠設置為低電平
delay1s();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
上面是針對一個LED燈進行的設計,下面針對8個LED燈依次閃爍進行設計,具體程序如下:
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
#include "intrins.h" //頭文件
void delay1s() //延時1s,誤差 0us
{
unsigned char a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
void main()//主程序
{
while(1)
{
P2=0xFE;//1111 1110
delay1s();//調用延時函數
P2=0xFD;//1111 1101
delay1s();
P2=0xFB;//1111 1011
delay1s();
P2=0xF7;//1111 0111
delay1s();
P2=0xEF;//1110 1111
delay1s();
P2=0xDF;//1101 1111
delay1s();
P2=0xBF;//1011 1111
delay1s();
P2=0x7F;//0111 1111
delay1s();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
4、LED左右移動
上面進行描述的是利用延時並對P2口引腳進行賦值設計LED燈的閃爍,這樣程序較為繁雜,下面將利用「左移」和「右移」進行設計,crol(a,b),左循環,a是左移的值,b是左移的位數;cror(a,b),右循環,a是右移的值,b是右移的位數。包含在instrins.h庫函數中。具體程序如下:
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
#include "intrins.h" //頭文件,包含延時(_nop_ )和函數循環
typedef unsigned int u16;//聲明新類型名
typedef unsigned char u8;//聲明新類型名
#define led P2//宏定義
void delay1s() //延時1s,誤差 0us
{
u8 a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
void main()//主程序
{
u8 i;//定義i的類型
led=0xFE;
delay1s() ;
while(1)
{
for(i=0;i<7;i++)//左移
{
led=_crol_(led,1);
delay1s() ;
}
for(i=0;i<7;i++)//右移
{
led=_cror_(led,1);
delay1s() ;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
5、總結
以上程序均進行了實驗驗證,完全正確。針對LED燈的控制,可以和按鍵進行聯合設計,實現更多的功能,後面會進行更新。對於沒有單片機開發板的小夥伴可以利用proteus模擬軟體進行設計。
Ⅱ 單片機驅動多個LED
如圖電路圖,二極體只畫出5個。
1、8050三極體不比達林頓管和mos管放大倍數較小,最小的可能只有40倍,以40倍計算,假設你的每個燈的電流為5mA(看你的應用了,如果用來照明不只5mA),12個燈就60mA,那麼你基級需要提供的電流就是1.25mA,因為89C54系列單片機IO不帶強推輸出,電流有限,所以必須接上拉電阻,否則你的燈因為電流不足亮度很暗。
2、led必須加限流電阻,考慮到led的離散性,在電流一樣的情況下,即便同種led兩端的電壓可能會有差異。而led這種元件在電壓變化很小的情況下,電流變化很大。如果你直接並聯,各個二極體兩端的電壓一樣,很有可能某些led電流會比其它的led大,甚至某個led因電流過大而燒毀。
3、電路圖中R1,根據你的電流選擇,但是不要太小,R7可以用跳線直接連過去。
Ⅲ 利用單片機外接的三個按鍵分別模擬開關,調亮,調暗輸入,控制2個發光二極體(指示燈和LED燈)
可以實現
這個有個高大上的名字:呼吸燈
可以自動慢慢亮然後慢慢滅,也可以增加按鍵控制亮滅的程度
原理是用PWM實現不同電壓的輸出來實現燈的變亮和變暗,下面是網上截的圖,比較容易理解,具體程序的話,就自己動手吧
Ⅳ 單片機P1.0控制點亮一個發光二極體的電路怎麼接
電路如圖接即可(去掉右邊的按鍵和左邊的電容):
一般單片機對LED燈的接法都是如此,因為單片機IO口的電流輸出能力很弱,一般不使用單片機輸出高電平驅動LED燈,一般使用灌電流的方法驅動,即,單片機輸出低電平,吸收電流的方法。
Ⅳ 單片機LED數碼管電路中管腳和所控制的發光二極體的一一對應關系,如圖
單片機LED數碼管電路中,管腳和所控制的發光二極體的一一對應關系主要取決於數碼管的類型以及字模的定義。
1. 共陰極數碼管: 對應關系:在共陰極數碼管中,所有欄位的陰極連在一起作為公共端,而每個欄位的陽極分別引出。當公共端接地,而某個欄位的陽極接高電平時,該欄位的發光二極體就會點亮。 管腳控制:每個欄位對應一個管腳,通過控制這些管腳的高低電平,可以控制相應欄位的點亮與熄滅。
2. 共陽極數碼管: 對應關系:與共陰極相反,共陽極數碼管中所有欄位的陽極連在一起作為公共端,而每個欄位的陰極分別引出。當公共端接高電平,而某個欄位的陰極接低電平時,該欄位的發光二極體就會點亮。 管腳控制:同樣,每個欄位對應一個管腳,但控制邏輯與共陰極相反。通過控制這些管腳的高低電平,同樣可以控制相應欄位的點亮與熄滅。
3. 字模的定義: 概念:字模是指要顯示的字元的數字化描述。例如,要顯示數字0,就需要根據數碼管的封裝和欄位定義,確定哪些欄位需要點亮。 應用:在程序中預先定義好各個字元的字模,顯示時直接引用即可。更換了不同定義的元器件,只需更換相應的字模即可。
總結:單片機LED數碼管電路中,管腳和所控制的發光二極體的一一對應關系取決於數碼管的類型以及字模的定義。通過控制管腳的高低電平,可以實現數碼管的字元顯示。
Ⅵ 姝ょ數璺涓哄崟鐗囨満灝忕郴緇熺殑涓閮ㄥ垎錛岃繖涓鐢佃礬鏄濡備綍瀹屾垚鏁扮爜綆$殑鏄劇ず鐨勶紵鍘熺悊鏄浠涔堬紵
榪欐槸鍗曠墖鏈烘暟鐮佺℃樉紺虹嚎璺鍥撅紒
1錛氳繖鏄涓涓4浣嶇殑鏁扮爜綆°傦紙鏈夊叡闃存瀬鍜屽叡闃蟲瀬浜岀嶏級
4錛74573鑺鐗囩殑鍔熻兘灝變笉澶氳翠簡錛屽幓緗戜笂鎼滅儲鑺鐗囪祫鏂欏惂銆