《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于S3C2440A終端LCD驅(qū)動(dòng)電路的設(shè)計(jì)與實(shí)現(xiàn)
基于S3C2440A終端LCD驅(qū)動(dòng)電路的設(shè)計(jì)與實(shí)現(xiàn)
摘要: 現(xiàn)在大部分的便攜式手持終端產(chǎn)品,如移動(dòng)電話、導(dǎo)航系統(tǒng)等,都擁有一個(gè)小型LCD顯示屏,這使LCD驅(qū)動(dòng)電路的設(shè)計(jì)成為手持終端設(shè)計(jì)的重要組成部分。本文以應(yīng)用于特殊行業(yè)的手持終端為例,敘述LCD驅(qū)動(dòng)電路的設(shè)計(jì)實(shí)現(xiàn)方法。
Abstract:
Key words :

  引言

  現(xiàn)在大部分的便攜式手持終端產(chǎn)品,如移動(dòng)電話、導(dǎo)航系統(tǒng)等,都擁有一個(gè)小型LCD顯示屏,這使LCD驅(qū)動(dòng)電路的設(shè)計(jì)成為手持終端設(shè)計(jì)的重要組成部分。

  本文以應(yīng)用于特殊行業(yè)的手持終端為例,敘述LCD驅(qū)動(dòng)電路的設(shè)計(jì)實(shí)現(xiàn)方法。

  硬件電路設(shè)計(jì)

  硬件電路結(jié)構(gòu)

  本設(shè)計(jì)中手持終端CPU采用三星公司ARM920T內(nèi)核處理器S3C2440A,其LCD控制器支持STN LCD和TFT LCD,實(shí)際使用的LCD為L(zhǎng)TS350Q1-PE1_PI,屬于TFT LCD。

  電路框圖如圖1所示。

電路框圖

  驅(qū)動(dòng)電路主要包括三部分:第一部分是LCD驅(qū)動(dòng),采用MAX1779芯片;第二部分是LED背光驅(qū)動(dòng),采用MP1521芯片;第三部分是VCOM信號(hào)驅(qū)動(dòng),采用LM8261芯片。這里主要敘述LCD驅(qū)動(dòng)和背光電路的實(shí)現(xiàn)。

  LCD驅(qū)動(dòng)電路

  由于LCD內(nèi)集成有數(shù)字電路和模擬電路,需要外部提供數(shù)字電壓DVDD和模擬電壓AVDD。另外,為了完成數(shù)據(jù)掃描,需要TFT輪流開(kāi)啟/關(guān)閉。當(dāng)TFT開(kāi)啟時(shí),數(shù)據(jù)通過(guò)源極驅(qū)動(dòng)器加載到顯示電極,顯示電極和公共電極間的電壓差再作用于液晶實(shí)現(xiàn)顯示,因此需要控制TFT的開(kāi)啟電壓VGH、關(guān)閉電壓VGL,以及加到公共電極上的電壓VCOM。

  MAX1779芯片能產(chǎn)生LCD需要的模擬電壓AVDD、柵極開(kāi)啟電壓VGH及柵極關(guān)斷電壓VGL。芯片內(nèi)部集成有3個(gè)DC-DC轉(zhuǎn)換器,其中包括兩個(gè)充電泵和一個(gè)升壓轉(zhuǎn)換器,可以為小型TFT液晶屏提供高效的調(diào)節(jié)電壓。LCD驅(qū)動(dòng)電路如圖2所示。

LCD驅(qū)動(dòng)電路

  這里,一個(gè)充電泵產(chǎn)生正電壓,作為T(mén)FT的開(kāi)啟電壓VGH;另外一個(gè)充電泵產(chǎn)生負(fù)電壓,作為T(mén)FT的關(guān)閉電壓VGL。此外,芯片還可以產(chǎn)生-5V電壓輸出,設(shè)計(jì)時(shí)利用-5V輸出電壓協(xié)助LM8261產(chǎn)生VCOM信號(hào)。

  LED背光驅(qū)動(dòng)電路

  LCD作為一種被動(dòng)顯示器件本身并不能發(fā)光,必須要有背光模塊提供光源。白光LED由于復(fù)雜程度較低、成本低且尺寸較小,被普遍用做嵌入式手持設(shè)備的LCD背光源。本文中背光驅(qū)動(dòng)電路如圖3所示。

背光驅(qū)動(dòng)電路

  驅(qū)動(dòng)芯片采用MP1521,該芯片有3組獨(dú)立的電流反饋回路,可同時(shí)驅(qū)動(dòng)3組并聯(lián)的LED。現(xiàn)將3組反饋回路FB1、FB2、FB3短接,可以提供更大的驅(qū)動(dòng)電流,用于驅(qū)動(dòng)6個(gè)白色串聯(lián)LED背光燈。

  MP1521支持兩種方式控制LED亮度,一是將BRT連接在范圍為0.26V~1.2V的電壓上,另外一種是通過(guò)PWM信號(hào)控制LED亮度。設(shè)計(jì)時(shí),將其連接在PWM端口,使用PWM控制LCD背光亮度。

  S3C2440A有5個(gè)16bit定時(shí)器,其中定時(shí)器0、1、2、3有PWM功能。將BRT連接到能夠輸出PWM信號(hào)的CPU的TOUT0/GPB0引腳,利用定時(shí)器0產(chǎn)生的PWM信號(hào)控制LCD亮度。通過(guò)改變PWM信號(hào)的占空比調(diào)整LED亮度,而通過(guò)設(shè)置CPU內(nèi)部寄存器的值可以改變PWM的占空比。

  為了節(jié)省功耗,電路的使能(EN)端接CPU的LCD_PWREN管腳,高電平時(shí)背光電路工作;低電平時(shí)背光電路不工作。同時(shí),可將EN端通過(guò)電阻直接連接到3.3V電源上以便調(diào)試時(shí)使用。
LCD_BCK+和LCD_BCK-分別連接到串聯(lián)LED的正負(fù)兩端。

  軟件設(shè)計(jì)

  手持終端的嵌入式Linux所采用的內(nèi)核版本是kernel-2.4.18。 為了使LCD能正常顯示,還需要在Linux系統(tǒng)下開(kāi)發(fā)LCD的驅(qū)動(dòng)程序。

  字符設(shè)備的驅(qū)動(dòng)程序

  字符設(shè)備是Linux系統(tǒng)中最簡(jiǎn)單的設(shè)備,可以像文件一樣訪問(wèn)。當(dāng)字符設(shè)備初始化的時(shí)候,其驅(qū)動(dòng)程序向Linux內(nèi)核登記,在chrdevs向量表中增加一個(gè)device_struct數(shù)據(jù)結(jié)構(gòu)條目。這個(gè)設(shè)備的主設(shè)備標(biāo)識(shí)符用作這個(gè)向量表的索引。一個(gè)設(shè)備的主設(shè)備標(biāo)識(shí)符是固定的。chrdevs向量表中的device_struct數(shù)據(jù)結(jié)構(gòu)包括一個(gè)登記設(shè)備驅(qū)動(dòng)程序名稱的指針和一個(gè)指向一組文件操作的指針。這組文件操作本身位于這個(gè)設(shè)備的字符設(shè)備驅(qū)動(dòng)程序中,并處理一些特定任務(wù)。

  Linux下的幀緩沖設(shè)備

  Linux操作系統(tǒng)為L(zhǎng)CD等顯示設(shè)備提供了幀緩沖區(qū)。幀緩沖區(qū)(Framebuffer)是Linux為顯示設(shè)備提供的一個(gè)接口,是把顯存抽象化后的一種設(shè)備。為L(zhǎng)CD編寫(xiě)驅(qū)動(dòng)程序的實(shí)質(zhì)就是為幀緩沖區(qū)編寫(xiě)驅(qū)動(dòng)程序。

  由于幀緩沖驅(qū)動(dòng)程序的實(shí)現(xiàn)在許多論文中有詳細(xì)敘述,這里不再贅述,本文重點(diǎn)討論背光設(shè)備驅(qū)動(dòng)程序的實(shí)現(xiàn)。

   LCD背光設(shè)備的驅(qū)動(dòng)程序

  LCD背光設(shè)備可看作字符設(shè)備,可以按照字符設(shè)備驅(qū)動(dòng)程序的編寫(xiě)方法進(jìn)行實(shí)現(xiàn)。在驅(qū)動(dòng)程序里實(shí)現(xiàn)了LCD各種控制功能。驅(qū)動(dòng)程序主要包括lcdctrl.c和lcdctrl_smdk2440.c。其中l(wèi)cdctrl.c屏蔽了具體的硬件,它通過(guò)鉤子函數(shù)調(diào)用lcdctrl_smdk2440.c相關(guān)函數(shù)完成各種具體操作。為了形象地說(shuō)明兩個(gè)文件之間的關(guān)系,這里以LCD亮度調(diào)節(jié)過(guò)程為例,說(shuō)明函數(shù)的調(diào)用過(guò)程,如圖4所示。

 

函數(shù)的調(diào)用過(guò)程

  lcdctrl.c中的lcdctrl_ioctl函數(shù)需根據(jù)上層應(yīng)用程序的不同參數(shù)實(shí)現(xiàn)不同的功能,這些控制LCD的功能包括亮度調(diào)整、對(duì)比度調(diào)整、關(guān)閉LCD、開(kāi)啟LCD等。

  下面分別敘述兩個(gè)文件的實(shí)現(xiàn)。

  lcdctrl.c文件

  1、定義file_operation結(jié)構(gòu)體

static struct file_operations lcdctrl_fops = {
 ioctl: lcdctrl_ioctl,
 open: lcdctrl_open,
 release: lcdctrl_close  };

  LCD的各種控制功能在lcdctrl_ioctl函數(shù)中實(shí)現(xiàn),lcdctrl_open和lcdctrl_close不實(shí)現(xiàn)具體功能,直接返回0值。

  2、lcdctrl_ioctl函數(shù)

  lcdctrl_ioctl函數(shù)需根據(jù)上層應(yīng)用程序的不同參數(shù)實(shí)現(xiàn)不同的功能,這里主要說(shuō)明亮度調(diào)節(jié)功能的實(shí)現(xiàn)。部分代碼如下:

static int lcdctrl_ioctl(struct inode * inode, struct file *filp,  unsigned int cmd , unsigned long arg)
{……
 switch(cmd)
 { ……
  case
_LCDCTRL_IOCTL_BRIGHTNESS:
if ((arg >=0) && (arg <= 100))
ret = lcdctrl_set_brightness(arg);
break; //調(diào)節(jié)LCD背光亮度
  ……
     break;}
return ret;}

  當(dāng)應(yīng)用程序傳遞的命令參數(shù)為L(zhǎng)CDCTRL_IOCTL_BRIGHTNESS時(shí),lcdctrl_ioctl調(diào)用lcdctrl_set_ brightness具體實(shí)現(xiàn)亮度調(diào)節(jié)功能。

  3、lcdctrl_set_brightness函數(shù)

  lcdctrl_set_brightness具體實(shí)現(xiàn)亮度調(diào)節(jié)功能。主要代碼如下:

int lcdctrl_set_brightness(int b)
{
 brightness = b;
 return lcd_device->set_brightness(b);
}

  可以看出,此函數(shù)調(diào)用lcd_ device->set_brightness函數(shù),而lcd_device在初始化時(shí)已被指向與具體的硬件相關(guān)的函數(shù)。

  4、初始化函數(shù)

  初始化函數(shù)主要完成初始信息的設(shè)置和設(shè)備的注冊(cè)。

  lcdctrl.c_smdk2440文件

  1、lcdctrl_device結(jié)構(gòu)體

  lcdctrl_device結(jié)構(gòu)體定義了具體操作LCD的各函數(shù)指針,包括LCD初始化函數(shù),LCD開(kāi)啟和關(guān)閉函數(shù),亮度、對(duì)比度等設(shè)置函數(shù)。其中LCD關(guān)閉函數(shù)的本質(zhì)就是將LCD背光亮度設(shè)置為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函數(shù)

  這里只敘述亮度設(shè)置函數(shù)的實(shí)現(xiàn)。

static int smdk2440_lcdctrl_set_brightness( int b)
{ ……
  TCNTB0 = 100;
  TCMPB0 = b*100/100;
 //設(shè)置TCMPB0寄存器的值
  TCON =  (TCON & ~(0xf)) | ( TCON_0_AUTO | TCON_0_MAN | COUNT_0_OFF);
TCON =  (TCON & ~(0xf)) | 0;
TCON=(TCON & ~(0xf)) | (TCON_0_AUTO | COUNT_0_ON);}

 

   函數(shù)中的語(yǔ)句大部分是給與定時(shí)器相關(guān)的寄存器寫(xiě)值。其中b就是上層函數(shù)傳遞下來(lái)的bright值,從程序中可以看到,調(diào)節(jié)亮度本質(zhì)上是通過(guò)TCMPB0寄存器寫(xiě)入與bright相關(guān)的值,控制PWM占空比實(shí)現(xiàn)亮度調(diào)節(jié)功能。

  3、LCDctrl_device_get_ops函數(shù)

  用于上層獲取具體設(shè)備的鉤子函數(shù)。代碼如下:

