DIY编程器网

标题: 基于单片机的RGB LED背光源的设计方案 [打印本页]

作者: admin    时间: 2015-5-2 10:45
标题: 基于单片机的RGB LED背光源的设计方案
  摘 要:为设计背光源提出了一种解决方案。根据三原色原理,利用单片机作为控制元件、结合NCP 5623三原色控制芯片,设计了一种RGB LED背光源。对于NCP 5623的控制所用的I2 C总线的实现上,采取利用单片机任意2个通用I/O管脚和NCP两5623的I2 C引脚连接,作为I2 C总线,通信协议实现上采用软件模拟的方式,且单片机作为控制单元,只需实现最小系统的功能。这种方式简化了设计,节约了I2 C总线主控制器器件,降低了成本。在软件设计上,在此给出了软件模拟I2 C协议方式下的NCP 5623每一个功能的实现程序模板,给出了NCP 5623应用的一种通用方法,组合使用可实现三原色及亮度可调的基本功能。对教学和实践都有深刻意义。   0 引 言
  液晶显示器(LCD)是光调制器件,自身并不发光,所以为了可以清楚地看到透射式液晶显示器的显示内容,需要给液晶屏匹配一个背光源。目前的背光模组一般使用冷阴极管(CCFL)为光源,包含了红、绿、蓝等各色光的频率。CCFL因辉度高、成本低廉、技术成熟等优点被广泛的运用在平板显示器上。随着发光二极管(LED)亮度的改善,LED背光模组显示出CCFL无法比拟的优点,如色彩还原性好、寿命长、不含汞、有利于环境保护,这些使其成为LCD背光模组中的研究热点。LED背光模组的设计主要包括光学结构设计,驱动电路设计以及程序设计,显示性能主要表现在亮度、色度、均匀性等方面。本文将从驱动电路和软件设计的角度进行阐述,讲述了设计所采用的元器件、硬件原理及其软件编程,详细地探讨了RGB LED背光源的设计方案。
  1 硬件设计
  本设计采用单片机作为LED的控制核心器件,选用NCP 5623实现LED背光源的静态显示。单片机主要实现的功能是通过I2C协议控制NCP 5623芯片,NCP 5623根据单片机发送的命令调节3种颜色的LED的亮度从而达到背光的效果。NCP 5623是安森美半导体日前推出的高能效3路输出LED驱动器,带有I2C接口,并且内置渐进调光功能,3路LED可独立控制,总LED电流9可达0mA,并且是一种无铅器件。
  该器件特别适用于驱动手机和MP3播放器等便携产品中的3色RGB(红、绿、蓝)LED装饰光和增强型LCD背光。硬件结构图如图1所示。


图1 三原色LED驱动硬件结构图

  2 软件设计
  NCP 5623是接受单片机的命令而产生动作,单片机给NCP 5623芯片发送指令是通过I2C总线,两者之间通过I2C协议进行通信。I2C总线的实现可以有多种方法,而对于本文的情况,速率不是问题的重点,所以采取一般的单片机用某两个普通I/O 口模拟I2C 总线。对于单片机模拟I2C总线已经非常成熟,只要根据以往的程序根据自己的需要略加修改即可。对于背光光源来说,主要调整三原色之间的亮度比例和根据自己的需要进行总体亮度调节,这些都可以通过NCP 5623所提供的命令实现,所以只要掌握了这些指令传输的程序实现,可以自己根据需要组合实现自己想要的功能,下面就给出NCP 5623各个命令的子程序实现。
  NCP 5623能实现的功能如表1。
表1 NCP 5623编程序列图



  该表的$70代表NCP 5623的I2C器件写地址。

对于NCP 5623来讲没有读操作。该器件的命令为1个字节,它可以被认为是I2C传输的内容部分。该字节最高3位用来表征命令,后面5位用来表征命令的参数,比如001表示对3个LED亮度同时进行控制,而后面5位则表示亮度。下面是每个命令的子程序实现,I2C_Start()是启动I2C总线读写函数,I2C_Stop()是停止I2C传输函数,writeByte()是传输数据函数。每个命令的实现开头都应该有I2C_Start()启动传输,最后应该有I2C_Stop()停止I2C总线活动。
  灯灭命令实现:
  bit tempbit;
  tempbit=0;
  I2 C_Start();
  writeByte(0x70);
  tempbit=checkAck();
  writeByte(0x00);
  tempbit=checkAck();
  I2 C_Stop();
  为了节约篇幅,下面的程序省略I2C_Start();I2C_Stop()和每个writeByte()函数后面的tempbit =checkAck()。
  同时控制3个灯的亮度命令模板:
  writeByte(0x70);
  writeByte(value); //value可取0x20-0x3f
  控制红灯的亮度命令模板:
  writeByte(0x70);
  writeByte(value); //value可取0x40-0x5f
  I2 C_Stop();
  控制绿灯的亮度命令模板:
  writeByte(0x70);
  writeByte(value); //value可取0x60-0x7f
  控制黄灯的亮度命令模板:
  bit tempbit;
  writeByte(0x70);
  writeByte(value); //value可取0x80-0x9f
  渐亮模式程序实现:
  writeByte(0x70);
  writeByte(value0); //value0可取0x20-0x3f
  writeByte(value1); //value1可取0xa0-0xbf
  writeByte(value2); //value2可取0xe1-0xff
  必须保证value0的后5位的值小于value1后5位
  的值。
  渐暗模式程序实现:
  writeByte(0x70);
  writeByte(value0); //value0可取0x20-0x3f
  writeByte(value1); //value1可取0xc0-0xdf
  writeByte(value2); //value2可取0xe1-0xff
  必须保证value0的后5位的值大于value1后5位的值。
  可以将上面的每个命令实现为子函数,根据实际情况组合,实现不同的应用。
  3 结 语
  本文提出了一种基于单片机实现LED背光源静态显示的方法。针对其功能和特性,采用了NCP 5623芯片,完成了有关电路的设计和软件设计。可以实现亮度多级调控的背光光源,而且可以根据不同命令的组合实现可各种颜色可变,亮度可调,亮度和颜色渐变的功能,可用于其他应用。
作者: 李小路    时间: 2020-10-1 19:21
谢谢分享!




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2