學(xué)習(xí)單片機
從點亮第一顆LED燈開始
這一節(jié)學(xué)堂,我們來學(xué)習(xí)如何點亮一LED燈
首先是電路設(shè)計以及點亮這顆LED的方法
我們把LED燈接在P1.0上,使用的是上拉接法,如圖:

現(xiàn)在LED接好了,那么要怎樣點亮LED呢?
觀察我們的電路,這個電路里面LED的負極接在P1.0上,我們給P1.0寫低電平的時候P1.0相當(dāng)于一個負極,電流從LED正極流過,負極流出,LED導(dǎo)通,LED就點亮了
當(dāng)我們給P1.0寫高電平的時候,相當(dāng)于LED兩級都接上了正極,這時候LED不導(dǎo)通,所以LED就不能被點亮
這里可能有朋友會問,為何使用上拉接法,直接把LED的正極接在P1.0上,給P1.0寫高電平LED導(dǎo)通就點亮,不好嗎?
理論上這樣電路設(shè)計和操作更加簡便,但是由于C51的IO能提供的高電平電流很弱,如果把LED直接接在IO上,IO寫高電平時提供的電流不足以點亮LED燈或者點亮的LED燈亮度很低
因此我們使用上拉接法,這樣流過LED的電流就會更大,LED也就更亮
知道點亮LED就是給P1.0寫高電平,那么要怎樣才能操作P1.0呢?
這里我們就要操作C51的IO咯
在C51中,一共有四組IO:P0 P1 P2 P3

每一組IO有八只IO,一組IO在單片機內(nèi)對應(yīng)一個8位的寄存器,修改這個寄存器的值(0/1)單片機就能輸出0/1了
在reg52.h里面,已經(jīng)對這幾組IO的寄存器地址進行了定義,我們要用的時候,可以直接使用關(guān)鍵字:P0,P1,P2,P3
我們可以對整組IO進行修改,只需要給他賦上一個八位十六進制數(shù)值即可
P1 = 0xFF;
也可以用sbit對一組IO中的一個IO定義一個名字,直接改變這個IO的0/1
比如說我們的LED接在P1.0,那么我給P1.0的IO定義一個叫LED的關(guān)鍵字
sbit LED = P1^0;
注意這里的格式
sbit 名稱 = IO組^IO標號;
P1.0對應(yīng)的IO組是P1,P1上的.0,所以我們寫作“P1^0”
一切準備就緒,上代碼
下面是整個程序的代碼
#include< reg52.h >
sbit LED = P1^0;
void mian()
{
LED = 1;//復(fù)位LED狀態(tài),保證剛開始時候LED熄滅
LED = 0;//拉低LED的負極引腳,點亮我們的LED
while(1){}//執(zhí)行到這里,結(jié)束
}
上傳程序,你會發(fā)現(xiàn),LED點亮了??!
我們也可以對整個P1IO組進行操作,
熄滅LED燈的時候,我們給P1所有的IO都寫上1,對應(yīng)0xFF
| P1.7 | P1.6 | P1.5 | P1.4 | P1.3 | P1.2 | P1.1 | P1.0 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
熄滅LED燈的時候,我們給P1.0單獨寫上0,對應(yīng)0xFE
| P1.7 | P1.6 | P1.5 | P1.4 | P1.3 | P1.2 | P1.1 | P1.0 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
#include< reg52.h >
void mian()
{
P1 = 0xFF;//復(fù)位LED狀態(tài),保證剛開始時候LED熄滅
P1 = 0xFE;//拉低LED的負極引腳,點亮我們的LED
while(1){}
}
-
單片機
+關(guān)注
關(guān)注
6072文章
45274瀏覽量
661606 -
led燈
+關(guān)注
關(guān)注
22文章
1603瀏覽量
110866 -
寄存器
+關(guān)注
關(guān)注
31文章
5517瀏覽量
128498 -
電路設(shè)計
+關(guān)注
關(guān)注
6729文章
2565瀏覽量
217420
發(fā)布評論請先 登錄

單片機如何點亮LED燈
評論