導航:首頁 > 操作系統 > 51單片機跑馬燈教學

51單片機跑馬燈教學

發布時間:2022-12-13 14:55:15

1. 關於51單片機的跑馬燈設置問題

自己看程序修改一下:

#include<reg51.h>
#include <intrins.h>

/*****************************************************************************
* 延時子程序 *
* *
******************************************************************************/
void delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}

/*****************************************************************************
* 主程序 *
* *
******************************************************************************/
main()
{
unsigned char LED;
LED = 0xfe;
P2 = LED;
while(1)
{
delayms(250);
LED = _crol_(LED,1); //循環右移1位,點亮下一個LED 此函數位庫函數
P2 = LED;
}
}

2. 51單片機跑馬燈程序c

/***************************************** *用P1口接LED *****************************************/ #include //51系列單片機定義文件 #define uchar unsigned char //定義無符號字元 #define uint unsigned int //定義無符號整數 void delay(uint); //聲明延時函數 void main(void) { uint i; uchar temp; while(1) { temp=0x01; for(i=0;i<8;i++) //8個流水燈逐個閃動 { P1^=temp; delay(500); //調用延時函數 temp<<=1; } temp=0x80; for(i=0;i/8個流水燈反向逐個閃動 { P1^=temp; delay(500); //調用延時函數 temp>>=1; } temp=0xFE; for(i=0;i<8;i++) //8個流水燈依次全部點亮 { P1=temp; delay(500); //調用延時函數 temp<<=1; } temp=0x7F; for(i=0;i/8個流水燈依次反向全部點亮 { P1=temp; delay(500); //調用延時函數 temp>>=1; } } } void delay(uint t) //定義延時函數 { register uint bt; //register為寄存器變數 即將無符號整形變數bt放在CPU的寄存器中而不是放在內存中 因為該 變數使用頻率高 這樣可以提高執行效率 for(;t;t--) for(bt=0;bt<255;bt++); }

3. 51單片機跑馬燈程序

不好意思,延時用了樓上的。keil下編譯OK。假設P1接燈。

ORG00H

SJMPSTART

ORG30H

START:

MOVA,#00

SETBC

MOVR0,#9

;從左到右

LOOP1:

RLCA

MOVP1,A

ACALLDELAY

DJNZR0,LOOP1

;從右到左

MOVR0,#9

LOOP2:

RRCA

MOVP1,A

ACALLDELAY

DJNZR0,LOOP2

SJMPSTART

DELAY:

MOVR6,#20

DELAY_0:MOVR5,#255

DJNZR5,$

DJNZR6,DELAY_0

RET

這個程序比較簡單了。再精簡,只能精簡一句,將MOVP1,A放在DELAY函數里。這樣減少一行。

簡單介紹一下:

首先就是你要輪流點亮,就是將1循環一圈,因為你要全滅一次,所以用到CY。

RG00H

SJMPSTART

ORG30H

START:

MOVA,#00;//清空A寄存器

SETBC;//將CY置1,然後帶進位左移就會進入將A的b0

MAINLOOP:;//大循環起始

MOVR0,#9;設置移位次數,要滅一次,所以設置為9

;從左到右

LOOP1:

RLCA;帶進位左移一次;第一次移位結果為01

MOVP1,A;將A中值放入P1點亮對應LED;該句可放在DELAY里,然後從右到左也去掉該句

ACALLDELAY;延時,保持燈亮一段時間,自己根據實際情況調整一下。

DJNZR0,LOOP1;循環,點亮下一個燈,最後一次,A為0,將全滅一次,CY為1

;從右到左

MOVR0,#9;設置循環次數

LOOP2:;循環起始表示

RRCA;帶進位右移,第一次結果為80H

MOVP1,A;更新P1點亮對應LED

ACALLDELAY;延時,保持燈亮一段時間

DJNZR0,LOOP2;循環,點亮下一個燈

SJMPMAINLOOP;循環,重新開始下一輪

如果你是管腳輸出低LED才亮,只需將MOVA,#00和SETBC改為MOVA,#0FFH和CLRC即可。

方案2:位定址區00做標志,為0從左到右,該標志為1從右到左

ORG00H

SJMPSTART

ORG30H

START:

MOVA,#00

SETBC

MOVR0,#9

CLR00H

LOOP1:

RLLED:

JB00H,RRLED

RLCA

AJMPDISP

RRLED:

RRCA

DISP:

MOVP1,A

ACALLDELAY

DJNZR0,LOOP1

CPL00H

AJMPSTART

DELAY:

MOVR6,#20

DELAY_0:MOVR5,#255

DJNZR5,$

DJNZR6,DELAY_0

RET

下面是方案1的流程圖,這種流程圖不知怎麼寫好,而且寫出來基本是對每行的代碼的解釋。

4. 用51單片機(匯編語言寫)寫一個跑馬燈程序知道的幫個忙寫寫。

