我們前面學習了如何建立工程,現在就來實現乙個流水燈吧。
一、八位發光二極體
led燈原理圖
下圖為led燈的原理圖:
led燈陽極:p0[7…0]
led燈陰極:共陰極,p2.3非
點亮led燈的條件
通電:p0=0xff
p2.3=1
模式:推挽輸出
在實驗板中,點亮led燈除了需要通電,還需要設定i/o口模式,可以通過設定暫存器p0m0[7…0]和p0m1[7…0]的值來實現,每乙個led燈的i/o模式由p0m1和p0m0對應一位的組合決定(p0m1、p0m0共同控制了p0的i/o模式)
high
lowi/o模式00
準雙向口,灌電流可達到20ma01
推挽輸出(強上拉輸出,需加限流電阻)10
輸入高阻11
開漏模式,內部上拉電阻斷開
p0m1和p0m0組合決定了8位led的i/o模式,如下圖:
二、時間設定
四種週期:
振盪週期:晶體的振盪器週期(1/12us)
狀態週期:振盪週期二分頻得到的脈衝訊號。前半部分和後半部分成為p1和p2,p1有效時完成算術路基運算,p2有效時完成內部暫存器的訪問傳輸。
機器週期:完成乙個基本操作所需要的時間成為機器週期。乙個及其週期包含6個狀態週期(12個振盪週期,即1us)
指令週期:cpu執行一條指令需要的時間。一般為1-4個機器週期。
軟體延時函式:
延時:可以通過1ms可以執行多少條指令來定義函式,執行空操作來實現時間延遲。
stc-isp延時函式:
三、流水燈實現
init()函式:設定暫存器的值
sbit led_sel=p2^3;
//p2^3----e3
uchar led;
void
init()
描述:p0m1、p0m0設定led燈的i/o模式為推挽輸出,p2m1、p2m0設定p2.3的i/o模式,設定p2.3=1使得led燈陰極姐低電平。這樣led燈在p0為0xff時就可以全亮了
delay200ms()函式
void
delay200ms()
while
(--j);}
while
(--i)
;}
main()函式:控制led燈左移
void main(
)}
描述:每隔200ms,p0的值左移一位,燈只有最左邊的燈亮時,p0=0x01,即只有最右邊的燈亮。這樣,led燈就可以以自迴圈左移實現流水燈啦。
第二篇微控制器學習筆記完結,cheers ! ??
微控制器 流水燈
基礎知識 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 迴圈的模式...