词条 | LPD1109 |
释义 | LPD1109使用手册一、发同步帧1:将Din线置低电平。 2:连续从CLKin记脚给出32个脉冲。 二、发送数据1:LPD1109一个IC可以控制9路LED,每一路LED是通过一个字节的数据来控制它的亮度的(即一路LED有256种亮度,它是通过PWM的形式来控制的) 2:每发3个字节的数据之前先得发一个高电平的起始位 3: 在时钟线为低电平时放好数据,在时钟上升沿发出数据(芯片是在时钟上升沿采样数据的) 4:每一次发同步帧都是新一轮数据的开始 三、结连1:若有n个芯片结连,同步帧后的前9字节数送入第一个芯片,第二个9字节数送入第二个芯片,第三个9字节数送入第三个芯片等等,依此类推第n个9字节数送入第n个芯片。 2:若要在第n个芯片上显示你要显示的数据;你需先送完同步帧,再送n个9字节数的内容(不需改变显示的IC的9字节数不要变,维持原数即可),最后再送一字节的任意数即可。 四、发同步帧1:将Din 线置低电平 2:连续从CLKin 记脚给出32 个脉冲 32个0起始位,注意事项起始位必须是32位的0,多了少了都出错 五、发送数据1:LPD1109 一个IC 可以控制9 路LED,每一路LED 是通过一个字节的数据来控制它的亮度的(即一路 LED256 种亮度,它是通过PWM 的形式来控制的) 2:每发3 个字节的数据之前先得发一个高电平的起始位 3:在时钟线为低电平时放好数据,在时钟上升沿发出数据(芯片是在时钟上升沿采样数据的) 4:每一次发同步帧都是新一轮数据的开始发了起始位后,后面数据就是"1" + 8BIT RED + 8BITGREEN + 8BIT BLUE +"1" + 8BIT RED + 8BITGREEN + 8BIT BLUE + "1"+ 8BIT RED + 8BITGREEN+ 8BITBLUE (1个IC的数据到此发完)+ 下一个IC的3个点的RGB数据......全部点传完后,最好在最后一个点后面再追加一个IC的数据(就是3个点的RGB数据),是要把前面的数据挤出去而追加的这个数据,这个数据是3个点的RGB数据就是了,而最后一个IC的数据就是3个25BIT,可以最好全是1 六、结连1:若有n 个芯片结连,同步帧后的前9 字节数送入第一个芯片,第二个9 字节数送入 第二个芯片,第三个9 字节数送入第三个芯片等等,依此类推第n 个9 字节数送入第 n 个芯片。 2:若要在第n 个芯片上显示你要显示的数据;你需先送完同步帧,再送n 个9 字节数 的内容(不需改变显示的IC 的9 字节数不要变,维持原数即可),最后再送一字节的 任意数即可。 参考程序C代码: //#define Data_in P1_0 //#define Data_clk P1_1 void DELAY_xus(uchar dd) { while(dd--); } void Send_Begin(void)// 发同步帧 { uchar i; Data_clk = 0; Data_in = 1; //////////////////////////// DELAY_xus(1); Data_clk = 1; Data_clk = 0; ////////////////////////////////// Data_in = 0; //将Din线置低电平 for(i=0;i<PUB_Flage;i++)// 发所需脉冲数 { Data_clk = 0; /////////////////////////////////// Data_clk = 1; ///////////////////////////////// } Data_in = 0; Data_clk = 0; } void Send_start_Bit(void)//发一个高电平的起始位 { Data_clk = 0; Data_in = 1; ///////////////////////////////// DELAY_xus(1); Data_clk = 1; Data_clk = 0; /////////////// //DELAY_xus(1);/////////////// } void Send_Data(uchar *dd,uchar len)// 带同步帧发数据 { uchar i,j; Send_Begin();//起始帧 ////////////////////////////////////// //////////////////////////////////////// for(j=0;j<len;j++) { if((j%3) == 0)Send_start_Bit(); for(i=0;i<8;i++) { Data_clk = 0; if(dd[j] & 0x80)Data_in = 1; else Data_in = 0; DELAY_xus(1);/// Data_clk = 1; dd[j] = dd[j] << 1; } } Data_in = 0; Data_clk = 0; } void Send_Buff(uchar *dd,uchar len)//// 不带同步帧发数据 { uchar i,j; uchar cc; ////////////////////////////////////// //////////////////////////////////////// for(j=0;j<len;j++) { if((j%3) == 0)Send_start_Bit(); cc = dd[j]; for(i=0;i<8;i++) { Data_clk = 0; if(cc & 0x80)Data_in = 1; else Data_in = 0; DELAY_xus(1);//////////////// Data_clk = 1; cc = cc << 1; } } Data_in = 0; Data_clk = 0; } |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。