課件-第八次課linux幀緩沖_第1頁
課件-第八次課linux幀緩沖_第2頁
課件-第八次課linux幀緩沖_第3頁
課件-第八次課linux幀緩沖_第4頁
課件-第八次課linux幀緩沖_第5頁
免費預(yù)覽已結(jié)束,剩余57頁可下載查看

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

LCD簡介

液晶顯示是一種的顯示,它不能發(fā)光,只能使用周圍環(huán)境的光。

它顯示圖案或字符只需很小能量。

液晶顯示所用的液晶材料是一種兼有液態(tài)和固體雙重性質(zhì)的有機物,它的棒狀結(jié)構(gòu)在液晶盒內(nèi)一般平行排列,但在電場作用下能改變其排列方向LCD的背光

EL(場致發(fā)光):2000-3000小時以黃綠色為主,常用于小型灰度LCD背光

LED光源:50000小時成本低、 長、支流供電,發(fā)光電壓低、體積小

CCFL( 極熒光燈):60000小時需要高壓交流,體積大LCD的顯示方式

反射型LCD:底偏光片后面加了一塊反射板,它一般在戶外和光線良好的使用。

透射型LCD:底偏光片是透射偏光片,它需要連續(xù)使用背光源,一般在光線差的環(huán)境使用。

透反射型LCD:是處于以上兩者之間,底偏光片能部分反光,一般也帶背光源,光線好的時候,可關(guān)掉背光源;光線差時,可點亮背光源使用LCD。TN與TFT型顯示器

常見的LCD包括wistNematic)型顯示器(扭轉(zhuǎn)向列型顯示器,如TN_LCD,STN_LCD和DSTN_LCD)和TFT(TinFilm

Transistor薄膜晶體管)型顯示器。

這兩種顯示器的基本原理比較接近,不同點在于:TN型顯示器通過電極控制液晶分子,顯示質(zhì)量較差;

TFT型顯示器為每個像素都設(shè)有一個半導體開關(guān),每個像素都可以通過點脈沖直接控制,因而每個節(jié)點都相對獨立,并可以連續(xù)控制,不僅提高了顯示屏的反應(yīng)速度,同時可以精確控制顯示色階,所以TFT液晶的色彩更真因此TFT型顯示器的顏色數(shù)量和刷新速度都優(yōu)于TN型顯示器。LCD驅(qū)動方式

一種是帶有LCD掃描 的LCD模塊

一種是通過LCD控制器,直接掃描LCD屏。

比如:S3C2410處理器,帶有LCD控制器,顯示緩存和系統(tǒng)內(nèi)存公用。可以支持STN(彩色/灰度)和TFT兩種模式的LCD

TFT模式下最多支持18位色,800x600分辨率。處理器與LCD的連接嵌入式處理器LCD模塊數(shù)據(jù)總線寄存器選擇使能信號有LCD控制器的處理器LCDLCD控制信號線S3C2410的 LCD

控制器介紹

S3C2410內(nèi)置的LCD控制器支持單色,每像素2位(4級灰度),或每像素4位(16級灰度)的黑白屏,也可以支持每像素8位(256色)和每像素12

位(4096色)的彩色STNLCD屏。它也支持每像素1位,每像素2位,每像素4位,每像素8位的調(diào)色TFT彩色LCD,并且也支持每像素16位和每像素24位的真彩顯示。

LCD控制器可以通過編程選擇支持不同的LCD屏的要求,例如行和列像素,數(shù)據(jù)總線寬度,接口時序和刷新頻率。

LCD

控制器的主要作用就是,將定位于系統(tǒng) 器的顯示緩沖區(qū)的LCD

圖象數(shù)據(jù)傳送到外部LCD驅(qū)動器。STN

LCD的TTL信號信號名稱描述VFRAME幀同步信號VLINE行同步信號VCLK像素時鐘VD[7:0]數(shù)據(jù)信號VMAC偏置信息PWREN電源開關(guān)信號單掃與雙掃的區(qū)別?4位與8位?

兩者指的是掃描方式的不同,單掃就是整屏逐一掃描,雙掃

就是把整屏分為上下屏,同時從上往下,從左往右獨立掃描。

4位和8位指的是發(fā)送數(shù)據(jù)時用到多少根數(shù)據(jù)線。

需要注意的是,4位雙掃用到8根數(shù)據(jù)線,其中4根用于上半屏,另外四根用于下半屏數(shù)據(jù)。4位單掃STN模式顯示緩沖與顯示點的對應(yīng)

