基于AVR的RGB彩灯控制芯片WS2801的控制程序
时间:01-30 16:41 阅读:1710次
*温馨提示:点击图片可以放大观看高清大图
简介:本文主要介绍的是基于AVR的RGB彩灯控制芯片WS2801的控制程序
#include"color.h"
#include"delay.h"
// 0.18084us
void Sbi_SDI()
{
sbi(PORTC,1);
}
void Cbi_SDI()
{
cbi(PORTC,1);
}
void Sbi_CKI()
{
sbi(PORTC,0);
}
void Cbi_CKI()
{
cbi(PORTC,0);
}
void Send_CKI() //WS2801 上升沿
{
Cbi_CKI(); // 时钟 拉低
_delay_us(6);
Sbi_CKI(); // 时钟 拉高
_delay_us(6);
Cbi_CKI(); // 时钟 拉低
}
void Write_WS2801_Data(unsigned char _data) //WS2801
{
unsigned char dai;
unsigned char cache;
for(dai=0;dai<8;dai++)
{
cache = (_data & 0x80)>>7;
if(cache)
Sbi_SDI();
else
Cbi_SDI();
Send_CKI();
_data <<= 1;
}
}
void Write_WS2801_ColorData(unsigned char *pd)
{
unsigned char LEDMax = 0; // LED 最大数量
Cbi_CKI();
Cbi_SDI();
_delay_us(250);
_delay_us(250);
for(LEDMax = 0;LEDMax<27;LEDMax++)
{
//Write_WS2801_Data(Red);
//Write_WS2801_Data(Green);
//Write_WS2801_Data(Blue);
Write_WS2801_Data(*pd);
pd++;
}
}