<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 設(shè)計應(yīng)用 > S3C44B0X內(nèi)置的LCD控制器及其應(yīng)用

          S3C44B0X內(nèi)置的LCD控制器及其應(yīng)用

          ——
          作者:丁國華 胡榮強 時間:2005-09-19 來源: 收藏
          S3C44B0X內(nèi)置的控制器及其應(yīng)用
          引言

          S3C44B0X微處理器是專為手持設(shè)備和一般應(yīng)用提供的高性價比和高性能的微控制器解決方案。它使用ARM7TDMI核,工作在66MHz,集成了控制器等外圍器件。它的控制器具有通用性,能與大多數(shù)LCD顯示模塊接口。接口設(shè)計、驅(qū)動程序開發(fā)都很簡單,廣泛應(yīng)用于智能儀表、PDA等的顯示部分。

          本文引用地址:http://www.ex-cimer.com/article/8634.htm


          內(nèi)置LCD控制器介紹

          概述

          S3C44B0X內(nèi)置的LCD控制器的作用是將顯示緩存(在系統(tǒng)存儲器中)的LCD數(shù)據(jù)傳輸?shù)酵獠縇CD驅(qū)動器,并產(chǎn)生必須的LCD控制信號。

          它支持灰度LCD和彩色LCD。在灰度LCD上,使用基于時間抖動算法(time-basedditheringalgorithm)和FRC(FrameRateControl)方法,可以支持單色、4級灰度和16級灰度模式的灰度LCD。在彩色LCD上,可以支持256種色彩。不同尺寸的LCD具有不同數(shù)量的垂直和水平象素、數(shù)據(jù)接口、數(shù)據(jù)寬度、接口時間和刷新率。LCD控制器可以進行編程控制相應(yīng)的寄存器值,以適應(yīng)不同的LCD顯示板。

          LCD控制器邏輯框圖

          圖1為LCD控制器的邏輯框圖。從框圖可以看出LCD控制器是用來實現(xiàn)傳輸顯示數(shù)據(jù)及產(chǎn)生必要的控制信號,如VFRAME、VLINE、VCLK和VM。除了控制信號,還有顯示數(shù)據(jù)的數(shù)據(jù)端口VD[7:0]。


          LCD控制器包括REGBANK、LCDDMA、VIDPRCS和TIMEGEN。
          REGBANK有18個可編程寄存器,用于配置LCD控制器。LCDDMA為專用DMA,可以自動地將顯示數(shù)據(jù)從幀內(nèi)存?zhèn)魉偷絃CD驅(qū)動器中。通過專用DMA,可以實現(xiàn)在不需要CPU介入的情況下顯示數(shù)據(jù)。VIDPRCS從LCDDMA接收數(shù)據(jù),將相應(yīng)格式的數(shù)據(jù)通過TIMEGEN(包含可編程邏輯),以支持常見的LCD驅(qū)動器所需要的不同接口時間和速率的要求。TIMEGEN部分產(chǎn)生VFRAME,VLINE,VCLK和VM等信號。

          LCD控制器提供下列外部接口信號:
          VFRAME:LCD控制器和驅(qū)動器之間的幀同步信號。通知LCD屏新的一幀顯示,LCD控制器在一個完整幀顯示后發(fā)出VFRAME信號。
          VLINE:LCD控制器和驅(qū)動器間同步脈沖信號。LCD驅(qū)動器通過它將水平移位寄存器的內(nèi)容顯示到LCD屏上。LCD控制器在一整行數(shù)據(jù)全部傳輸?shù)絃CD驅(qū)動器后發(fā)出VLINE信號。

          VCLK:LCD控制器和驅(qū)動器之間的象素時鐘信號。
          VM:LCD驅(qū)動器所使用的交流信號。驅(qū)動器用VM打開或關(guān)閉象素的行和列電壓極性。
          VD[3:0]:LCD象素數(shù)據(jù)輸出端口。
          VD[7:4]:LCD象素數(shù)據(jù)輸出端口。
          LCD控制器的寄存器
          LCD控制器通過18個可編程寄存器來配置LCD顯示模塊的尺寸、顯示模式、接口數(shù)據(jù)寬度等。
          LCD控制寄存器一(LCDCON1)
          LCDCON1所在地址:0x01F00000;
          屬性:R/W;
          復(fù)位值:0x00000000。
          LCDCON1中各個位的意義見表1:
          LCD控制寄存器二(LCDCON2)
          LCDCON2的地址:0x01F00004;
          屬性:R/W;
          復(fù)位值:0x00000000。
          LCDCON2中各個位的意義見表2:
          LCD控制寄存器三(LCDCON3)
          LCDCON3的地址:0x01F00040;
          屬性:R/W;
          復(fù)位值:0x00。
          LCDCON3中各個位的意義見表3:
          幀緩沖區(qū)開始地址一(LCDSADDR1)
          LCDSADDR1的地址:0x01F00008;
          屬性:R/W;
          復(fù)位值:0x000000。
          LCDSADDR1中各個位的意義見表4:
          幀緩沖區(qū)開始地址二(LCDSADDR2)
          LCDSADDR2的地址:0x01F0000C;
          屬性:R/W;
          復(fù)位值:0x000000。
          LCDSADDR2中各個位的意義見表5:







          注:用戶通過改變LCDBASEU和LCDBASEL的值來滾動屏幕,但在幀結(jié)束時,不能改變LCDBASEU和LCDBASEL的值,因為預(yù)取下一幀的數(shù)據(jù)優(yōu)先于改變幀,如果這時改變幀,預(yù)取的數(shù)據(jù)將無效而且顯示不正確。為了檢查LINECNT,應(yīng)當(dāng)屏蔽中斷,否則如果在讀LINECNT后,任意中斷剛好執(zhí)行,因為ISR的執(zhí)行,LINECNT的值可能無效。

          緩沖區(qū)開始地址三(LCDSADDR3)
          LCDSADDR3的地址:0x01F00010;
          屬性:R/W;
          復(fù)位值:0x000000。
          LCDSADDR3中各個位的意義見表6:
          注:PAGEWIDTH和OFFSIZE必須在ENVID=0時變化。


          內(nèi)置LCD控制器的應(yīng)用

          LCD控制器能與大多數(shù)LCD顯示模塊接口,例如DMF50081,KCS057QV1AJ等。
          KCS057QV1AJ是由KYOCERA公司生產(chǎn),具有320 240個象素點、帶CFL背光的STN(超扭曲向列)256色LCD顯示模塊。它不帶LCD控制器,很容易與S3C44B0X內(nèi)置的LCD控制器接口。本節(jié)將詳述它與LCD控制器的硬件接口連線以及它的驅(qū)動程序。

          LCD控制器與KCS057QV1AJ接口設(shè)計

          KCS057QV1AJ提供的外部接口信號線如下:
          FRM:驅(qū)動器掃描的同步信號線;
          LOAD:數(shù)據(jù)鎖存信號線;
          CP:數(shù)據(jù)移位時鐘信號線;
          DISP:顯示控制信號線;
          D[7:0]:8根顯示數(shù)據(jù)輸入線。
          在KCS057QV1AJ與LCD控制器之間接線時,KCS057QV1AJ的FRM、LOAD、CP、D[7:0]分別和LCD控制器的VFRAME、VLINE、VCLK、VD[7:0]相連。DISP引腳與S3C44B0X的GPIO的GPC15相連,通過GPC15來控制LCD顯示模塊的打開和關(guān)閉。具體接線如圖2。


          KCS057QV1AJ驅(qū)動程序開發(fā)

          驅(qū)動程序包括初始化S3C44B0X端口D和端口C的函數(shù),初始化LCD控制器的函數(shù),打開和關(guān)閉LCD顯示模塊的函數(shù),在LCD顯示模塊上顯示條紋的函數(shù),所有的函數(shù)都有詳細(xì)的注釋。

          初始化端口D和端口C函數(shù)如下:
          void Port_Init(void)
          {
          rPCONC=0x5f55ffff;//GPC15為輸出端口,GPC4-GPC7分配給LCD數(shù)據(jù)線VD7-VD4;
          rPUPC=0x0;//端口C所有的引腳上拉允許;
          rPDATC=0x3fff; //端口C所有的引腳初始化為高
          電平;
          rPCOND=0xaaaa;//端口D所有的引腳分配給LCD控制器;
          rPUPD=0x0;//端口D所有的引腳上拉允許;
          rPDATD=0xff;//端口D所有的引腳初始化為
          高電平。
          }
          初始化LCD控制器函數(shù)如下:
          void LCD_Init()
          {
          int i;
          U32 LCDBASEU,LCDBASEL,LCDBANK;
          LCDDisplayOpen(FALSE);//關(guān)閉LCD;
          rLCDCON1=(0);//關(guān)閉視頻輸出;
          rLCDCON2=(239)|(119<<10)|(15<<21);
          //設(shè)置確定行掃描的返回時間為15個MCLK,設(shè)置屏為彩色320 240點;
          LCDBANK=0xc000000>>22;//設(shè)置顯示緩沖區(qū)首地址在系統(tǒng)存儲器中的位置;
          LCDBASEU=0x0;//設(shè)置緩沖區(qū)的開始地址;
          LCDBASEL=LCDBASEU+(160) 240;
          rLCDSADDR1=(0x3<<27)|(LCDBANK<<21)|LCDBASEU;
          //設(shè)置顯示模塊為彩色模式等;
          rLCDSADDR2=(0<<29)|(0<<21)|LCDBASEL;
          rLCDSADDR3=(320/2)|(0<<9);//不使用虛屏;
          rREDLUT=0xfca86420;//設(shè)置紅色查表寄存器,
          與特定的顯示要求有關(guān);
          rGREENLUT=0xfca86420;//設(shè)置綠色查表寄存器,與特定的顯示要求有關(guān);
          rBLUELUT=0xfffffa50;//設(shè)置蘭查表寄存器,與特定的顯示要求有關(guān);
          rLCDCON1=LCDCON1_ENVID|0<<1|0<<2|0<<3|(2<<5)
          |1<<7|(0x3<<8)|(0x3<<10)|(CLKVAL<<12);
          //使能視頻輸出,8位單掃描方式,設(shè)置WDLY,WLH,CLKVAL;
          for(i=0;i<80*240;i++)//顯示緩沖區(qū)清零。
          *(pLCDBuffer16+i)=0x0;
          }
          從圖2知,GPC15用來打開關(guān)閉LCD。打開和關(guān)閉LCD顯示模塊的函數(shù)如下:
          void LCDDisplayOpen(U8 isOpen)
          {
          if(isOpen){
          rPDATC|=0x8000;//打開LCD
          }
          else{
          rPDATC&=0x7fff;//關(guān)閉LCD
          }
          }
          在LCDBANK寄存器中已經(jīng)定義了顯示緩沖區(qū)在系統(tǒng)存儲器的段首地址為0xc000000,要顯示字符、圖片只需將字符、圖片取模得到的數(shù)據(jù)送到該緩沖區(qū)就可以了。但是要注意,彩色LCD是8位數(shù)據(jù)表示一個象素。對緩沖區(qū)首地址進行如下定義:
          U32 pLCDBuffer16=(U32*)0xc000000;
          下面舉一個在整個屏上顯示明暗相間的條紋的程序,顯示明暗條紋函數(shù)如下:
          void LCDstripe ()
          {
          int i,lcddata;
          for(i=0;i<(320*240)/4;i++)
          {
          lcddata0=0x0ffff0000;
          *(pLCDBuffer16+i)=lcddata;//向幀緩沖區(qū)送數(shù)據(jù),每次4個象素的數(shù)據(jù)。
          }



          關(guān)鍵詞: 三星公司 液晶顯示 LCD

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();