struct lcdctrl_device *lcdctrl_device_get_ops(void)
{return &smdk2440_dev;}

  此函數(shù)被lcdctrl.c初始化時(shí)調(diào)用,將設(shè)備指向smdk2440_dev。

  至此,驅(qū)動(dòng)程序設(shè)計(jì)完成,為了更好地實(shí)現(xiàn)LCD的管理,需要在上層的Qtopia應(yīng)用程序中提供人機(jī)操作的界面。

  Qtopia應(yīng)用程序

  Qtopia應(yīng)用程序提供人機(jī)操作界面并調(diào)用底層驅(qū)動(dòng)程序完成LCD控制功能,這里,仍然以亮度調(diào)節(jié)為例敘述應(yīng)用程序工作過(guò)程。

  主要完成功能:

  1、應(yīng)用程序完成人機(jī)操作的界面,為使用人員提供友好界面;

  2、讀取亮度值,并將其存入變量bright中;

  3、打開(kāi)設(shè)備文件:fd=open("/dev/devname",O_RDONLY);

  4、調(diào)用底層的驅(qū)動(dòng)程序,通過(guò)底層的驅(qū)動(dòng)程序?qū)CD背光亮度調(diào)整為指定值。

  ioctl(fd, _BACKLIGHT_ IOCTL_BRIGHT, bright)。

  ioctl函數(shù)調(diào)用驅(qū)動(dòng)程序完成亮度的調(diào)節(jié)。

  結(jié)語(yǔ)

  經(jīng)測(cè)試,設(shè)計(jì)完成的LCD能很好地完成圖形的顯示,終端電源管理界面中包含了LCD亮度調(diào)節(jié)功能。

  LCD驅(qū)動(dòng)電路的設(shè)計(jì)是手持終端產(chǎn)品的重要組成部分。本文設(shè)計(jì)并實(shí)現(xiàn)了基于S3C2440A的手持終端LCD驅(qū)動(dòng)電路。通過(guò)圖形管理界面能夠方便地管理LCD,達(dá)到節(jié)約能量、延長(zhǎng)手持終端工作時(shí)間的目的。

  參考文獻(xiàn)

  1. 楊水清, 張劍, 施云飛. ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)技術(shù)詳解,電子工業(yè)出版社,2008/11

  2. 常贊杰, 張位勇. 基于Framebuffer的LCD驅(qū)動(dòng)程序設(shè)計(jì). 辦公自動(dòng)化,2008/12

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一本色道久久综合亚洲精品婷婷 | 亚洲高清av| 国产日韩精品视频一区二区三区 | 国产伦理一区| 国产精品一区免费视频| 国产精品一页| 国产日韩欧美电影在线观看| 国产酒店精品激情| 国产精品久久久久免费a∨| 国产精品高潮呻吟久久| 欧美日韩在线精品| 国产精品video| 国产精品国产精品| 国产伦精品一区二区三区照片91| 国产美女精品免费电影| 国产亚洲福利| 激情欧美日韩一区| 亚洲国产精品一区二区第四页av| 91久久精品久久国产性色也91| 亚洲风情亚aⅴ在线发布| 91久久久久久| 99爱精品视频| 亚洲一品av免费观看| 亚洲欧美日韩中文在线制服| 欧美一区午夜视频在线观看| 欧美一区二区在线免费播放| 久久国产欧美日韩精品| 国产亚洲成精品久久| 亚洲电影天堂av| 亚洲电影免费观看高清完整版在线观看 | 午夜在线成人av| 久久国产精品黑丝| 久久婷婷国产综合国色天香| 欧美成人三级在线| 欧美丝袜一区二区| 国产美女精品一区二区三区| 狠狠色丁香久久婷婷综合丁香| 在线精品视频免费观看| 亚洲毛片网站| 午夜精品久久久久久久99热浪潮| 久久激情五月婷婷| 夜夜嗨av一区二区三区| 校园激情久久| 久久亚洲国产精品日日av夜夜| 欧美激情一区二区| 国产精品乱码一区二三区小蝌蚪 | 亚洲二区在线| 中文在线一区| 久久久精品一区二区三区| 欧美黄网免费在线观看| 国产精品久久久久毛片软件| 狠狠色狠狠色综合日日五| 亚洲精品欧洲| 欧美一级在线亚洲天堂| 亚洲精品亚洲人成人网| 亚洲欧美在线免费观看| 免费亚洲电影| 国产精品欧美久久久久无广告| 精品粉嫩aⅴ一区二区三区四区| 亚洲精品美女在线观看| 欧美一级成年大片在线观看| 99这里只有精品| 久久久久久久久久久久久女国产乱| 欧美人成在线视频| 国产性色一区二区| av成人手机在线| 久久精品九九| 先锋影音网一区二区| 欧美精品 日韩| 国产一区二区三区免费不卡| 亚洲日本在线视频观看| 性感少妇一区| 亚洲一区二区三区免费在线观看 | 伊甸园精品99久久久久久| 一区二区三区国产在线观看| 亚洲黄色在线看| 欧美在线视频二区| 欧美日韩一区视频| 在线观看亚洲a| 亚洲欧美中文在线视频| 亚洲视频每日更新| 欧美顶级艳妇交换群宴| 国产亚洲精品资源在线26u| 日韩小视频在线观看专区| 91久久精品国产| 久久大逼视频| 国产精品高潮呻吟久久av无限| 亚洲国产欧美日韩精品| 久久av老司机精品网站导航| 午夜精品免费| 国产精品xnxxcom| 亚洲欧洲精品一区二区三区不卡 | 亚洲欧洲日韩在线| 久久久天天操| 国产欧美视频一区二区三区| 一区二区三区视频在线| 日韩视频―中文字幕| 美日韩丰满少妇在线观看| 国产婷婷色一区二区三区在线| 亚洲一区二区三区视频播放| 亚洲校园激情| 欧美午夜视频在线| 亚洲美女av黄| 一本久久知道综合久久| 欧美精品黄色| 亚洲精品久久久久久久久久久久久| 亚洲国产日本| 另类激情亚洲| 伊人狠狠色j香婷婷综合| 欧美一区亚洲二区| 久久精品国产精品亚洲精品| 国产欧美日韩综合一区在线播放 | 日韩视频在线观看免费| 欧美高清影院| 在线色欧美三级视频| 亚洲韩国青草视频| 蜜桃伊人久久| 在线日韩av| 亚洲毛片视频| 欧美日韩mp4| 亚洲免费福利视频| 亚洲视频综合在线| 国产精品高清一区二区三区| 亚洲桃花岛网站| 亚洲欧美另类中文字幕| 国产乱人伦精品一区二区 | 国产最新精品精品你懂的| 香蕉久久夜色精品国产使用方法| 久久国产福利国产秒拍| 国内成人精品2018免费看| 亚洲国产精品一区二区第一页 | 一本大道久久a久久精品综合| 在线午夜精品自拍| 国产精品扒开腿做爽爽爽软件| 一二三区精品| 欧美在线亚洲| 国内一区二区三区| 91久久夜色精品国产网站| 欧美精品一线| 亚洲图片在区色| 久久久www| 亚洲国产日韩美| 一本大道av伊人久久综合| 国产精品白丝jk黑袜喷水| 亚洲欧美日韩一区二区在线 | 欧美日韩另类一区| 亚洲视频精品在线| 久久国产视频网站| 激情综合色综合久久| 亚洲精品偷拍| 国产精品久久久亚洲一区 | 久久人人看视频| 夜夜嗨av色一区二区不卡| 在线视频一区二区| 国产精品日韩一区| 香蕉尹人综合在线观看| 蜜桃av综合| 亚洲看片一区| 亚洲欧美另类综合偷拍| 国外成人免费视频| av成人免费| 国产精品网站在线| 亚洲国产一区二区三区高清| 欧美日韩伊人| 欧美呦呦网站| 欧美日本免费| 欧美一区二区在线看| 欧美国产在线视频| 亚洲午夜日本在线观看| 久久综合色8888| 一本色道久久综合亚洲二区三区| 久久国产免费| 亚洲麻豆av| 久久精品综合一区| 亚洲每日更新| 久久米奇亚洲| 一本大道久久a久久精品综合| 久久久久久穴| 一区二区激情| 蜜桃精品一区二区三区| 亚洲影院污污.| 欧美精品久久一区| 久久国产毛片| 国产精品xvideos88| 亚洲国产精品女人久久久| 国产精品都在这里| 亚洲欧洲一区二区三区在线观看| 国产精品捆绑调教| 亚洲免费黄色| 狠狠色综合色综合网络| 亚洲一区在线播放| 在线日韩电影| 久久九九精品| 亚洲婷婷综合久久一本伊一区| 欧美刺激性大交免费视频 | 亚洲精品国产精品国自产在线 | 亚洲人成人一区二区在线观看| 久久国产直播| 亚洲性图久久| 欧美日韩国产综合久久|