首页 > 分享 > 工程师表白神器

工程师表白神器

这段时间做了个玩具,用彩色LED搭建了一个心形图案,并用STC51单片机驱动,实现心形LED炫彩闪动,超级炫酷的,总工有32个灯,使用了单片机的所有IO口,可以灵活控制每个LED的闪烁,然后配上适合的音乐,绝对是屌丝工程师表白神器,先上两张图看看:



接下来简单说下实现过程:

将32个LED分成4组LED_P0,LED_P1,LED_P3,LED_P2,每一组代表8个LED灯,也就是讲心形分成4个部分, 如下图所示,这样,我们只需操作这些值,然后将这些值对应到相应的IO口上就可以了


为了便于操作,我们对每一组单独做了几个动作,然后将这些动作已多种方式结合起来,就可以啦。

基本动作:

uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

uchar code table2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};

uchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};

uchar code table4[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};

uchar code table5[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};

uchar code table6[]={0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e};

uchar code table7[]={0x7f,0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e};

下面我们将LED顺时针旋转一周,如下:

void disp1()

{

for(i=0;i<8;i++)

{

LED_P2=table1[i];

Display(100);

}

LED_P2=0xff;

for(i=0;i<8;i++)

{

LED_P3=table1[i];

Display(100);

}

LED_P3=0xff;

for(i=0;i<8;i++)

{

LED_P1=table1[i];

Display(100);

}

LED_P1=0xff;

for(i=0;i<8;i++)

{

LED_P0=table1[i];

Display(100);

}

LED_P0=0xff;

}

为了方便布线,我们的LED灯的位置并不是个单片机IO口严格对应的,所以我们要在显示函数里面做好对应关系,一起刷新显示:

void Display(uint time)

{

P0 = ((LED_P0 & 0xfe)>>1) + ((LED_P1 & 0x01)<<7);

P1 = ((LED_P1 & 0xfe)>>1) + ((LED_P3 & 0x01)<<7);

P3 = ((LED_P3 & 0xfe)>>1) + ((LED_P2 & 0x01)<<7);

P2 = ((LED_P2 & 0xfe)>>1) + ((LED_P0 & 0x01)<<7);

Delayms(time);

}

将LED顺时针旋转一周只是一周场景,这里可以t提供40多种场景,可以自由搭配顺序哦,实现方法也是很简单的:

#define SCENE_COUNT 20

uchar scene[SCENE_COUNT] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};

选择要显示的场景函数:

void DispStatus(unsigned char index)

{

switch(index)

{

case 0:disp0();break;

case 1:disp1();break;

case 2:disp2();break;

case 3:disp3();break;

case 4:disp4();break;

case 5:disp5();break;

case 6:disp6();break;

case 7:disp7();break;

case 8:disp8();break;

case 9:disp9();break;

case 10:disp10();break;

case 11:disp11();break;

case 12:disp12();break;

case 13:disp13();break;

case 14:disp14();break;

case 15:disp15();break;

case 16:disp16();break;

case 17:disp17();break;

case 18:disp18();break;

case 19:disp19();break;

case 20:disp20();break;

case 21:disp21();break;

case 22:disp22();break;

case 23:disp23();break;

case 24:disp24();break;

case 25:disp25();break;

case 26:disp26();break;

case 27:disp27();break;

case 28:disp28();break;

case 29:disp29();break;

case 30:disp30();break;

case 31:disp31();break;

case 32:disp32();break;

case 33:disp33();break;

case 34:disp34();break;

case 35:disp35();break;

case 36:disp36();break;

case 37:disp37();break;

case 38:disp38();break;

case 39:disp39();break;

case 40:disp40();break;

case 41:disp41();break;

default: break;

}

}

主函数循环播放设定好的场景

void main()

{

int i;

while(1)

{

for(i=0;i<SCENE_COUNT;i++)

{

DispStatus(scene[i]);

}

}

}

这样一个表白神器就完成了,有需要的或者有其他问题的亲猿们,如果有需要可以直接评论我就好了哦。

git下载地址:https://github.com/zhui-ying/HeartColorLEDDIYcode.git

相关知识

表白神器
python仿抖音表白神器资源
表白神器 & 爱的告白
玫瑰花一键生成软件(七夕表白神器)
双十一求婚表白神器,特一助你脱单的求婚攻略
新开业开张花篮会议专用花深情传达表白神器花束
技术宅情人节:用HTML编写浪漫玫瑰花表白神器
《超级迷你世界》迷你世界汤米生存:表白神器玫瑰花,现在你会做了吗?
情人节表白神器(成功率100%)在情人节的当天不知道有没有想要向心仪的对象表白的人,如果有的话,下面这一款神器可千万不要
切花的神器有哪些

网址: 工程师表白神器 https://m.huajiangbk.com/newsview958639.html

所属分类:花卉
上一篇: 无法拒绝的道歉表白神器(更新版)
下一篇: 草莓什么时间移栽合适?又有哪些移