學習單片機
從點亮第一顆LED燈開始
這一節學堂,我們來學習如何點亮一LED燈
首先是電路設計以及點亮這顆LED的方法
我們把LED燈接在P1.0上,使用的是上拉接法,如圖:
現在LED接好了,那么要怎樣點亮LED呢?
觀察我們的電路,這個電路里面LED的負極接在P1.0上,我們給P1.0寫低電平的時候P1.0相當于一個負極,電流從LED正極流過,負極流出,LED導通,LED就點亮了
當我們給P1.0寫高電平的時候,相當于LED兩級都接上了正極,這時候LED不導通,所以LED就不能被點亮
這里可能有朋友會問,為何使用上拉接法,直接把LED的正極接在P1.0上,給P1.0寫高電平LED導通就點亮,不好嗎?
理論上這樣電路設計和操作更加簡便,但是由于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在單片機內對應一個8位的寄存器,修改這個寄存器的值(0/1)單片機就能輸出0/1了
在reg52.h里面,已經對這幾組IO的寄存器地址進行了定義,我們要用的時候,可以直接使用關鍵字:P0,P1,P2,P3
我們可以對整組IO進行修改,只需要給他賦上一個八位十六進制數值即可
P1 = 0xFF;
也可以用sbit對一組IO中的一個IO定義一個名字,直接改變這個IO的0/1
比如說我們的LED接在P1.0,那么我給P1.0的IO定義一個叫LED的關鍵字
sbit LED = P1^0;
注意這里的格式
sbit 名稱 = IO組^IO標號;
P1.0對應的IO組是P1,P1上的.0,所以我們寫作“P1^0”
一切準備就緒,上代碼
下面是整個程序的代碼
#include< reg52.h >
sbit LED = P1^0;
void mian()
{
LED = 1;//復位LED狀態,保證剛開始時候LED熄滅
LED = 0;//拉低LED的負極引腳,點亮我們的LED
while(1){}//執行到這里,結束
}
上傳程序,你會發現,LED點亮了!!
我們也可以對整個P1IO組進行操作,
熄滅LED燈的時候,我們給P1所有的IO都寫上1,對應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,對應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;//復位LED狀態,保證剛開始時候LED熄滅
P1 = 0xFE;//拉低LED的負極引腳,點亮我們的LED
while(1){}
}
-
單片機
+關注
關注
6032文章
44514瀏覽量
632979 -
led燈
+關注
關注
22文章
1592瀏覽量
107836 -
寄存器
+關注
關注
31文章
5317瀏覽量
120004 -
電路設計
+關注
關注
6665文章
2427瀏覽量
203305
發布評論請先 登錄
相關推薦
評論