STC微控制器 閃爍燈,LED流水燈 程式講解

2021-10-11 01:33:48 字數 2879 閱讀 5207

所謂的閃爍燈就像警車一樣,嗶哩嗶哩閃爍。

led閃爍其實就是將乙個燈開一下,關一下。

在迴圈中不斷的進行開關,這就是邏輯其實挺簡單的,但是中間需要有乙個延時,如果不延時就不會看到效果。

在這裡需要用到c語言裡面的乙個重定義關鍵字:

int 分為無符號 unsigned 和有符號 signed 兩種型別,預設為signed。二者的區別就是無符號型別能儲存2倍於有符號型別的資料。32位下,signed int 的表示範圍為:-2147483648 ~ 2147483647 (最高位做符號位)。unsigned int 的表示範圍為:0 ~ 4294967295 (不保留符號位)。我們都知道,兩個不同的資料型別在進行混合使用時,會自動進行型別轉換

我們這裡採用乙個unsigned進行命名範圍在0~429496... 之間

typedef重定義一些常用的關鍵字,可以增強程式的可移植性,因為在不同的編譯軟體上,c語言的資料型別的關鍵字的位寬是不一樣的。

typedef unsigned char u8;   //表示將char重定義一下   u8表示char型別

向上面所說中間需要加入乙個delay()函式

coding:

#include "reg51.h"

sbit ledp20 = p2^0;//d1 led等的拐腳

typedef unsigned int u16;//重定義乙個int型別

//延遲函式

void delay(u16 delay)

}main()

}

效果:

首先雙擊**左側的數碼欄:

進入斷點,這我們打斷的的位置需要注意,關燈,然後開燈。中間會延遲,我們可以通過開始的時間和結束時間來計算中間花了多少時間。

斷點視窗:

我們可以看到當前時間點

下一步進入延遲

我們這一步還沒有進入延遲方法可以記住時間 0.00019500而後下一步

通過0.20029550 - 0.00019500 = 0.200毫秒 

這個速度也跟開發工具有關如果設定xtal(mhz) = 12.0時間就會慢,如果我們設定成12 會從開始計算到結束會顯示大約0.4.50毫秒左右,這個不確定的。

流水燈就是從d1-d8

其實流水燈也是圍繞著閃爍燈這個邏輯繼續跟蹤的。

首先我們需要動的 ,迴圈左移右移函式

可以通過c語音的預處理命令來定義 #define a p2(不需要加分號)

通過定義如果我們使用了p2拐腳我們可以通過define a p2 來代替p2拐腳,通過呼叫a來處理p0拐腳

方法描述

_crol_(a,b)

迴圈左移函式,a是左移的值,b是左移的位數。包含在intrins.h函式庫裡面,left

_cror_(a,b)

迴圈右移函式,a是右移的值,b是右移的位數。包含在intrins.h函式庫裡面,right

這裡有乙個點非常重要,乙個16進製制轉2進製的乙個操作。

先看**吧:

#include "reg51.h"

#include "intrins.h"

typedef unsigned int u16; //重定義乙個int型別

#define led p2 //表示所有的p2口

//延遲函式

void delay(u16 delay)

}void main()

} }

效果:

從下面留出可以看出流水燈的乙個流程

這個程式流程是往回跑

**:

#include "reg51.h"

#include "intrins.h"

typedef unsigned int u16; //重定義乙個int型別

#define led p2 //表示所有的p2口

//延遲函式

void delay(u16 delay)

}void main()

for(i = 0;i <7;i++)

} }

效果:

微控制器流水燈閃爍

很多人在點亮乙個led燈以後,覺得點亮流水燈其實沒什麼意思。不過我覺得對於從點亮乙個led等,到玩順流水燈,其實我們還是可以提高不少的。比如 1.微控制器軟體延時的計算 2.c語句的語法學習 3.加深對io口的操作,以及位操作 那麼下面我們就開始,流水燈的操作吧 對8個發光二極體迴圈亮滅。主要我這裡...

微控制器中用彙編燈閃爍 花式流水燈

最簡單的流水燈 前面我已經使用了sbit 將埠定義出來了,考慮到 比較多就省略了。void led1 最簡單的流水燈 簡化流水燈 1 定義乙個變數0x01 對應第乙個燈 2 進入迴圈,判斷a是否是否等於0x100,不等於就執行迴圈 0x100對應的是16進製制裡面的第九位,第八位是0x80也是微控制...

51微控制器之LED流水燈

在寫流水燈程式之前,我們了解一下資料型別。int在51中為2byte 型別位數 資料範圍 int16 32768 32767 short 16 32768 32767 long 32 2147483648 2147483647 unsigned int16 0 65535 unsigned shor...