4位單掃描顯示緩沖的對應(yīng)關(guān)系兩個點的信息

1個字節(jié)

16級灰度8位STN屏幕點陣:320x2408位單掃描STN模式8位單掃描顯示緩沖的對應(yīng)關(guān)系RGB76543210R[2:0]G[2:0]B[1:0]標準:BGR76543210B[1:0]G[2:0]R[2:0]

1個字節(jié)

1個點的信息

可以是用調(diào)色板TFT

LCD的TTL信號信號名稱描述VSYNC垂直同步信號HSYNC水平同步信號HCLK像素時鐘VD[23:0]數(shù)據(jù)信號LEND行結(jié)束信號(不是必須的)PWREN電源開關(guān)信號TFT常見信號線

HSYNC——行同步信號(水平)

VSYNC——幀同步信號(垂直)

VCLK——此信號為LCD控制器和LCD驅(qū)動器之間的象素時鐘信號,LCD控制器在VCLK的上升沿發(fā)送數(shù)據(jù),LCD驅(qū)動器在VCLK的下降沿采樣數(shù)據(jù)。

VDEN——數(shù)據(jù)有效控制,低電平時消隱,高電平時顯示輸出

VD[23:0]——LCD

象素數(shù)據(jù)輸出端口,也就是

所說的RGB

信號線,采用的是5:6:5

模式。一幀?象素時鐘幀前回掃時間幀同步頭幀后回掃時間行同步頭有效數(shù)據(jù)行前回掃時間一行行后回掃時間TFT時序的計算p202

VCLK作為基準時鐘,像素時鐘

VCLK=HCLK/[(CLKVAL+1)*2]

HSYNC行頻:

=1/(行前回掃時間+有效數(shù)據(jù)+行后回掃時間)*VCLK

=1/(HSPW+1+HBPD+1+HOZVAL+1+HFPD+1)*VCLK

VSYNC幀頻:

=1/(幀前回掃時間+有效數(shù)據(jù)+幀后回掃時間)*HSYNC

=1/(VSPW+1+VBPD+1+LINEEVAL+1+VFPD+1)*HSYNC

STN

LCD顯示器

—支持3種類型的LCD顯示屏:4位雙掃描,4位單掃描,和8位單掃描顯示類型;

—支持單色,4級灰度,16級灰度的黑白色以及256色和4096色的彩色STNLCD屏;

—支持多種屏幕大?。?/p>

典型的屏幕大?。?40X480,320X240,,160X160

最大虛擬屏大?。?Mbytes

在256色下最大虛擬屏大?。?096×1024,2048×2048,1024×4096

TFT

LCD顯示:

—支持1,2,4或8-bpp(bit

per

pixel)調(diào)色彩色TFT顯示屏

—支持16-bpp或24-bpp的真彩TFT顯示屏

—在每像素24位模式在,最大可支持16M彩色TFT

—支持多種屏幕大小

典型實際屏幕大小:640×480,320×240,160×160以及其它

最大虛擬屏大小是4Mbytes

在64K彩色模式下最大虛擬屏大?。?048×1024和其它

LCD

控制器的主要特性24bpp與16bpp

24bpp(16M)

顯示模式使用24位的數(shù)據(jù)來表示一個像素,每種原色使用8位,用VD[23:0]送出。在內(nèi)存中使用 節(jié)表示,只用到其中的三個字節(jié)。

16bpp(64K)顯示模式使用16位的數(shù)據(jù)來表示一個像素,16位數(shù)據(jù)格式分成5:6:5和5:5:5:1兩種。在內(nèi)存中使用二個字節(jié)表示。16/15位顯示緩沖的對應(yīng)關(guān)系p203256色(8BPP)

256色(8BPP)的顯示模式就是使用8位的數(shù)據(jù)來表示一個像素的顏色,但是對三種原色平均下來,每個原色只能使用不到3位的數(shù)據(jù)來表示,即每個原色最多不過8級別,這不足以表示更豐富的顏色。

為了解決8BPP模式的顯示能力太弱的問題,需要使用調(diào)色板(Palette)。每個像素對應(yīng)的8位數(shù)據(jù)不再用來表示RGB三種原色,而是表示他在調(diào)色板中的索引值:要顯示這個像素時,使用這個索引值從調(diào)色板中取得RGB顏色值。

所謂調(diào)色板就是一塊內(nèi)存,可以對每個索引值設(shè)置其顏色,可以使用24BPP或16BPP。

在S3C2440中,調(diào)色板是一塊256X16的內(nèi)存,使用

