微控制器流水燈閃爍

2021-10-03 10:36:54 字數 1084 閱讀 5168

很多人在點亮乙個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 迴圈的模式...