導航:首頁 > 操作系統 > 51單片機跑馬燈c程序

51單片機跑馬燈c程序

發布時間:2024-05-07 01:59:17

㈠ 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();

}

}

}

(1)51單片機跑馬燈c程序擴展閱讀:

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

㈡ 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的流程圖,這種流程圖不知怎麼寫好,而且寫出來基本是對每行的代碼的解釋。

㈢ 51單片機 ,設計一個跑馬燈程序,用軟體延時,p0輸出,怎麼設計c語言,用p1口的開關控制燈循環的速率

51單片機是單片機接觸最早的,下邊這個程序希望能幫到你。(只有主函數,就不進行硬體什麼定義以及頭文件包含什麼的了)

void delay(int times){//延時函數,times控制延時時間
int i, j;

for(i = 0; i < times; i++)

for(j = 0; j < 210; j++)

;

}
int main(void){
unsigned char data, i;
while(1){

data = P1;//把開關值讀回來
for(i = 0; i < 8; i++){
P0 = ~(0x01 << i); //某位為高電平某位對應的燈亮
delay(data);//把讀取的開關值用來控制延時

}
}
}

㈣ 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

㈤ 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燈就不亮

程序已經過調試可用

模擬如下:

㈥ 51單片機跑馬燈電路圖(左右來回循環),8個led燈分別接在P2口,c程序、模擬圖如下。電路並未出現預期效果

電路:

一般的單片機 和 TTL集成電路晶元,都是灌電流能力強,拉電流能力極弱。
為此,應該用輸出低電平,來帶動負載。
而你的電路,是用高電平帶動LED發光的,模擬,也許還行;實際的電路,LED是不會亮的。

閱讀全文

與51單片機跑馬燈c程序相關的資料

熱點內容
鉸刀轉速進給的演算法 瀏覽:977
php二維數組取一列 瀏覽:375
安裝殺毒軟體出現壓縮或加密 瀏覽:973
方舟端游伺服器怎麼搜索房間 瀏覽:71
單片機學51好還是stm8好 瀏覽:798
手中的app如何隱藏 瀏覽:1001
安卓什麼壁紙軟體號 瀏覽:436
java設置內存大小 瀏覽:434
php循環匹配 瀏覽:325
技巧pdf 瀏覽:481
單片機斷程序怎麼解決 瀏覽:160
如何製作APP的圖片 瀏覽:506
php大小排序 瀏覽:550
linuxkerberos 瀏覽:126
暗黑破壞神3如何下載亞洲伺服器 瀏覽:953
linux中ftp伺服器地址怎麼看 瀏覽:438
ansys命令流do 瀏覽:122
單片機6502 瀏覽:765
自助洗車有什麼app 瀏覽:937
程序員離職率多少 瀏覽:322