16BPP的格式來表示256色(8BPP)顯示模式下各個索引值的顏色。這樣,即使使用256色(8BPP)的顯示模式,最終出現(xiàn)在LCD數(shù)據(jù)總線上的仍是16BPP的數(shù)據(jù)。LCD控制器

結(jié)構(gòu)

REGBANK

具有17

個可編程寄存器,用于配置LCD

控制器。LCDCDMA為 的DMA,它可以自動地將顯示數(shù)據(jù)從幀內(nèi)存中傳送到LCD

驅(qū)動器中。通過

DMA,可以實現(xiàn)在不需要CPU介入的情況下顯示數(shù)據(jù)LTV350QV-F05三星3.5英寸帶觸摸頻的TFTLCD三星3.5英寸帶觸摸頻的TFT

LCD時序字節(jié)交換控制位半字交換控制位比如:再比如:DMA的起始地址驅(qū)動LCD的數(shù)據(jù)應(yīng)該放在什么地方,是怎么被搬運過去的。其實很簡單,S3C2410的LCD控制模塊自帶了DMA控制器,

只要在SDRAM里面開一塊空間,然后設(shè)定要DMA的起始地址(LCDSADDR1寄存器)和結(jié)束地址(LCDSADDR2)就可以了。幀內(nèi)存的起始地址DMA的結(jié)束地址S3C2410的寄存器提供了一種滾動的顯示模式,這個主要是靠LCDSADDR3寄存器實現(xiàn)的??梢赃@樣想象:滾動顯示的含義就好比是大鏡在大地圖上移動,而放大鏡下方的圖像就是拿著一個放應(yīng)該顯示的東西。480X640個象素的緩沖區(qū) 相當于四倍圖像的大小, 在SDRAM中開了一個虛擬屏偏移量大小頁寬,以半字為單位

S3C2410X充許用戶在沒有大的修改的情況下對一幀填入一種顏色,這樣可以將幀緩沖或調(diào)色板填入一種顏色。要顯示同種顏色的一幀,可將要顯示的顏色的值寫入寄存器TPAL中的TPALVAL并且將TPALEN置1。

//LCD端口初始化

void

Lcd_Port_Init(

void

)

{//

上拉

rGPCUP =0x00000000;

//初始VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND

rGPCCON=0xaaaa02a9; //qjy:

foravr

configlcd!!!

//

Disable

Pull-up

register

rGPDUP =0x00000000;

rGPDCON

=0xaaaaaaaa;//Initialize

VD[15:8]

//LCD

PWREN端口初始化

Lcd_Pwren_Init_On_Off(

TRUE

)

;

}* 320

x

240

TFT

LCD功能模塊初始化voidLcd_Init(void)

//設(shè)置寄存器LCDCON1~LCDCON5{//1.

像素時鐘的設(shè)置,16bpp

TFT,

LCD輸出//FCLK

=

200MHz,

HCLK=100MHz//

VCLK

=

HCLK

/

[(CLKVAL+1)

*

2] (CLKVAL

>=

0)//#define

CLKVAL_TFT_320240

(7)rLCDCON1=

(CLKVAL_TFT_320240<<8)

|(0<<7)

|(3<<5)

|(12<<1)

|0;//2.設(shè)置幀同步頭等信號的時序rLCDCON2=

(VBPD_320240<<24)|(LINEVAL_TFT_320240<<14)

|

(VFPD_320240<<6)

|

(VSPW_320240);

/*東華屏:WX3500B-M06

#defineVBPD_320240(14)//垂直同步信號的后肩

#defineVFPD_320240(11)//垂直同步信號的前肩

#defineVSPW_320240(2)//垂直同步信號的脈寬

#defineHBPD_320240

#defineHFPD_320240

#defineHSPW_320240(37)

//水平同步信號的后肩(19) //水平同步信號的前肩(29) //水平同步信號的脈寬*/

//3.設(shè)置幀同步頭等信號的時序

rLCDCON3=(HBPD_320240<<19)

|(HOZVAL_TFT_320240<<8)

|

(HFPD_320240);

//4.設(shè)置HSYNC信號的脈沖寬度(HSPW+1)個VCLK

rLCDCON4

=

(13<<8)

|

(HSPW_320240);

//5.格式:5:6:5;設(shè)置各信號的極性

//#define

BSWP

//#define

HWSWP(0)(1)//字節(jié)反轉(zhuǎn)控制//半字控制反轉(zhuǎn)rLCDCON5

=(1<<11)

|

(1<<10)

|

(1<<9)

|

(1<<8)

|

(0<<7)

