當前位置:首頁 » 編程軟體 » 單片機編程跑馬燈

單片機編程跑馬燈

發布時間: 2022-02-09 07:10:01

① 單片機用c編一個跑馬燈程序

原理圖發給我一下

我做單片機設計的

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

③ 單片機跑馬燈如何編程

如果是一個位元組型的數據控制LED燈的話,且是1控制LED燈滅,0控制燈亮。
從滅到亮,先是0xFF,然後開始左移,最終移到0x00,就是全亮了。
從亮到滅,先是0x00,然後左移並且加1,重復此工作就是0xFF了
按照上面的思想,你自己應該可以搞定的。

④ c51編程 四個燈跑馬燈

0xfe 這是十六進制的表示方法


換成二進制則為:1111 1110 ,剛好與單片機的8個埠一一對應


初值設為0xfe即1111 1110,就是只點亮0號埠


高位在前,低位在後,排列順序是 7 6 5 4 3 2 1 0


因為單片機的埠是0有效,即埠為0,所以發光二級管點亮


至於如何換算,你可以使用系統自帶的計算器進行換算


計算器的使用方法是,點擊查看,再選擇科學型即可,就會看到幾種進制格式,可以互相轉換的


還有就是弄一個速查表,方便,如下圖


⑤ 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)單片機編程跑馬燈擴展閱讀:

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

⑥ 單片機跑馬燈程序

/*12M晶振*/
#include<reg52.h>
#include
<intrins.h>
int
a,temp;
void
intser()
interrupt
1
using
0
//定時20MS
{
TH0=-20000/256;
TL0=-20000%256;
a++;
}
void
main()
{
EA=1;
ET0=1;
TMOD=0X01;
TH0=-20000/256;
TL0=-20000%256;
TR0=1;
temp=0xfe;
while(1)
{
if(a==50)
//判斷是否到了1秒,20MS*50
{
temp=_crol_(temp,1);
//左移一位,_cror_
右移
P0=temp;
a=0;
}
}
}

⑦ 單片機 跑馬燈 代碼詳解

ORG
0000H
;開機上電主程序入口
AJMP
START
;系統一進來就轉到主程序
ORG
0030H
;主程序地址
START:
MOV
A,
#0FFH
;主程序開始,A中初始化成全1
CLR
C
;c清零
MOV
R2,
#08H
;R2左轉循環計數器
LOOP:
RLC
A
<<C+A+C<<帶進位循環左移,A中的內容在8此循環中從0位到7位依次變0
MOV
P2,
A
;送到P2,使P2從0位到7位依次點亮LED
CALL
DELAY
;單片機運行很快,為了能看到燈的變化,必須延遲,把速度降下來
DJNZ
R2,
LOOP
;R2每次減1後判斷是否=0,8次後=0程序才會下行,否則會跳回LOOP
MOV
R2,#07H
;R2右轉循環計數器
LOOP1:
RRC
A
>>C+A+C>>帶進位循環右移,A中的內容在8此循環中從7位到0位依次變0
MOV
P2,
A
;送到P2,使P2從7位到0位依次點亮LED
CALL
DELAY
;和上個循環一樣,延時
DJNZ
R2,
LOOP1
;R2每次減1後判斷是否=0,7次後=0程序才會下行,否則會跳回LOOP1
JMP
START
;跳回程序起始位置重復下一個循環
DELAY:
MOV
R3,
#20;延時子程序,這個應該不用解釋了吧
D1:
MOV
R4,
#200
D2:
MOV
R5,
#248
DJNZ
R5,
$
DJNZ
R4,
D2
RET
END

⑧ 求單片機跑馬燈c語言程序!

/*****************************************
*用P1口接LED
*****************************************/
#include<at89x52.h> //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;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;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++);
}

⑨ 單片機,用c語言寫跑馬燈程序,

/*****************************************
*用P1口接LED
*****************************************/
#include<at89x52.h> //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;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;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++);
}

⑩ 單片機中的跑馬燈程序是實現什麼功能

其實你說的也不無道理,單片機就是一些io操作,你會了流水燈說明你已經入了些門,其實硬體注重的是經驗積累,你做的硬體程序多了後你就會有新的感悟,程序是永遠也不能完全做完的,只有不斷的做,不斷的發現新問題你才會學好單片機!鄙人拙見,僅供參考!

熱點內容
編程式控制制小船 發布:2025-01-11 05:35:05 瀏覽:756
螢石雲清理緩存 發布:2025-01-11 05:34:29 瀏覽:779
怎麼在電腦上傳照片 發布:2025-01-11 05:30:20 瀏覽:487
python3哪個版本好 發布:2025-01-11 05:07:29 瀏覽:864
手機怎麼訪問外網 發布:2025-01-11 05:07:27 瀏覽:532
財務信息伺服器搭建 發布:2025-01-11 04:48:09 瀏覽:875
演算法實現過程 發布:2025-01-11 04:43:45 瀏覽:457
瞄準下載ftp 發布:2025-01-11 04:43:44 瀏覽:573
校園電影腳本 發布:2025-01-11 04:32:08 瀏覽:437
現在手機配置最高是什麼 發布:2025-01-11 04:30:37 瀏覽:549