单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:3620|回复:13
打印上一主题下一主题

辉芒微FT60F011A或FT60F211或FT60F1123RB单片机WS2811幻彩5050综合程序

 [复制链接]
跳转到指定楼层
楼主
ID:370644发表于 2023-2-23 10:55|只看该作者|只看大图回帖奖励
  好久没有发帖子了,感谢平台一直帮助我,我今天分享一种彩灯WS2811幻彩芯片的程序,里面有各种模式 渐变、跳变、闪烁、跑马、追逐等模式,还可以写更多的,主控采用目前比较流行且有性价的辉芒微FT60F211RB芯片SOP-8,FLASH的,才2毛多,在实际应用中绝对实用,可以大量投产。附件中有PCB原代码,及图片视频等资料,可以参考。

制作出来的实物图如下:


Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)


单片机源程序如下:
  1. //*********************************************************
  2. /*  文件名:main.c
  3. *       功能:   触摸
  4. *   IC:       FT60F123RB 16MHZ 2T模式
  5. *   晶振:   16M/2T              
  6. */
  7. //*********************************************************
  8. #include "FMD.h"
  9. #include       "SYSCFG.h";
  10. //**********************************************************
  11. //***********************宏定义*****************************
  12. #define  uchar   unsigned char
  13. #define  uint     unsigned int
  14. #define  ulong   unsigned long
  15. #define RGB_count  16
  16. #define RGB_speed  90
  17. uint       shudu=0;
  18. #define DIN RA4 //IO输出
  19. uchar       mod;
  20. const uchar table[]={255,0,0,0,255,0,0,0,255,255,255,0,255,0,255,0,255,255};
  21. const uchar table1[]={255,0,0,255,0,0,255,0,0,0,255,0,0,255,0,0,255,0,0,0,255,0,0,255,0,0,255,255,255,0,255,255,0,255,255,0,255,0,255,255,0,255,255,0,255,0,255,255,0,255,255,0,255,255};
  22. //读取EEPROM的函数  
  23. uchar           n,i,num;
  24. uchar EEPROMread(uchar EEAddr)  
  25. {
  26.        uchar ReEEPROMread;
  27.        EEADR = EEAddr;         //将地址写入EEADR寄存器  
  28.        RD = 1;
  29.        NOP();
  30.        NOP();
  31.        NOP();
  32.        NOP();
  33.        ReEEPROMread = EEDAT;     //EEPROM的读数据 ReEEPROMread = EEDATA;
  34.        RD = 0;
  35.        return ReEEPROMread;
  36. }
  37. //********************************************
  38. //函数名称:EEPROMwrite
  39. //功能:   写数据到EEPROM
  40. //输入参数:EEAddr  需要写入数据的地址
  41. //       Data   需要写入的数据
  42. //返回参数:无
  43. //********************************************
  44. void EEPROMwrite(uchar EEAddr,uchar Data)
  45. {
  46.        GIE = 0;             //写数据必须关闭中断
  47.        while(GIE);         //等待GIE为0
  48.        EEADR = EEAddr;         //EEPROM的地址   写入目标地址
  49.        EEDAT = Data;             //EEPROM的写数据  EEDATA = Data;   写入目标数据  
  50.        EEIF = 0;           //中断标志位清0
  51.        EECON1 |= 0x34;             //置位WREN1,WREN2,WREN3三个变量.
  52.        WR = 1;                         //置位WR启动编程
  53.        NOP();
  54.        NOP();
  55.        NOP();
  56.        NOP();
  57.        while(WR);         //等待EE写入完成
  58.        GIE = 1;
  59. }
  60. /***************EEPROM初始化***************************************/  
  61. void EEPROM_init()
  62. {  
  63.        EEPROMwrite(0x55,0xaa);          
  64.        EEPROMwrite(0x55,0xaa);
  65. }
  66. /*************0码*******************/
  67. void DIN_bit_0()
  68. {
  69.        DIN=1;
  70.       
  71.        DIN=0;       //1+3+4*7
  72.       
  73. }
  74. /*************1码*******************/
  75. void DIN_bit_1()
  76. {
  77.        DIN=1;     //1+3+4*7+1
  78.        NOP(); NOP(); NOP(); NOP(); NOP(); NOP();
  79.        DIN=0;
  80.       
  81. }
  82. /*************reset码*******************/
  83. void reset()
  84. {
  85.        uchar a,b;
  86.        DIN=0;
  87.    for(b=1;b>0;b--)
  88.    for(a=1;a>0;a--);
  89.    NOP();  //if Keil,require use intrins.h
  90. }

  91. /*************数据传输******************/
  92. void send_dat(uchar dat)
  93. { //高位先传
  94.        uchar i;
  95.        for(i=8;i>0;i--)
  96.        {
  97.            if(dat& 0x80)
  98.            DIN_bit_1();
  99.            else
  100.            DIN_bit_0();
  101.            dat<< =1;
  102.        }
  103. }
  104. void send_rgb(uchar g,uchar r,uchar b)
  105. {
  106.        send_dat(g);
  107.        send_dat(r);
  108.        send_dat(b);
  109. }
  110. /***************延时******************/
  111. void delay(uint t)
  112. {
  113.        unsigned  j;
  114.        while(t--)
  115.        for(j=0;j<100;j++);
  116. }
  117. /***************延时******************/
  118. void delay1(uchar t)
  119. {
  120.        unsigned  j;
  121.        while(t--)
  122.        for(j=0;j<10;j++);
  123. }
  124. /*-------------------------------------------------
  125. *  函数名:POWER_INITIAL
  126. *       功能:  上电系统初始化
  127. *  输入:  无
  128. *  输出:  无
  129. --------------------------------------------------*/      
  130. void SYS_INITIAL (void)
  131. {
  132.       
  133.        OSCCON = 0B01110000;//WDT 32KHZ IRCF=110=16MHZ/4=4MHZ,0.25US/T
  134.                                                        //Bit0=1,系统时钟为内部振荡器
  135.                                                        //Bit0=0,时钟源由FOSC<2:0>决定即编译选项时选择
  136.        OPTION = 0B00000000;       //Bit3 PSA   预分频器分配位 0= 预分频器分配给Timer0模块 1:分配给WDT
  137.                                                        //Bit2:0:预分频比选择位 000: 1:2                  
  138.        INTCON = 0;                             //暂禁止所有中断
  139.        PORTA =0B00000000;
  140.       
  141.        TRISA =  0B00000100;           // 0-输出 1-输入  
  142.       
  143.        WPUA =  0B00000100;         //PA端口上拉控制 1-开上拉 0-关上拉
  144.                       
  145.                                                   
  146. }
  147. void jiabian1(uchar sudu)//渐变
  148. {
  149.        uchar i,n;
  150.        send_dat(255);//先赋值给R
  151.        send_dat(0);
  152.        send_dat(0);
  153.        //       G渐亮//R渐灭
  154.        for(i=0;i<255;i++)
  155.        {
  156.            for(n=RGB_count;n>0;n--)
  157.            {
  158.                  send_dat(255-i);
  159.                  send_dat(i);
  160.                  send_dat(0);
  161.            }
  162.            reset();
  163.            delay1(sudu);
  164.        }
  165.        delay1(250);
  166.                  //       G渐亮//R渐灭
  167.        for(i=0;i<255;i++)
  168.        {
  169.            for(n=RGB_count;n>0;n--)
  170.            {
  171.                  send_dat(0);
  172.                  send_dat(255-i);
  173.                  send_dat(i);
  174.            }
  175.            reset();
  176.            delay1(sudu);
  177.        }
  178.        delay1(250);
  179.        //       RGB渐亮
  180.      for(i=0;i<255;i++)
  181.        {
  182.            for(n=RGB_count;n>0;n--)
  183.            {
  184.                  send_dat(i);
  185.                  send_dat(i);
  186.                  send_dat(255);
  187.            }
  188.            reset();
  189.            delay1(sudu);
  190.        }
  191.        delay1(250);
  192.        //       B不变//RG渐灭
  193.      for(i=0;i<255;i++)
  194.        {
  195.            for(n=RGB_count;n>0;n--)
  196.            {
  197.                  send_dat(255);
  198.                  send_dat(255-i);
  199.                  send_dat(255-i);
  200.            }
  201.            reset();
  202.            delay1(sudu);
  203.        }
  204.        delay1(250);
  205. }
  206. void huxi(uchar sudu)//呼吸
  207. {
  208.        uchar i,n;
  209.        //       R渐亮
  210.        for(i=0;i<255;i++)
  211.        {
  212.            for(n=RGB_count;n>0;n--)
  213.            {
  214.                  send_dat(i);
  215.                  send_dat(0);
  216.                  send_dat(0);
  217.            }
  218.            reset();
  219.            delay1(sudu);
  220.        }
  221.        //       R渐灭
  222.        for(i=255;i>0;i--)  
  223.        {
  224.            for(n=RGB_count;n>0;n--)
  225.            {
  226.                  send_dat(i);
  227.                  send_dat(0);
  228.                  send_dat(0);
  229.            }
  230.            reset();
  231.            delay1(sudu);
  232.        }
  233.    //       G渐亮
  234.        for(i=0;i<255;i++)
  235.        {
  236.            for(n=RGB_count;n>0;n--)
  237.            {
  238.                  send_dat(0);
  239.                  send_dat(i);
  240.                  send_dat(0);
  241.            }
  242.            reset();
  243.            delay1(sudu);
  244.        }
  245.            //       G渐灭
  246.        for(i=255;i>0;i--)  
  247.        {
  248.            for(n=RGB_count;n>0;n--)
  249.            {
  250.                  send_dat(0);
  251.                  send_dat(i);
  252.                  send_dat(0);
  253.            }
  254.            reset();
  255.            delay1(sudu);
  256.        }      
  257.        //       B渐亮
  258.        for(i=0;i<255;i++)
  259.        {
  260.            for(n=RGB_count;n>0;n--)
  261.            {
  262.                  send_dat(0);
  263.                  send_dat(0);
  264.                  send_dat(i);
  265.            }
  266.            reset();
  267.            delay1(sudu);
  268.        }
  269.        //       B渐灭
  270.        for(i=255;i>0;i--)  
  271.        {
  272.            for(n=RGB_count;n>0;n--)
  273.            {
  274.                  send_dat(0);
  275.                  send_dat(0);
  276.                  send_dat(i);
  277.            }
  278.            reset();
  279.            delay1(sudu);
  280.        }
  281.    //       RG渐亮
  282.        for(i=0;i<255;i++)
  283.        {
  284.            for(n=RGB_count;n>0;n--)
  285.            {
  286.                  send_dat(i);
  287.                  send_dat(i);
  288.                  send_dat(0);
  289.            }
  290.            reset();
  291.            delay1(sudu);
  292.        }
  293.            //       RG渐灭
  294.        for(i=255;i>0;i--)  
  295.        {
  296.            for(n=RGB_count;n>0;n--)
  297.            {
  298.                  send_dat(i);
  299.                  send_dat(i);
  300.                  send_dat(0);
  301.            }
  302.            reset();
  303.            delay1(sudu);
  304.        }
  305.            //       BR渐亮
  306.        for(i=0;i<255;i++)
  307.        {
  308.            for(n=RGB_count;n>0;n--)
  309.            {
  310.                  send_dat(i);
  311.                  send_dat(0);
  312.                  send_dat(i);
  313.            }
  314.            reset();
  315.            delay1(sudu);
  316.        }
  317.        //       BR渐灭
  318.        for(i=255;i>0;i--)  
  319.        {
  320.            for(n=RGB_count;n>0;n--)
  321.            {
  322.                  send_dat(i);
  323.                  send_dat(0);
  324.                  send_dat(i);
  325.            }
  326.            reset();
  327.            delay1(sudu);
  328.        }
  329.    //       BG渐亮
  330.        for(i=0;i<255;i++)
  331.        {
  332.            for(n=RGB_count;n>0;n--)
  333.            {
  334.                  send_dat(0);
  335.                  send_dat(i);
  336.                  send_dat(i);
  337.            }
  338.            reset();
  339.            delay1(sudu);
  340.        }
  341.            //       BG渐灭
  342.        for(i=255;i>0;i--)  
  343.        {
  344.            for(n=RGB_count;n>0;n--)
  345.            {
  346.                  send_dat(0);
  347.                  send_dat(i);
  348.                  send_dat(i);
  349.            }
  350.            reset();
  351.            delay1(sudu);
  352.        }
  353.            //       BGR渐亮
  354.        for(i=0;i<255;i++)
  355.        {
  356.            for(n=RGB_count;n>0;n--)
  357.            {
  358.                  send_dat(i);
  359.                  send_dat(i);
  360.                  send_dat(i);
  361.            }
  362.            reset();
  363.            delay1(sudu);
  364.        }
  365.            //       RBG渐灭
  366.        for(i=255;i>0;i--)  
  367.        {
  368.            for(n=RGB_count;n>0;n--)
  369.            {
  370.                  send_dat(i);
  371.                  send_dat(i);
  372.                  send_dat(i);
  373.            }
  374.            reset();
  375.            delay1(sudu);
  376.        }      
  377. }
  378. void paoma1(uint sudu)
  379. {
  380.        uchar i,num;
  381.        //R跑马灯增加*******************
  382.        for(i=0;i<=RGB_count;i++)
  383.        {
  384.            for(num=0;num<i;num++)
  385.              {
  386.                  send_dat(255);
  387.                  send_dat(0);
  388.                  send_dat(0);
  389.            }
  390.            reset();
  391.            delay(sudu);
  392.        }
  393.      //G跑马灯增加*******************
  394.        for(i=0;i<=RGB_count;i++)
  395.        {
  396.            for(num=0;num<i;num++)
  397.              {
  398.                  send_dat(0);
  399.                  send_dat(255);
  400.                  send_dat(0);
  401.            }
  402.            reset();
  403.            delay(sudu);
  404.        }
  405.      //B跑马灯增加*******************
  406.        for(i=0;i<=RGB_count;i++)
  407.        {
  408.            for(num=0;num<i;num++)
  409.              {
  410.                  send_dat(0);
  411.                  send_dat(0);
  412.                  send_dat(255);
  413.            }
  414.            reset();
  415.            delay(sudu);
  416.        }
  417.      //RG跑马灯增加*******************
  418.        for(i=0;i<=RGB_count;i++)
  419.        {
  420.            for(num=0;num<i;num++)
  421.              {
  422.                  send_dat(0);
  423.                  send_dat(255);
  424.                  send_dat(255);
  425.            }
  426.            reset();
  427.            delay(sudu);
  428.        }
  429.      //RB跑马灯增加*******************
  430.        for(i=0;i<=RGB_count;i++)
  431.        {
  432.            for(num=0;num<i;num++)
  433.              {
  434.                  send_dat(255);
  435.                  send_dat(0);
  436.                  send_dat(255);
  437.            }
  438.            reset();
  439.            delay(sudu);
  440.        }
  441.      //BG跑马灯增加*******************
  442.        for(i=0;i<=RGB_count;i++)
  443.        {
  444.            for(num=0;num<i;num++)
  445.              {
  446.                  send_dat(255);
  447.                  send_dat(255);
  448.                  send_dat(0);
  449.            }
  450.            reset();
  451.            delay(sudu);
  452.        }
  453.      //RGB跑马灯增加*******************
  454.        for(i=0;i<=RGB_count;i++)
  455.        {
  456.            for(num=0;num<i;num++)
  457.              {
  458.                  send_dat(255);
  459.                  send_dat(255);
  460.                  send_dat(255);
  461.            }
  462.            reset();
  463.            delay(sudu);
  464.        }
  465.      /********************反向*****************/

  466. }
  467. void paoma2(uchar sudu)
  468. {
  469.    uchar i,num;
  470.        //R跑马灯增加*******************
  471.        for(i=0;i<=RGB_count;i++)
  472.        {
  473.            for(num=0;num<i;num++)
  474.              {
  475.                  send_dat(255);
  476.                  send_dat(0);
  477.                  send_dat(0);
  478.            }
  479.            reset();
  480.            delay(sudu);
  481.        }
  482.      for(num=RGB_count;num>0;num--)
  483.        {
  484.            send_dat(0);
  485.            send_dat(0);
  486.            send_dat(0);
  487.        }
  488.        reset();
  489.      //G跑马灯增加*******************
  490.        for(i=0;i<=RGB_count;i++)
  491.        {
  492.            for(num=0;num<i;num++)
  493.              {
  494.                  send_dat(0);
  495.                  send_dat(255);
  496.                  send_dat(0);
  497.            }
  498.            reset();
  499.            delay(sudu);
  500.        }
  501.      for(num=RGB_count;num>0;num--)
  502.        {
  503.            send_dat(0);
  504.            send_dat(0);
  505.            send_dat(0);
  506.        }
  507.        reset();
  508.      //B跑马灯增加*******************
  509.        for(i=0;i<=RGB_count;i++)
  510.        {
  511.            for(num=0;num<i;num++)
  512.              {
  513.                  send_dat(0);
  514.                  send_dat(0);
  515.                  send_dat(255);
  516.            }
  517.            reset();
  518.            delay(sudu);
  519.        }
  520.      for(num=RGB_count;num>0;num--)
  521.        {
  522.            send_dat(0);
  523.            send_dat(0);
  524.            send_dat(0);
  525.        }
  526.        reset();
  527.      //RG跑马灯增加*******************
  528.        for(i=0;i<=RGB_count;i++)
  529.        {
  530.            for(num=0;num<i;num++)
  531.              {
  532.                  send_dat(0);
  533.                  send_dat(255);
  534.                  send_dat(255);
  535.            }
  536.            reset();
  537.            delay(sudu);
  538.        }
  539.      for(num=RGB_count;num>0;num--)
  540.        {
  541.            send_dat(0);
  542.            send_dat(0);
  543.            send_dat(0);
  544.        }
  545.        reset();
  546.      //RB跑马灯增加*******************
  547.        for(i=0;i<=RGB_count;i++)
  548.        {
  549.            for(num=0;num<i;num++)
  550.              {
  551.                  send_dat(255);
  552.                  send_dat(0);
  553.                  send_dat(255);
  554.            }
  555.            reset();
  556.            delay(sudu);
  557.        }
  558.      for(num=RGB_count;num>0;num--)
  559.        {
  560.            send_dat(0);
  561.            send_dat(0);
  562.            send_dat(0);
  563.        }
  564.        reset();
  565.      //BG跑马灯增加*******************
  566.        for(i=0;i<=RGB_count;i++)
  567.        {
  568.            for(num=0;num<i;num++)
  569.              {
  570.                  send_dat(255);
  571.                  send_dat(255);
  572.                  send_dat(0);
  573.            }
  574.            reset();
  575.            delay(sudu);
  576.        }
  577.      for(num=RGB_count;num>0;num--)
  578.        {
  579.            send_dat(0);
  580.            send_dat(0);
  581.            send_dat(0);
  582.        }
  583.        reset();
  584.      //RGB跑马灯增加*******************
  585.        for(i=0;i<=RGB_count;i++)
  586.        {
  587.            for(num=0;num<i;num++)
  588.              {
  589.                  send_dat(255);
  590.                  send_dat(255);
  591.                  send_dat(255);
  592.            }
  593.            reset();
  594.            delay(sudu);
  595.        }
  596.      for(num=RGB_count;num>0;num--)
  597.        {
  598.            send_dat(0);
  599.            send_dat(0);
  600.            send_dat(0);
  601.        }
  602.        reset();
  603. }
  604. void paoma3(uchar sudu)
  605. {
  606.    uchar i,n,num,t;
  607.        //R跑马灯增加*******************
  608.        for(i=0;i<=RGB_count;i++)
  609.        {
  610.            for(num=0;num<i;num++)
  611.              {
  612.                  send_dat(255);
  613.                  send_dat(0);
  614.                  send_dat(0);
  615.            }
  616.            reset();
  617.            delay(sudu);
  618.        }
  619.      for(num=RGB_count;num>0;num--)
  620.        {
  621.            send_dat(0);
  622.            send_dat(0);
  623.            send_dat(0);
  624.        }
  625.        reset();
  626.      //G跑马灯增加*******************
  627.        for(i=0;i<=RGB_count;i++)
  628.        {
  629.            for(num=0;num<i;num++)
  630.              {
  631.                  send_dat(0);
  632.                  send_dat(255);
  633.                  send_dat(0);
  634.            }
  635.            reset();
  636.            delay(sudu);
  637.        }
  638.      for(num=RGB_count;num>0;num--)
  639.        {
  640.            send_dat(0);
  641.            send_dat(0);
  642.            send_dat(0);
  643.        }
  644.        reset();
  645.      //B跑马灯增加*******************
  646.        for(i=0;i<=RGB_count;i++)
  647.        {
  648.            for(num=0;num<i;num++)
  649.              {
  650.                  send_dat(0);
  651.                  send_dat(0);
  652.                  send_dat(255);
  653.            }
  654.            reset();
  655.            delay(sudu);
  656.        }
  657.      for(num=RGB_count;num>0;num--)
  658.        {
  659.            send_dat(0);
  660.            send_dat(0);
  661.            send_dat(0);
  662.        }
  663.        reset();
  664.      //RG跑马灯增加*******************
  665.        for(i=0;i<=RGB_count;i++)
  666.        {
  667.            for(num=0;num<i;num++)
  668.              {
  669.                  send_dat(0);
  670.                  send_dat(255);
  671.                  send_dat(255);
  672.            }
  673.            reset();
  674.            delay(sudu);
  675.        }
  676.      for(num=RGB_count;num>0;num--)
  677.        {
  678.            send_dat(0);
  679.            send_dat(0);
  680.            send_dat(0);
  681.        }
  682.        reset();
  683.      //RB跑马灯增加*******************
  684.        for(i=0;i<=RGB_count;i++)
  685.        {
  686.            for(num=0;num<i;num++)
  687.              {
  688.                  send_dat(255);
  689.                  send_dat(0);
  690.                  send_dat(255);
  691.            }
  692.            reset();
  693.            delay(sudu);
  694.        }
  695.      for(num=RGB_count;num>0;num--)
  696.        {
  697.            send_dat(0);
  698.            send_dat(0);
  699.            send_dat(0);
  700.        }
  701.        reset();
  702.      //BG跑马灯增加*******************
  703.        for(i=0;i<=RGB_count;i++)
  704.        {
  705.            for(num=0;num<i;num++)
  706.              {
  707.                  send_dat(255);
  708.                  send_dat(255);
  709.                  send_dat(0);
  710.            }
  711.            reset();
  712.            delay(sudu);
  713.        }
  714.      for(num=RGB_count;num>0;num--)
  715.        {
  716.            send_dat(0);
  717.            send_dat(0);
  718.            send_dat(0);
  719.        }
  720.        reset();
  721.      //RGB跑马灯增加*******************
  722.        for(i=0;i<=RGB_count;i++)
  723.        {
  724.            for(num=0;num<i;num++)
  725.              {
  726.                  send_dat(255);
  727.                  send_dat(255);
  728.                  send_dat(255);
  729.            }
  730.            reset();
  731.            delay(sudu);
  732.        }
  733.      for(num=RGB_count;num>0;num--)
  734.        {
  735.            send_dat(0);
  736.            send_dat(0);
  737.            send_dat(0);
  738.        }
  739.        reset();
  740. }
  741. void liushui(uchar sudu)
  742. {
  743.            send_dat(255);
  744.            send_dat(0);
  745.            send_dat(0);
  746.           
  747.            send_dat(0);
  748.            send_dat(0);
  749.            send_dat(0);
  750.           
  751.            send_dat(0);
  752.            send_dat(0);
  753.            send_dat(0);
  754.           
  755.            send_dat(0);
  756.            send_dat(0);
  757.            send_dat(0);
  758.            reset();
  759.            delay(sudu);//1250
  760.       
  761.            send_dat(0);
  762.            send_dat(0);
  763.            send_dat(0);
  764.           
  765.            send_dat(255);
  766.            send_dat(0);
  767.            send_dat(0);
  768.           
  769.            send_dat(0);
  770.            send_dat(0);
  771.            send_dat(0);
  772.           
  773.            send_dat(0);
  774.            send_dat(0);
  775.            send_dat(0);
  776.           
  777.            reset();
  778.            delay(sudu);

  779.          send_dat(0);
  780.            send_dat(0);
  781.            send_dat(0);
  782.           
  783.            send_dat(0);
  784.            send_dat(0);
  785.            send_dat(0);
  786.           
  787.            send_dat(255);
  788.            send_dat(0);
  789.            send_dat(0);
  790.           
  791.            send_dat(0);
  792.            send_dat(0);
  793.            send_dat(0);
  794.            reset();
  795.            delay(sudu);
  796.       
  797.            send_dat(0);
  798.            send_dat(0);
  799.            send_dat(0);
  800.           
  801.            send_dat(0);
  802.            send_dat(0);
  803.            send_dat(0);
  804.           
  805.            send_dat(0);
  806.            send_dat(0);
  807.            send_dat(0);
  808.           
  809.            send_dat(255);
  810.            send_dat(0);
  811.            send_dat(0);
  812.           
  813.            reset();
  814.            delay(sudu);  
  815.          /*********R***************/
  816.          send_dat(0);
  817.            send_dat(255);
  818.            send_dat(0);
  819.           
  820.            send_dat(0);
  821.            send_dat(0);
  822.            send_dat(0);
  823.           
  824.            send_dat(0);
  825.            send_dat(0);
  826.            send_dat(0);
  827.           
  828.            send_dat(0);
  829.            send_dat(0);
  830.            send_dat(0);
  831.            reset();
  832.            delay(sudu);
  833.       
  834.            send_dat(0);
  835.            send_dat(0);
  836.            send_dat(0);
  837.           
  838.              send_dat(0);
  839.            send_dat(255);
  840.            send_dat(0);
  841.           
  842.            send_dat(0);
  843.            send_dat(0);
  844.            send_dat(0);
  845.           
  846.            send_dat(0);
  847.            send_dat(0);
  848.            send_dat(0);
  849.           
  850.            reset();
  851.            delay(sudu);

  852.          send_dat(0);
  853.            send_dat(0);
  854.            send_dat(0);
  855.           
  856.            send_dat(0);
  857.            send_dat(0);
  858.            send_dat(0);
  859.           
  860.              send_dat(0);
  861.            send_dat(255);
  862.            send_dat(0);
  863.           
  864.            send_dat(0);
  865.            send_dat(0);
  866.            send_dat(0);
  867.            reset();
  868.            delay(sudu);
  869.       
  870.            send_dat(0);
  871.            send_dat(0);
  872.            send_dat(0);
  873.           
  874.            send_dat(0);
  875.            send_dat(0);
  876.            send_dat(0);
  877.           
  878.            send_dat(0);
  879.            send_dat(0);
  880.            send_dat(0);
  881.           
  882.              send_dat(0);
  883.            send_dat(255);
  884.            send_dat(0);
  885.           
  886.            reset();
  887.            delay(sudu);  
  888.          /*********R***************/
  889.          send_dat(0);
  890.            send_dat(0);
  891.            send_dat(255);
  892.           
  893.            send_dat(0);
  894.            send_dat(0);
  895.            send_dat(0);
  896.           
  897.            send_dat(0);
  898.            send_dat(0);
  899.            send_dat(0);
  900.           
  901.            send_dat(0);
  902.            send_dat(0);
  903.            send_dat(0);
  904.            reset();
  905.            delay(sudu);
  906.       
  907.            send_dat(0);
  908.            send_dat(0);
  909.            send_dat(0);
  910.           
  911.            send_dat(0);
  912.            send_dat(0);
  913.            send_dat(255);
  914.           
  915.            send_dat(0);
  916.            send_dat(0);
  917.            send_dat(0);
  918.           
  919.            send_dat(0);
  920.            send_dat(0);
  921.            send_dat(0);
  922.           
  923.            reset();
  924.            delay(sudu);

  925.          send_dat(0);
  926.            send_dat(0);
  927.            send_dat(0);
  928.           
  929.            send_dat(0);
  930.            send_dat(0);
  931.            send_dat(0);
  932.           
  933.            send_dat(0);
  934.            send_dat(0);
  935.            send_dat(255);
  936.           
  937.            send_dat(0);
  938.            send_dat(0);
  939.            send_dat(0);
  940.            reset();
  941.            delay(sudu);
  942.       
  943.            send_dat(0);
  944.            send_dat(0);
  945.            send_dat(0);
  946.           
  947.            send_dat(0);
  948.            send_dat(0);
  949.            send_dat(0);
  950.           
  951.            send_dat(0);
  952.            send_dat(0);
  953.            send_dat(0);
  954.           
  955.            send_dat(0);
  956.            send_dat(0);
  957.            send_dat(255);
  958.           
  959.            reset();
  960.            delay(sudu);  
  961.          /*********R***************/
  962. }
  963. void paoma5(uint sudu)
  964. {
  965.        send_dat(255);
  966.        send_dat(0);
  967.        send_dat(0);
  968.       
  969.        send_dat(0);
  970.        send_dat(255);
  971.        send_dat(0);
  972.       
  973.        send_dat(0);
  974.        send_dat(0);
  975.        send_dat(255);
  976.       
  977.        send_dat(0);
  978.        send_dat(255);
  979.        send_dat(255);

  980.        send_dat(255);
  981.        send_dat(0);
  982.        send_dat(255);

  983.        send_dat(255);
  984.        send_dat(255);
  985.        send_dat(0);
  986.        reset();
  987.        delay(sudu);//1250

  988.        send_dat(0);
  989.        send_dat(255);
  990.        send_dat(0);
  991.       
  992.        send_dat(0);
  993.        send_dat(0);
  994.        send_dat(255);
  995.       
  996.        send_dat(0);
  997.        send_dat(255);
  998.        send_dat(255);
  999.       
  1000.        send_dat(255);
  1001.        send_dat(0);
  1002.        send_dat(255);

  1003.        send_dat(255);
  1004.        send_dat(255);
  1005.        send_dat(0);

  1006.        send_dat(255);
  1007.        send_dat(0);
  1008.        send_dat(2);
  1009.       
  1010.        reset();
  1011.        delay(sudu);  

  1012. }
  1013. void shanshuo(uint sudu)
  1014. {
  1015.        /**************R***********/
  1016.        uchar n;
  1017.        for(n=RGB_count;n>0;n--)
  1018.        {
  1019.            send_dat(255);
  1020.            send_dat(0);
  1021.            send_dat(0);
  1022.        }
  1023.        reset();
  1024.        delay(sudu);
  1025.        for(n=RGB_count;n>0;n--)
  1026.        {
  1027.            send_dat(0);
  1028.            send_dat(0);
  1029.            send_dat(0);
  1030.        }
  1031.        reset();
  1032.        delay(sudu);
  1033.        /**************G***********/

  1034.        for(n=RGB_count;n>0;n--)
  1035.        {
  1036.            send_dat(0);
  1037.            send_dat(255);
  1038.            send_dat(0);
  1039.        }
  1040.        reset();
  1041.        delay(sudu);
  1042.        for(n=RGB_count;n>0;n--)
  1043.        {
  1044.            send_dat(0);
  1045.            send_dat(0);
  1046.            send_dat(0);
  1047.        }
  1048.        reset();
  1049.        delay(sudu);
  1050.        /**************B***********/

  1051.        for(n=RGB_count;n>0;n--)
  1052.        {
  1053.            send_dat(0);
  1054.            send_dat(0);
  1055.            send_dat(255);
  1056.        }
  1057.        reset();
  1058.        delay(sudu);
  1059.        for(n=RGB_count;n>0;n--)
  1060.        {
  1061.            send_dat(0);
  1062.            send_dat(0);
  1063.            send_dat(0);
  1064.        }
  1065.        reset();
  1066.        delay(sudu);
  1067.       

  1068.        for(n=RGB_count;n>0;n--)
  1069.        {
  1070.            send_dat(0);
  1071.            send_dat(255);
  1072.            send_dat(255);
  1073.        }
  1074.        reset();
  1075.        delay(sudu);
  1076.        for(n=RGB_count;n>0;n--)
  1077.        {
  1078.            send_dat(0);
  1079.            send_dat(0);
  1080.            send_dat(0);
  1081.        }
  1082.        reset();
  1083.        delay(sudu);
  1084.       

  1085.        for(n=RGB_count;n>0;n--)
  1086.        {
  1087.            send_dat(255);
  1088.            send_dat(0);
  1089.            send_dat(255);
  1090.        }
  1091.        reset();
  1092.        delay(sudu);
  1093.        for(n=RGB_count;n>0;n--)
  1094.        {
  1095.            send_dat(0);
  1096.            send_dat(0);
  1097.            send_dat(0);
  1098.        }
  1099.        reset();
  1100.        delay(sudu);
  1101.       

  1102.        /*for(n=RGB_count;n>0;n--)
  1103.        {
  1104.            send_dat(255);
  1105.            send_dat(255);
  1106.            send_dat(0);
  1107.        }
  1108.        reset();
  1109.        delay(sudu);
  1110.        for(n=RGB_count;n>0;n--)
  1111.        {
  1112.            send_dat(0);
  1113.            send_dat(0);
  1114.            send_dat(0);
  1115.        }
  1116.        reset();
  1117.        delay(sudu); */      
  1118. }
  1119. void zondong(uint sudu)//多个灯为例 1个灯一组 流动
  1120. {
  1121.        uchar n,b,a;
  1122.        for(n=0;n<RGB_count;n++)
  1123.        {
  1124.              b=3*n;
  1125.              for(a=0;a<(RGB_count*3);a++)//先扫描出整排灯,静态的初始状态
  1126.              {
  1127.                  send_dat(table[b]);//先取出表格内的3位数 然后通过移位个数*3 因为我们是3位数相加而来
  1128.                  b++;
  1129.                  if(b>=(RGB_count*3))//这里面是取数据到最后一位了,要直接清0,从而实现移位
  1130.                  b=0;
  1131.              }
  1132.                  reset();
  1133.            delay(sudu);//1250
  1134.        }

  1135. }
  1136. void zondong2(uint sudu)//6个灯为例 3个灯一组 流动
  1137. {
  1138.        uchar n,b,a;
  1139.        for(n=0;n<6;n++)
  1140.        {
  1141.              b=9*n;//取样9个
  1142.              for(a=0;a<(6*9);a++)//先扫描出整排灯,静态的初始状态
  1143.              {
  1144.                  send_dat(table1[b]);//先取出表格内的3位数 然后通过移位个数*3 因为我们是3位数相加而来
  1145.                  b++;
  1146.                  if(b>=(6*9))//这里面是取数据到最后一位了,要直接清0,从而实现移位
  1147.                  b=0;
  1148.              }
  1149.                  reset();
  1150.            delay(sudu);//1250
  1151.        }
  1152. }
  1153. /*-------------------------------------------------
  1154. *  函数名:  main
  1155. *       功能:  主函数
  1156. *  输入:  无
  1157. *  输出:  无
  1158. --------------------------------------------------*/
  1159. void main()
  1160. {  
  1161.        SYS_INITIAL();//系统初始化
  1162.        mod=EEPROMread(0x01);
  1163.        mod++;
  1164.        if(mod>3)
  1165.        mod=0;
  1166.        EEPROMwrite(0x01,mod);
  1167.        switch (mod)
  1168.        {
  1169.            case 0:
  1170.            for(n=0;n<=RGB_count;n++)
  1171.            {
  1172.                  send_dat(0);
  1173.                  send_dat(0);
  1174.                  send_dat(0);
  1175.            }
  1176.            reset();
  1177.            delay1(100);
  1178.            shudu=50;
  1179.            break;
  1180.            case 1:
  1181.            shudu=30;
  1182.            break;
  1183.            case 2:
  1184.            shudu=1500;
  1185.            break;
  1186.            case 3:
  1187.            shudu=600;
  1188.            break;

  1189.        }
  1190.        while(1)
  1191.        {
  1192.            switch (mod)
  1193.            {
  1194.                  case 0:
  1195.                  if((shudu>0)&&(shudu<20))
  1196.                  shudu+=2;
  1197.                  else if((shudu>20)&&(shudu<100))
  1198.                  shudu+=10;
  1199.                  else if((shudu>100)&&(shudu<2000))
  1200.                  shudu+=1000;
  1201.                  if(shudu>2000)
  1202.                  shudu=1;
  1203.                  paoma1(shudu);
  1204.                  break;

  1205.                  case 1:
  1206.                  //jiabian1(shudu);
  1207.                  zondong2(3000);
  1208.                  break;

  1209.                  case 2:
  1210.                  shudu+=200;
  1211.                  if(shudu>2000)
  1212.                  shudu=200;
  1213.                  huxi(shudu);
  1214.                  //zondong(shudu);
  1215.                  break;

  1216.                  case 3:
  1217.                  shudu+=50;
  1218.                  if(shudu>1000)
  1219.                  shudu=50;
  1220.                  shanshuo(shudu);
  1221.                  break;
  1222.                  /*case 8:
  1223.                  for(n=0;n<=RGB_count;n++)
  1224.                  {
  1225.                        send_dat(0);
  1226.                        send_dat(255);
  1227.                        send_dat(255);
  1228.                  }
  1229.                  reset();
  1230.                  //delay1(100);
  1231.                  break;
  1232.                  case 9:
  1233.                  for(n=0;n<=RGB_count;n++)
  1234.                  {
  1235.                        send_dat(255);
  1236.                        send_dat(0);
  1237.                        send_dat(255);
  1238.                  }
  1239.                  reset();
  1240.                  delay1(100);
  1241.                  break;
  1242.                  case 10:
  1243.                  for(n=0;n<=RGB_count;n++)
  1244.                  {
  1245.                        send_dat(255);
  1246.                        send_dat(255);
  1247.                        send_dat(255);
  1248.                  }
  1249.                  reset();
  1250.                  delay1(100);
  1251.                  break;*/
  1252.            }
  1253.        }            
  1254. }
