logo资料库

4位RGB LED彩灯控制器PCA9633的应用.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
彩灯控制器PCA9633的应用的应用 4位位RGB LED彩灯控制器 PCA9633是一款通过I2C总线控制的4路LED控制芯片,每一路LED输出的状态可以设置为没有PWM(Pulse Width Modulation)控制的关或开,或者由其独立的PWM控制器的值和组PWM控制器的值确定。LED驱动输出 的信号频率为97 kHz,占空比在0%~99.6%可调。本文介绍PCA9633的I2C协议,重点介绍它与CPU的硬件电 路图以及通过C语言编程实现I2C时序,驱动LED灯发光,最后给出应用实例。   摘 摘 要要:   关键词关键词: PCA9633; 0 引言引言   在酒店、舞台、娱乐场、咖啡厅、商场、生日宴会、家庭影院、节庆日等室内外场所,为了展示情调装饰,烘托气氛,经 常看到RGB LED灯的大量使用。LED是一种性能优良的显示器件,具有寿命长、节电、高亮度、多种发光颜色、响应速度快 和驱动电压低等优点,在节省能源的同时还可以通过PWM器件调节LED发光强度,依据RGB三原色混光原理调出多种颜色, 再通过MCU智能控制实现多种显示效果。本文主要是介绍飞利浦公司生产的一款RGB LED控制器PCA9633的应用。 1 PCA9633芯片的原理及特点 芯片的原理及特点     1.1 PCA9633的特点的特点[2-3]   PCA9633是I2C总线控制的可编程PWM输出的4位LED驱动器件,主要应用LED RGB红光/蓝光/绿光/琥珀色的混光,性能 指标如下:   (1)4路LED驱动,每路驱动可以通过软件编程为四种状态,分别是:开、关、可编程PWM闪烁控制输出、可编程每路 灰度级别,同时支持4路整体亮度调节的PWM混光输出。   (2)调光控制,PWM输出频率97 kHz,每路有256个灰度级别。   (3)闪烁控制,PWM可编程频率范围0.093 Hz~24 Hz,占空比可编程范围0%~99.6%。   (4)可通过190 Hz的PWM输出对四路PWM输出整体亮度256级调节。   (5)4位输出可编程设置为推拉输出(在5 V时,灌电流25 mA,拉电流10 mA)。   (6)7个硬件地址设定引脚,同一I2C总线最多可接126片。   (7)每片PCA9633有4个可编程软件地址:一个全部响应地址和三个子地址。   (8)内置25 MHz晶振和上电复位电路,也可通过I2C总线实现软件复位。   (9)SDA/SCL内置噪声滤波器,支持1 MHz的I2C快速模式。   (10)支持热插入,低待机电流,支持电压范围:2.3~5.5 V。   其引脚图如图1所示。   引脚描述:   (1)A6~A0:7个地址输入引脚;   (2)LED3~LED0:4位LED输出驱动引脚;   (3)OE:输出使能引脚,低电平有效;   (4)Vss,VDD:分别是地和电源;
  (5)SDA:I2C总线的数据输入/输出引脚;   (6)SCL:I2C总线的时钟输入引脚。   1.2 PCA9633电路连接图[1-3]   单片机与PCA9633芯片的连接采用I2C总线的方式,I2C接口引脚描述:   (1)串行数据输入/输出(SDA):单片机与PCA9633通信的数据输入/输出线。   (2)串行时钟输入(SCL):单片机与PCA9633通信时的同步时钟。   (3)片选输入(OE):输出使能端,当OE有效时,PCA9633的LEDn输出有效。   PCA9633的每一路LED驱动输出电流最大25 mA,当RGB灯的工作电流不大时,可以直接接输出,如果RGB的电流大, 可以在PCA9633的LED驱动输出端加场效应管,例如AP2306,可以提高驱动能力,输出的连接电路如图2所示。根据需 要,LED可以串接多个,多个LED串接时,要考虑LED的管压降,所以要提高LED的电源电压。为了增加I2C总线的通信距 离,增加PCA9600驱动器。硬件电路连接图见图2。   1.3 PCA9633芯片寄存器功能描述[2]   PCA9633对RGB LED灯的控制(亮度,明暗、闪烁,灯的整体控制),是通过设置其相关的寄存器完成的,下面介绍其 有关寄存器的功能与设置方法。   1.3.1 器件地址   PCA9633是4位I2C总线的LED驱动器,与主机通信遵循I2C协议的格式,主机先发出启动信号,随后发出从机 (PCA9633)的地址,封装为16脚的PCA9633,有7个地址引脚分别为A0~A6,从机地址最多有27,即128个,在这128个地 址中,其中软件复位地址(0x06)和LED呼叫地址(0x0C)这两个地址不能作为从机地址。   (1)正常的I2C-BUS地址   封装为16脚的PCA9633从机地址的组成如图3所示,最高7位是地址线,最低位是读写控制位,如果是读操作最低位 为“1”,若是写操作最低位为“0”。还有一些地址是保留的,最好不要设置为从机地址,例如:(0000 011,1111 1xx,0000 000,0000 1xx)。   (2)LED ALL Call IIC-bus address全呼叫地址   全呼叫寄存器的地址是0x0C,功能是当PCA9633芯片的控制寄存器中的某个寄存器设置为全呼叫时,那么I2C总线上所 有PCA9633器件都可以在同一时刻被寻址。上电时,全呼叫寄存器是使能的,默认值是0xE0h或0xE1h,当主机发送E0h或 E1h时,PCA9633会出一个应答信号,所以全呼叫地址的值0xE0h和0xE1h不能作为从机地址。全呼地址的值是可以通过I2C 总线编程的。
  (3)LED Sub Call IIC-bus address子呼叫地址   PCA9633有3个子呼叫地址寄存器,可以通过I2C总线设置呼叫总线上的任一PCA9633器件,3个子呼叫地址为 0x09h,0x0ah,0x0bh。上电时,3个子地址寄存器为默认的值(写操作是0xE2h,读操作是0xE3h)、(写操作是0xE4h, 读操作是0xE5h)、(写操作是0xE8h,读操作是0xE9h);初始状态下子呼叫寄存器是禁止使能的,所以这6个值可以作为从 机地址。   (4)Software Reset IIC-bus address软件复位地址   当PCA9633需要主机软件编程复位时,可以使用这个地址,它的地址为0x06h。   1.3.2 PCA9633控制寄存器[2]   PCA9633有13个控制寄存器,通过设置这些寄存器来改变4路LED输出的状态,可以实现独立控制或整体控制4路LED亮 度和闪烁。每个寄存器的数据位详细说明可以参阅它的数据手册。   (1)MODE1-模式1寄存器(地址0x00h):主要用来设置子呼叫地址或全呼叫地址是否使能。   (2)MODE2-模式2寄存器(地址0x01h):主要功能是设置灯的输出逻辑是否反转、配置4位LED是OD门还是推拉输出 结构输出,以及输出禁止时4位LED输出是高电平、低电平还是高阻状态。   (3)PWMx(x可以取值0,1,2,3)-单个LED灯亮度控制寄存器(地址分别是0x02h,0x03h,0x04h,0x05h):4路 LED输出控制信号是频率为97 kHz,占空比可调的矩形波,通过设置亮度控制寄存器的值,改变占空比,调节LED灯的亮度, 占空比值越大,灯越亮。   (4)组控占空比因数寄存器(Group duty cycle control,GRPPWM,地址0x06h):功能是同时设置4个LED灯亮的时 间,通过设置GRPPWM的值来调整占空比从0%~99.6%变化,占空比值越大,灯亮的时间越长。   (5)组频率控制寄存器(Group frequency,GRPFREQ):其功能是同时设置4位LED输出信号的频率,即改变LED闪 烁的频率。   (6)灯输出状态寄存器(LED driver outputstate,LEDOUT,地址为0x08h):其功能是设置LED驱动输出的状态,通 过编程可以设置4位LED灯灭、亮、单个灯亮、4个LED灯闪烁。 2 C语言编程软件设计 语言编程软件设计[2、、4、、5]     2.1 写写PCA9633一个控制寄存器 一个控制寄存器   PCA9633遵循I2C总线协议[3],写一个控制寄存器的时序如图4所示。   主机与从机通信时,开始时主机先发起始信号,这个起始信号要满足I2C协议的起始条件,然后是从机的写地址,由图2 知从机的地址为0xa2h(写)、0xa3h(读),随后是从机发送应答信号,从机应答后主机发送某一个控制寄存器的地址,从 机再次应答后,主机在发送控制寄存器的数据,从机收到后发送主机应答信号,主机收到应答信号后发送停止条件,这样就结 束一个控制寄存器的写操作。   例如:写某个寄存器操作定义函数名定义为write9633(),函数的功能描述如下:   void write9633(unsigned char address1,unsigned char address2,unsigned char info)   {   start();//起始信号writebyte(address1);   //从机地址   clock();//应答信号   writebyte(address2);//写MODE1寄存器地址   clock();   writebyte(info);//写MODE1寄存器数据   clock();
  stop();//主机发停止信号   delay1(5000);//延时   }   其中address1为从机地址,address2为控制寄存器地址,info为要写入控制寄存器的数据。有关上述子函数的实现可以参 考I2C协议的编程,由于篇幅所限,不再详述。    2.2 组控组控4位位LED灯闪烁的主要程序 灯闪烁的主要程序   PCA9633控制寄存器的宏定义:   #define MODE1 0x00   #define MODE2 0x01   #define PWM0 0x02   #define PWM1 0x03   #define PWM2 0x04   #define PWM3 0x05   #define GRPPWM 0x06   #define GRPPFREQ0x07   #define LEDOUT 0x08   #define SUBADR1 0x09   #define SUBADR2 0x0A   #define SUBADR3 0x0B   #define ALLCALLADR 0x0C   sbit cs=P2^5;   write9633(0xa2,MODE1,0x00);   //写模式寄存器1,0xa2为从机地址   write9633(0xa2,MODE2,0x22);   //写模式寄存器2,cs=1时,LEDn高阻抗,灯不亮   write9633(oxa2,LEDOUT,0xff);   write9633(0xa2,GRPPWM,0xa0);   //改变占空因数,值越小,亮的时间越短   write9633(0xa2,GRPPFREQ,0xa0);   //控制4个灯的闪烁频率,值越小,闪烁越快   cs=0;//输出使能   write9633(0xa2,PWM0,100);   //100数值是灯的亮度,根据要求可以改变   write9633(0xa2,PWM1,100);   write9633(0xa2,PWM2,100);   write9633(0xa2,PWM3,100);   程序里对MODE2寄存器的设置是基于LED输出配置是OD门结构,输出配置如果是推拉输出结构,即输出加FET驱动时, 模式2(MODE2)寄存器设置0x26h。
  如果I2C总线上连接多个PCA9633,则可以使用LED呼叫地址,即上述程序里地址0xa2改为0xe0就可以了。这样可以节 约I2C总线操作指令。0xe0是系统上电默认的值,也可以通过写LED呼叫地址改变,通过写指令 write9633(0xa2,0x0c,0xb2)即改为0xb2。     2.3 实现呼吸灯的效果 实现呼吸灯的效果   循环改变亮度控制寄存器的数值,可以实现呼吸灯的效果,以从机地址0xa22为例说明,主要代码如下:   for(i=0;i<255;i++)   { write9633(0xa2,PWM0,i);   write9633 (0xa2,PWM1,i);   write9633(0xa2,PWM2,i);   write9633(0xa2,PWM3,i);   delay(500);   } 3 结束语结束语   PCA9633在LED控制方面性能显著,操作方便。特别是为红/绿/蓝/琥珀(RGBA)色的混合应用进行了优化。另外,它还 有3个子呼地址可以实现特定的组响应I2C总线。例如,可以允许所有的红色LED灯亮或灭或实现跑马灯的效果,从而减少I2C 指令。通过改变红、黄、绿LED的输出状态,依据RGB混光原理来实现任意颜色的显示。   参考文献   参考文献   [1] 倪晓军,章韵.单片机原理与接口技术[M].北京:清华大学出版社,2009.   [2] 恩智浦.PCA9633 data sheet[EB/OL].(2006)[2014-11- 14].http://www.cn.nxp.com/documents/data_sheet/PCA9633.pdf.   [3] 何立民.I2C总线应用系统设计[M].北京:北京航空航天大学出版社,1995.   [4] 马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2003.   [5] 徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京:电子工业出版社,1998.
分享到:
收藏