📄 花样流水灯.c
字号:
#include<reg52.h>//包含reg.52文件
#define uint unsigned int//宏定义
#define uchar unsigned char//宏定义
void delay(uint z);//声明延时函数
uint a;//定义循环用变量
uchar code table[]={
//0xff,//全灭
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//依次逐个叠加
0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//依次逐个递减
0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,//反向依次逐个叠加
0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,//反向依次逐个递减
0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,//四亮四灭
0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff,//两边叠加后递减
0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff,//两边叠加后递减
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//两边靠拢后分开
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//两边靠拢后分开
0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,//闪亮四次
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//一亮//依次逐个叠加
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,//反向一亮
0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,//一暗
0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,//反向一暗
0x3c,0x99,0xc3,0xe7,0xff,0xc3,0x99,0x3c,//二对
0x99,0xc3,0xe7,0xff,0xc3,0x99,0x3c,0xff,//
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//
0x7e,0x7d,0x7b,0x77,0x6f,0x5f,0x3f,0x3e,//
0x3d,0x3b,0x37,0x2f,0x1f,0x0f,0x0e,0x0d,//
0x0b,0x07,0x06,0x05,0x03,0x03,0x02,0x00,//
0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//依次逐个递减
//0x00,//全亮
};//定义循环用数据表格
/*亮的现象:先是全灭,然后依次逐个点亮,然后依次逐个叠加,
然后依次逐个递减,然后两边靠拢后分开,然后两边叠加后递减,
最后全亮。循环!*/
void main()//main函数
{
a=0;//给a赋初值
while(1)//while循环
{
P0=P1=P2=P3=table[a];//将a所在的table中的值赋给P1口
//P0=table[a];
delay(120);//1S延时子程序
a++;//a的值加一
if(a==168)//测试a是否等于42
a=0;//给a赋值
}
}
void delay(uint z)//1ms延时子程序,通过z值改变延时时间
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -