導航:首頁 > 操作系統 > 單片機右移流水燈

單片機右移流水燈

發布時間:2025-01-01 01:15:51

A. 單片機左右來迴流水燈程序,兩個兩個的燈亮能用keil生成.hex文件。

自己現成想的匯編的要不要啊哈哈
MOV A,#0011111
LOOP:
MOV P0,A
CALL DELAY
RR A
JMP LOOP
DELAY: ;延時程序
MOV R3,#20
D1:MOV R4,#20
D2:R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R2,D1
RET

這只是2個燈右移程序,如果達到你想要的效果還有計數8次然後進入計數左移動8次,懂基本原理什麼都好辦哎!糾結!!!!!!!!!

B. 51單片機左右循環移動的流水燈功能,求解答每一句具體含義!

#include<reg52.h>//頭文件包含,包括51硬體寄存器的宏定義,延時函數等
#define uchar unsigned char//宏定義,uchar被定義成unsigned char的簡寫
#define uint unsigned int//同上,uint被定義成unsigned int 的簡寫

#define DataPort P0//dataport(數據埠)被定為成P0口
sbit P21=P2^0;sbit是設置埠的某一位為一個變數,這樣就可以直接對變數進行操作(等價於對埠該位的操作),如sbit led1=P1^1;如果P1^1接的是led的話,led1=1;就可以使led燈點亮了!
uchar code ScanCode[ ]=
{0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
code表示讓單片機把這個定義的ScanCode的值存在ROM(程序存儲區)
定義一個無符號的字元型變數數組ScanCode,其值存放在程序存儲區,寫入之後不可更改
void DelayMs(uint n)//毫秒延時函數,通過設置循環次數,來設定時間
{
uchar j;
while(n--)//直到n減為0退出循環
{
for(j=0;j<113;j++);空循環114次,即延時114個指令周期
}
}
void main(void)主函數
{
uchar i;
P21=1;p2口第1位引腳置高電平
while(1)無限循環
{
for(i=0;i<8;i++)以下大括弧中兩句代碼循環8次,即將ScanCode數組中8位元組數據依次送到p0口
{
DataPort=ScanCode[i];向數據口(即p0口)送數據,數據為ScanCode數組中第i個元素
DelayMs(500);延時500毫秒
}
for(i=0;i<8;i++)同上,將scancode數字的8位元組數據按相反順序再送一次
{
DataPort=ScanCode[7-i];
DelayMs(500);
}
}
}

C. 關於流水燈左移和右移的程序問題

LED燈右移到最右邊後向左移時是這樣的:右移一位→第二個延時程序→第一個延時程序→右移右移一位→第二個延時程序→第一個延時程序,這樣不斷循環,循環到最左邊,就開始了右移的程序。
這樣左移的延遲大一點的!

D. 如何實現51單片機的按鍵k1按下,LED流水燈向右移動,按鍵k2被按下,LED流水燈向左移動

51單片機實現方法:

按鍵控制標志位flag取反。

然後把下面的代碼放到循環里:

U8 temp0 = 1。

U8 temp1 = 0x80。

U8 i = 0。

if(flag == 1)。

{。

for(i=0;i<8;i++)。

{。

P1=temp0<<i。

}。

}。

else。

{。

for(i=0;i<8;i++)。

{。

P1=temp1>>i。

}。

}。

}。

對控制LED口的寄存器進行位操作,按k1左移,按K2就是右移了。

51單片機是對兼容英特爾8051指令系統的單片機的統稱。51單片機廣泛應用於家用電器、汽車、工業測控、通信設備中。因為51單片機的指令系統、內部結構相對簡單,所以國內許多高校用其進行單片機入門教學。

51單片機的特點:

同樣的一段程序,在各個單片機廠家的硬體上運行的結果都是一樣的,如ATMEL的89C51(已經停產)、89S51,PHILIPS,和WINBOND等,我們常說的已經停產的89C51指的是ATMEL公司的AT89C51單片機。

