導航:首頁 > 操作系統 > 單片機for語句控制流水燈

單片機for語句控制流水燈

發布時間:2025-06-19 02:05:46

單片機流水燈C語言程序(8個燈,依次點亮每個燈,延時500MS)

單片機流水燈C語言程序的源代碼如下:

#include //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(100); //調用延時函數

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++) //8個流水燈反向逐個閃動

{

P1=~temp;

delay(100); //調用延時函數

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++) //8個流水燈依次全部點亮

{

P1=temp;

delay(100); //調用延時函數

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++) //8個流水燈依次反向全部點亮

{

P1=temp;

delay(100); //調用延時函數

temp>>=1;

}

void delay(uint t) //定義延時函數

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

(1)單片機for語句控制流水燈擴展閱讀

51單片機流水燈的源代碼如下

#include<reg51.h>

#include<intrins.h>

voiddelay(inta)

{

inti;

while(a--)for(i=0;i<110;i++);

}

main()

{

inti;

while(1)

{

P0=0xfe;

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

{

P0=_crol_(P0,1);

delay(500);

}

}

}

Ⅱ keil軟體用單片機控制8個LED流水燈來回點亮(C語言程序)

#include "reg51.h"
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //點亮第一個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfd; //點亮第二個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfb; //點亮第三個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xf7; //點亮第四個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xef; //點亮第五個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xdf; //點亮第六個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xbf; //點亮第七個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0x7f; //點亮第八個LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
}
}

或:
#include "reg51.h"
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i<8;i++)
{
P1=w; //循環點亮LED
w<<=1; //點亮燈的位置移動,最低位補0
w=w|0x01; //將最低位置1
delay(500); //延時
}
}
}

或:
#include "reg51.h"
//程序中使用_crol_函數,所以要包含頭文件"intrins.h"
#include "intrins.h"
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延時
temp=_crol_(temp,1); //點亮LED的位置循環左移一位
}
}

Ⅲ 用兩組I/O口控制16個流水燈的C51程序

在使用C51進行編程時,通過數組定義可以簡化控制多個LED燈的操作。比如定義一個包含16個LED狀態的數組,如下所示:

uchar led[]={0xfe,0xfd,0xfb,0x07,0x0f,0x1f,0x3f,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

接著使用for循環將數組中的值依次賦給P0口,代碼如下:

for(i=0;i<8;i++) {
P0=led[i];
delayms(1000)
}

這種方式適用於控制較少數量的LED燈。如果需要直接賦值,代碼會稍顯復雜,每次重新賦值P0都需要加入延時。

另外,還有一種更為簡潔的程序實現方式,如下:

#include //包含單片機寄存器的頭文件

void delay(void) {
unsigned int n;
for(n=0;n<30000;n++) ;
}

void main(void) {
unsigned char i;
while(1) {
P1=0xff;
delay();
for(i=0;i<8;i++)//設置循環次數為8 {
P1=P1>>1; //每次循環P1的各二進位右移1位,高位補0
delay(); //調用延時函數
}}
}

此程序通過循環右移P1的值來實現LED燈的流水效果,同時加入延時函數以控制閃爍速度。

該程序利用了位操作的特性,使得LED燈的控制更為靈活。通過不斷右移P1的值,可以實現流水燈的效果。每次循環時,P1的值會右移一位,高位補0,從而實現LED燈的依次點亮。

整個程序中,通過while(1)循環確保程序持續運行。每次循環時,P1的值右移一位,並調用延時函數以控制閃爍速度。這樣,就可以實現多個LED燈的流水效果。

這種編程方式簡潔明了,易於理解和維護,適用於控制多個LED燈的流水效果。通過不斷右移P1的值,可以實現LED燈的依次點亮,從而達到流水燈的效果。

Ⅳ C51單片機編程,按鍵控制流水燈

#include "reg51.h"
unsigned char led[]={0xfe,0xfd,0xfb,0xf7}; //LED燈的花樣數據
void delay(unsigned char time){ //延時函數
unsigned int j=15000;
for(;time>0;time--)
for(;j>0;j--);
}
void main(){
bit dir=0,run=0; //標志位定義及初始化
char i;
while(1){
switch (P0 & 0x0f){ //讀取鍵值
case 0x0e:run=1;break; //K1動作,設run=1
case 0x0d:run=0,dir=0;break; // K2動作,設run=dir=0
case 0x0b:dir=1;break; //K3動作,設dir=1
case 0x07:dir=0;break; //K4動作,設dir=0
}
if (run) //若run=dir=1,自上而下流動
if(dir)
for(i=0;i<=3;i++){
P2=led[i];
delay(200);
}
else
for(i=3;i>=0;i--){ //run=1,dir=0,自下而上流動
P2=led[i];
delay(200);
}
else P2=0xff; //若run=0,全部燈滅
}
}

Ⅳ 單片機流水燈程序

單片機流水燈程序答案


下面是一個基於單片機的流水燈程序示例。


詳細解釋


1. 程序概述


此程序用於控制單片機連接的LED燈,實現流水燈效果。即LED燈會依次亮起,形成一個流動的燈光效果。


2. 程序邏輯


* 初始化:設置單片機埠的方向為輸出,並初始化所有LED燈為熄滅狀態。


* 主循環:在單片機的主循環中,逐個控制埠位,使每個LED燈依次亮起。通過延時函數控制每個燈亮的時間,形成流水燈效果。


* 延時函數:為了控制LED燈的亮起和熄滅速度,需要加入延時函數。這個延時函數可以根據需要進行調整,以達到最佳效果。


3. 代碼實現


c


#include <單片機頭文件.h> // 根據實際單片機型號替換頭文件


void delay; // 延時函數聲明


void main {


P1 = 0x00; // 初始化埠,所有LED燈熄滅


while { // 主循環


for { // 控制8個LED燈


P1 = ~; // 依次點亮LED燈


delay; // 延時函數,控制點亮時間


}


}


}


void delay { // 簡單的延時函數實現


unsigned int j;


for;


}


注意:以上代碼僅為示例,實際應用中需要根據單片機的具體型號和硬體連接情況進行調整。單片機的編程語言和具體語法也會因型號不同而有所差異。此外,延時函數的實現也可能更為復雜,這里為了簡單明了而採用了一個基礎的實現方式。在實際應用中,可能還需要考慮其他因素,如中斷、外部觸發等。請根據具體需求進行編程和調試。

閱讀全文

與單片機for語句控制流水燈相關的資料

熱點內容
廣告屏要怎麼連接伺服器 瀏覽:328
java的gui是什麼 瀏覽:595
為什麼大家都買雲伺服器 瀏覽:662
shell命令循環執行 瀏覽:531
交易加密貨幣一年後學到什麼 瀏覽:319
深圳中國第一程序員 瀏覽:572
corosapp怎麼安裝蘋果電腦 瀏覽:44
加密串解密串流程 瀏覽:976
linux虛擬機ip地址設置 瀏覽:962
王者榮耀從安卓改成ios要什麼要求 瀏覽:187
太極pdf迅雷下載 瀏覽:457
中國移動app上怎麼開具公司發票 瀏覽:911
mfc編程語言 瀏覽:877
查看埠命令linux系統 瀏覽:445
我的世界獲得1000經驗的命令 瀏覽:712
app怎麼設置靜態主題 瀏覽:242
手工製作兒童文件夾 瀏覽:974
掛售商城app怎麼開發 瀏覽:305
停車app開發怎麼收費 瀏覽:652
三星手機為什麼不能讀加密優盤 瀏覽:238