单片机心型流水灯程序.docx
《单片机心型流水灯程序.docx》由会员分享,可在线阅读,更多相关《单片机心型流水灯程序.docx(35页珍藏版)》请在冰豆网上搜索。
![单片机心型流水灯程序.docx](https://file1.bdocx.com/fileroot1/2022-12/6/2828c0f5-d696-48ec-8ec6-4fb75a24de6c/2828c0f5-d696-48ec-8ec6-4fb75a24de6c1.gif)
单片机心型流水灯程序
单片机心型流水灯程序(总26页)
#include<>
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED从低位往高位移
ucharcodetable1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED从高位往低位移
ucharcodetable2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//LED从1个亮到8个都点亮(从低位往高位)
ucharcodetable3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//LED从1个亮到8个都点亮(从高位往低位)
ucharcodetable4[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//LED从8个全亮到一个都不亮(从低位往高位)
ucharcodetable5[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//LED从8个全亮到一个都不亮(从高位往低位)
ucharcodetable6[]={0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e};//LED从低位往高位移(最低位始终为0)
ucharcodetable7[]={0x7f,0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e};//LED从高位往低位移(最高位始终为0)
uchari,j;//定义循环变量
uinttt=70;//定义时间指数
voiddelay(uinttime)//延时函数
{
uintx,y;
for(x=time;x>0;x--)
for(y=110;y>0;y--);
}
voiddisp0()//状态0所有LED闪烁3次
{
for(i=0;i<3;i++)
{
P0=0x00;P2=0x00;P3=0x00;P1=0x00;
delay(300);
P0=0xff;P2=0xff;P3=0xff;P1=0xff;
delay(300);
}
}
voiddisp1()//状态1LED顺时针转一圈
{
for(i=0;i<8;i++)
{
P2=table1[i];
delay(100);
}
P2=0xff;
for(i=0;i<8;i++)
{
P3=table1[i];
delay(100);
}
P3=0xff;
for(i=0;i<8;i++)
{
P1=table1[i];
delay(100);
}
P1=0xff;
for(i=0;i<8;i++)
{
P0=table0[i];
delay(100);
}
P0=0xff;
}
voiddisp2()//状态2LED逆时针转一圈
{
for(i=0;i<8;i++)
{
P0=table1[i];
delay(100);
}
P0=0xff;
for(i=0;i<8;i++)
{
P1=table0[i];
delay(100);
}
P1=0xff;
for(i=0;i<8;i++)
{
P3=table0[i];
delay(100);
}
P3=0xff;
for(i=0;i<8;i++)
{
P2=table0[i];
delay(100);
}
P2=0xff;
}
voiddisp3()//状态34个LED同时顺时、逆时针移动1/4圈
{
for(i=0;i<8;i++)
{
P0=table1[i];
P1=table1[i];
P2=table1[i];
P3=table0[i];
delay(100);
}
for(i=0;i<8;i++)
{
P0=table0[i];
P1=table0[i];
P2=table0[i];
P3=table1[i];
delay(100);
}
P3=0xff;P0=0xff;
}
voiddisp4()//状态42个LED同时顺时针移动半圈
{
for(i=0;i<8;i++)
{
P2=table1[i];
P1=table1[i];
delay(100);
}
P2=0xff;P1=0xff;
for(i=0;i<8;i++)
{
P3=table1[i];
P0=table0[i];
delay(100);
}
P3=0xff;P0=0xff;
}
voiddisp5()//状态52个LED同时逆时针移动半圈
{
for(i=0;i<8;i++)
{
P0=table1[i];
P3=table0[i];
delay(100);
}
P0=0xff;P3=0xff;
for(i=0;i<8;i++)
{
P1=table0[i];
P2=table0[i];
delay(100);
}
P1=0xff;P2=0xff;
}
voiddisp6()//状态6LED自上而下逐渐点亮(一半点亮一半不亮)
{
for(i=0;i<8;i++)
{
P0=table3[i];
P2=table3[i];
delay(100);
}
P0=0xff;P2=0xff;
for(i=0;i<8;i++)
{
P1=table2[i];
P3=table3[i];
delay(100);
}
P1=0xff;P3=0xff;
}
voiddisp7()//状态7LED自下而上逐渐点亮(直到全部点亮)
{
for(i=0;i<8;i++)
{
P1=table3[i];
P3=table2[i];
delay(100);
}
for(i=0;i<8;i++)
{
P0=table2[i];
P2=table2[i];
delay(100);
}
}
voiddisp8()//状态8间断8格的4个LED亮并逆时针旋转
{
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)
{
P0=table1[i];
P2=table0[i];
P1=table0[i];
P3=table0[i];
delay(100);
}
P0=0xff;P2=0xff;P1=0xff;P3=0xff;
for(i=0;i<8;i++)
{
P0=table1[i];
P2=table0[i];
P1=table0[i];
P3=table0[i];
delay(100);
}
P0=0xff;P2=0xff;P1=0xff;P3=0xff;
}
}
voiddisp9()//状态9间断8格的4个LED亮,然后逆时针逐渐点亮(直到全部点亮)
{
for(i=0;i<8;i++)
{
P0=table3[i];
P2=table2[i];
P1=table2[i];
P3=table2[i];
delay(100);
}
delay(500);
}
voiddisp10()//状态10从LED全部亮到全不亮(间断8格的4个LED开始逆时针熄灭)
{
for(i=0;i<9;i++)
{
P0=table5[i];
P2=table4[i];
P1=table4[i];
P3=table4[i];
delay(100);
}
delay(300);
}
voiddisp11()//状态11间断8格的4个LED亮并顺时针旋转
{
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)
{
P0=table0[i];
P2=table1[i];
P1=table1[i];
P3=table1[i];
delay(100);
}
P0=0xff;P2=0xff;P1=0xff;P3=0xff;
for(i=0;i<8;i++)
{
P0=table0[i];
P2=table1[i];
P1=table1[i];
P3=table1[i];
delay(100);
}
P0=0xff;P2=0xff;P1=0xff;P3=0xff;
}
}
voiddisp12()//间断8格的4个LED亮,然后顺时针逐渐点亮(直到全部点亮)
{
for(i=0;i<8;i++)
{
P0=table2[i];
P2=table3[i];
P1=table3[i];
P3=table3[i];
delay(100);
}
delay(1000);
}
voiddisp13()//状态13从LED全部亮到全不亮(间断8格的4个LED开始顺时针熄灭)
{
for(i=0;i<9;i++)
{
P0=table4[i];
P2=table5[i];
P1=table5[i];
P3=table5[i];
delay(100);
}
delay(300);
}
voiddisp14()//状态14从LED不亮到全亮(从、、、开始逐步点亮)
{
for(i=0;i<8;i++)
{
P0=table2[i];
P1=table2[i];
P2=table2[i];
P3=table3[i];
delay(100);
}
}
voiddisp15()//状态15从LED全亮到全不亮(从、、、开始逐步熄灭)
{
for(i=0;i<9;i++)
{
P0=table5[i];
P1=table5[i];
P2=table5[i];
P3=table4[i];
delay(100);
}
delay(300);
}
voiddisp16()//状态16LED灯交替闪烁(频率有慢变快)
{
for(i=0;i<5;i++)
{
P0=0xaa;P1=0xaa;P2=0xaa;P3=0xaa;
delay(100);
P0=~P0;P1=~P1;P2=~P2;P3=~P3;
delay(100);
}
for(i=0;i<5;i++)
{
P0=0xaa;P1=0xaa;P2=0xaa;P3=0xaa;
delay(200);
P0=~P0;P1=~P1;P2=~P2;P3=~P3;
delay(200);
}
for(i=0;i<5;i++)
{
P0=0xaa;P1=0xaa;P2=0xaa;P3=0xaa;
delay(300);
P0=~P0;P1=~P1;P2=~P2;P3=~P3;
delay(300);
}
P0=0xff;P2=0xff;P1=0xff;P3=0xff;
delay(300);
}
voiddisp17()//状态17LED从开始逆时针逐步点亮,(循环2次)并且速度会逐步提高
{
for(i=0;i<8;i++)
{
P0=table3[i];
delay(100);
}
for(i=0;i<8;i++)
{
P1=table2[i];
delay(100);
}
for(i=0;i<8;i++)
{
P3=table2[i];
delay(100);
}
for(i=0;i<8;i++)
{
P2=table2[i];
delay(100);
}
P0=0xff;P1=0xff;P3=0xff;P2=0xff;
/*******************************/
for(i=0;i<8;i++)
{
P0=table3[i];
delay(50);
}
for(i=0;i<8;i++)
{
P1=table2[i];
delay(50);
}
for(i=0;i<8;i++)
{
P3=table2[i];
delay(50);
}
for(i=0;i<8;i++)
{
P2=table2[i];
delay(50);
}
P0=0xff;P1=0xff;P3=0xff;P2=0xff;
}
voiddisp18()//状态18LED从开始逆时针逐步点亮(每亮8位后就熄灭)
{
for(i=0;i<8;i++)
{
P0=table3[i];
delay(100);
}
P0=0xff;
for(i=0;i<8;i++)
{
P1=table2[i];
delay(100);
}
P1=0xff;
for(i=0;i<8;i++)
{
P3=table2[i];
delay(100);
}
P3=0xff;
for(i=0;i<8;i++)
{
P2=table2[i];
delay(100);
}
P2=0xff;
}
voiddisp19()//状态19LED从开始顺时针逐步点亮,(循环2次)并且速度会逐步提高
{
for(i=0;i<8;i++)
{
P2=table3[i];
delay(100);
}
for(i=0;i<8;i++)
{
P3=table3[i];
delay(100);
}
for(i=0;i<8;i++)
{
P1=table3[i];
delay(100);
}
for(i=0;i<8;i++)
{
P0=table2[i];
delay(100);
}
P0=0xff;P1=0xff;P3=0xff;P2=0xff;
/*******************************/
for(i=0;i<8;i++)
{
P2=table3[i];
delay(50);
}
for(i=0;i<8;i++)
{
P3=table3[i];
delay(50);
}
for(i=0;i<8;i++)
{
P1=table3[i];
delay(50);
}
for(i=0;i<8;i++)
{
P0=table2[i];
delay(50);
}
P0=0xff;P1=0xff;P3=0xff;P2=0xff;
}
voiddisp20()//状态20LED从开始顺时针逐步点亮(每亮8位后就熄灭)
{
for(i=0;i<8;i++)
{
P2=table3[i];
delay(100);
}
P2=0xff;
for(i=0;i<8;i++)
{
P3=table3[i];
delay(100);
}
P3=0xff;
for(i=0;i<8;i++)
{
P1=table3[i];
delay(100);
}
P1=0xff;
for(i=0;i<8;i++)
{
P0=table2[i];
delay(100);
}
P0=0xff;
}
voiddisp21()//状态212个LED开始上下移动半圈
{
for(i=0;i<8;i++)
{
P0=table1[i];
P2=table1[i];
delay(100);
}
P0=0xff;P2=0xff;
for(i=0;i<8;i++)
{
P1=table0[i];
P3=table1[i];
delay(100);
}
for(i=0;i<8;i++)
{
P1=table1[i];
P3=table0[i];
delay(100);
}
P1=0xff;P3=0xff;
for(i=0;i<8;i++)
{
P0=table0[i];
P2=table0[i];
delay(100);
}
}
voiddisp22()//装态222个LED自上而下移动(循环5次,且频率渐快,到最快时持续循环16次,然后循环5次频率再逐渐降低)
{
for(j=0;j<5;j++)
{
for(i=0;i<8;i++)
{
P0=table1[i];
P2=table1[i];
delay(tt);
}
P0=0xff;P2=0xff;
for(i=0;i<8;i++)
{
P1=table0[i];
P3=table1[i];
delay(tt);
}
P1=0xff;P3=0xff;
tt=tt-10;
}
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
P0=table1[i];
P2=table1[i];
delay(20);
}
P0=0xff;P2=0xff;
for(i=0;i<8;i++)
{
P1=table0[i];
P3=table1[i];
delay(20);
}
P1=0xff;P3=0xff;
}
tt=20;
for(j=0;j<5;j++)
{
for(i=0;i<8;i++)
{
P0=table1[i];
P2=table1[i];
delay(tt);
}
P0=0xff;P2=0xff;
for(i=0;i<8;i++)
{
P1=table0[i];
P3=table1[i];
delay(tt);
}
P1=0xff;P3=0xff;
tt=tt+10;
}
tt=70;
}
voiddisp23()//状态23LED上下交替闪烁
{
for(i=0;i<2;i++)
{
P0=0x00;P2=0x00;
delay(1000);
P0=0xff;P2=0xff;
P1=0x00;P3=0x00;
delay(1000);
P1=0xff;P3=0xff;
}
}
voiddisp24()//状态24LED左右交替闪烁
{
P1=0xff;P3=0xff;P0=0xff;P2=0xff;
for(i=0;i<2;i++)
{
P0=0x00;P1=0x00;
delay(1000);
P0=0xff;P1=0xff;
P2=0x00;P3=0x00;
delay(1000);
P2=0xff;P3=0xff;
}
}
voiddisp25()//状态25LED交替闪烁
{
for(i=0;i<5;i++)
{
P0=0xaa;P1=0xaa;P2=0xaa;P3=0xaa;
delay(1000);
P0=~P0;P1=~P1;P2=~P2;P3=~P3;
delay(1000);
}
}
voiddisp26()//状态262个LED开始上下移动半圈(LED不亮流水)
{
P0=0x00;P1=0x00;P2=0x00;P3=0x00;
for(i=0;i<8;i++)
{
P0=~table1[i];
P2=~table1[i];
delay(200);
}
P0=0x00;P2=0x00;
for(i=0;i<8;i++)
{
P1=~table0[i];
P3=~table1[i];
delay(200);
}
for(i=0;i<8;i++)
{
P1=~table1[i];
P3=~table0[i];
delay(200);
}
P1=0x00;P3=0x00;
for(i=0;i<8;i++)
{
P0=~table0[i];
P2=~table0[i];
delay(200);
}
}
voiddisp27()//状态27逐步顺时针点亮P2、P1的LED,熄灭后,再顺时针点亮P0、P3的LED
{
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<2;j++)
{
for(i=0;i<8;i++)
{
P2=table3[i];
P1=table3[i];
delay(100);
}
P2=0xff;P1=0xff;
for(i=0;i<8;i++)
{
P0=table2[i];
P3=table3[i];
delay(100);
}
P0=0xff;P3=0xff;
}
}
voiddisp28()//状态28P1、P2和P0、P3交替闪烁
{
for(i=0;i<2;i++)
{
P1=0x00;P2=0x00;P0=0xff;P3=0xff;
delay(1000);
P1=0xff;P2=0xff;P0=0x00;P3=0x00;
delay(1000);
}