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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM與WindowsCE的LCD顯示器設(shè)計(jì)

          基于ARM與WindowsCE的LCD顯示器設(shè)計(jì)

          作者: 時(shí)間:2009-03-26 來(lái)源:網(wǎng)絡(luò) 收藏

          結(jié)合內(nèi)置的控制器和FG070053DSSWJGT1液晶屏的內(nèi)部結(jié)構(gòu)以及時(shí)序圖的分析,顯示接口電路,主要是把的控制信號(hào)與屏的控制引腳連接起來(lái),如圖3所示。通過(guò)16位數(shù)據(jù)線把LCD控制器的數(shù)據(jù)發(fā)送腳與FG070053DSSWJGT1的數(shù)據(jù)接收腳連接起來(lái),即把(R0―R4,G0―G5,B0―B4)與L_DD0-L_DD15連接起來(lái);把幀時(shí)鐘,行時(shí)鐘,像素時(shí)鐘等與LCD屏連接; ADJ采用電壓為0―3.0V、 頻率為20KHZ的PWM脈沖,調(diào)節(jié)液晶屏背光燈的亮度,在滿足用戶要求的同時(shí)還可有效地控制功耗。圖3中,網(wǎng)絡(luò)標(biāo)號(hào)LCLK是行時(shí)鐘控制信號(hào),F(xiàn)CLK是幀時(shí)鐘控制信號(hào),PCLK是像素時(shí)鐘控制信號(hào),OE為數(shù)據(jù)輸出使能信號(hào)。VDD由直流5V穩(wěn)壓電源提供,U/D通過(guò)電阻拉低后對(duì)屏幕提供上下翻轉(zhuǎn)信號(hào),L/R支持屏幕左右翻轉(zhuǎn)控制。

          圖3 LCD接口電路

          3 LCD顯示程序的

          下LCD開(kāi)發(fā)使用基本圖形引擎(GPE)類(lèi)來(lái)實(shí)現(xiàn)[1] [5]。在使用GPE類(lèi)編寫(xiě)之前,首先分析使用GPE類(lèi)編寫(xiě)顯示驅(qū)動(dòng)時(shí)對(duì)顯示設(shè)備的要求,內(nèi)存布局要求顯示設(shè)備使用線性幀緩沖區(qū),全部的顯示內(nèi)存是連續(xù)的;接下來(lái)分析GPE類(lèi)對(duì)內(nèi)存中數(shù)據(jù)格式的要求。LCD屏是自頂向下的格式,像素(0,0)在左上角,像素(width-1,height-1)在右下角。 幀緩沖區(qū)的步幅,即表示顯示設(shè)備上一個(gè)掃描行在內(nèi)存中占的字節(jié)數(shù),應(yīng)當(dāng)是四字節(jié)的整數(shù)倍,即使在每個(gè)掃描行的末尾填充一些無(wú)用的字節(jié),CPU不需做“排”選擇也可以存取整個(gè)幀緩沖區(qū),幀緩沖區(qū)不應(yīng)當(dāng)使用位面(位面就是每種顏色信道RGB>在幀緩沖區(qū)進(jìn)行分開(kāi)存儲(chǔ))。

          使用 內(nèi)置的LCD控制器,集成了7個(gè)通道的DMA,支持像素深度分別為2、4、8、16、18、24位的RGB模式,采用16位RGB模式進(jìn)行。圖像數(shù)據(jù)保存在內(nèi)存中,使用DMA方式進(jìn)行幀數(shù)據(jù)存取,幀的大小及幀地址是指定的,可以滿足GPE類(lèi)的線性幀緩沖區(qū)的要求,LCD控制與LCD屏都滿足 下使用GPE類(lèi)來(lái)實(shí)現(xiàn)顯示驅(qū)動(dòng)的硬件要求。

          3.1 創(chuàng)建GPE類(lèi)的顯示

          使用GPE類(lèi)簡(jiǎn)化了顯示設(shè)備的開(kāi)發(fā)工作,GPE類(lèi)代表一個(gè)顯示設(shè)備,是一個(gè)純虛的類(lèi),設(shè)計(jì)顯示驅(qū)動(dòng)時(shí)必須繼承這個(gè)基本GPE類(lèi)。

          首先定義一個(gè)新的類(lèi)(class SA2Video)來(lái)繼承GPE類(lèi),根據(jù)GPE類(lèi)的要求,實(shí)現(xiàn)以下函數(shù):

          NumModes ------返回顯示驅(qū)動(dòng)所支持的顯示模式。
          GetModeInfo ------返回指定顯示模式的信息,如顯示像素寬度和深度,處理由NumModes()函數(shù)返回的顯示模式,當(dāng)SetModes()函數(shù)被調(diào)用時(shí),總是返回在模式配置列表中的第一個(gè)模式值。
          SetModes ------設(shè)置顯示模式。
          AllocSurface------分配一個(gè)頁(yè)面,頁(yè)面僅僅是保存像素?cái)?shù)據(jù)的RAM或視頻RAM,是一個(gè)塊內(nèi)存,GPESurf類(lèi)能用于代表系統(tǒng)顯存上的一個(gè)頁(yè)面,保證在視頻RAM上分配一個(gè)頁(yè)面。
          SetPointerShape------設(shè)置光標(biāo)位圖和光標(biāo)區(qū)。
          MovePointer------移動(dòng)光標(biāo)。
          BltPrepare ------在位塊傳輸操作之前調(diào)用,如果驅(qū)動(dòng)支持位塊傳輸之前的操作,它就允許驅(qū)動(dòng)建立硬件位塊傳輸(blit)操作,并返回一個(gè)實(shí)際操作函數(shù)去執(zhí)行位塊傳輸(blit),在GPE類(lèi)中提供默認(rèn)的Blit操作函數(shù)。
          BltComplete------在塊傳輸完成之后執(zhí)行,如果有必要的話,它允許設(shè)備做任何的清除操作。
          Line ------在畫(huà)線操作之前和之后調(diào)用,如果在畫(huà)線之前調(diào)用,該函數(shù)可以建立硬件的畫(huà)線操作,然后返回GPE默認(rèn)的畫(huà)線操作;如果在畫(huà)線之后調(diào)用,該函數(shù)可以做任何畫(huà)線操作之后的清除。
          InVBlank ------標(biāo)志是否在水平同步周期時(shí)顯示更新了。
          這些函數(shù)在GPE類(lèi)的源代碼中為空函數(shù),所以必須在(class SA2Video)中實(shí)現(xiàn)函數(shù)重載。

          3.2 創(chuàng)建LCD控制器接口驅(qū)動(dòng)程序

          創(chuàng)建LCD控制器的接口驅(qū)動(dòng)程序主要是完成硬件的配置,包括LCD控制器和IO引腳接口的配置。首先根據(jù)LCD顯示接口的電路連接,配置IntelPXA270內(nèi)的IO寄存器,然后根據(jù)外接的LCD屏提供的參數(shù)配置LCD控制器,主要是配置接口時(shí)序,如幀時(shí)鐘,行時(shí)鐘,像素時(shí)鐘,數(shù)據(jù)輸出使能等[6]。在xllp_lcd.c文件中的XllpLCDInit()函數(shù)實(shí)現(xiàn)硬件的初始化,以下為該函數(shù)的關(guān)鍵代碼:

          XLLP_STATUS_T XllpLCDInit(P_XLLP_LCD_T pXllpLCD)
          { XLLP_STATUS_T status = 0;
          // 初始化IO接口,根據(jù)LCD連接電路圖進(jìn)行配置
          LCDSetupGPIOs(pXllpLCD);
          // 初始LCD控制器及幀緩沖區(qū)
          LCDInitController(pXllpLCD);
          // 清除LCD控制器的狀態(tài)寄存器
          LCDClearStatusReg(pXllpLCD);
          // 使能LCD 控制器,驅(qū)動(dòng)LCD屏顯示數(shù)據(jù)
          LCDEnableController(pXllpLCD);
          return status;
          }

          3.3 LCD控制器顯示模式的設(shè)置

          WindowsCE GDI 支持帶有多種顏色灰度和顏色模式的顯示設(shè)備,從僅用一位表示的顏色到調(diào)色板調(diào)制出真32位RGB,每一種格式支持幾種不同的像素排列方式,這取決于對(duì)顯示內(nèi)存的訪問(wèn)是否支持單字節(jié)方式、雙字節(jié)字方式、四字節(jié)方式。

          使用下列掩碼來(lái)提取紅、綠、藍(lán)數(shù)值:每個(gè)像素用16位表示的格式是一種掩碼格式,并且不被調(diào)色,每個(gè)像素我們用兩字節(jié)來(lái)存儲(chǔ)。結(jié)合 LCD顯示接口的硬件電路圖和IntelPXA270 內(nèi)置的LCD控制器,按照IntelPXA270處理器手冊(cè)上的說(shuō)明,需要對(duì)控制引腳初始化[7]。在圖3中,第14口用來(lái)進(jìn)行幀時(shí)鐘控制,結(jié)合IntelPXA270數(shù)據(jù)手冊(cè),我們配置第14口為L(zhǎng)_VSYNC功能,用如下語(yǔ)句實(shí)現(xiàn):
          GAFR0_L|=((GAFR0_L~(1u29))|(1u28))
          所有顯示數(shù)據(jù)線L_DD0―L_DD15都設(shè)為輸出口,并設(shè)為的數(shù)據(jù)輸出,程序設(shè)計(jì)如下:



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();