复制代码

PCB和视频下载: PCB与视频.7z(8.41 MB, 下载次数: 142)

评分

威望 +3
黑币 +136
收起理由
+ 6
+ 3
+ 30
共享资料的黑币奖励!
+ 100
共享资料的黑币奖励!

查看全部评分

沙发
ID:71233发表于 2023-2-27 08:03|只看该作者
请问这款单片机用什么编译工具的?
板凳
ID:827476发表于 2023-3-25 17:37|只看该作者
lmn2005 发表于 2023-2-27 08:03
请问这款单片机用什么编译工具的?

FMDIDE,官网就叫辉芒微(FMD)
地板
ID:69115发表于 2023-6-23 16:04|只看该作者
楼主技术很高,能用8M MCU时钟 跑幻彩灯程序 很厉害.
5#
ID:224580发表于 2023-8-17 15:25|只看该作者
刚好我也学习辉芒微芯片,感谢楼主分析,向你们学习。
6#
ID:1040201发表于 2023-8-18 17:34|只看该作者
写的很好,比我写的丰富很多,学习到了  ,要关中断
7#
ID:71233发表于 2023-8-18 18:38|只看该作者
请问FMD的编程器贵不贵?
8#
ID:370644发表于 2023-8-31 14:44|只看该作者
lmn2005 发表于 2023-8-18 18:38
请问FMD的编程器贵不贵?

很便宜,才100元  且优势很大。
9#
ID:370644发表于 2023-8-31 14:46|只看该作者
lmn2005 发表于 2023-2-27 08:03
请问这款单片机用什么编译工具的?

是的,例程很多。才2毛钱一颗FLASH,用51移植过来很快。
10#
ID:370644发表于 2023-8-31 14:46|只看该作者
liucan2020 发表于 2023-8-18 17:34
写的很好,比我写的丰富很多,学习到了  ,要关中断

是的,看来你是真的研究过。
11#
ID:430492发表于 2024-6-13 18:26|只看该作者
我国单片机真是百花齐放啊,大而不强啊,这样分散资源,要强大真心难啦!资源有限的情况下品牌还贼多。
12#
ID:3666发表于 2024-6-13 21:56|只看该作者
应该直接把视频效果发出来
13#
ID:1107340发表于 2024-6-17 01:14|只看该作者
辉芒微现在用得很多了

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

Powered by 单片机教程网