利用80C51芯片和32顆LED燈,設(shè)計(jì)一個(gè)心形流水燈,設(shè)計(jì)功能要求如下:
1. 心形流水燈從P0.7口接的燈(即A7燈)亮開始右移一位,直到移到P0.0口(即A0燈),然后A0—A7燈全滅;
2. A0—A7燈全滅后,P1.0口接的燈(即B0燈)亮開始左移一位,直到移到P1.7口(即B7燈),然后B0—B7燈全滅;
3. B0—B7燈全滅后,P3.0口接的燈(即D0燈)亮開始左移一位,直到移到P3.7口(即D7燈),然后D0—D7燈全滅;
4. D0—D7燈全滅后,P2.0口接的燈(即C0燈)亮開始左移一位,直到移到P2.7口(即C7燈),然后C0—C7燈全滅;
5. 32顆燈循環(huán)一周后,要求所有的燈全滅,然后再全亮(即為閃爍一次),所有燈閃爍三次后,重復(fù)上面1-4的內(nèi)容。
uchar time=0,mode=0,flag=0,cishu=0;
void main() //主函數(shù)
{
TMOD=1;//初始化定時(shí)器
TH0=0X3C;
TL0=0XB0;
ET0=1;
EA=1;
TR0=1;
while(1)
{
}
}
void timer0() interrupt 1//定時(shí)器中斷
{
if(time<6)
time++;
else
{
time=0;
if(mode==0)//P0
{
P0=~(0x80>>flag);
if(flag<8)
flag++;
else
{
flag=0;
mode=1;
P0=0XFF;
}
}
if(mode==1)//P1
{
P1=~(1<<flag);
if(flag<8)
flag++;
else
{
flag=0;
mode=2;
P1=0XFF;
}
}
if(mode==2)//P3
{
P3=~(1<<flag);
if(flag<8)
flag++;
else
{
flag=0;
mode=3;
P3=0XFF;
}
}
if(mode==3)//P2
{
P2=~(1<<flag);
if(flag<8)
flag++;
else
{
flag=0;
mode=4;
P2=0XFF;
}
}
//閃爍
if(mode==4)
{
if(flag==0)
{
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
if(cishu<3)
cishu
資料借鑒于此紛傳
閱讀全文