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

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

引言

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

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

  硬件電路設(shè)計

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

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

  電路框圖如圖1所示。

  

 

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

  LCD驅(qū)動電路

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

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

  

 

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

  LED背光驅(qū)動電路

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

  

 

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

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

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

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

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

 

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

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

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

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

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

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

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

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

  

 

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

  下面分別敘述兩個文件的實現(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ù)中實現(xiàn),lcdctrl_open和lcdctrl_close不實現(xiàn)具體功能,直接返回0值。

  2、lcdctrl_ioctl函數(shù)

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

  ……

  break;}

  return ret;}

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

  3、lcdctrl_set_brightness函數(shù)

  lcdctrl_set_brightness具體實現(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在初始化時已被指向與具體的硬件相關(guān)的函數(shù)。

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

 

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

  lcdctrl.c_smdk2440文件

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

  lcdctrl_device結(jié)構(gòu)體定義了具體操作LCD的各函數(shù)指針,包括LCD初始化函數(shù),LCD開啟和關(guān)閉函數(shù),亮度、對比度等設(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ù)的實現(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ù)中的語句大部分是給與定時器相關(guān)的寄存器寫值。其中b就是上層函數(shù)傳遞下來的bright值,從程序中可以看到,調(diào)節(jié)亮度本質(zhì)上是通過TCMPB0寄存器寫入與bright相關(guān)的值,控制PWM占空比實現(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初始化時調(diào)用,將設(shè)備指向smdk2440_dev。

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

  Qtopia應(yīng)用程序

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

  主要完成功能:

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

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

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

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

  ioctl(fd, _BACKLIGHT_ IOCTL_BRIGHT, bright)。

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

  結(jié)語

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

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

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

關(guān)鍵字: 全橋逆變器 驅(qū)動電路

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

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

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

關(guān)鍵字: 驅(qū)動電路 透明顯示

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

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

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

關(guān)鍵字: 同步整流電源 MOSFET 驅(qū)動電路

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

關(guān)鍵字: 低邊驅(qū)動芯片 驅(qū)動電路 MOS 管

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

關(guān)鍵字: 壓電陶瓷換能器 驅(qū)動電路 元件

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

關(guān)鍵字: C語言 驅(qū)動程序

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

關(guān)鍵字: 可控硅整流器 驅(qū)動電路 負電源

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

關(guān)鍵字: 嵌入式 驅(qū)動程序
關(guān)閉