-
大小: 2KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-24
- 語言: 其他
- 標(biāo)簽: WS2811_C51??
資源簡介
WS2811_C51程序

代碼片段和文件信息
/****************************************************************************************
*?WS2811?彩燈驅(qū)動(dòng)函數(shù)
*
*?調(diào)用方法:
* 修改宏定義:?#define?nWs?1 //?有多少顆WS2811級聯(lián)
* WS_Init(); //?IO初始化
* WsDat[0]?=?0x808080;//顯存賦值
* WS_SetAll();??//?發(fā)送數(shù)據(jù)
* ColorToColor(unsigned?long?color0?unsigned?long?color1);//?顏色漸變算法
*
*?作者:星希望(已校驗(yàn))
*?日期:2015年6月24日
****************************************************************************************/
#include?“sys.h“
#include?
#include?“WS2811.h“
#include?“delay.h“
/*?顯存?*/
unsigned?long?WsDat[nWs];
/**************************************************************************************
*?IO初始化(移植時(shí)請修改)
**************************************************************************************/
void?WS_Init()
{
GPIO_InitTypeDef??GPIO_InitStructure;
//端口時(shí)鐘,使能
RCC_APB2PeriphClockCmd(?RCC_APB2Periph_GPIOA?ENABLE?); ?
//?端口配置
GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_0; //?PIN
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_Out_PP;? //?推挽輸出
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz; //?IO口速度為50MHz
GPIO_Init(GPIOA?&GPIO_InitStructure); //?根據(jù)設(shè)定參數(shù)初始化?
}
/**************************
*?內(nèi)部延時(shí)
***************************/
void?delay2us()
{
unsigned?char?i;
for(i=0;?i<12;?i++);
}
void?delay05us()
{
unsigned?char?i;
for(i=0;?i<1;?i++);
}
/***************************
*?發(fā)送一比特
****************************/
void?TX0()?? {?PAout(0)?=?1;?delay05us();?PAout(0)?=?0;?delay2us();?}?//?發(fā)送0
void?TX1()?? {?PAout(0)?=?1;?delay2us();??PAout(0)?=?0;?delay05us();?}?//?發(fā)送1
void?WS_Reset()?{?PAout(0)?=?0;?delay_us(60);??PAout(0)?=?1;?PAout(0)?=?0;?}
/**************************************************************************************
*?發(fā)送一字節(jié)
**************************************************************************************/
void?WS_Set1(unsigned?long?dat)
{
unsigned?char?i;
for(i=0;?i<24;?i++)
{
if(0x800000?==?(dat?&?0x800000)?) TX1();
else TX0();
dat<<=1; //左移一位
}
}
/**************************************************************************************
*?發(fā)送所有字節(jié)
**************************************************************************************/
void?WS_SetAll()
{
unsigned?char?j;
for(j=0;?j {
WS_Set1(WsDat[0]);??//?j?/?0
}
WS_Reset();
}
/********************************************
*?求絕對值
********************************************/
unsigned?char?abs0(int?num)
{
if(num>0)?return?num;
num?=?-num;
return?(unsigned?char)?num;
}
/***********************************************************************************
*?顏色漸變算法
*?誤差?<=?2
************************************************************************************/
u32?ColorToColor(unsigned?long?color0?unsigned?long?color1)
{
unsigned?char?Red0?Green0?Blue0;??//?起始三原色
unsigned?char?Red1?Green1?Blue1;??//?結(jié)果三原色
int ??RedMinus?GreenMinus?BlueMinus; //?顏色差(color1?-?color0)
unsigned?char
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????4266??2015-07-01?19:41??WS2811.c
?????文件????????500??2015-07-24?16:15??WS2811.h
-----------?---------??----------?-----??----
?????????????????4766????????????????????2
評論
共有 條評論