急用!請教!!!
用匯編語言程序,程序功能:實現方向可控的跑馬燈
編程要求:用八個LED發光二極體實現跑馬燈(即:8個燈依次輪流發光,每次只亮一個燈),系統啟動後,跑馬燈右向流轉,按下K1鍵,則反向流轉,再按則再反向……。接線方法:流水燈接P0口,按鍵K1可自選P1~P3任一引腳。

5. 51單片機設計跑馬燈的程序用(c語言)編寫

|P1口接8個發光二極體共陽

#include <AT89X51.H>

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<<i;

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

(5)51單片機跑馬燈教學擴展閱讀:

Proteus 自從有了單片機也就有了開發系統,隨著單片機的發展開發系統也在不斷發展。 keil是一種先進的單片機集成開發系統。它代表著匯編語言單片機開發系統的最新發展,首創多項便利技術,將開發的編程/模擬/調試/寫入/加密等所有過程一氣呵成,中間不須任何編譯或匯編。

6. 用51單片機設計一個16位的跑馬燈 要求通過一個開關控制3種不同的模式 用匯編語言寫,三種模式隨意

一個開關,比如導通了1秒一個模式,3秒一個模式,5秒一個模式。

要麼在一定時間內,檢測開關導通的次數

我覺得應該弄的直觀點,從51上接4個led做指示用,一個燈表示待運行,還有3個燈,亮一個表示模式1,亮兩個表示模式2,亮3個表示模式3

開機的時候,待運行燈亮,等待設定模式,這時候開始按按鍵設定模式,同時待運行燈滅。模式燈隨按鍵操作變化。

模式設定好了,停止按鍵操作,兩秒後待運行燈亮,表示模式設定完畢。這時候長按按鍵,開始跑馬燈。短按按鍵則返回模式設定。

當開始運行跑馬燈的時候,可以設定運行一遍返回,也可以中斷返回。

個人想法,不知行不行

7. 51單片機 跑馬燈程序

org0000h

jmpstart

org0030h

start:

movp0,#11111110b;此時第一個燈亮

callt10s

movp0,#11111101b;此時第二個燈亮

callt10s

movp0,#11111011b

callt10s

movp0,#11110111b

callt10s

movp0,#11101111b

callt10s

movp0,#11011111b

callt10s

jmpstart;此處跳到開始即循環

;延時子程序10秒=250usX2X200X100

t10s:movr5,#100

lpr5:movr6,#200

lpr6:movr7,#250

djnzr7,$

djnzr6,lpr6

djnzr5,lpr5

ret

end

把燈的正極接電源正極即vcc負極分別接p0.0-p0.5

此時給p0送0燈就亮1燈就不亮

程序已經過調試可用

模擬如下:

8. 如何用51系列單片機做控制LED跑馬燈實驗

/*單片機,用定時中斷實現每隔0.2秒讓接在p1口的8個小燈從左往右循環點亮。*/
#include

#include

#define
uchar
unsigned
char
uchar
a,b;
uchar
b=1;
uchar
a=0xfe;
void
main()
{
ea=1;it1=1;et0=1;
th0=-5000/256;
tl0=-5000%256;
tmod=0x01;
tr0=1;
while(1)
{;}
}
void
timer0(void)
interrupt
1
using
1
{
th0=-5000/256;
tl0=-5000%256;
b=b+1;
if(b==40)
{
b=0;
p1=a;
a=_crol_(a,1);
p1=a;
}
}

9. 51單片機匯編語言編寫一個跑馬燈的程序,初學者做實驗用,具體要求如下,好了可以加分

程序1:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END

10. 單片機跑馬燈咋把間隔時間調成200

1、首先51單片機LED流水燈正反向流水結合,即正向流水一遍。
2、其次再反向流水回來,時間間隔200ms。
3、最後單片機跑馬燈即可把間隔時間調成200,完成操作。

閱讀全文

與51單片機跑馬燈教學相關的資料

熱點內容
伊克塞爾文檔怎麼進行加密 瀏覽:884
app轉賬是什麼 瀏覽:157
php的基本語法 瀏覽:790
對外漢語pdf 瀏覽:516
如何用mamp本地web伺服器 瀏覽:869
如何加密自己js代碼 瀏覽:627
排列組合a與c的演算法 瀏覽:534
如何在文件夾中找到同名內容 瀏覽:786
有什麼app文字轉韓文配音 瀏覽:372
循環宏1命令 瀏覽:35
斐波那契數列矩陣演算法 瀏覽:674
公式保護後加密不了 瀏覽:82
java跳轉到jsp 瀏覽:819
327平方根演算法 瀏覽:216
win7美化命令行終端 瀏覽:797
免加密狗圖片 瀏覽:485
一隻透明的鳥是什麼app 瀏覽:817
空氣壓縮機油批發商 瀏覽:69
linuxifexist 瀏覽:4
加密tf卡拷入文件 瀏覽:399