标题: 这个单片机心形流水灯还想加入几种样式,求思路 [打印本页]

作者: slp1794306542    时间: 2021-6-17 15:06
标题: 这个单片机心形流水灯还想加入几种样式,求思路
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家

  1. #include<reg52.h>
  2. #include<intrins.h> //库函数
  3. #define uint unsigned int
  4. #define uchar unsigned char//宏定义
  5. void delay(uint xms)//延时函数
  6. {
  7.               uint i,j;
  8.               for(i=xms;i>0;i--)
  9.                             for(j=110;j>0;j--);
  10. }
  11. void zys(uint t)//左右闪烁
  12. {
  13.               while(t--)
  14.               {
  15.                             P3=P2=0x00;
  16.                             delay(500);
  17.                             P3=P2=0xff;
  18.                             P1=P0=0x00;
  19.                             delay(500);
  20.                             P1=P0=0xff;
  21.               }
  22. }
  23. void qs(uint t)//全部闪亮
  24. {
  25.               while(t--)
  26.               {
  27.                             P0=P1=P2=P3=0xff;
  28.                             delay(300);
  29.                             P0=P1=P2=P3=0x00;
  30.                             delay(300);
  31.               }
  32.               P1=P2=P3=P0=0xff;
  33. }
  34. void ycdl(uint t)//依次点亮
  35. {
  36.               uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  37.               uint i;
  38.               while(t--)
  39.               {
  40.                             for(i=0;i<8;i++)
  41.                                           {
  42.                                                         P0=table[i];
  43.                                                         delay(200);
  44.                                           }
  45.                             for(i=0;i<8;i++)
  46.                                           {
  47.                                                         P1=table[i];
  48.                                                         delay(200);
  49.                                           }
  50.                             for(i=0;i<8;i++)
  51.                                           {
  52.                                                         P2=table[i];
  53.                                                         delay(200);
  54.                                           }
  55.                             for(i=0;i<8;i++)
  56.                                           {
  57.                                                         P3=table[i];
  58.                                                         delay(200);
  59.                                           }
  60.               }
  61. }
  62. void ycxm (uint t)//依次熄灭
  63. {
  64.                             uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
  65.               uint i;
  66.               while(t--)
  67.               {
  68.                             P0=P1=P2=P3=0x00;
  69.                             for(i=0;i<8;i++)
  70.                                           {
  71.                                                         P0=~table[i];
  72.                                                         delay(200);
  73.                                           }
  74.                             for(i=0;i<8;i++)
  75.                                           {
  76.                                                         P1=~table[i];
  77.                                                         delay(200);
  78.                                           }
  79.                             for(i=0;i<8;i++)
  80.                                           {
  81.                                                         P2=~table[i];
  82.                                                         delay(200);
  83.                                           }
  84.                             for(i=0;i<8;i++)
  85.                                           {
  86.                                                         P3=~table[i];
  87.                                                         delay(200);
  88.                                           }
  89.               }
  90. }
  91. void jgs(uint t)//间隔闪烁
  92. {
  93.               while(t--)
  94.               {
  95.                             P0=P1=P2=P3=0xaa;
  96.                             delay(500);
  97.                             P0=P1=P2=P3=~0xaa;
  98.                             delay(500);
  99.               }
  100.               P0=P1=P2=P3=0xff;
  101.               delay(200);
  102. }

  103. void sszs(uint t)//顺时针闪烁
  104. {
  105.               uchar a,i;
  106.               while(t--)
  107.               {
  108.                             a=0xfe;
  109.                             for(i=0;i<8;i++)
  110.                             {
  111.                                           P0=a;
  112.                                           delay(200);
  113.                                           a=_crol_(a,1);
  114.                             }
  115.                             P0=0xff;
  116.                             a=0xfe;
  117.                             for(i=0;i<8;i++)
  118.                             {
  119.                                           P1=a;
  120.                                           delay(200);
  121.                                           a=_crol_(a,1);
  122.                             }
  123.                             P1=0xff;
  124.                             a=0xfe;
  125.                             for(i=0;i<8;i++)
  126.                             {
  127.                                           P2=a;
  128.                                           delay(200);
  129.                                           a=_crol_(a,1);
  130.                             }
  131.                             P2=0xff;
  132.                             a=0xfe;
  133.                             for(i=0;i<8;i++)
  134.                             {
  135.                                           P3=a;
  136.                                           delay(200);
  137.                                           a=_crol_(a,1);
  138.                             }
  139.                             P3=0xff;
  140.               }
  141. }
  142. void nszs(uint t)//逆时针闪烁
  143. {
  144.               uchar a,i;
  145.               while(t--)
  146.               {
  147.                             a=0x7f;
  148.                             for(i=0;i<8;i++)
  149.                             {
  150.                                           P3=a;
  151.                                           delay(200);
  152.                                           a=_cror_(a,1);
  153.                             }
  154.                             P3=0xff;
  155.                             a=0x7f;
  156.                             for(i=0;i<8;i++)
  157.                             {
  158.                                           P2=a;
  159.                                           delay(200);
  160.                                           a=_cror_(a,1);
  161.                             }
  162.                             P2=0xff;
  163.                             a=0x7f;
  164.                             for(i=0;i<8;i++)
  165.                             {
  166.                                           P1=a;
  167.                                           delay(200);
  168.                                           a=_cror_(a,1);
  169.                             }
  170.                             P1=0xff;
  171.                             a=0x7f;
  172.                             for(i=0;i<8;i++)
  173.                             {
  174.                                           P0=a;
  175.                                           delay(200);
  176.                                           a=_cror_(a,1);
  177.                             }
  178.                             P0=0xff;
  179.               }
  180. }
  181. void djs1(uint t)//对角闪烁2个顺时针
  182. {
  183.               uchar i;
  184.               uchar code table[]={0xf0,0xe1,0xc3,0x87,0x0f,0x1f,0x3f,0x7f,
  185.                                                                                                                                                           0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,
  186.                                                                                                                                                           0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,
  187.                                                                                                                                                           0xf0,0xe1,0xc3,0x87,0x0f,0x1f,0x3f,0x7f,0xff};
  188.               while(t--)
  189.               {
  190.                             for(i=0;i<17;i++)
  191.                                           {
  192.                                                         P0=P2=table[i];
  193.                                                         P1=P3=table[i+17];
  194.                                                         delay(200);
  195.                                           }
  196.                             for(i=0;i<17;i++)
  197.                                           {
  198.                                                         P1=P3=table[i+17];
  199.                                                         P0=P2=table[i];
  200.                                                         delay(200);
  201.                                           }
  202.               }
  203.               delay(300);
  204.               P0=P1=P2=P3=0xff;
  205. }
  206. void djs2(uint t)//对角闪4个逆时针
  207. {
  208.               uchar i;
  209.               uchar code table[]={0x0f,0x87,0xc3,0xe1,0xf0,0x78,0x3c,0x1e,0x0f};
  210.               while(t--)
  211.               {
  212.                             for(i=0;i<9;i++)
  213.                                           {
  214.                                                         P1=P2=P3=P0=table[i];
  215.                                                         delay(200);
  216.                                           }
  217.               }
  218. }
  219. void sxhx(uint t)//从上往下画心
  220. {
  221.               uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
  222.                                                                                                                                                           0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
  223.               uint i;
  224.               while(t--)
  225.               {
  226.                             for(i=0;i<8;i++)
  227.                                           {
  228.                                                         P0=table[i];
  229.                                                         P3=table[i+8];
  230.                                                         delay(200);
  231.                                           }
  232.                             for(i=0;i<8;i++)
  233.                                           {
  234.                                                         P1=table[i];
  235.                                                         P2=table[i+8];
  236.                                                         delay(200);
  237.                                           }
  238.                             P1=P2=P3=P0=0xff;
  239.                             delay(300);
  240.               }
  241. }
  242. void main()
  243. {
  244. while(1)
  245. {
  246. ycdl(1);
  247.               ycxm(1);
  248.               jgs(3);
  249.               sszs(1);
  250.               nszs(1);
  251.               djs1(1);
  252.                             djs2(3);
  253.                             zys(3);
  254.                             sxhx(1);
  255.                             qs(3);
  256. }
  257. }
