LCD驱动电路的设计
lcd 单片机驱动电路

lcd 单片机驱动电路
LCD单片机驱动电路是指用于驱动液晶显示屏(LCD)的电路。
LCD是一种常用的显示设备,广泛应用于数码产品、电子设备等领域。
LCD的驱动电路主要由以下几部分组成:
1. 控制器:控制器是核心部件,负责接收来自单片机的信号,并控制液晶显示屏的显示内容。
2. 驱动器:驱动器负责将控制器发送的信号转化为液晶显示屏可以理解的电信号,以实现显示功能。
3. 电源管理:电源管理模块负责为液晶显示屏提供所需的电源,包括正负电源以及背光灯等。
4. 通信接口:通信接口用于将单片机与LCD驱动电路连接起来,实现数据传输和控制信号的交互。
5. 储存器:在一些应用中,LCD驱动电路可能需要储存一些显示数据或者程序代码,以实现更复杂的显示效果。
总的来说,LCD单片机驱动电路是一个复杂的系统,根据不同的应用需求,其具体的设计和实现方式会有所差异。
一般来说,需要根据液晶显示屏的规格和单片机的输出能力,选用合适的控制器和驱动器,并合理设计电源管理和通信接口,以实现稳定、可靠的液晶显示功能。
LCD屏电路原理浅析以及RK3288对应的MIPI电路设计

LCD屏电路原理浅析以及RK3288对应的MIPI电路设计一、LCD屏电路原理浅析LCD(Liquid Crystal Display)屏幕电路是一种采用液晶材料的平面显示技术,具有低功率、薄型轻便等特点,广泛应用于各种消费电子产品中,如手机、电视、电脑等。
LCD屏电路主要由以下几个部分组成:1.液晶显示驱动IC:负责控制液晶分子的定向和排列,使液晶屏显示出想要的图像。
2.背光源:提供背景照明,常见的背光源有CCFL(冷阴极荧光灯)和LED(发光二极管)。
3.电源电路:为液晶屏和驱动IC提供电源,通常为DC电压,具有保护功能,如过压、过流等。
4.图像信号处理电路:将输入信号经过处理转化为液晶屏可以显示的图像信号。
5.输入接口电路:包括VGA、HDMI、DVI、MIPI等接口,用于接收输入信号并传输到图像信号处理电路。
6.数据线:将图像信号传输到液晶屏,通常采用平行传输或串行传输方式。
RK3288是瑞芯微旗下一款高性能四核处理器,广泛应用于平板电脑、智能电视等领域。
它支持多种显示接口,包括MIPI(Mobile Industry Processor Interface),MIPI是一种由移动行业联盟制定的高速串行接口标准,用于连接显示器和移动设备。
对于RK3288的MIPI电路设计,主要包括以下几个方面:1.MIPI接口配置:RK3288芯片有多个MIPI接口通道,需要根据具体设计需求选择合适的通道。
在设计中需要注意各通道的电路长度和阻抗匹配,以保证信号的稳定传输。
2.时钟和数据线连接:根据MIPI接口的规范,需要将时钟信号和数据信号分别连接到液晶屏的相应引脚。
时钟信号通常是单向传输,需要使用专门的时钟插头进行连接。
数据线通常采用串行传输方式,需要使用屏带连接到液晶屏。
3.电源供应:液晶屏通常需要稳定的电源供应,所以设计中需要为液晶屏提供合适的电源电压和电源接口。
同时,还需要为驱动IC提供相应的电源。
TFTLCD驱动电路的设计

TFT-LCD驱动电路的设计薄膜晶体管液晶显示器(TFT―LCD)具有重量轻、平板化、低功耗、无辐射、显示品质优良等特点,其应用领域正在逐步扩大,已经从音像制品、笔记本电脑等显示器发展到台式计算机、工程工作站(EWS)用监视器。
对液晶显示器的要求也正在向高分辨率,高彩色化发展。
由于CRT显示器和液晶屏具有不同的显示特性,两者的显示信号参数也不同,因此在计算机(或MCU)和液晶屏之间设计液晶显示器的驱动电路是必需的,其主要功能是通过调制输出到LCD电极上的电位信号、峰值、频率等参数来建立交流驱动电场。
本文实现了将VGA接口信号转换到模拟液晶屏上显示的驱动电路,采用ADI公司的高性能DSP芯片ADSP―21160来实现驱动电路的主要功能。
硬件电路设计AD9883A是高性能的三通道视频ADC可以同时实现对RGB三色信号的实时采样。
系统采用32位浮点芯片ADSP-21160来处理数据,能实时完成伽玛校正、时基校正,图像优化等处理,且满足了系统的各项性能需求。
ADSP-21160有6个独立的高速8位并行链路口,分别连接ADSP-21160前端的模数转换芯片AD9883A和后端的数模转换芯片ADV7125。
ADSP-21160具有超级哈佛结构,支持单指令多操作数(SIMD)模式,采用高效的汇编语言编程能实现对视频信号的实时处理,不会因为处理数据时间长而出现延迟。
系统硬件原理框图如图1所示。
系统采用不同的链路口完成输入和输出,可以避免采用总线可能产生的通道冲突。
模拟视频信号由AD9883A完成模数转换。
AD9883A 是个三通道的ADC,因此系统可以完成单色的视频信号处理,也可以完成彩色的视频信号处理。
采样所得视频数字信号经链路口输入到ADSP-21160,完成处理后由不同的链路口输出到ADV7125,完成数模转换。
ADV7125是三通道的DAC,同样也可以用于处理彩色信号。
输出视频信号到灰度电压产生电路,得到驱动液晶屏所需要的驱动电压。
MSP430基于的段显LCD驱动电路设计说明书

