《电子技术应用》
您所在的位置:首页 > 显示光电 > 设计应用 > 4位RGB LED彩灯控制器PCA9633的应用
4位RGB LED彩灯控制器PCA9633的应用
2015年微型机与应用第7期
冯月芹
(南京工程学院,江苏 南京 211167)
摘要: PCA9633是一款通过I2C总线控制的4路LED控制芯片,每一路LED输出的状态可以设置为没有PWM(Pulse Width Modulation)控制的关或开,或者由其独立的PWM控制器的值和组PWM控制器的值确定。LED驱动输出的信号频率为97 kHz,占空比在0%~99.6%可调。本文介绍PCA9633的I2C协议,重点介绍它与CPU的硬件电路图以及通过C语言编程实现I2C时序,驱动LED灯发光,最后给出应用实例。
Abstract:
Key words :

  摘  要PCA9633是一款通过I2C总线控制的4路LED控制芯片,每一路LED输出的状态可以设置为没有PWM(Pulse Width Modulation)控制的关或开,或者由其独立的PWM控制器的值和组PWM控制器的值确定。LED驱动输出的信号频率为97 kHz,占空比在0%~99.6%可调。本文介绍PCA9633的I2C协议,重点介绍它与CPU的硬件电路图以及通过C语言编程实现I2C时序,驱动LED灯发光,最后给出应用实例。

  关键词: PCA9633;RGB LED;I2C时序

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所示。

001.jpg

  引脚描述:

  (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。

002.jpg

  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地址

004.jpg

  封装为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所示。

005.jpg

  主机与从机通信时,开始时主机先发起始信号,这个起始信号要满足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.


此内容为AET网站原创,未经授权禁止转载。