复制代码


作者: slp1794306542    时间: 2021-6-17 16:34
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家

作者: MOVEORDIE    时间: 2021-6-17 16:37
呼吸模式,爆闪..
作者: 51hei团团    时间: 2021-6-17 16:45
你可以参考一下这里http://www.51hei.com/bbs/dpj-102033-1.html
作者: xuyaqi    时间: 2021-6-17 16:46
程序架构都有了,就是再写几个样式放到已有样式后面。
作者: 琵琶行    时间: 2021-6-17 17:23
void nztl(uint t,uchar a);//逆时逐个同步亮
void sztm(uint t,uchar a)://顺时逐个同步灭
void nztm(uint t,uchar a);//逆时逐个同步灭
void hwzji(uint t,uchar a);//横往中间亮
void hwzjm(uint t,uchar a);//横往中间灭
//void swzjl(uint t,uchar a);//竖往中间亮
/void swzjm(uint t,uchar a);//竖往中间灭
void nzdl(uint t,uchar a);//逆时逐段亮
void nzdgl(uint t,uchar a);//逆时逐段一个点亮
void jgs(uint t,uchar a);//间隔闪
void delay(uintt);//延时
void zg(uint t,uchar a);://两边逐个亮
void qs(uint t,uchar a);://全部闪烁
void zgxh(uint t,uchar a);//逆时针逐个点亮
//void zgxh1(uint t,uchar a);// 顺时针逐个点亮
void djs(uint t,uchar a);//对角闪
void sztl(uint t,uchar a);//顺时逐个同步亮
void nztl(uint t,uchar a);//逆时逐个同步亮
作者: Y_G_G    时间: 2021-6-17 19:50
哥们,就一流水灯,还要有什么样式呢?自己想想不会得了,要么两边散开亮,要么是贪吃蛇........
还不如花点心思搞个好看点的外壳,还加个锂电池和声控.....
作者: 啤酒瓶子老大    时间: 2021-6-18 00:05
一个一个亮,两个两个亮,三个三个亮。
隔一个一个亮,隔两个两个亮,隔三个三个亮。
慢闪,快闪,一个一个闪,一半一半闪。
一个亮,一个闪,两个亮,三个闪。
向一头跑,边跑边闪,向两头跑,边跑边闪。
哎呀,打字好累。
作者: 名字不是重点    时间: 2021-6-18 16:54
追逐、叠加、拉扯、镜像、互补。。。多了去了。没意思!
作者: TonyRick    时间: 2021-9-10 22:38
框架有了,多谢多谢
作者: RK-800    时间: 2021-10-21 16:18
你这不也是复制的
作者: weijoyer    时间: 2021-10-26 22:48
创建子函数,采用调用的方式切换运行




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1