㈠ 利用單片機控制8個發光二極體,設計8個燈同時閃爍的控製程序
方法:
1:設定一個變數i,可以從0到3循環的變化
2:檢測一個經過消抖處理的按鍵,按一下,i+1
3:當i值為各個值時,執行相應的花樣。
流水燈參考程序
#include
#include
#define uchar unsigned char
uchar j,temp;
void delay(unsigned int ms)
{
uchar t;
while(ms--)
for(t=0;t<123;t++);
}
void main()
{
P1=0xff;
delay(500);
temp=0xfe; //有點怪,led接在P2.3~P2.6
for(j=0;j<4;j++)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
P1=0xff;
while(1);
}
㈡ 求單片機設計8個led燈同時閃爍的程序,
請設計一個8個led同時全部閃爍的程序
#include <reg51.h>
main ()
{int i;
while (1)
{for (i=0;i<=30000;i++);
P1=~P1;
}
}
㈢ 單片機考試,亮燈:8個燈依次按學號後八位閃爍,每位數字是什麼就閃爍多少次,如為0則不亮。循環。
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
uchart;
ucharcodenum[]={9,1,2,0,2,1,2,1};
ucharcodeledp[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//預定的寫入P0的值
uchara=0,b=0;
voiddelay(uintz)
{
uintx,y;
for(x=0;x<z;x++)
for(y=0;y<255;y++);
}
voidmain(void)
{
ucharj=0,k;
while(1)
{
for(k=0;k<num[j];k++)//取數組num[]的數字,也就是燈閃幾下的數字
{
P0=ledp[j]; //向p0口送值,也就是那個燈亮
delay(200);
P0=0xff; //將燈全滅
delay(200);
}
j++;//j加一,也就是在while循環中,for語句中j改變,
if(j==8)
{j=0;}
}
}
㈣ 利用單片機控制8個發光二極體,實現8個燈同時閃爍的控製程序
以51位例,使用P1的八個IO口控制。
先定義:
sbit
LED0=P1^0;
sbit
LED1=P1^1;
........
以此類推,定義八個。
然後在主循環中:
LED0=0;
延時一段時間;
LED0=1;
就可以看到閃爍了。
㈤ 單片機用MOV,DJNZ,CLE,等寫8個LED燈按順序閃的程序怎樣寫呢還有每步的解釋~~謝謝~~
MOVLW 0X00
MOVWF TRISB;將portb設為輸出狀態
MOVLW B'1000000'
LOOP:
MOVWF DATA1
MOVWF PORTB;點亮第一個燈
CALL DELAY;調延時,這樣能看到燈亮的效果
BCF DATA1,C;使進位c為0
RRF DATA1,F;循環右移
GOTO LOOP;繼續執行
這樣就可以到達你要的效果。如果你想控制亮燈的次數也可以加個終止條件,如:
你想8個燈順序閃10下,那麼
movlw d『10』
movwf count
decfsz count,f
goto loop
end
如果有不對的地方,你再自己改下,反正大概的流程就這樣
㈥ 單片機控制8個燈依次亮,全亮了,再依次滅的c語言流程圖,順便加上解釋,不然看不懂
1、創建項目,如圖所示。
㈦ 單片機流水燈八個燈依次點亮,然後一起閃爍的程序代碼
一般是系統故障了
建議前往官方售後檢測維修一下
㈧ 8個LED指示燈循環閃爍的程序(單片機)
1:設置一個變數i,它可以從0循環到3
2:檢測一個已取消緩沖的鍵。按「+1」
3:當I值為每個值時,執行相應的模式。
水量燈參考程序
#include
#include
#定義uchar無符號字元
Ucharj,溫度;
無效延遲(無符號整型ms)
{
Uchart;
(女士)
對於(t = 0;T < 123;T + +);
}
Voidmain()
{
P1=0XFF;
延遲(500);
Temp=0xfe;//奇怪,led連接在P2.3~P2.6
對於(j = 0;J < 4;J + +)
{
P1=temp;
延遲(500);
Temp=_crol_(Temp,1);
}
P1=0XFF;
(1);
}
(8)單片機8個燈依次閃爍鳴叫擴展閱讀:
注意事項:
#include「reg52。這個文件為單片機定義了一些特殊的功能寄存器
Typedef無符號int在16以下;//以聲明的方式定義數據類型
無符號charu8;
//LED燈
Sbitleda=P0;
Sbitled1=P0^0;
Sbitled2=P0^1;
Sbitled3=P0^2;
Sbitled4=P0^3;
Sbitled5=P0^4;
Sbitled6=P0^5;
Sbitled7=P0^6;
Sbitled8=P0^7;
無效延遲(16歲以下)
{
,(我);
}
Voidmain()
{
而(1)
{
勒達=1;//所有的燈都亮著
//從左到右熄滅
Led1=0;
延遲(50000);//延遲時間約為450毫秒
Led2=0;
延遲(50000);//延遲時間約為450毫秒
Led3=0;
延遲(50000);//延遲時間約為450毫秒
Led4=0;
延遲(50000);//延遲時間約為450毫秒
Led5=0;
延遲(50000);//延遲時間約為450毫秒
Led6=0;
延遲(50000);//延遲時間約為450毫秒
Led7=0;
延遲(50000);//延遲時間約為450毫秒
Led8=0;
延遲(100000);//延遲大約900毫秒
//從右到左照明
Led8=1;
延遲(50000);//延遲時間約為450毫秒
Led7=1;
延遲(50000);//延遲時間約為450毫秒
Led6=1;
延遲(50000);//延遲時間約為450毫秒
Led5=1;
延遲(50000);//延遲時間約為450毫秒
Led4=1;
延遲(50000);//延遲時間約為450毫秒
Led3=1;
延遲(50000);//延遲時間約為450毫秒
Led2=1;
延遲(50000);//延遲時間約為450毫秒
Led1=1;
延遲(50000);//延遲時間約為450毫秒
勒達=1;//所有的燈都亮著
}
}
㈨ 單片機C51編程,要求實現8盞LED燈的閃爍,這樣寫可以實現嗎渣渣求助大佬,謝謝啦
主程序應該有兩個延時,而且還要有主循環語句,否則只執行一遍。
void main()
{
while(1)
{
P1=0xff;
delay(500);
P1=0x00;
delay(500);
}
}
這個效果是8個燈,同時亮,同時滅的。
㈩ 單片機流水燈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++);
}
(10)單片機8個燈依次閃爍鳴叫擴展閱讀
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);
}
}
}