6th International Conference on Sensor Network and Computer Engineering (ICSNCE 2016)Design of LCD Electric Circuit Segments Basic on MSP430Jian HuangXijing University, Xi'an 710123, ChinaKeywords: Segments LCD; MSP430; Display memory; 4-MUXAbstract. Display device is very important equipment in the instrument. LED display have limited in complex driving circuit, high dissipation, big size. In order to resolve this problem, a segments LCD drive circuit is introduced, which based on ultra-low-power MSP430, using the built-in LCD controller, can drive the 160 segment LCD. The segments LCD’s type is EDS826, it has 6 bits 8 segments LCD, display principle and 4-MUX driving methods of segments LCD is given in detail. It has design drive circuit and give software flow chart. The test results show that the device can clearly display letters and numbers, have low power dissipation, simplifies design of drive circuit, can be used in the instrument to display temperature, humidity and pressure message. IntroductionCode of LCD, or a liquid crystal screen, generally called pattern type LCD screen, each segment of the electrode includes 7 segments and a back electrode BP (or COM), you can display numbers and simple characters, digit and character corresponding to its corresponding [1-3]. Compared with the digital tube segment code, the price is basically the same, the performance and the driving principle is quite different. Compare to LED, it’s display more clear, more realistic and has lower power consumption, the contents of the display will be more abundant. So it is often used as a display unit in the instrument and meter. Produced by TI company ultra low power MSP430 microcontroller, the built-in code segment LCD driver, is the best driver code segment LCD control unit, this paper focus on the principle and method for driving code segment LCD, and accordingly gives the hardware circuit design and software driver display program.Segment Code LCD Display Principle and Its MSP430 Liquid Crystal Driving MethodLiquid crystal display often has many parameters, but the driving parameters related to the only two: one is "bias", refers to the liquid crystal display / does not show and display the signal amplitude ratio; another is duty cycle that is ratio of each segment LCD display time and display cycle [2]. MSP430F4619 has its own segment LCD driver module, including four kinds of driving module, that is static type, 2-MUX type, 3-MUX type and 4-MUX type. MSP430F4619 by setting different COM to achieve the choice of driving mode, because designers often want to use the least pin to drive the LCD segment, and therefore more use of 4-MUX drive mode.Among 4-MUX LCD driver mode, every four stroke in parallel with one common pin. As shown in Fig. 1, a, b, c, h share a root tube feet, d, e, f, g sharing another single pin, driving every digital only need 2 root segment drive pin (Fig. 1 driven by S0 and S1, number 2, driven by the S2 and S3.). 4-MUX LCD has 4 common COM3 to COM0 respectively, and the MCU connected to COM3 to COM0. In addition to V1 and V5, the 4-MUX mode driver waveform requires two intermediate voltage V2 and V4, generally by three equivalent value resistance R1, R2, R3 series making voltage divider.Figure 1. 4-MUX LCD defineDrive Circuit DesignThe driving hardware circuit mainly includes MSP430 and its peripheral circuit and liquid crystal EDS826 module. The EDS826 can display 6 digits, so MSP430 only need to select S0 ~ S11 pins. We can use the button to adjust the display contents of the LCD liquid crystal.MSP430 Introduce. The main control unit is MSP430 single chip microcomputer, because the 430 single chip microprocessor is a high performance single chip microcomputer, its power consumption is low, the interface is rich, especially suitable for the main control unit in the instrument. Because MSP430 microcontroller internal LCD controller can automatically produce all the timing of LCD through the hardware, we only need to operate the LCD control register to select the LCD driver mode [4-6]. In software design, we need to write the display buffer, it can directly control the LCD light off or light on.LCD Module EDS826. LCD module uses EDS826, it can display six digits one time, each figure and its corresponding segment code shown in Fig. 2, the LCD module using 4-MUX drive [7-8]. In the design of the hardware circuit, the actual connection diagram is shown in Fig. 3. EDS826 COM0~ COM3 connected to MSP430 COM0 ~ COM3, all other pins are connected in sequence to S0 ~ S11, according to 4-MUX driving principle, S0 and S1 driving the first tube, S2 and S3 driving the second tube, by analogy, S10, S11 drive the sixth tube. The relationship between the memory and the segment code referring to the front of this paper [7].Figure 2. EDS826 pinsFigure 3. EDS826 connected to MCUSoftware ProgramSoftware Flow Chart. Software flow chart as shown in Fig. 4, first initialization LCD, then according to the above macro definition to display 0 to 5, finally we can change the display numbers through the button.Figure 4. Software flow chartPart Code. Code below can display number 0 to 5. Compiler development environment is IAR5.0.LCDACTL = LCDON+LCD4MUX+LCDFREQ_128; // 4mux LCD,LCDAPCTL0 =LCDS0+LCDS4+LCDS8; //Segments 0-11for (i=1;i<7;i++){LCDMEM[i] = char_gen[i];}Test ResultsAccording to the above description,we design the hardware circuit and software program[9], display the results as shown in Fig. 5 and Table 1Figure 5. Display resultTable 1 The code of number 0~9ConclusionThis paper describes the principle and method of the segment code LCD in detail, using MSP430F4619 to drive the segment code LCD screen EDS826, drawing the schematic and the PCB board, using c language to program the code. Experimental results show that the digital 0 to 9 can be display clearly. According to the driving method [10], the LCD can be driven more segments, and can be used to display important information in the instrument and meter equipment. References[1]Lin Fanqiang, Ma Xiaoming. Design of the segment type LCD driver, liquid crystal anddisplay [J].2012,27 (4): 523-528[2]Li Yujie. The design of the logistics safety data recorder based on MSP430 MCU [J] displaydesign.2013,32, logistics technology LCD (4): 100-102[3]Ge Huamin, Zheng Jing, Yang Liqing. Design of LCD display module based on ARM-Linux[J], instrument technology and sensor.2009,7:75-77[4]Su peace, Chi Ke. A design method for direct driven character type [J] LCD, instrumenttechnology and sensor.2004,2:35-37[5]Xie Zhao, Zhao Jian.MSP430 Series MCU system engineering design and practice [M].Machinery Industry Press, 2009[6]Texas Instruments.MSP430x4xx Family [6] s User Guide [M]. January 2010[7]EDS826 sheet. DALIAN data GOOD DISPLAY CO. LTD,, 2012[8]Tang Sichao. Embedded system software design based on Embedded Workbench [M]. IARBeijing: Beihang University press, 2010[9]Zhang Yongbin, Hu Jingao. Control and design of LCD display based on [J]. DSP LCD anddisplay.2011, 26 (5): 626-630.[10]Wang Xinxin, Xu Jiangwei, et al. Research on TFT-LCD defect detection system [J]. Journalof electronic measurement and instrument.2014, 28 (3): 278-284.[11]Y.G. Sun, W.L. Li, D.S. Dong, X. Mei, H.Y. Qiang, “Dynamics Analysis and Active Control ofa Floating Crane”, Tehnicki Vjesnik-Technical Gazette, vol.22, no. 6, pp. 1383-1391, 2015.。
LCD驱动电路的设计

