#include "reg51.h"
unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED燈的花樣數據
void delay(unsigned char time){ //延時函數
unsigned int j=15000;
for(;time>0;time--)
for(;j>0;j--);
}
void main(){
bit dir=0,run=0; //標志位定義及初始化
char i;
while(1){
switch (P0 & 0x0f){ //讀取鍵值
case 0x0e:run=1;break; //K1動作,設run=1
case 0x0d:run=0,dir=0;break; // K2動作,設run=dir=0
case 0x0b:dir=1;break; //K3動作,設dir=1
case 0x07:dir=0;break; //K4動作,設dir=0
}
if (run) //若run=dir=1,自上而下流動
if(dir)
for(i=0;i<=3;i++){
P2=led[i];
delay(200);
}
else
for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流動
P2=led[i];
delay(200);
}
else P2=0xff; //若run=0,全部燈滅
}
}
㈡ 用匯編語言編寫一個按鈕控制8個流水燈的亮滅
51單片機匯編語言程序設計如下,實現通過按鍵控制8個流水燈的亮滅功能:
KEY被定義為P3.2埠,LED被定義為P1埠。
程序起始地址為0000H,跳轉到主程序MAIN。
主程序MAIN從0030H地址開始:
清除00H單元的內容。
將0FEH的值送入累加器A。
進入循環LOOP。
檢查P3.2埠的狀態,如果為低電平,跳轉到LOOP1。
如果P3.2埠為高電平,則執行下一條指令。
將0FFH的值送入LED埠。
跳轉到LOOP2。
進入LOOP2,檢查00H單元狀態,如果為高電平,則跳轉到LOOP2。
將0FFH的值送入P1埠。
右移累加器A的內容。
調用延時子程序DELAY。
返回到LOOP。
延時子程序DELAY從200H地址開始:
將200H送入R2。
進入循環DLY1。
將250H送入R3。
當R3不為0時,循環繼續。
R2減1,直到為0,跳出循環。
返回到調用處。
這個程序通過按鍵P3.2控制8個流水燈P1埠的亮滅,通過右移操作實現流水效果,並通過延時子程序實現一定的視覺效果。在實際應用中,可以根據需求調整延時子程序的延時時間,以適應不同的顯示效果要求。
在編寫和調試此類程序時,需要注意按鍵的抖動問題,以及單片機的時鍾頻率對延時時間的影響。此外,還可以通過增加更多的邏輯判斷,實現更加復雜的功能,比如增加計數器,實現流水燈的計數顯示,或者加入更多的控制邏輯,實現更復雜的燈光控制效果。
通過這種編程方式,可以實現對單片機的精細控制,滿足各種不同的應用需求。在實際應用中,這種編程方式還可以與外部設備或感測器結合,實現更加復雜的功能。
㈢ 89C51單片機 4*4矩陣鍵盤加流水燈問題,求個匯編程序代碼。
;其實很攜巧爛冊簡單,都不用判斷鍵值,有鍵按下暫停2S程辯歷鍵序如下:
ORG 0000H
LJMP STA
ORG 000BH
LJMP T0ISR
ORG 0030H
STA:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB ET0
SETB EA
MOV 30,#0FEH
MOV R2,#0
CLR 00H
LOOP:
MOV P1,#0F0H
MOV A,P1
CJNE A,#0F0H,LOOP1
SJMP LOOP
LOOP1:
LCALL DELAY
MOV A,P1
CJNE A,#0F0H,LOOP2
SJMP LOOP
LOOP2:
SETB 00H
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#3CH
MOV TL0,0B0H
SETB TR0
JNB 00H,T0ISR1
INC R2
MOV A,R2
CJNE A,#40,T0ISRE
MOV R2,#0
CLR 00H
SJMP T0ISRE
T0ISR1:
MOV A,30H
RL A
MOV 30H,A
MOV P0,A
T0ISRE:
RETI
DELAY:
MOV R0,#20
DELAY1:
MOV R1,#250
DJNZ R1,$
DJNZ R0,DELAY1
RET
END
㈣ 單片機流水燈程序
程序如下:
#include <reg52.h>
sbit led1 = P2^0;
sbit led2 = P2^1;
sbit led3 = P2^2;
sbit led4 = P2^3。
讓電子信息技術與單片機技術相融合,有效提高了單片機應用效果。作為計算機技術中的一個分支,單片機技術在電子產品領域的應用,豐富了電子產品的功能,也為智能化電子設備的開發和應用提供了新的出路,實現了智能化電子設備的創新與發展。
從二十世紀九十年代開始,單片機技術就已經發展起來,隨著時代的進步與科技的發展,目前該技術的實踐應用日漸成熟,單片機被廣泛應用於各個領域。現如今,人們越來越重視單片機在智能電子技術方面的開發和應用,單片機的發展進入到新的時期。
無論是自動測量還是智能儀表的實踐,都能看到單片機技術的身影。當前工業發展進程中,電子行業屬於新興產業,工業生產中人們將電子信息技術成功運用。
㈤ 單片機流水燈程序
程序如下:
#include <reg52.h>
sbit led1 = P2^0;
sbit led2 = P2^1;
sbit led3 = P2^2;
sbit led4 = P2^3。
讓電子信息技術與單片機技術相融合,有效提高了單片機應用效果。作為計算機技術中的一個分支,單片機技術在電子產品領域的應用,豐富了電子產品的功能,也為智能化電子設備的開發和應用提供了新的出路,實現了智能化電子設備的創新與發展。
從二十世紀九十年代開始,單片機技術就已經發展起來,隨著時代的進步與科技的發展,目前該技術的實踐應用日漸成熟,單片機被廣泛應用於各個領域。現如今,人們越來越重視單片機在智能電子技術方面的開發和應用,單片機的發展進入到新的時期。
無論是自動測量還是智能儀表的實踐,都能看到單片機技術的身影。當前工業發展進程中,電子行業屬於新興產業,工業生產中人們將電子信息技術成功運用。