基於Proteus的乙個LED燈閃爍實驗

2021-10-06 04:37:15 字數 1146 閱讀 7846

根據原理圖對微控制器進行程式設計,使led燈每隔一小段時間就改變一下量變狀態,若上乙個時間段為點亮狀態,則隔段時間熄滅,間隔時間可相同可不同,這裡我們假定led燈量變間隔時間相同。

//定義標頭檔案

sbit led=p0^0;

//定義引腳

int i,j;

void

main()

//main代表主函式,程式執行的部分

}①新增延時功能的原因:

微控制器的程式執行速度是非常快的,在微秒級,程式在執行「led=0;」時(讓led點亮),經過幾個微秒後就讓「led=1;」(讓led熄滅),一直迴圈往復,但是實際上由於led燈閃爍頻率太快使得人眼是看不到led燈閃爍的,只能看到led持續保持點亮狀態。為了讓led閃爍時間固定並且頻率低一些,那麼就需要新增乙個延時程式,讓led的狀態不管是亮還是滅都保持1秒鐘(程式裡是設為1秒的),然後再發生變化。

②雙重for迴圈:

就是不停的執行迴圈體裡面的內容,執行次數為第一層for迴圈與第二層for迴圈次數的乘積。

上圖**中迴圈內容為空迴圈(第二層迴圈後僅有乙個分號)

空迴圈的作用是為了消耗cpu的時間,也就是這裡的延時功能。需要注意的是燈亮要延時,燈滅也要延時。

#include

//定義標頭檔案

sbit led=p0^0;

//定義引腳

void

delay

(int ms)

//定義延時子函式

void

main()

//main代表主函式,程式執行的部分

}

由於雙重for迴圈在修改延時時間時,只要延時時間稍有變化,就需要修改迴圈次數,而且還要計算修改後的延時時間是否合適,較為麻煩。所以我們這裡提前定義乙個可方便修改延時引數的延時子函式。因為1s在微控制器中單位較大,所以這裡用1000ms來代替,使得led燈每隔1s就改變一次量變狀態從而達到閃爍的效果。

基於Proteus的4個LED燈閃爍實驗

p0口是個多功能的引腳,它既可以向外部儲存器傳送位址資訊和資料資訊,也可以作為乙個通用的i o介面和其他硬體之間來傳輸資料資訊,但是p0口無法輸出高電平,本實驗為實現四個led燈的閃爍,在p0口外加乙個上拉電阻來實現其引腳輸出高電平,從而實現4個led燈閃爍。定義標頭檔案 sbit led1 p0 ...

基於arm的乙個簡單的led驅動

在學寫驅動的時候一定不要盲目的跟從,要有自己的方法。要記住一點,學習驅動要學習驅動的模板,每個驅動程式其結構基本上都是一樣的。只要大家掌握了驅動的結構以後在寫驅動的時候就相對來說要簡單一些。只要大家學會寫驅動過後後頭來看其實驅動都是大同小異的。在這裡我給大家介紹乙個簡單的led驅動的寫法,defin...

乙個簡單的LED驅動 不基於驅動框架

驅動 include include include include include include include static int led major 1 static struct class led mark class null static struct device led mar...