導航:首頁 > 操作系統 > 單片機流水燈發展

單片機流水燈發展

發布時間:2025-07-25 21:41:56

1. 51單片機實現LED流水燈

用51單片機實現點亮1到8個流水燈的控制過程如下:

首先,選擇P1口作為控制埠,通過輸出不同的值來控制LED燈的點亮與熄滅。具體步驟如下:

1. 點亮第八個LED燈,將P1口賦值為「0000 0000」。

2. 只點亮第八個LED燈,對P1口賦值為「0111 1111」。

3. 點亮第七個LED燈,對P1口賦值為「0011 1111」。

以此類推,直至點亮第一個LED燈,對P1口賦值為「0000 0000」。

4. 只點亮第一個LED燈,對P1口賦值為「1111 1110」。

重復上述流程,即可實現LED流水燈效果。

在匯編語言實現中,考慮到51單片機為8位處理器,使用左移與右移指令來實現LED燈的循環點亮與熄滅。程序首先初始化累加器,然後通過循環實現LED燈的左移與右移。在左移程序中,使用乘法指令實現左移操作,同時通過循環和延時函數來控制左移的次數。右移程序則使用除法指令實現,同樣通過循環和延時函數來控制右移次數。

具體實現代碼如下:

程序開始於主函數,初始化累加器為全1狀態,然後進入循環。在循環中,調用左移程序將累加器左移一位,同時關閉LED燈,然後調用延時函數。接著,判斷累加器是否為0,若非0則繼續左移。循環結束後,關閉LED燈並進入右移程序。右移程序與左移程序相似,只是使用除法指令實現右移操作。循環結束後,再次關閉LED燈,然後返回主循環,重復上述過程,實現LED流水燈效果。

在C語言實現中,使用移位指令來控制LED燈的左移與右移。程序首先初始化LED狀態,然後調用延時函數,進行初步延時。在循環中,通過左移指令控制LED燈的左移,同時調用延時函數控制左移速度。接著,反轉LED狀態,進入右移循環。在右移循環中,使用右移指令控制LED燈的右移,同時調用延時函數控制右移速度。循環結束後,反轉LED狀態,返回主循環,重復上述過程,實現LED流水燈效果。

2. 51單片機LED流水燈怎麼實現從兩邊同時逐個點亮到中間,又從中間逐個熄燈到兩邊

簡單點的,用表格,事先計算好,放到ROM中,用的時候逐行編譯輸出就可以。
復雜點的,開一個緩沖區,用循環程序,根據花樣的不同,每次填充一行,並輸出,然後再計算一下行。除非表格太大,不建議這樣用。
#define len 8
char tablelist[][len] =
{
"00000000",
"10000001",
"01000010",
"00100100",
"00011000",
}
outline( char * s )
{
int i;
for(i=0; i<len; ++i )
{
if ( s[i] == '0' )
{
// 對應的燈亮
}
else
{
// 對應的燈滅
}
}
}
main()
{
for(;;)
{
outline( &tablelist[i]);
delay(..);
}
}

3. 如何用單片機實現流水燈,從一依次亮到八,再從八依次亮回一,一直循環

有個想法, 放一個位元組LED做標志位,可位定址。 每一位代表一個燈。

對位元組LED附初值1,做一個200mS的時鍾,每200ms對位元組LED值做左移1位指令(匯編可循環)。

主程序中位定址判斷位元組LED的bit(0-7)點亮相應的燈。或者直接P0=LED

純想法、還沒試過,感覺好玩,呵呵。 好像上述燈流的方式不對,不過可以改。。。

4. 51單片機中如何用匯編語言編寫流水燈

51單片機中可以用以下匯編語言程序實現流水燈效果

  1. 程序啟動和中斷設置

    ORG 0000H:設置程序復位啟動地址。

    AJMP START:跳轉到主程序開始處。

    ORG 001BH:設置定時器1中斷向量地址。

    AJMP T1INT:跳轉到定時器1中斷服務程序。

  2. 變數定義

    YSJS EQU 30H:定義延時計數器變數,用於記錄中斷次數。

    LED EQU 31H:定義LED控制緩沖器變數,存儲當前點亮的LED狀態。

  3. 主程序初始化

    MOV LED,#0FEH:初始化LED狀態,假設低電平點亮,則從右往左第一個LED亮。

    MOV YSJS,#0:清零延時計數器。

    設置定時器1為方式1,並設置定時初值以實現50ms的定時。

    SETB ET1:使能定時器1中斷。

    SETB TR1:啟動定時器1。

    SETB EA:開總中斷。

    MOV P1,LED:將初始LED狀態輸出到P1口。

  4. 主程序循環

    LOOP: JMP LOOP:主程序進入一個無限循環,等待中斷。

  5. 定時器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被點亮,並且位置不斷移動,從而形成流水燈效果。

5. 如何用單片機實現流水燈,從一依次亮到八,再從八依次亮

片機流水燈C語言程序的源代碼如下:

#include //51系列單片機定義文件。

#define uchar unsigned char //定義無符號字元。

#define uint unsigned int //定義無符號整數。

void delay(uint); //聲明延時函數。


硬體特徵

1、單片機的體積比較小, 內部晶元作為計算機系統,其結構簡單,但是功能完善,使用起來十分方便,可以模塊化應用。

2、單片機有著較高的集成度,可靠性比較強,即使單片機處於長時間的工作也不會存在故障問題。

3、單片機在應用時低電壓、低能耗,是人們在日常生活中的首要選擇, 為生產與研發提供便利。

閱讀全文

與單片機流水燈發展相關的資料

熱點內容
170到160轉伺服器需要什麼 瀏覽:1000
如何在pythonidle中編程 瀏覽:303
壓縮機拆裝視頻 瀏覽:77
怎麼獲取游戲伺服器ip地址嗎 瀏覽:570
用什麼app測長度 瀏覽:865
自閉症能當程序員么 瀏覽:932
本地伺服器資源如何訪問 瀏覽:755
雲伺服器部署系統怎麼映射到客戶端 瀏覽:725
道破天機pdf 瀏覽:566
海康威視雲伺服器無法安裝 瀏覽:786
電腦logs文件夾怎麼移除桌面 瀏覽:262
騎車看軌跡用什麼app 瀏覽:450
阿里雲如何搭建伺服器鏡像 瀏覽:699
roblox美服被踢出伺服器怎麼辦 瀏覽:4
linux編譯cpu高主頻還是多核 瀏覽:104
哆啦a夢解壓動畫片 瀏覽:548
大學生不會的題用什麼app 瀏覽:236
員工小程序源碼 瀏覽:368
安卓手機怎麼安裝插件組件 瀏覽:759
linuxvim配置文件在哪 瀏覽:447