找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1568|回复: 4
收起左侧

单片机心形流水灯

[复制链接]
ID:1054732 发表于 2024-5-5 22:11 | 显示全部楼层 |阅读模式
通过本站学习单片机有一段时间了,按照自己的理解,做了个心形流水灯,写了个花样流水的程序。嗯,有三四个花样吧,感觉程序有点繁琐,还有每个花样流水灯循环次数怎么控制,流星灯,呼吸灯程序怎么写等好多问题,目前本人的水平就这样了,发出来和刚学单片机的朋友交流交流写出更多的花样来,更好的程序。有路过的大神们也给指点指点,在此先谢过。


  1. #include <REGX51.H>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4.         #define uint unsigned int
  5.         void delayms(uint);
  6.         void liushui0();
  7.         void liushui1();
  8.         void liushui2();
  9.         void liushui3();
  10.         void liushui4();
  11.                 uchar aa;
  12.         uchar bb;
  13.         uchar i;
  14.         void main()
  15.         {
  16.         
  17.                 while(1)
  18.                 {aa=0xfe;
  19.                         bb=0x7f;
  20.                         liushui0();
  21.                         P0=0xff;
  22.                         delayms(500);
  23.                 liushui1();
  24.                 P0=0xff;
  25.                 P1=0xff;
  26.                 P2=0xff;
  27.                 P3=0xff;
  28.                 delayms(1500);
  29.                 liushui2();
  30.                 liushui3();
  31.                 liushui4();
  32.                 delayms(500);
  33.         
  34.         }
  35. }
  36.         void delayms(uint xms)
  37.         {
  38.                 uint i,j;
  39.                 for(i=xms;i>0;i--)
  40.                 for(j=110;j>0;j--);
  41.         }
  42.         void liushui0()
  43.         {
  44.         for(i=0;i<8;i++)
  45.                         {
  46.                                 
  47.                                 P0=aa;
  48.                                 delayms(500);
  49.                                 aa=_crol_(aa,1);
  50.                                 P0=0xff;
  51.                         }
  52.                         for(i=0;i<8;i++)
  53.                         {
  54.                                 
  55.                                 P1=aa;
  56.                                 delayms(500);
  57.                                 aa=_crol_(aa,1);
  58.                                 P1=0xff;
  59.                         }
  60.                         for(i=0;i<8;i++)
  61.                         {
  62.                                 
  63.                                 P2=aa;
  64.                                 delayms(500);
  65.                                 aa=_crol_(aa,1);
  66.                                 P2=0xff;
  67.                         }
  68.                         for(i=0;i<8;i++)
  69.                         {
  70.                                 
  71.                                 P3=aa;
  72.                                 delayms(500);
  73.                                 aa=_crol_(aa,1);
  74.                                 P3=0xff;
  75.                         }

  76.                                                 for(i=0;i<8;i++)
  77.                         {
  78.                                 P3=bb;
  79.                                 delayms(500);
  80.                                 bb=_cror_(bb,1);
  81.                                 P3=0xff;
  82.                         }
  83.                                                 for(i=0;i<8;i++)
  84.                         {
  85.                                 P2=bb;
  86.                                 delayms(500);
  87.                                 bb=_cror_(bb,1);
  88.                                 P2=0xff;
  89.                         }
  90.                                                 for(i=0;i<8;i++)
  91.                         {
  92.                                 P1=bb;
  93.                                 delayms(500);
  94.                                 bb=_cror_(bb,1);
  95.                                 P1=0xff;
  96.                         }
  97.                                                 for(i=0;i<8;i++)
  98.                         {
  99.                                 P0=bb;
  100.                                 delayms(500);
  101.                                 bb=_cror_(bb,1);
  102.                                 P0=0xff;
  103.                         }
  104.         }
  105.         void liushui1()
  106.         {
  107.         for(i=0;i<8;i++)
  108.                 {P0=aa;
  109.                
  110.                 P1=P0;
  111.                 P2=P0;
  112.                 P3=P0;
  113.                 delayms(500);
  114.                 aa=_crol_(aa,1);
  115.                 }
  116.                 for(i=0;i<8;i++)
  117.                 {
  118.                         P0=aa;
  119.                         P1=P0;
  120.                         P2=P0;
  121.                         P3=P0;
  122.                         delayms(500);
  123.                         aa=_cror_(aa,1);
  124.                         P0=0xff;
  125.                         P1=0xff;
  126.                         P2=0xff;
  127.                         P3=0xff;
  128.                 }
  129.         }
  130.         void liushui2()
  131.         {
  132.         P0=0xfe;
  133.                 P3=0x7f;
  134.                 delayms(500);
  135.                 P0=0xfc;
  136.                 P3=0x3f;
  137.                 delayms(500);
  138.                 P0=0xf8;
  139.                 P3=0x1f;
  140.                 delayms(500);
  141.                 P0=0xf0;
  142.                 P3=0x0f;
  143.                 delayms(500);
  144.                 P0=0xe0;
  145.                 P3=0x07;
  146.                 delayms(500);
  147.                 P0=0xc0;
  148.                 P3=0x03;
  149.                 delayms(500);
  150.                 P0=0x80;
  151.                 P3=0x01;
  152.                 delayms(500);
  153.                 P0=0x00;
  154.                 P3=0x00;
  155.                 delayms(500);
  156.                
  157.                 P1=0xfe;
  158.                 P2=0x7f;
  159.                 delayms(500);
  160.                 P1=0xfc;
  161.                 P2=0x3f;
  162.                 delayms(500);
  163.                 P1=0xf8;
  164.                 P2=0x1f;
  165.                 delayms(500);
  166.                 P1=0xf0;
  167.                 P2=0x0f;
  168.                 delayms(500);
  169.                 P1=0xe0;
  170.                 P2=0x07;
  171.                 delayms(500);
  172.                 P1=0xc0;
  173.                 P2=0x03;
  174.                 delayms(500);
  175.                 P1=0x80;
  176.                 P2=0x01;
  177.                 delayms(500);
  178.                 P1=0x00;
  179.                 P2=0x00;
  180.                 delayms(500);
  181.                
  182.                 P1=0x00;
  183.                 P2=0x00;
  184.                 delayms(500);
  185.                 P1=0x80;
  186.                 P2=0x01;
  187.                 delayms(500);
  188.                 P1=0xc0;
  189.                 P2=0x03;
  190.                 delayms(500);
  191.                 P1=0xe0;
  192.                 P2=0x07;
  193.                 delayms(500);
  194.                 P1=0xf0;
  195.                 P2=0x0f;
  196.                 delayms(500);
  197.                 P1=0xf8;
  198.                 P2=0x1f;
  199.                 delayms(500);
  200.                 P1=0xfc;
  201.                 P2=0x3f;
  202.                 delayms(500);
  203.                 P1=0xfe;
  204.                 P2=0x7f;
  205.                 delayms(500);
  206.                 P1=0xff;
  207.                 P2=0xff;
  208.                 delayms(400);
  209.                
  210.                 P0=0x00;
  211.                 P3=0x00;
  212.                 delayms(500);
  213.                 P0=0x80;
  214.                 P3=0x01;
  215.                 delayms(500);
  216.                 P0=0xc0;
  217.                 P3=0x03;
  218.                 delayms(500);
  219.                 P0=0xe0;
  220.                 P3=0x07;
  221.                 delayms(500);
  222.                 P0=0xf0;
  223.                 P3=0x0f;
  224.                 delayms(500);
  225.                 P0=0xf8;
  226.                 P3=0x1f;
  227.                 delayms(500);
  228.                 P0=0xfc;
  229.                 P3=0x3f;
  230.                 delayms(500);
  231.                 P0=0xfe;
  232.                 P3=0x7f;
  233.                 delayms(500);
  234.                 P0=0xff;
  235.                 P3=0xff;
  236.                 delayms(500);
  237.         
  238.         }
  239.         void liushui3()
  240.         {
  241.                
  242.                 P3=0x7f;
  243.                 delayms(500);
  244.                 P3=0x3f;
  245.                 delayms(500);
  246.                 P3=0x1f;
  247.                 delayms(500);
  248.                 P3=0x0f;
  249.                 delayms(500);
  250.                 P3=0x07;
  251.                 delayms(500);
  252.                 P3=0x03;
  253.                 delayms(500);
  254.                 P3=0x01;
  255.                 delayms(500);
  256.                 P3=0x00;
  257.                 delayms(500);
  258.                
  259.                         
  260.                 P2=0x7f;
  261.                 delayms(500);
  262.                 P2=0x3f;
  263.                 delayms(500);
  264.                 P2=0x1f;
  265.                 delayms(500);
  266.                 P2=0x0f;
  267.                 delayms(500);
  268.                 P2=0x07;
  269.                 delayms(500);
  270.                 P2=0x03;
  271.                 delayms(500);
  272.                 P2=0x01;
  273.                 delayms(500);
  274.                 P2=0x00;
  275.                 delayms(500);
  276.                
  277.                         
  278.                 P1=0x7f;
  279.                 delayms(500);
  280.                 P1=0x3f;
  281.                 delayms(500);
  282.                 P1=0x1f;
  283.                 delayms(500);
  284.                 P1=0x0f;
  285.                 delayms(500);
  286.                 P1=0x07;
  287.                 delayms(500);
  288.                 P1=0x03;
  289.                 delayms(500);
  290.                 P1=0x01;
  291.                 delayms(500);
  292.                 P1=0x00;
  293.                 delayms(500);
  294.                
  295.                         
  296.                 P0=0x7f;
  297.                 delayms(500);
  298.                 P0=0x3f;
  299.                 delayms(500);
  300.                 P0=0x1f;
  301.                 delayms(500);
  302.                 P0=0x0f;
  303.                 delayms(500);
  304.                 P0=0x07;
  305.                 delayms(500);
  306.                 P0=0x03;
  307.                 delayms(500);
  308.                 P0=0x01;
  309.                 delayms(500);
  310.                 P0=0x00;
  311.                 delayms(500);
  312.                
  313.                 P0=0x00;
  314.                 delayms(500);
  315.                 P0=0x01;
  316.                 delayms(500);
  317.                 P0=0x03;
  318.                 delayms(500);
  319.                 P0=0x07;
  320.                 delayms(500);
  321.                 P0=0x0f;
  322.                 delayms(500);
  323.                 P0=0x1f;
  324.                 delayms(500);
  325.                 P0=0x3f;
  326.                 delayms(500);
  327.                 P0=0x7f;
  328.                 delayms(500);
  329.                 P0=0xff;
  330.                 delayms(500);
  331.                
  332.                
  333.                 P1=0x00;
  334.                 delayms(500);
  335.                 P1=0x01;
  336.                 delayms(500);
  337.                 P1=0x03;
  338.                 delayms(500);
  339.                 P1=0x07;
  340.                 delayms(500);
  341.                 P1=0x0f;
  342.                 delayms(500);
  343.                 P1=0x1f;
  344.                 delayms(500);
  345.                 P1=0x3f;
  346.                 delayms(500);
  347.                 P1=0x7f;
  348.                 delayms(500);
  349.                 P1=0xff;
  350.                 delayms(500);        
  351.                
  352.                 P2=0x00;
  353.                 delayms(500);
  354.                 P2=0x01;
  355.                 delayms(500);
  356.                 P2=0x03;
  357.                 delayms(500);
  358.                 P2=0x07;
  359.                 delayms(500);
  360.                 P2=0x0f;
  361.                 delayms(500);
  362.                 P2=0x1f;
  363.                 delayms(500);
  364.                 P2=0x3f;
  365.                 delayms(500);
  366.                 P2=0x7f;
  367.                 delayms(500);
  368.                 P2=0xff;
  369.                 delayms(500);
  370.                
  371.                 P3=0x00;
  372.                 delayms(500);
  373.                 P3=0x01;
  374.                 delayms(500);
  375.                 P3=0x03;
  376.                 delayms(500);
  377.                 P3=0x07;
  378.                 delayms(500);
  379.                 P3=0x0f;
  380.                 delayms(500);
  381.                 P3=0x1f;
  382.                 delayms(500);
  383.                 P3=0x3f;
  384.                 delayms(500);
  385.                 P3=0x7f;
  386.                 delayms(500);
  387.                 P3=0xff;
  388.                 delayms(500);
  389.         }
  390.         void liushui4()
  391.         {
  392.                 P0=0x00;
  393.                 P1=0x00;
  394.                 P2=0x00;
  395.                 P3=0x00;
  396.                 delayms(500);
  397.                 P0=0x00;
  398.                 P1=0x00;
  399.                 P2=0x00;
  400.                 P3=0x00;
  401.                 delayms(500);
  402.                 P0=0xff;
  403.                 P1=0xff;
  404.                 P2=0xff;
  405.                 P3=0xff;
  406.                 delayms(500);
  407.                 P0=0xff;
  408.                 P1=0xff;
  409.                 P2=0xff;
  410.                 P3=0xff;
  411.                 delayms(500);
  412.         }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1054732 发表于 2024-5-5 22:13 | 显示全部楼层
图片不会发啊,成了这样了
回复

使用道具 举报

ID:876947 发表于 2024-5-10 21:56 | 显示全部楼层
这个程序太好了,全部I/O 口都有赋能,如果移植到32上做个立体LED(如小蛮腰)一定非常好看!
回复

使用道具 举报

ID:876947 发表于 2024-5-20 16:27 | 显示全部楼层
这个程序真的太好了,全部I/O 口都有赋能,还有一些花样。如果将每一项花样由慢到快直到瞎眼就更好了!我将这个程序写进了STC11并用洞洞板焊接了一块多用板(可以看到51系列工作状态和扩展应用),实际就是每个I/O口有两个针孔用起来非常方便。实乃不才程序移植不到32系统中。
回复

使用道具 举报

ID:1054732 发表于 2024-5-23 21:58 | 显示全部楼层
白水大虾2016 发表于 2024-5-20 16:27
这个程序真的太好了,全部I/O 口都有赋能,还有一些花样。如果将每一项花样由慢到快直到瞎眼就更好了!我将 ...

想法不错努力学习中
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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