很多人在點亮乙個led燈以後,覺得點亮流水燈其實沒什麼意思。不過我覺得對於從點亮乙個led等,到玩順流水燈,其實我們還是可以提高不少的。
比如:1.微控制器軟體延時的計算
2.c語句的語法學習
3.加深對io口的操作,以及位操作
那麼下面我們就開始,流水燈的操作吧—對8個發光二極體迴圈亮滅。
主要我這裡是講微控制器和語句的解釋,是軟體的學習。
#inlcude//引用我們使用的51微控制器的標頭檔案,暫存器的資源
/*剛開始學的小夥伴會自動的延用點亮乙個led燈的語言習慣,會去把8個led燈都定義出來。然後再去程式中乙個置為0或1,這樣去實現亮滅。這樣的操作其實雖然可以實現,但是對於我們語言的學習進步不大,因此我們需要用快捷的方式來操作。以下的定義f方法不推薦,當然了實際中如果真不會,那麼還是以實現功能為主。
sbit led1 = p2^0;
sbit led2 = p2^1;
sbit led3 = p2^2;
sbit led4 = p2^3;
sbit led5 = p2^4;
sbit led6 = p2^5;
sbit led7 = p2^6;
sbit led8 = p2^7;
unsigned int i; //定義乙個無符號整型變數,用於軟體延時
void main()
while(1)
/*51微控制器埠初始引腳是高電平,預設p1 = 0xff(二進位制就是11111111) << 是向左移一位,空出來的補0
例如 11111111 << 1 運算的結果就是 11111110(最高位被移出去了,最低位補0) 然後依次這樣迴圈 */
p1 = p1 << 1;
i = 60000;
/* i一直減減,60000減到0的時候跳出while,又返回到 p1 = p1 << 1語句執行。
cpu完成乙個基本操作所需要的時間稱為機器週期,乙個機器週期是12個時鐘週期 ,12×(1/11.0592mhz) 約等於 1us ,執行60000次,總時間為60ms 宣告軟體延時本身精確度不高(用於延時要求不高的場合)*/
while(i--);
微控制器 流水燈
基礎知識 1.c語言預處理命令 define a p0 注意後邊不用加分號 在 中使用p0口時,可以直接用a代替,防止修改埠時大面積修改 2.迴圈左移和右移函式 crol a,b 迴圈左移函式,a是左移的值,b是左移的位數。包含在intrins.h庫函式裡面。cror a,b 迴圈右移函式,原理同上...
微控制器流水燈
上篇給大家分享了單個led的點亮與閃爍,這次給大家分享一下怎樣用微控制器控制led實現流水燈效果。所需元器件如下 stc89c52rc晶元 1 10k電阻 1 330 電阻 8 10uf 電解電容 1 22pf 瓷片電容 2 12mhz晶振 1 按鍵 1 led燈 8 電路圖如下 如下 led流水燈...
微控制器流水燈
微控制器c51流水燈實驗 1 基本的流水燈 設定延時函式使led燈依次有間隔的亮起 軟體延時採用程式delay j 可調整延時時間。2 簡單鍵控的流水燈。實現思路 由於是按下鍵不鬆手,鍵值一直保留,所以判斷if k10 即是按下k1,採用if k10 或if k1 1 後接while 1 迴圈的模式...