标题: 单片机stc12c5a60s2实现WS2812灯带显示,功能已实现 [打印本页]

作者: f77    时间: 2018-8-29 00:23
标题: 单片机stc12c5a60s2实现WS2812灯带显示,功能已实现
/****************************************

使用12c5a60s2
使用24Mhz
***************************************/
*[free]#include "RGB.H"
#include "delay.h"
#include "USART.h"

u8  Display[24];

/*******************************************************
* 函数名: RGB_LOW
* 描述  :0码
* 输入  :无
* 输出  :无
* 备注         :
*******************************************************/
void RGB_LOW()
{
   Din=1;
        _nop_();
   Din=0;
         _nop_();_nop_();_nop_();_nop_();
         _nop_();_nop_();_nop_();_nop_();
         _nop_();_nop_();_nop_();_nop_();
}
/*******************************************************
* 函数名: RGB_High
* 描述  :1码
* 输入  :无
* 输出  :无
* 备注         :
*******************************************************/
void RGB_High()
{
Din=1;
         _nop_(); _nop_();_nop_();_nop_();
         _nop_();_nop_();_nop_();_nop_();
         _nop_();_nop_();_nop_();_nop_();

  Din=0;
         _nop_();_nop_(); _nop_(); _nop_();

}
/*******************************************************
* 函数名: RGB_RESET
* 描述  :复位
* 输入  :无
* 输出  :无
* 备注         :
*******************************************************/
void RGB_RESET()
{

  Din = 0;
    delay_us(60);
}
/*******************************************************
* 函数名:RGB_display
* 描述  :颜色写入
* 输入  :r:红色
           g;蓝色
                   b;绿色
                   len;灯的个数
* 输出  :无
* 备注         :0-255级亮度               
*******************************************************/
void RGB_display(u8 g,u8 r ,u8 b,u8 len)// g绿色    r红色    b蓝色          len 为灯珠个数
{
          u8 i;
                  RGB_RESET();
              for(i=0;i<len;i++)
                    {
                       
                            RGB_BYTE(g);
                           RGB_BYTE(r);
                           RGB_BYTE(b);                                                                                                         
                    }
                  RGB_RESET();
          
}
/*******************************************************
* 函数名: RGB_BYTE
* 描述  :单色一个字节写入
* 输入  :X  为
                r
                                g
                                b
* 输出  :无
* 备注         :
*******************************************************/
void RGB_BYTE(u8 X)                     
{
      u8 i;
          for(i=0;i<8;i++)
            {
                     
                            if((X&0X80))
                      {
                            RGB_High();
                             
                          }
                          else
                             RGB_LOW();
                          
                         X=X<<1;
                }
}

/*******************************************************
* 函数名: RGB_BYTE
* 描述  :单色一个字节写入
* 输入  :X  为
                r
                                g
                                b
* 输出  :无
* 备注         :
*******************************************************/



[free]#include "STC12C5A60S2.h"
#include "delay.h"
#include "USART.h"
#include "RGB.H"


void main()
{
        u8 i;
        uart1_init();      //串口1初始化
        Din =0;
         delay_ms(5);
         P0M1 = 0X00;P0M0 = 0X00;
         P0=1;         
        while(1)
         {       
                    for(i=1;i<8;i++)
                 {                  
             RGB_display(0x00,0x00,0x01,i);                      //  绿色  红色  蓝色                         0-255灰度调节    i为灯珠个数
             delay_ms(500);                 
                  }
          }
}


RGB灯带.rar

161.89 KB, 下载次数: 122, 下载积分: 黑币 -5

灯带总共7颗,可连续添加很多颗


作者: admin    时间: 2018-8-29 02:04
原理图能上传或者介绍一下电路吗?
作者: 热带雨林    时间: 2018-12-18 21:32
程序下载了,好像没反应
作者: AlphaEta    时间: 2019-4-3 14:29
谢谢分享




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1