找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2709|回复: 10
收起左侧

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

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

制作出来的实物图如下:

正面实拍

正面实拍

反面实拍

反面实拍


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

单片机源程序如下:
  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. }
复制代码
51hei.png
PCB和视频下载: PCB与视频.7z (8.41 MB, 下载次数: 125)

评分

参与人数 2威望 +3 黑币 +130 收起 理由
wpppmlah + 3 + 30 共享资料的黑币奖励!
admin + 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时钟 跑幻彩灯程序 很厉害.
回复

使用道具 举报

ID:224580 发表于 2023-8-17 15:25 | 显示全部楼层
刚好我也学习辉芒微芯片,感谢楼主分析,向你们学习。
回复

使用道具 举报

ID:1040201 发表于 2023-8-18 17:34 | 显示全部楼层
写的很好,比我写的丰富很多,学习到了  ,要关中断
回复

使用道具 举报

ID:71233 发表于 2023-8-18 18:38 | 显示全部楼层
请问FMD的编程器贵不贵?
回复

使用道具 举报

ID:370644 发表于 2023-8-31 14:44 | 显示全部楼层
lmn2005 发表于 2023-8-18 18:38
请问FMD的编程器贵不贵?

很便宜,才100元  且优势很大。
回复

使用道具 举报

ID:370644 发表于 2023-8-31 14:46 | 显示全部楼层
lmn2005 发表于 2023-2-27 08:03
请问这款单片机用什么编译工具的?

是的,例程很多。才2毛钱一颗FLASH,用51移植过来很快。
回复

使用道具 举报

ID:370644 发表于 2023-8-31 14:46 | 显示全部楼层
liucan2020 发表于 2023-8-18 17:34
写的很好,比我写的丰富很多,学习到了  ,要关中断

是的,看来你是真的研究过。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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