Ⅰ 單片機流水燈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)8個燈順序亮的c語言擴展閱讀
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);
}
}
}
Ⅱ 類似流水燈程序,c語言編程,一共8個燈
我不知道你的點燈和滅燈函數是什麼,所以隨便取了一個,思路大概就是這樣
void
main()
{
int
pull[8]={0};
int
push[8]={1,2,3,4,5,6,7,8};
int
flag=0;
int
i=0;
while(1)
{
if(flag==0)
{
for(i=0;i<8;i++)
{
pull[i]=push[i];
push[i]=0;
light(pull[i]);//點亮pull[i]數組裡面存放的燈一秒
turn(pull[i]);//滅pull[i]數組裡面存放的燈一秒
}
flag=1;
}
else
{
for(i=0;i<8;i++)
{
push[i]=pull[i];
pull[i]=0;
light(push[i]);//點亮push[i]數組裡面存放的燈一秒
turn(push[i]);//滅push[i]數組裡面存放的燈一秒
}
flag=0;
}
}
}
Ⅲ 單片機C語言,將8個燈依次點亮(被點亮的繼續亮),然後再依次熄滅,(在沒有熄滅完時熄滅的保持滅)
其次,我建議還是自己嘗試寫一寫,這個不難,我給你個思路
首先定義變數類似於P1_2 = P1^2這種,先把這八個管腳全部定義好,之後給個for循環,讓P1(假設的你LED燈連接的是P1口)口的P1^0~P1^7相關標志位依次等於0或者1(0還是1需要看你在LED等上給的是高電位亮還是低電位亮),之後再給個for循環,五次的循環,全部P1口置為1(假設高電平LED亮),之後設置P1口全為1,再讓P1口的相關標志位置為0,再置為0的時候可以加個延時
Ⅳ 控制8個LED燈,完成從左到右依次點亮,然後從右到左依次熄滅,魂環10次後完成全部閃爍。C語言代碼
#include<reg51.h>
#defineucharunsignedchar
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchari,j,led;
for(i=0;i<10;i++)
{
led=0xfe;
for(j=0;i<8;i++)
{
P0=led;
led=led<<1;
delay(200);
}
led=0x80;
for(j=0;i<8;i++)
{
P0=led;
led=(led>>1)|0x80;
delay(200);
}
}
P0=0xff;
while(1);
}