"); //-->
|
||||||
|
LED灯光控制系统硬件设计思路
LED灯光控制系统主要包含像素点驱动单元和控制板设计两部分。
1. 显示点驱动单元设计
如何实现让像素点呈现出不同颜色,主要依靠人的视觉间歇惰性原理,利用对于每个像素点产生不同占空比实现颜色的混合。本设计案例的LED颜色显示主要依靠LPD6803自动输出3路256级灰度颜色来实现彩色显示。控制器只需要传送每个像素点的扫描占空比数据就可以了。
下图驱动单元设计,适合于LED彩色护栏管、LED地砖应用。其中红绿蓝3色LED的个数可以是多个。单路LED级联方式可以采用串联或者并联方式实现,在设计是你需要考虑电压/电流的外接驱动方式。数据输出级联到下一个模块的输入就实现了一个系统的级联。
如下图驱动单元设计,适合于LED彩虹管应用。一个模块的级联个数按照设计需要调整。
2. 控制板设计
该硬件只是提供给各位一个控制系统设计的参考,基本说明满足一个普通的LED灯光系统所需要的一些基本条件。根据实际系统的需要,可以选择ARM,CPLD等加快显示数据传输的速度以及USB通讯,SD卡存储方面的要求。
硬件设计目的说明:
U1: 使用通用的MCU51单片机,如果系统拖动像素点级联数不多以及不需要做太复杂的图象动画显示情况下。该MCU甚至于可以选择2051这样管脚少、价格低的MCU。
JP1: 为输出符合LPD6803串行时序的接口,只用DATA、CLOCK、GND即可满足显示数据传送要求。
U4:为SPI FLASH,用于存储节目数据。根据系统需要可以利用片选方式设计多片FLASH存储。SPI FLASH现在比较高容量可以做到4M bits。
U6: 为通讯接口,用于于系统主机通讯控制节目播放的内容和下传节目数据。以及用于程序升级。
3. 软件驱动设计
以下以驱动单个像素点来说明数据传送的方式。LPD6803是一个可以自动产生128级别
LED_SendData(BYTE Rdt, BYTE Gdt, BYTE Bdt)
{
......
SCLK = 0;
SDO = 0;
for(i=0;i<32;i++) {SCLK=1;SCLK=0} //送起始32bits 0
SDO=1;SCLK=1;SCLK=0; //送起始位'1'
//输出5位红色
mask = 0x10;
for(j=0;j<5;j++)
{
if(mask&Rdt) SDO = 1;
else SDO = 0;
SCLK=1;SCLK=0;
mask>>=1;
}
//输出5位绿色
mask = 0x10;
for(j=0;j<5;j++)
{
if(mask&Bdt) SDO = 1;
else SDO = 0;
SCLK=1;SCLK=0;
mask>>=1;
}
//输出5位蓝色
mask = 0x10;
for(j=0;j<5;j++)
{
if(mask&Bdt) SDO = 1;
else SDO = 0;
SCLK=1;SCLK=0;
mask>>=1;
}
SDO=0;
SCLK=1;SCLK=0; //补1个CLOCK,如果一次送出了n个点的数据,则需要补n个Clock.
......
}
参考文献:“彩拓科技开发有限公司”提供的LPD6803资料
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。