導航:首頁 > 操作系統 > 51單片機流水燈課程設計

51單片機流水燈課程設計

發布時間:2022-05-07 06:55:25

Ⅰ c51單片機中如何用匯編語言編寫流水燈

51單片機用匯編語言編寫流水燈程序,就是控制多個LED
,使其在特定時間間隔內,只有一個LED
發光,其他熄滅,用這種方式順序移動點亮LED的位置,就形成了流水燈的效果。以下是程序:
;假設晶振12MHZ,P1控制8個LED低電平亮
;啟動入口========================
ORG
0000H
;復位啟動
AJMP
START
;
ORG
001BH
;T1中斷
AJMP
T1INT
;
;定義變數========================
YSJS
EQU
30H;延時計數器
LED
EQU
31H;LED控制緩沖器
;主程序==========================
START:
MOV
LED,#0FEH
;初始化數據
MOV
YSJS,#0
;
;
MOV
TMOD,#10H
;定時器1工作於方式1,16位定時器
MOV
TL1,#0B0H
;設置定時初值
MOV
TH1,#3CH
;定時時間=50mS
SETB
ET1
;使能定時器1中斷
SETB
TR1
;啟動定時器1
SETB
EA
;開總中斷
MOV
P1,LED
;初始化流水燈
;
LOOP:
JMP
LOOP
;循環等待中斷
;
;
T1INT:
PUSH
PSW
;定時器1中斷程序
PUSH
ACC
;保護現場
;
MOV
TH1,#3CH
;定時時間=50mS
MOV
TL1,#0B0H
;
INC
YSJS
;
PUSH
ACC
;保護ACC
MOV
A,YSJI
;
CJNE
A,#2,QT1
;50mS*2=100mS
MOV
P1,LED
;
MOV
A,LED
;
RL
A
;累加器A的值循環左移1位
MOV
LED,A
;
MOV
YSJS,#0
;
;
QT1:
POP
ACC
;恢復現場
POP
PSW
;
RETI
;返回主程序
END
;匯編程序結束

Ⅱ 51單片機設計流水燈

;電路圖在附件內,經模擬通過,不知能不能達到你的要求。
;想要您的分真難啊
;呵呵!
org 0000h
ajmp start
org 0030h
start:
mov a,#0ffh ;
clr c ;
mov r2,#08h ;循環八次。
loop: rlc a ;帶進位左移。
mov p1,a ;輸出到P1口。
call delay ;延時一段時間
djnz r2,loop ;反復循環
mov r2,#07h ;再往回循環。
loop1: rrc a ;帶進位右移
mov p1,a ;輸出到P1口。
call delay ;延時一段時間
djnz r2,loop1 ;反復循環
jmp start ;重新開始

delay: mov r3,#20 ;延時子程序
d1: mov r4,#20
d2: mov r5,#248
djnz r5,$
djnz r4,d2
djnz r3,d1
ret
end

Ⅲ 用51單片機編寫8盞流水燈程序,

ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVA,#0FEH
MOVR2,#8
LOOP:
MOVP0,A
LCALLDELAY
RLA
DJNZR2,LOOP
CPLA
LCALLDELAY
CPLA
LCALLDELAY
RLA
LCALLDELAY
CPLA
LCALLDELAY
MOVR2,#7
SJMPMAIN
END

