#include "LPD6803.h"
#include "myhfile.h"
extern unsigned char RGB_seg[nDots][3];
void RGB_LPD6803(void)
{
INT8U i, mask, dr, dg, db;
INT16U j;
SPI_clk_CLR(); //=GPIOPinWrite(GPIO_PORTC_BASE,clk0,~clk0)
SPI_data_CLR(); //=GPIOPinWrite(GPIO_PORTC_BASE,data,~data)
for(i=0;i<32;i++)
{
SPI_clk_SET();
SPI_clk_CLR();
}
for(j=0;j<nDots;j++)
{
SPI_data_SET(); /* 发送起始位 */
SPI_clk_SET();
SPI_clk_CLR();
//输出5位红色数据
mask=0x10;
for(i=0;i<5;i++)
{
//if(mask&(~RGB_seg[j][0]))SPI_data_SET();
dr =RGB_seg[j][0];
if(mask&dr)SPI_data_SET();
else SPI_data_CLR();
SPI_clk_SET();
SPI_clk_CLR();
mask>>=1;
}
//输出5位绿色数据
mask=0x10;
for(i=0;i<5;i++)
{
//if(mask&(~RGB_seg[j][1]))SPI_data_SET();
//if(mask&RGB_seg[j][1])SPI_data_SET();
dg =RGB_seg[j][1];
if(mask&dg)SPI_data_SET();
else SPI_data_CLR();
SPI_clk_SET();
SPI_clk_CLR();
mask>>=1;
}
//输出5位蓝色数据
mask=0x10;
for(i=0;i<5;i++)
{
//if(mask&(~RGB_seg[j][2]))SPI_data_SET();
db =RGB_seg[j][2];
if(mask&db)SPI_data_SET();
else SPI_data_CLR();
SPI_clk_SET();
SPI_clk_CLR();
mask>>=1;
}
}
SPI_data_CLR();
for(j=0;j<nDots;j++)
{
SPI_clk_SET();
SPI_clk_CLR();
}
}