同時是在原基礎上增強了許多特性,如時鍾,更優秀的是由Flash(程序存儲器的內容至少可以改寫1000次)存儲器取代了原來的ROM(一次性寫入),AT89C51的性能相對於8051已經算是非常優越的了。


E. 單片機流水燈設計,使八個led燈右移

#include <AT89X52.h> //調用51單片機的頭文件


void main(void) //主函數,單片機開機後就是從這個函數開始運行

{


unsigned int a; //定義一個int型變數,做延時用

P0=0;

while(1) //死循環,單片機初始化後,將一直運行這個死循環

{

for(a=0;a<20000;a++); //延時若干時間,具體時長暫不理會

if(P0==0)

P0=0x01;

else

P0=P0<<1; //將PO左移

}

}

F. 怎麼控制51系列單片機流水燈先左移再右移最好有分析

#include<reg52.h>
#include <intrins.h> 頭文件
#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) 0.5秒時間到
{
b=0; 清0
P1=a; P1口賦值 0XFE 二進制11111110 也就是第一盞亮其他滅
a=_crol_(a,1); 庫函數實現循環
P1=a; 把循環後的值重新付給P1口
}
}
以上只是單方向的循環 還缺少延時函數 加在賦值後面
雙向循環 可以用左移右移指令
賦值 P1口 A=A<<1 循環左移一位 A=A>>1 循環右移一位

G. 請問52單片機中流水燈實現左移,全亮,右移,兩邊向中間亮要怎麼寫程序啊,最好有-crol-的程序,謝謝啦

;左移
LOOP1:
MOV R7,#8
MOV A ,#01
RL A

MOV P1,A
CALL DELAY
DJNZ R7,LOOP1
;全亮
MOV P1,#0FFH

CALL DELAY
;右移
LOOP2:
MOV R7,#8
MOV A ,#01
RR A
MOV P1,A
CALL DELAY
DJNZ R7,LOOP2
;不想寫了

H. 51單片機的c語言 左移右移怎麼用想用來控制流水燈,請幫忙寫個完整的c程序,參考下,埠隨意

# include "reg51.h" // 包含頭文件
#define uchar unsigned char
void delay02s(void) // 延時0.2s子程序
{
unsigned char i,j,k;
for ( i=2;i>0;i-- )
for (j=200;j>0;j-- )
for (k=250;k>0;k-- );
}

void main (void) // 主函數
{
uchar i,j;
while (1) // 死循環
{
j=0x01; // j初始化為0x01,左移初始值
for(i=0;i<8;i++) // for循環語句,完成8個循環
{
P1= ~ j; // 對變數j 中的值按位取反後,從P1口輸出
delay02s( ); // 延時0.2s
j= j<<1; // 左移1位
}
j=0x80; // 設置右移初始值j為0x80
for (i=0;i<8;i++)
{
P1= ~ j;
delay02s( );
j= j>>1; // 右移1位
}
}
}

閱讀全文

與單片機右移流水燈相關的資料

熱點內容
北漂程序員拚命投資 瀏覽:837
獨立伺服器如何設置多個網頁 瀏覽:845
android圖庫代碼 瀏覽:335
無線網連接不了伺服器怎麼回事 瀏覽:345
linux數組賦值 瀏覽:324
mysql表索引命令 瀏覽:221
加丁伺服器如何 瀏覽:487
小公司程序員可以做多久 瀏覽:226
戴眼鏡程序員網紅 瀏覽:477
java的源文件的路徑 瀏覽:674
esir固件編譯 瀏覽:12
崩壞3流血演算法 瀏覽:86
id導出的pdf打不開 瀏覽:870
生產環境安裝gcc編譯器 瀏覽:286
女程序員40歲 瀏覽:611
油田加密井口 瀏覽:197
郵政app如何開通轉賬 瀏覽:252
公鑰與私鑰混合圖像加密體制 瀏覽:272
單片機IARCC2530 瀏覽:130
程序員入編制要求 瀏覽:984