看到這個標題,很多人會想:「流水燈?誰不會流水燈啊。微控制器入門的第一節課不就是實現跑馬燈嘛?」 別急,慢慢看嘛,就算是簡單的跑馬燈,也可以玩出花樣的喲。
好吧,不賣關子了,先說說我今天講的內容吧,首先:如何用p1口(只有八個引腳喲)實現八個流水燈,然後:如何用p1口實現十六個流水燈。怎麼樣,有沒有一點小刺激。再然後,用32個引腳,p1,p2,p3,p4實現1024個流水燈呢?可能有人會說了,「不可能!!!」別急,再到最後,就是控制很多很多個!那我們就開始吧。
1、熟悉p1口作輸出口的原理與方法
2、掌握迴圈延時,並能計算延時時間
3、能熟練的使用keil程式設計和proteus**
4、實現多個流水燈的控制
1、用keil編寫程式,編譯執行
2、用proteus進行**檢驗
3、用麵包板進行搭線展示,用2個流水燈實現流水效果
將微控制器的p1口的0和1接上led燈,採用共陰極的接法,當微控制器的p1^0和p1^1引腳為低電平時,由於二極體的單項導通性,led被點亮,即可實現迴圈流水效果。必要的知識還是需要滴,上圖!
實物圖:
proteus**結果:
//httm觸控開關
void
delay()
void
main()
else
//沒有按鍵被按下
}}看到這裡,有人就要說了,我都看麼那麼久了,你這不就是乙個流水燈嗎?還故弄玄虛搞那麼久,我手中的西瓜刀已經準備好了,你繼續表演吧。
哈哈哈,行,馬上就開始表演。
既然我們都寫過流水燈,那我們一定對延時函式一定都不陌生,就隨便給個延時等待嘛,但是有沒有人想過,這個延時函式到底延時了多久!!!!!!「三分鐘,我要這個延時函式的全部資訊!!」我:可以用定時器測試的喲。「不,我沒學過定時器,但是我現在就要!!!快給我乙個簡單的方法!」我:呃。。。行,辦法就在下面。
用c語言設計,如何計算延時時間
對於延時時間可以通過示波器進行準確的檢視。在這裡我準備了兩段延時函式,分別是1ms,test(自定義)來進行測試,前面的1ms是經過精確計算無誤的時間,後面的test則是自己需要計算的延時函式。
1ms測試結果(準確時間)
測試結果:1ms時間準確。
test延時函式測試
test延時函式測試結:delay = (909-605)ms = 304ms。
源**如下:
#include
sbit out = p1^0;
void
delay1ms
(void
)//測試1ms 誤差 0us
void
delay10ms
(void
)//測試10ms 誤差 0us
void
delay_test
(void
)//測試結果304ms
void
main()
}
當led的數量遠多於介面數量時(如50,100,1000個),該怎麼實現流水燈?
解答如下:實現方法較多,這裡我採用的是3-8解碼器,通過3-8解碼器的級聯可以實現led數目的增加,實現50,100個沒有問題,如果要實現1000個則需要4-16解碼器,並通過級聯的方式實現。
實現結果如下:
源**如下:
#include
//用6個io口點亮16個流水燈
//實現效果:可以用8個io口點亮16個流水燈,
//分別為3 3顯示 2片選,最多可控制16*4=64個
/* 如果採用4-16解碼器,包括片選端,那麼乙個佔8個位置,可以亮16*16=256
一共有32/8=4那麼4*256=1024個燈,滿足一千個燈
*/sbit crol_1 = p1^0;
sbit crol_2 = p1^1;
sbit crol_3 = p1^2;
//設定控制**
sbit crol_4 = p1^3;
sbit crol_5 = p1^4;
sbit crol_6 = p1^5;
//第二個解碼器
sbit select_1 = p1^6;
sbit select_2 = p1^7;
//片選
static
int count =0;
void
delay_ms()
//設定延時函式
void
crol_flow_1()
//前八個
}void
crol_flow_2()
//後八個
}void
main()
else
if(count <16)
}}
會水的芝麻
2019.12.6
湖北師範大學
微控制器 流水燈
基礎知識 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 迴圈的模式...