欢迎来到天天文库
浏览记录
ID:24841539
大小:127.50 KB
页数:5页
时间:2018-11-16
《基于单片机的rgbled背光源设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、摘要:为设计背光源提出了一种解决方案。根据三原色原理,利用单片机作为控制元件、结合NCP5623三原色控制芯片,设计了一种RGBLED背光源。对于NCP5623的控制所用的I2C总线的实现上,采取利用单片机任意2个通用I/O管脚和NCP两5623的I2C引脚连接,作为I2C总线,通信协议实现上采用软件模拟的方式,且单片机作为控制单元,只需实现最小系统的功能。这种方式简化了设计,节约了I2C总线主控制器器件,降低了成本。在软件设计上,在此给出了软件模拟I2C协议方式下的NCP5623每一个功能的实现程序模板,
2、给出了NCP5623应用的一种通用方法,组合使用可实现三原色及亮度可调的基本功能。对教学和实践都有深刻意义。 0引言 液晶显示器(LCD)是光调制器件,自身并不发光,所以为了可以清楚地看到透射式液晶显示器的显示内容,需要给液晶屏匹配一个背光源。目前的背光模组一般使用冷阴极管(CCFL)为光源,包含了红、绿、蓝等各色光的频率。CCFL因辉度高、成本低廉、技术成熟等优点被广泛的运用在平板显示器上。随着发光二极管(LED)亮度的改善,LED背光模组显示出CCFL无法比拟的优点,如色彩还原性好、寿命长、不含汞、
3、有利于环境保护,这些使其成为LCD背光模组中的研究热点。LED背光模组的设计主要包括光学结构设计,驱动电路设计以及程序设计,显示性能主要表现在亮度、色度、均匀性等方面。本文将从驱动电路和软件设计的角度进行阐述,讲述了设计所采用的元器件、硬件原理及其软件编程,详细地探讨了RGBLED背光源的设计方案。 1硬件设计 本设计采用单片机作为LED的控制核心器件,选用NCP5623实现LED背光源的静态显示。单片机主要实现的功能是通过I2C协议控制NCP5623芯片,NCP5623根据单片机发送的命令调节3种颜色
4、的LED的亮度从而达到背光的效果。NCP5623是安森美半导体日前推出的高能效3路输出LED驱动器,带有I2C接口,并且内置渐进调光功能,3路LED可独立控制,总LED电流9可达0mA,并且是一种无铅器件。 该器件特别适用于驱动手机和MP3播放器等便携产品中的3色RGB(红、绿、蓝)LED装饰光和增强型LCD背光。硬件结构图如图1所示。 图1三原色LED驱动硬件结构图 2软件设计 NCP5623是接受单片机的命令而产生动作,单片机给NCP5623芯片发送指令是通过I2C总线,两者之间通过I2C协
5、议进行通信。I2C总线的实现可以有多种方法,而对于本文的情况,速率不是问题的重点,所以采取一般的单片机用某两个普通I/O口模拟I2C总线。对于单片机模拟I2C总线已经非常成熟,只要根据以往的程序根据自己的需要略加修改即可。对于背光光源来说,主要调整三原色之间的亮度比例和根据自己的需要进行总体亮度调节,这些都可以通过NCP5623所提供的命令实现,所以只要掌握了这些指令传输的程序实现,可以自己根据需要组合实现自己想要的功能,下面就给出NCP5623各个命令的子程序实现。 NCP5623能实现的功能如表1。
6、 表1NCP5623编程序列图 该表的$70代表NCP5623的I2C器件写地址。对于NCP5623来讲没有读操作。该器件的命令为1个字节,它可以被认为是I2C传输的内容部分。该字节最高3位用来表征命令,后面5位用来表征命令的参数,比如001表示对3个LED亮度同时进行控制,而后面5位则表示亮度。下面是每个命令的子程序实现,I2C_Start()是启动I2C总线读写函数,I2C_Stop()是停止I2C传输函数,writeByte()是传输数据函数。每个命令的实现开头都应该有I2C_Start()启动
7、传输,最后应该有I2C_Stop()停止I2C总线活动。 灯灭命令实现: bittempbit; tempbit=0; I2C_Start(); writeByte(0x70); tempbit=checkAck(); writeByte(0x00); tempbit=checkAck(); I2C_Stop(); 为了节约篇幅,下面的程序省略I2C_Start();I2C_Stop()和每个writeByte()函数后面的tempbit=checkAck()。 同时控制3个灯的亮度命
8、令模板: writeByte(0x70); writeByte(value);//value可取0x20-0x3f 控制红灯的亮度命令模板: writeByte(0x70); writeByte(value);//value可取0x40-0x5f I2C_Stop(); 控制绿灯的亮度命令模板: writeByte(0x70); writeByte(value);//value可取0x60-0x
此文档下载收益归作者所有