❶ 單片機中流水燈如何控制
單片機中流水燈控制:
硬體連接很簡單,只要將8個LED指示燈接在P1口上
另一端通過220歐姆的電阻接+5V電源上,就可以了。
主要靠軟體控制,簡單的可以使用左移或右移指令,將低電平0
逐漸移入寄存器中,即控制LED指示燈逐漸一個一個地點亮或一個一個地熄滅。
復雜點:
可以進行花式流水控制。
例如:
可以由兩邊逐漸向內點亮
然後再由內逐漸向外一個一個熄滅。
還可以由由內逐漸向兩邊內點亮
然後再由兩邊漸向內逐一個一個熄滅。
在程序的實現上
可以把各種花式流水的P1口亮滅狀態字
事先定義成數組
然後每隔一定的時間
取出送P1口顯示。
呵呵
俺只提供給你一個號的演算法
程序就自己動手自立更生吧
滿意
就選滿意回答
❷ 單片機led流水燈方向如何改變
工作原理
該系統與上位機的通信由AT91M42800A的USART0口與485介面電路完成,上位機僅需將要顯示的數據,傳送至AT91M42800A即可。開機後,AT91M42800A初始化,讀入啟動代碼後,將保存在Flash存儲器內的程序代碼和所要顯示的字模數據,重映射到SDRAM中,使得系統的數據存取全部在高速SDRAM中完成。在接收到上位機的數據後,AT91M42800A將要顯示的數據,轉換成相對應的LED屏顯示驅動信號,再加入相應的動態顯示效果控製程序(畫面左移、上移、開幕、覆蓋、閃爍和直顯等)後,用SPI口分別輸出給行、列驅動電路。同時,若有需要,上位機所傳來的數據或圖像畫面,也可以保存在Flash存儲器中。
顯示屏採用1/16動態逐次行掃描方式,先將SPIA埠中的24個位元組數據依此串列移入對應的24個A6276列驅動電路,並鎖存。接著,SPIB埠再將一行行選通信號串列移入行驅動電路,完成一行的LED顯示。然後依理,逐次的顯示LED屏的各行。
二極體亮滅時間的占空比可用軟體進行設定,以選取合適亮度,提高發光二極體的使用壽命。在現場實際安裝的LED顯示屏,有效顯示面積約為4.6 m2,共有288×384=110 592個像素,滿幀刷新時間最短可小於8 ms,換幀頻率125 Hz以上,比傳統的用單片機組成的顯示系統提高了10倍以上的幀頻,保證了動態顯示時的視覺效果。同時,在相同的條件下,還可以使得實際可視像素點增多。
軟體部分簡述
本系統的軟體採用μC/OSII操作系統,使得系統具有強大的多任務管理、定時器管理、中斷管理、存儲管理等功能,通過對相關寄存器的實時監控,可以大大提高系統的穩定性,這些是以往用單片機和部分DSP處理器所無法實現的。
顯示應用程序採用定時器中斷方法,通過設置合適的進入中斷時間常數,即可以得到高於40 Hz的LED刷新幀頻,使人眼得到穩定的動態視覺效果。
畫面的實時動態處理,即各種動態顯示方式均以子程序形式編寫,每種顯示方式都是獨立的子程序。具體的動態顯示方式有:畫面左、右移,上、下移,拉幕,覆蓋,閃爍,直顯等多種方式。
❸ 51單片機中如何用匯編語言編寫流水燈
51單片機中可以用以下匯編語言程序實現流水燈效果:
程序啟動和中斷設置:
ORG 0000H:設置程序復位啟動地址。
AJMP START:跳轉到主程序開始處。
ORG 001BH:設置定時器1中斷向量地址。
AJMP T1INT:跳轉到定時器1中斷服務程序。
變數定義:
YSJS EQU 30H:定義延時計數器變數,用於記錄中斷次數。
LED EQU 31H:定義LED控制緩沖器變數,存儲當前點亮的LED狀態。
主程序初始化:
MOV LED,#0FEH:初始化LED狀態,假設低電平點亮,則從右往左第一個LED亮。
MOV YSJS,#0:清零延時計數器。
設置定時器1為方式1,並設置定時初值以實現50ms的定時。
SETB ET1:使能定時器1中斷。
SETB TR1:啟動定時器1。
SETB EA:開總中斷。
MOV P1,LED:將初始LED狀態輸出到P1口。
主程序循環:
LOOP: JMP LOOP:主程序進入一個無限循環,等待中斷。
定時器1中斷服務程序:
保護現場:PUSH PSW 和 PUSH ACC。
重新裝載定時初值以維持50ms的定時。
INC YSJS:中斷計數器加1。
檢查是否達到100ms:
如果是,執行MOV P1,LED。
將LED變數中的值循環左移一位,實現流水燈效果。
清零延時計數器YSJS。
恢復現場:POP ACC 和 POP PSW。
RETI:返回主程序。
注意事項: 在上述代碼中,有一處小錯誤:MOV A,YSJI 應為 MOV A,YSJS,因為YSJI並未定義,而YSJS是之前定義的延時計數器變數。 流水燈效果是通過在每次定時器中斷時,將LED控制變數循環左移一位來實現的,這樣每次只有一個LED被點亮,並且位置不斷移動,從而形成流水燈效果。
❹ 單片機控制流水燈,
單片機中流水燈控制:
硬體連接很簡單,只要將8個led指示燈接在p1口上
另一端通過220歐姆的電阻接+5v電源上,就可以了。
主要靠軟體控制,簡單的可以使用左移或右移指令,將低電平0
逐漸移入寄存器中,即控制led指示燈逐漸一個一個地點亮或一個一個地熄滅。
復雜點:
可以進行花式流水控制。
例如:
可以由兩邊逐漸向內點亮
然後再由內逐漸向外一個一個熄滅。
還可以由由內逐漸向兩邊內點亮
然後再由兩邊漸向內逐一個一個熄滅。
在程序的實現上
可以把各種花式流水的p1口亮滅狀態字
事先定義成數組
然後每隔一定的時間
取出送p1口顯示。
呵呵
俺只提供給你一個號的演算法
程序就自己動手自立更生吧
滿意
就選滿意回答
❺ keil軟體用單片機控制8個LED流水燈來回點亮(C語言程序)
Keil軟體是一種常用的開發環境,用於編寫和調試單片機程序。下面是一個使用Keil控制8個LED流水燈來回點亮的C語言程序示例。此程序通過循環點亮LED,模擬流水燈效果。
程序採用循環結構,通過改變P1口的輸出值,控制LED的點亮順序。具體實現方法是,程序首先將P1設置為0xfe,點亮第一個LED,然後通過循環延時,模擬流水燈的緩慢移動。接著,程序依次將P1設置為0xfd、0xfb、0xf7、0xef、0xdf、0xbf和0x7f,點亮其餘LED,實現流水燈效果。
另一種實現方式是通過循環和位移操作來控制LED的點亮。程序首先定義一個變數w,並將其初始化為0xfe,表示點亮第一個LED。然後通過循環,將P1設置為w的值,點亮相應的LED,並通過位移操作和延遲函數,實現流水燈效果。具體實現方法是,程序首先將w左移一位,並將最低位補1,然後將P1設置為w的值,點亮相應的LED。接著,程序通過延時函數實現流水燈的緩慢移動。
還有一種實現方式是利用_crol_函數來實現LED的點亮。程序首先定義一個變數temp,並將其初始化為0xfe,表示點亮第一個LED。然後通過循環,將P1設置為temp的值,點亮相應的LED,並通過_crol_函數和延時函數,實現流水燈效果。具體實現方法是,程序首先將temp左移一位,並將最低位補1,然後將P1設置為temp的值,點亮相應的LED。接著,程序通過延時函數實現流水燈的緩慢移動。