日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于手持終端的LCD驅動電路的實現(xiàn)

引言

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

  LCD驅動電路的設計是手持終端產(chǎn)品的重要組成部分。本文設計并實現(xiàn)了基于S3C2440A的手持終端LCD驅動電路。以應用于特殊行業(yè)的手持終端為例,敘述LCD驅動電路的設計實現(xiàn)方法。

  硬件電路設計

  硬件電路結構
 

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

  電路框圖如圖1所示。

  

 

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

  LCD驅動電路

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

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

  

 

  這里,一個充電泵產(chǎn)生正電壓,作為TFT的開啟電壓VGH;另外一個充電泵產(chǎn)生負電壓,作為TFT的關閉電壓VGL。此外,芯片還可以產(chǎn)生-5V電壓輸出,設計時利用-5V輸出電壓協(xié)助LM8261產(chǎn)生VCOM信號。

  LED背光驅動電路

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

  

 

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

  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產(chǎn)生的PWM信號控制LCD亮度。通過改變PWM信號的占空比調整LED亮度,而通過設置CPU內(nèi)部寄存器的值可以改變PWM的占空比。

  為了節(jié)省功耗,電路的使能(EN)端接CPU的LCD_PWREN管腳,高電平時背光電路工作;低電平時背光電路不工作。同時,可將EN端通過電阻直接連接到3.3V電源上以便調試時使用。

  LCD_BCK+和LCD_BCK-分別連接到串聯(lián)LED的正負兩端。[!--empirenews.page--]軟件設計

 

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

  字符設備的驅動程序

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

  Linux下的幀緩沖設備

  Linux操作系統(tǒng)為LCD等顯示設備提供了幀緩沖區(qū)。幀緩沖區(qū)(Framebuffer)是Linux為顯示設備提供的一個接口,是把顯存抽象化后的一種設備。為LCD編寫驅動程序的實質就是為幀緩沖區(qū)編寫驅動程序。

  由于幀緩沖驅動程序的實現(xiàn)在許多論文中有詳細敘述,這里不再贅述,本文重點討論背光設備驅動程序的實現(xiàn)。

  LCD背光設備的驅動程序

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

  

 

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

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

  lcdctrl.c文件

  1、定義file_operation結構體

  static struct file_operations lcdctrl_fops = {

  ioctl: lcdctrl_ioctl,

  open: lcdctrl_open,

  release: lcdctrl_close };

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

  2、lcdctrl_ioctl函數(shù)

  lcdctrl_ioctl函數(shù)需根據(jù)上層應用程序的不同參數(shù)實現(xiàn)不同的功能,這里主要說明亮度調節(jié)功能的實現(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; //調節(jié)LCD背光亮度

  ……

  break;}

  return ret;}

  當應用程序傳遞的命令參數(shù)為LCDCTRL_IOCTL_BRIGHTNESS時,lcdctrl_ioctl調用lcdctrl_set_ brightness具體實現(xiàn)亮度調節(jié)功能。

  3、lcdctrl_set_brightness函數(shù)

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

  int lcdctrl_set_brightness(int b)

  {

  brightness = b;

  return lcd_device->set_brightness(b);

  }

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

   [!--empirenews.page--]4、初始化函數(shù)

 

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

  lcdctrl.c_smdk2440文件

  1、lcdctrl_device結構體

  lcdctrl_device結構體定義了具體操作LCD的各函數(shù)指針,包括LCD初始化函數(shù),LCD開啟和關閉函數(shù),亮度、對比度等設置函數(shù)。其中LCD關閉函數(shù)的本質就是將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函數(shù)

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

  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);

  TCON = (TCON & ~(0xf)) | 0;

  TCON=(TCON & ~(0xf)) | (TCON_0_AUTO | COUNT_0_ON);}

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

  3、lcdctrl_device_get_ops函數(shù)

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

  struct lcdctrl_device *lcdctrl_device_get_ops(void)

  {return &smdk2440_dev;}

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

  至此,驅動程序設計完成,為了更好地實現(xiàn)LCD的管理,需要在上層的Qtopia應用程序中提供人機操作的界面。

  Qtopia應用程序

  Qtopia應用程序提供人機操作界面并調用底層驅動程序完成LCD控制功能,這里,仍然以亮度調節(jié)為例敘述應用程序工作過程。

  主要完成功能:

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

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

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

  4、調用底層的驅動程序,通過底層的驅動程序將LCD背光亮度調整為指定值。

  ioctl(fd, _BACKLIGHT_ IOCTL_BRIGHT, bright)。

  ioctl函數(shù)調用驅動程序完成亮度的調節(jié)。

  結語

  經(jīng)測試,設計完成的LCD能很好地完成圖形的顯示,終端電源管理界面中包含了LCD亮度調節(jié)功能。通過圖形管理界面能夠方便地管理LCD,達到節(jié)約能量、延長手持終端工作時間的目的。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在新能源發(fā)電、電動汽車充電等高頻電力電子應用中,全橋逆變器作為核心功率轉換單元,其開關管(MOSFET/IGBT)的VDS(漏源極電壓)波形質量直接影響系統(tǒng)效率與可靠性。實測數(shù)據(jù)顯示,超過40%的逆變器故障源于VDS波形...

