51單片機實現流水燈
以下是本篇文章正文內容,下面案例可供參考
一、點亮第一個LED燈
#include
#define uint unsigned int //簡化定義
#define uchar unsigned char//同上
sbit D1=P2^1;
void main(){
D1=0;
}
代碼中D1代表著位定義,相當于將LED燈對應管腳的位置起一個名字。單片機初始狀態管腳默認為高電平,即對應值為1。所以如果想要點亮LED燈,只需要讓他的管腳電平為低即可。
二、流水燈
1.總線型控制
設計一個流水燈,如果使用位操作,需要一個個去定義。這無疑是十分繁瑣的。所以這里我們采用總線型操作。
總線型這種總線制方法可以統一控制十位數相同的管腳。
例如如果想要控制P1.0-p1.7的電平情況,具體編程方法是根據所需要的結果,標出每個管腳對應的01值,從前到后排列,然后轉化為十六進制,直接令P1=0x+對應十六進制數。這樣只用一行代碼實現多個管腳控制。
#include
void main()
P1=0x80;//對應十進制數字10000001,對應P1的首個管腳與最后一個管腳高電平。
}
2.延時函數
代碼如下(示例):
void delay(uint i){
while(i--);
}//此函數可以用來控制特定時長的延時,具體時間由單片機晶振頻率決定。
3._ crol _函數使用
_crol_函數功能:將 c 進行b位左位移,并將值以unsigned char類型返回;
#include //_crol_函數在intrins.h函數庫中。
unsigned int temp;
temp=0xfe;
P1=temp;
temp=_crol_(temp,1);//第一個變量用來控制位,第二個用來控制每次移動的位數。
4. 實現流水燈
#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--);
}
最后實現單片機流水燈操作。
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6067文章
44991瀏覽量
650427 -
led燈
+關注
關注
22文章
1596瀏覽量
109735 -
51單片機
+關注
關注
277文章
5711瀏覽量
127374 -
流水燈
+關注
關注
21文章
433瀏覽量
60511
發布評論請先 登錄
相關推薦
熱點推薦
51單片機如何實現流水燈?51單片機實現流水燈的三種方法詳細分析
首先,介紹下原理。下圖為主控芯片和流水燈模塊的原理圖。流水燈模塊接在單片機的P1口,由原理圖可以知道,在P1口給一個低電平即可點亮LED燈。相反,如果要LED燈熄滅,就要把P1口的電平變為高電平即可

使用51單片機實現流水燈的程序和Proteus仿真
本文檔的主要內容詳細介紹的是使用51單片機實現流水燈的程序和Proteus仿真電路圖和工程文件合集免費下載。
發表于 11-04 08:00
?8次下載

評論