51單片機實現(xiàn)流水燈
以下是本篇文章正文內(nèi)容,下面案例可供參考
一、點亮第一個LED燈
#include
#define uint unsigned int //簡化定義
#define uchar unsigned char//同上
sbit D1=P2^1;
void main(){
D1=0;
}
代碼中D1代表著位定義,相當(dāng)于將LED燈對應(yīng)管腳的位置起一個名字。單片機初始狀態(tài)管腳默認(rèn)為高電平,即對應(yīng)值為1。所以如果想要點亮LED燈,只需要讓他的管腳電平為低即可。
二、流水燈
1.總線型控制
設(shè)計一個流水燈,如果使用位操作,需要一個個去定義。這無疑是十分繁瑣的。所以這里我們采用總線型操作。
總線型這種總線制方法可以統(tǒng)一控制十位數(shù)相同的管腳。
例如如果想要控制P1.0-p1.7的電平情況,具體編程方法是根據(jù)所需要的結(jié)果,標(biāo)出每個管腳對應(yīng)的01值,從前到后排列,然后轉(zhuǎn)化為十六進制,直接令P1=0x+對應(yīng)十六進制數(shù)。這樣只用一行代碼實現(xiàn)多個管腳控制。
#include
void main()
P1=0x80;//對應(yīng)十進制數(shù)字10000001,對應(yīng)P1的首個管腳與最后一個管腳高電平。
}
2.延時函數(shù)
代碼如下(示例):
void delay(uint i){
while(i--);
}//此函數(shù)可以用來控制特定時長的延時,具體時間由單片機晶振頻率決定。
3._ crol _函數(shù)使用
_crol_函數(shù)功能:將 c 進行b位左位移,并將值以unsigned char類型返回;
#include //_crol_函數(shù)在intrins.h函數(shù)庫中。
unsigned int temp;
temp=0xfe;
P1=temp;
temp=_crol_(temp,1);//第一個變量用來控制位,第二個用來控制每次移動的位數(shù)。
4. 實現(xiàn)流水燈
#include
#include
#define uint unsigned int
#define uchar unsigned char
void delay(uint i);
void main(){
uint temp=0xfe;
while(1){
P2=temp;
temp=_crol_(temp,1);
delay(10000);
}
}
void delay(uint i){
while(i--);
}
最后實現(xiàn)單片機流水燈操作。
審核編輯:湯梓紅
-
單片機
+關(guān)注
關(guān)注
6061文章
44896瀏覽量
646378 -
led燈
+關(guān)注
關(guān)注
22文章
1593瀏覽量
109313 -
51單片機
+關(guān)注
關(guān)注
277文章
5708瀏覽量
126407 -
流水燈
+關(guān)注
關(guān)注
21文章
433瀏覽量
60286
發(fā)布評論請先 登錄
51單片機如何實現(xiàn)流水燈?51單片機實現(xiàn)流水燈的三種方法詳細分析

使用51單片機實現(xiàn)流水燈的程序和電路圖免費下載

使用51單片機實現(xiàn)流水燈C語言的程序?qū)嵗赓M下載

使用51單片機實現(xiàn)流水燈總線操作的C51程序免費下載

使用51單片機實現(xiàn)流水燈左移后右移動的程序免費下載

使用51單片機實現(xiàn)流水燈的C語言程序免費下載

使用51單片機實現(xiàn)流水燈的程序和Proteus仿真

51單片機實現(xiàn)流水燈

評論