Ⅳ 求基於51單片機的流水燈的設計

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit keya=P2^1;//這里看你把按鍵設置在哪個引腳上,這個是實現功能2
sbit keyb=P2^2;//這個是實現功能2
sbit keyc=P2^7;//實現功能3
void delay(uint z)
unit x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void key1()
{
if(keya==0)
{ uint x;
while(keyb)
{
P1=0xfe; //前一個燈亮
delay(1000);//1HZ
P1=P1<<1;//這里移動一位,也就是第二個燈亮,實現四種效果之一,一個一個燈輪流亮
}
if(keyb==0)
{ uint y;
P1=0xf0//前四個燈亮;
delay(1000);
P1=P1<<;//這里移動四位,即是前四個亮完後四個亮,如此循環,是第二種效果
}
}
void key2()
{
if(keyc==0)
{
P1=0xff;//使得燈全亮;
while(!keyc);//放開按鍵keyc後,此時keyc為1,程序不往下執行,所以只有再按下按鍵才能運行下面的程序
P1=0x00;//燈全滅
while(keya||keyb);//這里不能使用keyc了,如果使用keyc則在滅了之後又得按這個按鍵才能使全滅,這樣循環下去功能1就無法實現了
}
void main()
{
while(1)
{
key1();
key2();
}
}
你試一下吧,太晚了,沒時間幫你畫模擬和試程序

Ⅳ 單片機流水燈課程設計

ORG 0000H //存儲器起始地址
AJMP START //直接跳轉執行程序
ORG 0030H //用戶程序起始地址

START: MOV P0,#0FFH //熄滅所有LED燈
MOV A,#0FEH //傳遞數值設置P0.0亮
AAA: MOV P0,A //P0.0點亮
LCALL DELAY //跳轉到DELAY延時子程序
JNB P1.3,BBB //判斷P1.3是否為0,如果為0則跳轉到BBB標簽實現逆向跑馬燈
RL A //A寄存器的數值循環左移一位,即FE左移1位後是FD
AJMP AAA //直接跳轉到AAA標簽,即實現LED燈從P0.0向P0.7正向跑馬燈
BBB: MOV A,#7FH //傳遞數值設置P0.7亮
CCC: MOV P0,A //P0.7點亮
LCALL DELAY //跳轉到DELAY延時子程序
JNB P1.0,START //判斷P1.0是否為0,如果為0則跳轉到START標簽實現正向跑馬燈
RR A //A寄存器的數值循環右移一位,即7F右移1位後是BF
AJMP CCC //直接跳轉到CCC標簽,即實現LED燈從P0.7向P0.0逆向跑馬燈

DELAY: MOV R7,#250 //延時子程序第三層250*100*10次循環
DL1: MOV R6,#100 //延時子程序第二層100*10次循環
DL2: MOV R5,#10 //延時子程序第一10次循環
DJNZ R5,$ //R5減1,不為0則繼續減
DJNZ R6,DL2 //R6減1,不為0則轉到DL2標簽
DJNZ R7,DL1 //R7減1,不為0則轉到DL1標簽
RET //子程序返回(至於延時多長時間得看硬體決定)
//12Mhz C51的話,延時500毫秒多一點點[(250*100*10+2+2)*2微秒]
//DJNZ MOV RET都是雙周期指令
END //匯編結束標識

JNB P1.3,BBB //JNB就是判斷位,判斷P1.3位是否為0,如果為0則跳轉到後面BBB標簽對應的地址,否則執行下面一行指令。

JNB P1.0,START //判斷P1.0位是否為0,如果為0則跳轉到後面START標簽對應的地址,否則執行下面一行指令。

P1.3外接一個按鈕,按鈕按一下時執行逆向跑馬燈,P1.0同樣外接一個按鈕,按鈕按一下時執行正向跑馬燈。如果兩個按鈕都按下時就打架P0.0和P0.7輪流亮。

RL A //這個RL是循環左移位操作,就是把A寄存器裡面的數值二進制位左移一位再保存到A寄存器裡面。比如A=11111110B(0xFE)時,左移一位後A=11111101B(0xFD),再左移一位後變成A=11111011B(0xFB)。

Ⅵ 51單片機流水燈程序

程序如下:

#include <reg52.h>

sbit led1 = P2^0;

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3;

sbit led5 = P2^4;

sbit led6 = P2^5;

sbit led7 = P2^6;

sbit led8 = P2^7;


void main()

{

int i,j;

//點亮第一個燈

led1 = 1;

led2 = 0;

led3 = 0;

led4 = 0;

led5 = 0;

led6 = 0;

led7 = 0;

led8 = 0;

//延時1秒

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

{

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

{

;//什麼也不做

}

}

//點亮第二個燈

led1 = 0;

led2 = 1;

led3 = 0;

led4 = 0;

led5 = 0;

led6 = 0;

led7 = 0;

led8 = 0;

//點亮剩餘的燈

//省略……

while(1);

}

(6)51單片機流水燈課程設計擴展閱讀:

流水燈幾點說明:

void:因為該延時函數不需要返回值,所以寫為void

delay1s:該函數的函數名,命名需要符合C語言的標識符命名規則。

(): 不需要傳入參數,所以括弧中為空

至此我們可以把流水燈程序寫為以下形式:

Ⅶ 如何用單片機簡單製作一個流水燈

  1. 工具:STC系列51單片機、串口轉換器(USB轉TTL 或232轉TTL)

  2. 材料:實驗板一塊(可以買現成的,也可以買麵包板自己搭建),電阻、LED燈 若干,5V電源等。

  3. 以下程序可以直接用Keil C 直接編譯執行。

//可以通過左移函數_crol_()和右移函數_cror_()來實現LED等的來迴流動。


//具體實現方法可以參考如下程序:


#include<reg51.h>

#include<intrins.h>

#defineuintunsignedint

#defineucharunsignedchar

voiddelay(uinta);

voidmain()

{

P1=0xfe;

while(1)

{

//向左循環點亮LED

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

{

P1=_crol_(P1,1);//左移一位,點亮下一位LED

delay(55);

}

//向右循環點亮LED

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

{

P1=_cror_(P1,1);//右移一位,,點亮上一位LED

delay(55);

}

}

}

//延時函數,延時a毫秒

voiddelay(uinta)

{

uintx,y;

for(x=a;x>0;x--)

for(y=110;y>0;y--);

}

Ⅷ 很簡的51單片機C語言流水燈程序

1、51單片機C語言實現循環8個流水燈左移三次,後右移三次。
常式:
#include<reg51.h> //51單片機頭文件
#include <intrins.h> //包含有左右循環移位子函數的庫
#define uint unsigned int //宏定義
#define uchar unsigned char //宏定義
sbit beep=P2^3;
void delay(uint z) //延時函數,z的取值為這個函數的延時ms數,如delay(200);大約延時200ms.
{ //delay(500);大約延時500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函數
{
uchar a,i,j;
while(1) //大循環
{
a=0xfe; //賦初值
for(j=0;j<3;j++) for(i=0;i<8;i++) //左移三次
{
P1=a; //點亮小燈
beep=0; //開啟蜂鳴器
delay(50); //延時50毫秒
beep=1; //關閉蜂鳴器
delay(50); //再延時50毫秒
a=_crol_(a,1); //將a變數循環左移一位
}
a=0x7f;
for(j=0;j<3;j++) for(i=0;i<8;i++) //右移三次
{
P1=a; //點亮小燈
beep=0; //開啟蜂鳴器
delay(50); //延時50毫秒
beep=1; //關閉蜂鳴器
delay(50); //再延時50毫秒
a=_cror_(a,1); //將a變數循環右移一位
}
}
}
2、51單片機是對所有兼容Intel
8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash
rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。

Ⅸ 51單片機流水燈5v怎麼畫

1、首先要設計電路圖,利用proteus軟體進行電路圖的設計。所需元器件:AT89C51單片機1個。LED-RED8個。電源VCC1個。
2、使用keil4軟體進行流水燈程序的編輯。
3、方法一編寫程序採用的是左移函數(_crol_(a,b))和右移函數(_cror_(a,b))的方法,需在前加上頭文件#include。方法二是一個比較笨的方法,需要計算出每個燈亮的位編碼。
4、總結:單片機流水燈的設計分為兩個步驟,第一步是原理圖的繪制;第二步是keil4流水燈控製程序的編寫。在寫程序的時候最好使用第一種方法,採用位移函數來進行流水燈的設計。

閱讀全文

與51單片機流水燈課程設計相關的資料

熱點內容
公路商店app標簽選什麼 瀏覽:337
linuxoracle命令行登錄 瀏覽:224
android深度休眠 瀏覽:169
php微信開發例子 瀏覽:843
醫得app登錄密碼是什麼 瀏覽:140
spring開發伺服器地址 瀏覽:411
伺服器上如何查看伺服器的埠 瀏覽:678
單片機伺服器編譯 瀏覽:770
單口usb列印機伺服器是什麼 瀏覽:859
戰地五開伺服器要什麼條件 瀏覽:956
在word中壓縮圖片大小 瀏覽:255
javatomcat圖片 瀏覽:419
程序員生產智能創意 瀏覽:67
匯和銀行app怎麼登錄 瀏覽:383
騰訊伺服器如何上傳源碼 瀏覽:749
單片機的原理概述 瀏覽:512
火控pdf 瀏覽:270
如何復制雲伺服器centos環境 瀏覽:988
債權pdf 瀏覽:307
紅色番字的app怎麼下載 瀏覽:877