首先我們規(guī)劃好硬件電路部分,在這里使用三個(gè)流水燈做簡單講解吧。單片機(jī)使用簡單基礎(chǔ)的51單片機(jī)。利用單片機(jī)P3.0~P3.2 三個(gè)I0口,假如外部電源給LED供電,IO口就輸出低電平時(shí)(0),LED燈就會亮,IO口輸出高電平,LED就會滅。假如是單片機(jī)IO口給led供電(如果使用P0口需要使用上拉電阻),IO口就輸出低電平時(shí)(0),LED燈就會滅,IO口輸出高電平,LED就會亮。
限流電阻阻值計(jì)算:
LED的工作電壓:紅黃為2V,綠藍(lán)白為3.2~3.6V,電流都是18-20ma。下圖是是單片機(jī)IO驅(qū)動的情況,P0口需要使用上拉電阻。假設(shè)LED額定電流是18mA。額定電源是3.2v那么限流電阻R2=(5V-3.2V)/18mA=100Ω。(圖就是個(gè)大概,晶振回路和復(fù)位電路都沒畫)
實(shí)例解析:外部電源供電,電路連接簡略圖如下
程序設(shè)計(jì)思想:開始讓P0保持高電平,三燈都是滅的。然后P0.0輸出低電平,LED1亮,延時(shí)一段時(shí)間后,讓P0.0輸出高電平,P0.1輸出低電平,LED1滅,LED2亮,再延時(shí)一段時(shí)間,讓P0.1輸出高電平,P0.2輸出低電平,此時(shí)LED2滅,LED3亮,延時(shí)后讓亮滅過程循環(huán)就可實(shí)現(xiàn)流水燈效果。
流水燈仿真實(shí)驗(yàn):4個(gè)LED
程序編寫后需要用KECIL C51軟件生成HEX文件,用proteus可以仿真結(jié)果
程序:
#include //頭文件
#include//頭文件
#define uchar unsigned char
uchar j,temp;
void delay(unsigned int ms) //延時(shí)函數(shù)
{
uchar t;
while(ms--)
for(t=0;t<123;t++);
}
void main() //主函數(shù)
{
P1=0xff; //P1=11111111,對應(yīng)串口燈全滅
delay(500);
temp=0xfe; // 0x11111110
for(j=0;j<4;j++) //此循環(huán)執(zhí)行四次跳出
{
P1=temp; // P1=11111110, P1.0連接的LED燈亮
delay(500); // 延時(shí)
temp=_crol_(temp,1); //左移函數(shù),依次是11111101,11111011,11110111
}
P1=0xff; 跳出循環(huán),P1串口全部是高電平,LED都滅
while(1);
}
審核編輯:湯梓紅
-
led
+關(guān)注
關(guān)注
240文章
23062瀏覽量
657050 -
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44489瀏覽量
631973 -
流水燈
+關(guān)注
關(guān)注
21文章
432瀏覽量
59598
發(fā)布評論請先 登錄
相關(guān)推薦
評論