找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1983|回复: 11
打印 上一主题 下一主题
收起左侧

这个单片机心形流水灯还想加入几种样式,求思路

  [复制链接]
跳转到指定楼层
楼主
ID:939347 发表于 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. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:939347 发表于 2021-6-17 16:34 | 只看该作者
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家
回复

使用道具 举报

板凳
ID:377210 发表于 2021-6-17 16:37 | 只看该作者
呼吸模式,爆闪..
回复

使用道具 举报

地板
ID:328014 发表于 2021-6-17 16:45 | 只看该作者
你可以参考一下这里http://www.51hei.com/bbs/dpj-102033-1.html
回复

使用道具 举报

5#
ID:94031 发表于 2021-6-17 16:46 | 只看该作者
程序架构都有了,就是再写几个样式放到已有样式后面。
回复

使用道具 举报

6#
ID:936571 发表于 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);//逆时逐个同步亮
回复

使用道具 举报

7#
ID:401564 发表于 2021-6-17 19:50 | 只看该作者
哥们,就一流水灯,还要有什么样式呢?自己想想不会得了,要么两边散开亮,要么是贪吃蛇........
还不如花点心思搞个好看点的外壳,还加个锂电池和声控.....
回复

使用道具 举报

8#
ID:230742 发表于 2021-6-18 00:05 | 只看该作者
一个一个亮,两个两个亮,三个三个亮。
隔一个一个亮,隔两个两个亮,隔三个三个亮。
慢闪,快闪,一个一个闪,一半一半闪。
一个亮,一个闪,两个亮,三个闪。
向一头跑,边跑边闪,向两头跑,边跑边闪。
哎呀,打字好累。
回复

使用道具 举报

9#
ID:824490 发表于 2021-6-18 16:54 | 只看该作者
追逐、叠加、拉扯、镜像、互补。。。多了去了。没意思!
回复

使用道具 举报

10#
ID:965371 发表于 2021-9-10 22:38 | 只看该作者
框架有了,多谢多谢
回复

使用道具 举报

11#
ID:973730 发表于 2021-10-21 16:18 | 只看该作者
你这不也是复制的
回复

使用道具 举报

12#
ID:339654 发表于 2021-10-26 22:48 | 只看该作者
创建子函数,采用调用的方式切换运行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表