關鍵字: 全橋逆變器 驅動電路

北京 2025年7月9日 /美通社/ -- 隨著暑期研學游熱潮持續(xù)升溫,研學旅游產(chǎn)業(yè)迎來發(fā)展黃金期。近日,全牌照支付機構易生支付與河北唐山鸞棲 1403 研學基地達成深度合作,通過部署集收款、分賬、管理功能于一體的綜合...

關鍵字: BSP 數(shù)字化 POS 手持終端

在顯示技術不斷革新的當下,透明顯示以其獨特的視覺效果和廣泛的應用前景,成為了研究的熱點領域。無論是智能窗戶、車載抬頭顯示,還是增強現(xiàn)實(AR)眼鏡等,透明顯示都展現(xiàn)出了巨大的潛力。然而,要實現(xiàn)高質量的透明顯示,像素驅動電...

關鍵字: 驅動電路 透明顯示

本文將演示一種加速嵌入式系統(tǒng)設計原型階段的方法,說明如何將與硬件無關的驅動程序和傳感器結合使用,簡化整個嵌入式系統(tǒng)的器件選擇。同時還將介紹嵌入式系統(tǒng)的器件、典型軟件結構以及驅動程序的實現(xiàn)。后續(xù)文章“利用與硬件無關的方法簡...

關鍵字: 嵌入式系統(tǒng) 驅動程序 傳感器

在電力電子領域,同步整流技術以其高效率、低損耗的特點,成為現(xiàn)代電源轉換系統(tǒng)的重要組成部分。特別是在直流-直流(DC-DC)轉換器中,同步整流技術通過使用兩個MOSFET(金屬氧化物半導體場效應晶體管)來控制電流的方向,從...

關鍵字: 同步整流電源 MOSFET 驅動電路

在電子電路領域,低邊驅動芯片被廣泛應用于各種功率驅動電路中,它負責控制功率 MOS 管的導通與截止,實現(xiàn)對負載的有效驅動。而在低邊驅動芯片的設計中,鉗位保護通常都將電壓鉗位到 MOS 管的柵極,這一設計選擇并非偶然,而是...

關鍵字: 低邊驅動芯片 驅動電路 MOS 管

壓電陶瓷換能器作為一種能夠實現(xiàn)電能與機械能相互轉換的關鍵元件,在超聲加工、醫(yī)學超聲成像、水聲通信等眾多領域有著廣泛應用。其性能的優(yōu)劣與驅動電路緊密相關,而壓電陶瓷換能器的阻抗特性,無論是高阻抗還是低阻抗,都對驅動電路提出...

關鍵字: 壓電陶瓷換能器 驅動電路 元件

隨著科技的飛速發(fā)展,嵌入式系統(tǒng)已經(jīng)成為現(xiàn)代生活不可或缺的一部分,它們被廣泛應用于從智能家居到自動駕駛汽車的各個領域。而在這些系統(tǒng)中,C語言由于其高效性、可移植性和對硬件的直接控制能力,成為了嵌入式系統(tǒng)開發(fā)的首選語言。

關鍵字: C語言 驅動程序

可控硅整流器(SCR)及其衍生器件如雙向可控硅(Triac)、ACST和ACS等,在電力電子電路中扮演著重要角色。這些器件的驅動電路設計和電源選擇直接影響其性能和可靠性。在某些情況下,負電源成為優(yōu)先選擇的方案。

關鍵字: 可控硅整流器 驅動電路 負電源

每個嵌入式軟件應用程序都必須在某個時候訪問最低級別的固件并控制硬件。驅動程序的設計和實現(xiàn)對于確保系統(tǒng)能夠滿足其實時要求至關重要。

關鍵字: 嵌入式 驅動程序
關閉