下面分别叙述两个文件的实现。 lcdctrl.c 文件 1、定义 file_operation 结构体 static struct file_operations lcdctrl_fops = { ioctl: lcdctrl_ioctl, open: lcdctrl_open, release: lcdctrl_close }; LCD 的各种控制功能在 lcdctrl_ioctl 函数中实现,lcdctrl_open 和 lcdctrl_close 不实现具体功能,直接返回0值。 2、lcdctrl_ioctl 函数 lcdctrl_ioctl 函数需根据上层应用程序的不同参数实现不同的功能,这里主要说 明亮度调节功能的实现。部分代码如下: static int lcdctrl_ioctl(struct inode * inode, struct file *filp, unsigned int cmd , unsigned long arg) {…… switch(cmd)
LCD 驱动电路
由于 LCD 内集成有数字电路和模拟电路,需要外部提供数字电压需要 TFT 轮流开启/关闭。当 TFT 开启时,数据通过源极 驱动器加载到显示电极,显示电极和公共电极间的电压差再作用于液晶实现显示,因此需要 控制 TFT 的开启电压 VGH、关闭电压 VGL,以及加到公共电极上的电压 VCOM。
LED 背光驱动电路 LCD 作为一种被动显示器件本身并不能发光,必须要有背光模块提供光源。白光 LED 由于复杂程度较低、成本低且尺寸较小,被普遍用做嵌入式手持设备的 LCD 背光源。本文中 背光驱动电路如图3所示。
液晶显示器驱动电路的设计

和动 态驱动两 种 。 在静 态 驱动 的液 晶显 示 器件 上 , 各液 晶像 素 的 背 电极 B P是 连 在 一 起 引 出, 像 素 的段 电极 S G 各 E 分 立引 出 。在 背 电 极 和 段 电极 分 别 加 上相 位 相 差
用I P的集成是关键 。本文设计了一个用于 SC集 o 成的 L D驱动 电路的硬 I 。它可 以与控制器集成 C P
摘
要 : 绍 了 L D的驱 动原理 , 介 C 实现 了一个 2 4笔段 式 L D驱 动 电路 硬 I 4× C P的设 计 , 给 并
出了仿真结 果。设 计 采用 华虹 0 2 I MO .5L C S工 艺 ,.V工 作 电压 。在 行 负载 为 2 n , 负载为 - m 33 0F 列 3F 帧频为 6 .H 情况 下进行 仿真 , 出驱 动 电压平 均值 为 1.m n, 25 z 输 85 V。
CHE a Xio—l WANG n u, Yo g—s e g, h n ZHAO i—xn Za i
( col t nc C ne, abnI tuefTcnl y H r n10 0 , hn ) Mi e co i et H r sit o hoo , ab 5 0 1 C i r er s r i n t e g i a
晶呈现较 弱 的光 电效 应 , 影响液 晶 的显示对 比度 。 将 考 虑到直 流 电压将导致 液 晶材料 的化学反应 和 电极
它与大规模集成 电路的结合 , 使个人 电子化产品得 到了迅速普及, 从而大大推进 了信息产业的迅猛发 展 。笔段式 液 晶显 示 器 件 应 用 最 早 , 用 最 广 泛 。 使
在一 起 , 接收来 自行 扫 描信 号 以及并 行 的列选 择 控 制数 据信 号 , 动 不 同 电极 排 布 的 笔 段 式 L D 面 驱 C
基于S3C2410的TFT—LCD驱动电路设计

0
、 j !. j
维普资讯
瞄匕I hr:、 _ h ’ ! “
表 I T 30 -E S 5Q1 I的电压要求 L P
名韵 : 符 号 最 小值 典型值 最l 值 单位 入 _ 数字 电压 , j 3 0 3 3 3 伏 6 模 拟 电压 , 47 50 53 伏 栅极开启电压 1 5 1 8 2 0 伏 栅极荚晰电压 K . 8 —0 1 —2 1 伏 公 电压 36 4O 44 伏
系 统 中 。 ¥ C2 1 3 4 0是 三 星 公 司 开 发 L S 5 Ql El 为 显 示 设 备 可 以 来 构 成嵌 入 式 液 晶显示 系 统 。调 试 T 30 — P 作
的 一 歉 以 A M9 0 为 核 心 的 l/2 构 成 一个 基 于 嵌 入 式 平 台 的液 晶显 结 果 表 明设 计 正 确 ,本 文 所 设计 的 R 2T 63
用 。 L S 5 Q1P 是 三 星 电子 公 求 。但 是 ,要想 ¥ C 4 0的 L D控 信 号 和 RGB数据 信 号 ,因 此 ,可 以 T 3 0 一 EI 321 C
司生 产 的 一款 非 晶硅 有 源矩 阵T T 制 器 可 以 正 确 有 效 地 控 制 TFT— 不 做硬 件 上 的修 改就 能成 为 以其它 F—
屏 上 显 示 的 画面 ,必 须 以有 6 种 灰 度 的 变 化 。由于 集 成度 4 为 液 晶 屏 提 供 背 光 源 。 的 限制 ,灰 度 参 考 电压 电路 需 要 由
LCD电视背光驱动电路设计

LCD电视背光驱动电路设计挑战分析和方案设计LCD电视应用中可以采用多种架构产生驱动CCFL所需的交流波形,驱动多个CCFL时所要面对的三个关键的设计挑战是选择最佳的驱动架构、多灯驱动、灯频和脉冲调光频率控制。
本文对四种常用驱动架构进行了对比分析,并提出多灯设计中解决亮度不均以及驱动频率可能干扰画面等问题的方法,并给出基于DS3984/DS3988的电路方案。
液晶显示器(LCD)正在成为电视的主流显示技术。
LCD面板实际上是电子控制的光阀,需要靠背光源产生可视的图像,LCD电视通常用冷阴极荧光灯提供光源。
其他背光技术,例如发光二极管也受到一定的重视,但由于成本过高限制了它的应用。
由于LCD电视是消费品,压倒一切的设计考虑是成本—当然必须满足最低限度的性能要求。
驱动背光灯的CCFL逆变器不能明显缩短灯的寿命。
此外,由于要用高压驱动,安全性也是一个必须考虑的因素。
LCD电视应用中,驱动多个CCFL时所要面对的三个关键的设计挑战是:挑选最佳的驱动架构;多灯驱动;灯频和脉冲调光频率的严格控制。
挑选最佳的驱动架构可以用多种架构产生驱动CCFL所需的交流波形,包括Royer(自振荡,self-oscillating)、半桥、全桥和推挽。
表1详细归纳了这四种架构各自的优缺点。
1. Royer架构Royer架构(图1)的最佳应用是在不需要严格控制灯频和亮度的设计中。
由于Royer架构是自振荡设计,受元件参数偏差的影响,很难严格控制灯频和灯电流,而这两者都会直接影响灯的亮度。
因此,Royer架构很少用于LCD电视,尽管它是本文所述四种架构中最廉价的。
图1:Royer驱动器简单,但不太精确。
2.全桥架构全桥架构最适合于直流电源电压非常宽的应用(图2),这就是几乎所有笔记本PC都采用全桥方式的原因。
在笔记本中,逆变器的直流电源直接来自系统的主直流电源,其变化范围通常在7V(低电池电压)至21V(交流适配器)。
有些全桥方案要求采用p沟道MOSFET,比n沟道MOSFET更贵。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
驱动电路主要包括三部分:第一部分是 LCD 驱动,采用 MAX1779芯片;第二部分是 LED 背光驱动,采用 MP1521芯片;第三部分是 VCOM 信号驱动,采用 LM8261芯片。这里主要 叙述 LCD 驱动和背光电路的实现。
LCD 驱动电路的设计
现在大部分的便携式手持终端产品,如移动电话、导航系统等,都拥有一个小型 LCD 显示屏,这使 LCD 驱动电路的设计成为手持终端设计的重要组成部分。
LCD 驱动电路的设计是手持终端产品的重要组成部分。本文设计并实现了基于 S3C2440A 的手持终端 LCD 驱动电路。以应用于特殊行业的手持终端为例,叙述 LCD 驱动电 路的设计实现方法。
LCD 驱动电路
由于 LCD 内集成有数字电路和模拟电路,需要外部提供数字电压 DVDD 和模拟电压 AVDD。另外,为了完成数据扫描,需要 TFT 轮流开启/关闭。当 TFT 开启时,数据通过源极 驱动器加载到显示电极,显示电极和公共电极间的电压差再作用于液晶实现显示,因此需要 控制 TFT 的开启电压 VGH、关闭电压 VGL,以及加到公共电极上的电压 VCOM。
MP1521支持两种方式控制 LED 亮度,一是将 BRT 连接在范围为0.26V~1.2V 的电压 上,另外一种是通过 PWM 信号控制 LED 亮度。设计时,将其连接在 PWM 端口,使用 PWM 控制 LCD 背光亮度。
S3C2440A 有5个16bit 定时器,其中定时器0、1、2、3有 PWM 功能。将 BRT 连接到 能够输出 PWM 信号的 CPU 的 TOUT0/GPB0引脚,利用定时器0产生的 PWM 信号控制 LCD 亮度。 通过改变 PWM 信号的占空比调整 LED 亮度,而通过设置 CPU 内部寄存器的值可以改变 PWM 的占空比。
字符设备的驱动程序 字符设备是 Linux 系统中最简单的设备,可以像文件一样访问。当字符设备初始化 的时候,其驱动程序向 Linux 内核登记,在 chrdevs 向量表中增加一个 device_struct 数据 结构条目。这个设备的主设备标识符用作这个向量表的索引。一个设备的主设备标识符是固 定的。chrdevs 向量表中的 device_struct 数据结构包括一个登记设备驱动程序名称的指针
MAX1779芯片能产生 LCD 需要的模拟电压 AVDD、栅极开启电压 VGH 及栅极关断电压 VGL。芯片内部集成有3个 DC-DC 转换器,其中包括两个充电泵和一个升压转换器,可以为小 型 TFT 液晶屏提供高效的调节电压。LCD 驱动电路如图2所示。
这里,一个充电泵产生正电压,作为 TFT 的开启电压 VGH;另外一个充电泵产生负 电压,作为 TFT 的关闭电压 VGL。此外,芯片还可以产生-5V 电压输出,设计时利用-5V 输 出电压协助 LM8261产生 VCOM 信号。
LED 背光驱动电路 LCD 作为一种被动显示器件本身并不能发光,必须要有背光模块提供光源。白光 LED 由于复杂程度较低、成本低且尺寸较小,被普遍用做嵌入式手持设备的 LCD 背光源。本文中 背光驱动电路如图3所示。
驱动芯片采用 MP1521,该芯片有3组独立的电流反馈回路,可同时驱动3组并联的 LED。现将3组反馈回路 FB1、FB2、FB3短接,可以提供更大的驱动电流,用于驱动6个白色 串联 LED 背光灯。
TCON = (TCON & ~(0xf)) | 0; TCON=(TCON & ~(0xf)) | (TCON_0_AUTO | COUNT_0_ON);} 函数中的语句大部分是给与定时器相关的寄存器写值。其中 b 就是上层函数传递下 来的 bright 值,从程序中可以看到,调节亮度本质上是通过 TCMPB0寄存器写入与 bright 相关的值,控制 PWM 占空比实现亮度调节功能。 3、lcdctrl_device_get_ops 函数 用于上层获取具体设备的钩子函数。代码如下: struct lcdctrl_device *lcdctrl_device_get_ops(void) {return &smdk2440_dev;} 此函数被 lcdctrl.c 初始化时调用,将设备指向 smdk2440_dev。 至此,驱动程序设计完成,为了更好地实现 LCD 的管理,需要在上层的 Qtopia 应 用程序中提供人机操作的界面。 Qtopia 应用程序 Qtopia 应用程序提供人机操作界面并调用底层驱动程序完成 LCD 控制功能,这里, 仍然以亮度调节为例叙述应用程序工作过程。 主要完成功能: 1、应用程序完成人机操作的界面,为使用人员提供友好界面; 2、读取亮度值,并将其存入变量 bright 中; 3、打开设备文件:fd=open("/dev/devname",O_RDONLY); 4、调用底层的驱动程序,通过底层的驱动程序将 LCD 背光亮度调整为指定值。 ioctl(fd, _BACKLIGHT_ IOCTL_BRIGHT, bright)。 ioctl 函数调用驱动程序完成亮度的调节。 结语 经测试,设计完成的 LCD 能很好地完成图形的显示,终端电源管理界面中包含了 LCD 亮度调节功能。通过图形管理界面能够方便地管理 LCD,达到节约能量、延长手持终端 工作时间的目的。
lcdctrl.c 中的 lcdctrl_ioctl 函数需根据上层应用亮度调整、对比度调整、关闭 LCD、开启 LCD 等。
下面分别叙述两个文件的实现。 lcdctrl.c 文件 1、定义 file_operation 结构体 static struct file_operations lcdctrl_fops = { ioctl: lcdctrl_ioctl, open: lcdctrl_open, release: lcdctrl_close }; LCD 的各种控制功能在 lcdctrl_ioctl 函数中实现,lcdctrl_open 和 lcdctrl_close 不实现具体功能,直接返回0值。 2、lcdctrl_ioctl 函数 lcdctrl_ioctl 函数需根据上层应用程序的不同参数实现不同的功能,这里主要说 明亮度调节功能的实现。部分代码如下: static int lcdctrl_ioctl(struct inode * inode, struct file *filp, unsigned int cmd , unsigned long arg) {…… switch(cmd)
为了节省功耗,电路的使能(EN)端接 CPU 的 LCD_PWREN 管脚,高电平时背光电路工 作;低电平时背光电路不工作。同时,可将 EN 端通过电阻直接连接到3.3V 电源上以便调试 时使用。
LCD_BCK+和 LCD_BCK-分别连接到串联 LED 的正负两端。 软件设计
手持终端的嵌入式 Linux 所采用的内核版本是 kernel-2.4.18。 为了使 LCD 能正 常显示,还需要在 Linux 系统下开发 LCD 的驱动程序。
和一个指向一组文件操作的指针。这组文件操作本身位于这个设备的字符设备驱动程序中, 并处理一些特定任务。
Linux 下的帧缓冲设备 Linux 操作系统为 LCD 等显示设备提供了帧缓冲区。帧缓冲区(Framebuffer)是 Linux 为显示设备提供的一个接口,是把显存抽象化后的一种设备。为 LCD 编写驱动程序的 实质就是为帧缓冲区编写驱动程序。 由于帧缓冲驱动程序的实现在许多论文中有详细叙述,这里不再赘述,本文重点讨 论背光设备驱动程序的实现。 LCD 背光设备的驱动程序 LCD 背光设备可看作字符设备,可以按照字符设备驱动程序的编写方法进行实现。 在驱动程序里实现了 LCD 各种控制功能。驱动程序主要包括 lcdctrl.c 和 lcdctrl_smdk2440.c。其中 lcdctrl.c 屏蔽了具体的硬件,它通过钩子函数调用 lcdctrl_smdk2440.c 相关函数完成各种具体操作。为了形象地说明两个文件之间的关系, 这里以 LCD 亮度调节过程为例,说明函数的调用过程,如图4所示。
{ …… case _LCDCTRL_IOCTL_BRIGHTNESS: if ((arg >=0) && (arg <= 100)) ret = lcdctrl_set_brightness(arg); break; //调节 LCD 背光亮度 …… break;} return ret;} 当应用程序传递的命令参数为 LCDCTRL_IOCTL_BRIGHTNESS 时,lcdctrl_ioctl 调 用 lcdctrl_set_ brightness 具体实现亮度调节功能。 3、lcdctrl_set_brightness 函数 lcdctrl_set_brightness 具体实现亮度调节功能。主要代码如下: int lcdctrl_set_brightness(int b) { brightness = b; return lcd_device->set_brightness(b); } 可以看出,此函数调用 lcd_ device->set_brightness 函数,而 lcd_device 在初 始化时已被指向与具体的硬件相关的函数。 4、初始化函数 初始化函数主要完成初始信息的设置和设备的注册。 lcdctrl.c_smdk2440文件 1、lcdctrl_device 结构体 lcdctrl_device 结构体定义了具体操作 LCD 的各函数指针,包括 LCD 初始化函数, LCD 开启和关闭函数,亮度、对比度等设置函数。其中 LCD 关闭函数的本质就是将 LCD 背光 亮度设置为0。 static struct lcdctrl_device smdk2440_dev = { init: smdk2440_lcdctrl_init, enable: smdk2440_lcdctrl_enable, disable: smdk2440_lcdctrl_disable, set_intensity: smdk2440_lcdctrl_set_intensity, set_brightness: smdk2440_lcdctrl_set_brightness, set_contrast: smdk2440_lcdctrl_set_contrast}; 2、smdk2440_lcdctrl_set_brightnes 函数 这里只叙述亮度设置函数的实现。 static int smdk2440_lcdctrl_set_brightness( int b) { …… TCNTB0 = 100; TCMPB0 = b*100/100; //设置 TCMPB0寄存器的值 TCON = (TCON & ~(0xf)) | ( TCON_0_AUTO | TCON_0_MAN | COUNT_0_OFF);