關於51微控制器的跑馬燈設定問題,關於51微控制器跑馬燈程式碼的修改。。。

時間 2021-11-04 16:41:26

1樓:蘇羽奇偶

自己看程式修改一下:

#include

#include

* 延時子程式 *

* *

void delayms(unsigned char ms)

* 主程式 *

* *

main()}

2樓:穿假鞋打街球

中斷程式void int0(void) interrupt0 void int1(void)interrupt2

延時程式void delay*ms(int i)

void main()

關於51微控制器跑馬燈**的修改。。。

3樓:狄思鬆

迴圈語句 是不能用了~~

但可以修改, 方法兩種。

一是 通過 陣列 而是邏輯判斷

陣列方式就是 開一個8個元素的陣列 內容是 0000001.。。。1000000 其中 第一個為 0100000 第二個為 1000000 這樣一次向埠寫 陣列中的內容就行了。

第二個就是 利用 for 迴圈,當 迴圈值= 7 的時候 就讓 1 輸出 =8的時候讓 0 輸出。

關於51微控制器跑馬燈的**,為什麼我這樣寫所有led是一直亮著的

4樓:

去掉while(1);這個語句後面的分號。

51微控制器設計跑馬燈的程式用(c語言)編寫

5樓:墨汁諾

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

#include

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

void main(void)

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

6樓:

這個簡單,不要提問啊。你讓一個p0=0x01;然後再移的思路去想就能實現。不要什麼都要問啊。

7樓:匿名使用者

p1口接8個發光二極體共陽,燒入下面程式

#include

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

void main(void)

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

8樓:匿名使用者

用中斷多美。。

另外樓上那個include要自己調一下

51微控制器跑馬燈程式

9樓:

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

org 00h

sjmp start

org 30h

start:

mov a ,#00

setb c

mov r0,#9

;從左到右

loop1:

rlc a

mov p1, a

acall delay

djnz r0, loop1

;從右到左

mov r0,#9

loop2:

rrc a

mov p1, a

acall delay

djnz r0, loop2

sjmp start

delay:

mov r6,#20

delay_0:mov r5,#255

djnz r5,$

djnz r6,delay_0

retend

這個程式比較簡單了。再精簡,只能精簡一句,將mov p1,a 放在delay函式裡。這樣減少一行。

簡單介紹一下:

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

rg 00h

sjmp start

org 30h

start:

mov a ,#00 ;//清空a暫存器

setb c     ;//將cy置1,然後帶進位左移就會進入將a的b0

mainloop: ;//大迴圈起始

mov r0,#9 ;設定移位次數,要滅一次,所以設定為9

;從左到右

loop1:

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

mov p1, a ;將a中值放入p1點亮對應led;該句可放在delay裡,然後從右到左也去掉該句

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

djnz r0, loop1 ;迴圈,點亮下一個燈,最後一次,a為0,將全滅一次,cy為1

;從右到左

mov r0,#9 ;設定迴圈次數

loop2:    ;迴圈起始表示

rrc a     ;帶進位右移,第一次結果為80h

mov p1, a ;更新p1點亮對應led

acall delay ;延時,保持燈亮一段時間

djnz r0, loop2 ;迴圈,點亮下一個燈

sjmp mainloop  ;迴圈,重新開始下一輪

如果你是管腳輸出低led才亮,只需將mov a ,#00 和setb c改為mov a, #0ffh和clr c即可。

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

org 00h

sjmp start

org 30h

start:

mov a ,#00

setb c

mov r0,#9

clr 00h

loop1:

rlled:

jb 00h, rrled

rlc a

ajmp disp

rrled:

rrc a

disp:

mov p1, a

acall delay

djnz r0, loop1

cpl 00h

ajmp start

delay:

mov r6,#20

delay_0:mov r5,#255

djnz r5,$

djnz r6,delay_0

retend

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

10樓:

org 00h

sjmp main

org 30h

main:

mov r7,#8

mov r0,#00h

loop:

mov dptr,#100h

mov a,r0

movc a,@a+dptr

mov p1,a

acall delay

inc r0

djnz r7,loop

mov r0,#00h

mov r7,#8

loop_0:mov dptr,#200hmov a,r0

movc a,@a+dptr

mov p1,a

acall delay

inc r0

djnz r7,loop_0

sjmp main

delay:mov r6,#20

delay_0:mov r5,#255

djnz r5,$

djnz r6,delay_0

retorg 100h

db 根據燈的實際連線狀態寫

org 200h

db 根據燈的實際連線狀態寫end

11樓:r傻強

迴圈以後

連續賦值就可以了!!

51微控制器 跑馬燈怎麼兩顆燈在中間亮起,往兩邊亮。在以下程式修改

12樓:匿名使用者

就改一下這一條 代替 第五條

uchar table=;

13樓:晴天小豬

51微控制器 跑馬燈怎麼兩顆燈在中間亮起,往兩邊亮。只有4種狀態吧!試試看~

#include

#include

#define uchar unsigned char#define uint unsigned intuchar table=;

void delay(uint time)}}void main()}}

微控制器中的流水燈,花樣燈,跑馬燈

等 到 你微控制器學到一定程度就理解了,這些燈只是按照自己的意思來亮,至於名稱都無所謂 估計樓上都沒看題目,花樣燈應該沒啥既定要求,流水燈和跑馬燈有區別,跑馬燈是一亮一滅,流水燈是實現一個流水的效果 流水燈和跑馬燈 圖源csdn 沒什麼實質的區別只是各人說法不一樣,像流水燈程式也有人叫跑馬燈,說個簡...

求大神幫忙,寫一份51微控制器,16位跑馬燈,p1口和p2口輸

程式思路,用中斷按鈕,改變flag的值,主程式里根據flag的值,執行三種亮燈模式之一 uint a if flag 0 方式1,單燈亮 if flag 1 方式2單燈滅 if flag 2 方式3 雙燈亮 專注51微控制器 led1 equ 30h led2 equ 31h org 0000h l...

關於51微控制器的中斷,關於51微控制器的中斷。

廣東人讀書好 中斷的概念 cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理 中斷髮生 cpu暫時中斷當前的工作,轉去處理事件b 中斷響應和中斷服務 待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a 中斷返回 這一過程稱為中斷 二 中斷源 在51微控制器中有5箇中斷...