找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机RGB流水灯控制12个LED灯的程序

[复制链接]
跳转到指定楼层
楼主
ID:608007 发表于 2019-12-29 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上次发的 研究了很多天 算是写程序对了吧!!请高手看看
制作出来的实物图如下:


单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar i;         //////i=100///////
  6. uchar a;
  7. unsigned char table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff};///
  8. unsigned char table2[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};////高位到低位逐个熄灭////
  9. unsigned char table3[]={0x80,0xc0,0xe0,0xf0};/////高4位依次点亮每个灯P1口//////
  10. unsigned char table4[]={0x01,0x03,0x07,0x0f};//////低4位依次点亮每个灯P1口///
  11. unsigned char table5[]={0x81,0xc3,0xe7,0xff};//////高和低位往中间亮P1口,逐个点亮/////
  12. unsigned char table6[]={0xff,0xfe,0xfc,0xf8,0xe0,0xc0,0x80,0x00};/////低位到高位逐个熄灭/////
  13. unsigned char table7[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};/////依次高位到低位每个点灯亮/////
  14. unsigned char table8[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};/////依次低位到高位每个点灯亮/////
  15. unsigned char table9[]={0xff,0x7e,0x3c,0x18,0x00};//////高和低位往中间亮P1口,逐个熄灭/////

  16. sbit RR=P3^5;
  17. sbit GG=P3^6;/////P0,P1,P2,输出低电平时////////
  18. sbit BB=P3^7;
  19. void delay(uint z)
  20. {
  21. uint x,y;
  22. for(x=z;x>0;x--)
  23. for(y=80;y>0;y--);//////Y=110///////
  24. }

  25. void main()
  26. {

  27. while(1)
  28. {
  29. /////////////////P2,P1,P0,高位往低位逐个循环点亮3次////////
  30.         for(a=0;a<=2;a++) ///////循环次数(a<=2),3次///////
  31.           {
  32.          RR=0;
  33.                  GG=1;        ///////红色/////
  34.                  BB=1;
  35.        P2=0x01;
  36.            
  37.         for(i=0;i<8;i++)
  38.           {
  39.             
  40.                 P2=_cror_(P2,1);
  41.                 P1=0x00;
  42.                 P0=0x00;
  43.                 delay(100);
  44.           }

  45.                  RR=1;
  46.                  GG=0; //////绿色///////
  47.                  BB=1;
  48.            P1=0x01;

  49.         for(i=0;i<8;i++)
  50.           {
  51.                           
  52.                    P2=0x00;
  53.                 P1=_cror_(P1,1);
  54.                 P0=0x00;
  55.                 delay(100);
  56.           }

  57.                     RR=1;
  58.                  GG=1;        /////////蓝色/////
  59.                  BB=0;                 
  60.             P0=0x01;

  61.         for(i=0;i<8;i++)
  62.           {
  63.             
  64.                 P2=0x00;
  65.                    P1=0x00;
  66.                 P0=_cror_(P0,1);               
  67.                 delay(100);
  68.           }
  69.           }
  70. /////////////////P0,P1,P2低位到高位逐个点亮/////////
  71.          RR=0;
  72.                  GG=1;         //////红色//////
  73.                  BB=1;
  74.        P0=0x80;

  75.         for(i=0;i<8;i++)
  76.           {
  77.             
  78.                 P0=_crol_(P0,1);
  79.                 P1=0x00;
  80.                 P2=0x00;
  81.                 delay(100);
  82.           }

  83.                  RR=1;
  84.                  GG=0;        //////绿色///////
  85.                  BB=1;
  86.            P1=0x80;

  87.         for(i=0;i<8;i++)
  88.           {
  89.                           
  90.                    P0=0x00;
  91.                 P1=_crol_(P1,1);
  92.                 P2=0x00;
  93.                 delay(100);
  94.           }

  95.                     RR=1;
  96.                  GG=1; //////蓝色//////
  97.                  BB=0;                 
  98.             P2=0x80;

  99.         for(i=0;i<8;i++)
  100.           {
  101.             
  102.                 P0=0x00;
  103.                    P1=0x00;
  104.                 P2=_crol_(P2,1);               
  105.                 delay(100);
  106.           }        
  107. ////////////////P2,P1,P0,高位到低位逐个灭,变颜色///////
  108.          RR=0;
  109.                  GG=0; ////////黄色/////////
  110.                  BB=1;
  111.        P2=0xfe;

  112.         for(i=0;i<8;i++)
  113.           {
  114.             
  115.                 P2=_cror_(P2,1);
  116.                 P1=0xff;
  117.                 P0=0xff;
  118.                 delay(200);
  119.           }

  120.                  RR=0;
  121.                  GG=1;        ////////紫色/////////
  122.                  BB=0;
  123.            P1=0xfe;

  124.         for(i=0;i<8;i++)
  125.           {
  126.                           
  127.                    P2=0xff;
  128.                 P1=_cror_(P1,1);
  129.                 P0=0xff;
  130.                 delay(200);
  131.           }
  132.         
  133.                
  134.                     RR=1;
  135.                  GG=0; /////天蓝色//////
  136.                  BB=0;                 
  137.             P0=0xfe;
  138.         for(i=0;i<8;i++)
  139.           {
  140.             
  141.                 P2=0xff;
  142.                    P1=0xff;
  143.                 P0=_cror_(P0,1);               
  144.                 delay(200);
  145.           }        
  146. /////////P2,P1,P0,高位到低位依次每个点亮,循环2次/////////////

  147.    for(a=0;a<=1;a++)//////循环次数程序(a<=1)循环2次//////
  148.           {
  149.              RR=0;
  150.                  GG=1; ////////紫色///////
  151.                  BB=0;
  152.         for(i=0;i<8;i++)
  153.           {
  154.              P2=table7[i];
  155.              P1=0x00;
  156.              P0=0x00;
  157.              delay(50);
  158.           }
  159.           for(i=0;i<8;i++)
  160.           {
  161.             P2=0xff;
  162.             P1=table7[i];
  163.             P0=0x00;
  164.             delay(50);
  165.           }
  166.           for(i=0;i<8;i++)
  167.           {
  168.             P2=0xff;
  169.             P1=0xff;
  170.             P0=table7[i];
  171.             delay(50);
  172.           }
  173.          

  174. /////////P0,P1,P2,低位到高位依次每个点亮,循环/////////////

  175.                  RR=0;
  176.                  GG=0;         ////////白色//////////
  177.                  BB=0;
  178.         for(i=0;i<8;i++)
  179.           {
  180.             P0=table8[i];
  181.                 P1=0x00;
  182.                 P2=0x00;
  183.                 delay(50);
  184.           }
  185.           for(i=0;i<8;i++)
  186.           {
  187.             P0=0xff;
  188.                 P1=table8[i];
  189.                 P2=0x00;
  190.                 delay(50);
  191.           }
  192.           for(i=0;i<8;i++)
  193.           {
  194.             P0=0xff;
  195.                 P1=0xff;
  196.                 P2=table8[i];
  197.                 delay(50);
  198.           }
  199.           }

  200. ////////////////两侧往下流,先左后右流//////////

  201.              RR=0;
  202.                  GG=0;  /////白色
  203.                  BB=0;
  204.         for(i=0;i<8;i++)
  205.           {
  206.             P0=table8[i];
  207.                 P1=0x00;                                 
  208.                 P2=0x00;
  209.                 delay(200);
  210.           }
  211.         for(i=0;i<4;i++)
  212.           {
  213.             P0=0xff;
  214.             P1=table4[i];
  215.                 delay(200);
  216.           }
  217.    for(i=0;i<4;i++)
  218.           {               
  219.                 P1=0x0f;
  220.                 delay(200);
  221.           }        

  222.          RR=0;
  223.                  GG=1;   //////紫色
  224.                  BB=0;
  225.         for(i=0;i<8;i++)
  226.           {
  227.             P2=table7[i];
  228.                 P1=0x00;
  229.                 P0=0x00;
  230.                 delay(200);
  231.           }
  232.         for(i=0;i<4;i++)
  233.           {
  234.             P2=0xff;
  235.             P1=table3[i];
  236.                 delay(200);
  237.           }
  238.         for(i=0;i<4;i++)
  239.       {        
  240.                 P1=0xf0;
  241.                 delay(200);
  242.           }

  243. /////////////////两侧循环闪烁4次///////////

  244.    for(a=0;a<=3;a++)/////循环4次////
  245.          {
  246.              RR=1;
  247.                  GG=0;   //////天蓝色
  248.                  BB=0;
  249.    for(i=0;i<8;i++)
  250.           {
  251.             P2=0xff;
  252.                 P1=0xf0;
  253.                 P0=0x00;
  254.                 delay(100);
  255.           }
  256.                  RR=0;
  257.                  GG=0;   //////黄色
  258.                  BB=1;
  259.    for(i=0;i<8;i++)
  260.           {
  261.             P0=0xff;
  262.                 P1=0x0f;
  263.                 P2=0x00;
  264.                 delay(100);
  265.           }
  266.           }

  267. ////////////////两侧往下逐个点亮////////

  268.          RR=0;
  269.                  GG=1;   //////紫色
  270.                  BB=0;
  271.     for(a=0;a<=1;a++) //////////循环次数(a<=1)4次///////
  272.            {
  273.              for(i=0;i<8;i++)
  274.                {
  275.                 P0=table8[i];
  276.                     P2=table7[i];
  277.                         P1=0x00;
  278.                         delay(200);
  279.                    }
  280.                  for(i=0;i<4;i++)
  281.                    {
  282.                         P0=0xff;
  283.                         P2=0xff;                        
  284.                         P1=table5[i];
  285.                     delay(200);
  286.                }
  287.             }

  288. /////////////////两侧往下逐个熄灭/////////

  289.          RR=0;
  290.                  GG=0;   //////黄色/////
  291.                  BB=1;
  292.     for(a=0;a<=1;a++) //////////循环次数(a<=1)2次///////
  293.            {
  294.             for(i=0;i<8;i++)
  295.               {                              
  296.                 P2=table2[i];
  297.                     P0=table6[i];
  298.                     P1=0xff;
  299.                 delay(100);
  300.               }
  301.             for(i=0;i<5;i++)
  302.               {                              
  303.                  P2=0x00;
  304.                      P1=table9[i];
  305.                         P0=0x00;
  306.                  delay(100);
  307.                }
  308.             }     
  309.                   
  310. ///////////////P0,P1,P2,全亮逐个熄灭/////////
  311.              RR=1;
  312.                  GG=0;   //////绿色/////
  313.                  BB=1;
  314.         for(i=0;i<8;i++)
  315.           {                              
  316.             P0=table6[i];
  317.                 P1=0xff;
  318.                 P2=0xff;
  319.             delay(100);
  320.           }
  321.         for(i=0;i<8;i++)
  322.           {                              
  323.                 P0=0x00;
  324.                 P1=table6[i];
  325.                 P2=0xff;
  326.                delay(100);
  327.           }
  328.    for(i=0;i<8;i++)
  329.           {                              
  330.                 P0=0x00;
  331.                 P1=0x00;
  332.                 P2=table6[i];
  333.                 delay(100);
  334.           }

  335. ///////////////P2,P1,P0,全亮逐个熄灭/////////

  336.          RR=1;
  337.                  GG=1;   //////蓝色/////
  338.                  BB=0;
  339.         for(i=0;i<8;i++)
  340.           {                              
  341.             P2=table2[i];
  342.                 P1=0xff;
  343.                 P0=0xff;
  344.             delay(100);
  345.           }
  346.         for(i=0;i<8;i++)
  347.           {                              
  348.                 P2=0x00;
  349.                 P1=table2[i];
  350.                 P0=0xff;
  351.                delay(100);
  352.           }
  353.    for(i=0;i<8;i++)
  354.           {                              
  355.                 P2=0x00;
  356.                 P1=0x00;
  357.                 P0=table2[i];
  358.                 delay(100);
  359.           }        
  360.          

  361. }
  362. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:608007 发表于 2020-1-7 17:58 | 只看该作者
加上PCB板图

PCB1.rar

562.2 KB, 下载次数: 14, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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