|(0<<6)

|

(1<<3) |(BSWP<<1)

|

(HWSWP);

//設(shè)置顯示幀緩存的起始地址,視口的起始地址

//volatile

static

unsignedshort

LCD_BUFER[320][240];

//#defineM5D(n) ((n)

&0x1fffff) //

getlower21bits

rLCDSADDR1

=(((U32)LCD_BUFER>>22)<<21)|M5D((U32)LCD_BUFER>>1);

//設(shè)置設(shè)置顯示幀緩存的結(jié)束地址,視口與顯存一致,16BPP

rLCDSADDR2

=M5D(((U32)LCD_BUFER

+(320*240*2))

//OFFSET=0,視口的寬度以半字為單位

rLCDSADDR3

=(0<<11)|(320*2/2);

rLCDINTMSK

|=(3); //

MASKLCD

Sub

Interrupt

rLPCSEL

&=(~7); //

Disable

LPC3480

rTPAL

=0; //

Disable

TempPalette

}

/* 320

x240

TFTLCD全屏填充特定顏色單元或清屏*/

void

Lcd_ClearScr(

U16

c)

{

unsigned

int

x,

y;

for(

y

=

0

;

y

<

SCR_YSIZE_TFT_320240

;

y++

)

{

for(

x

=

0

;

x

<

SCR_XSIZE_TFT_320240

;

x++

)

{

LCD_BUFER[y][x]

=c;

}

}

}

LCD

屏測試

voidTest_Lcd_LTV350QVF05(void)

{//清屏

Lcd_ClearScr(

(0x00<<11)

|

(0x00<<5)

|

(0x00)

)

;

Uart_Getch()

; //wait

uartinput

//顯示某種色彩red:0x1f;green:0x3f;blue:0x1f

Lcd_ClearScr(

(0x1f<<11)

|

(0x3f<<5)

|

(0x1f)

)

;

Uart_Getch()

; //wait

uartinput

//顯示某種色彩red:0x00;green:0x00;blue:0x1f

Lcd_ClearScr(

(0x00<<11)

|

(0x00<<5)

|

(0x1f)

)

;Uart_Getch()

;

}

/* 320

x240

TFTLCD單個象素的顯示數(shù)據(jù)輸出*/

static

void

PutPixel(U32

x,U32

y,U16

c)

{

if(x<320

&&y<240)

LCD_BUFER[(y)][(x)]

=c;

}

/*畫線函數(shù)*/

static

void

Glib_Line(int

x1,

inty1,int

x2,int

y2,U16color)

/*

在LCD屏幕上畫一個矩形*/

static

void

Glib_Rectangle(int

x1,

inty1,

intx2,

inty2,U16color)

{

Glib_Line(x1,

y1,

x2,

y1,

color);

Glib_Line(x2,

y1,x2,

y2,color);

Glib_Line(x1,

y2,x2,

y2,color);

Glib_Line(x1,

y1,x1,

y2,color);

}

/*

在LCD屏幕上用顏色填充一個矩形*/

static

void

Glib_FilledRectangle(int

x1,

int

y1,

intx2,int

y2,U16

color)

{

inti;

//用n條直線填滿區(qū)域!

for(i

=

y1;

i

<=

y2;

i++)

{Glib_Line(x1,

i,

x2,

i,color);

}

}在LCD屏幕上指定坐標點畫一個指定大小的

static

void

Paint_Bmp(intx0,

int

y0,

int

h,

int

l,

unsigned

charbmp[])

{ int

x,

y;U32c; int

p

=0;

for(y=0;

y<l

;y++

)

{

for(x=0;x<h

;x++

)

{c=bmp[p+1]|

(bmp[p]<<8); //一個像素兩個字節(jié)組成

if

((x0+x)<

320)&&((y0+y)<

240))

LCD_BUFER[y0+y][x0+x]=c

;

p

=p

+2;

}

}

}Linux

framebufferFramebuffer的結(jié)構(gòu)

在Linux系統(tǒng)下,把顯示緩沖區(qū) 給用戶空間

應(yīng)用程序直接操作顯示緩沖區(qū)(mmap)

Linux中,有對framebuffer的專門支持,提供系統(tǒng)的ioctl

X86下就有支持, 容易移植Framebuffer的應(yīng)用顯

Linux的framebuffer(幀緩沖)接口提供給用戶示設(shè)備的通用接口

通過mmap

顯示緩沖給用戶

不包括任何繪圖接口Framebuffer使用練習

常用接口

重要結(jié)構(gòu)體:在f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論