在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 六 ARM9(S3C2440)的LCD顯示-理論知識(shí)

            六 ARM9(S3C2440)的LCD顯示-理論知識(shí)

            作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/201611/322171.htm

            所有顯示器顯示圖像的原理都是從上到下,從左到右的。這是什么意思呢?這么說吧,一副圖像可以看做是一個(gè)矩形,由很多排列整齊的點(diǎn)一行一行組成,這些點(diǎn)稱之為像素。那么這幅圖在LCD上的顯示原理就是:

            A:顯示指針從矩形左上角的第一行第一個(gè)點(diǎn)開始,一個(gè)點(diǎn)一個(gè)點(diǎn)的在LCD上顯示,在上面的時(shí)序圖上用時(shí)間線表示就為VCLK,我們稱之為像素時(shí)鐘信號(hào);
            B:當(dāng)顯示指針一直顯示到矩形的右邊就結(jié)束這一行,那么這一行的動(dòng)作在上面的時(shí)序圖中就稱之為1 Line;
            C:接下來顯示指針又回到矩形的左邊從第二行開始顯示,注意,顯示指針在從第一行的右邊回到第二行的左邊是需要一定的時(shí)間的,我們稱之為行切換;
            D:如此類推,顯示指針就這樣一行一行的顯示至矩形的右下角才把一副圖顯示完成。因此,這一行一行的顯示在時(shí)間線上看,就是時(shí)序圖上的HSYNC;
            E:然 而,LCD的顯示并不是對(duì)一副圖像快速的顯示一下,為了持續(xù)和穩(wěn)定的在LCD上顯示,就需要切換到另一幅圖上(另一幅圖可以和上一副圖一樣或者不一樣,目 的只是為了將圖像持續(xù)的顯示在LCD上)。那么這一副一副的圖像就稱之為幀,在時(shí)序圖上就表示為1 Frame,因此從時(shí)序圖上可以看出1 Line只是1 Frame中的一行;
            F:同樣的,在幀與幀切換之間也是需要一定的時(shí)間的,我們稱之為幀切換,那么LCD整個(gè)顯示的過程在時(shí)間線上看,就可表示為時(shí)序圖上的VSYNC。

            上面時(shí)序圖上各時(shí)鐘延時(shí)參數(shù)的含義如下:(這些參數(shù)的值,LCD產(chǎn)生廠商會(huì)提供相應(yīng)的數(shù)據(jù)手冊(cè))

            VBPD(vertical back porch):表示在一幀圖像開始時(shí),垂直同步信號(hào)以后的無效的行數(shù),對(duì)應(yīng)驅(qū)動(dòng)中的upper_margin;
            VFBD(vertical front porch):表示在一幀圖像結(jié)束后,垂直同步信號(hào)以前的無效的行數(shù),對(duì)應(yīng)驅(qū)動(dòng)中的lower_margin;
            VSPW(vertical sync pulse width):表示垂直同步脈沖的寬度,用行數(shù)計(jì)算,對(duì)應(yīng)驅(qū)動(dòng)中的vsync_len;
            HBPD(horizontal back porch):表示從水平同步信號(hào)開始到一行的有效數(shù)據(jù)開始之間的VCLK的個(gè)數(shù),對(duì)應(yīng)驅(qū)動(dòng)中的left_margin;
            HFPD(horizontal front porth):表示一行的有效數(shù)據(jù)結(jié)束到下一個(gè)水平同步信號(hào)開始之間的VCLK的個(gè)數(shù),對(duì)應(yīng)驅(qū)動(dòng)中的right_margin;
            HSPW(horizontal sync pulse width):表示水平同步信號(hào)的寬度,用VCLK計(jì)算,對(duì)應(yīng)驅(qū)動(dòng)中的hsync_len;

            對(duì)于以上這些參數(shù)的值將分別保存到REGBANK寄存器組中的LCDCON1/2/3/4/5寄存器中:(對(duì)寄存器的操作請(qǐng)查看S3c2440數(shù)據(jù)手冊(cè)LCD部分)

            LCDCON1:17- 8位CLKVAL
            6- 5位掃描模式(對(duì)于STN屏:4位單/雙掃、8位單掃)
            4- 1位色位模式(1BPP、8BPP、16BPP等)
            LCDCON2:31 - 24位VBPD
            23 - 14位LINEVAL
            13 - 6位VFPD
            5 - 0位VSPW
            LCDCON3:25 - 19位HBPD
            18 - 8位HOZVAL
            7 - 0位HFPD
            LCDCON4:7 - 0位HSPW
            LCDCON5:

            4.幀緩沖(FrameBuffer):

            幀緩沖是Linux為顯示設(shè)備提供的一個(gè)接口,它把一些顯示設(shè)備描述成一個(gè)緩沖區(qū),允許應(yīng)用程序通過FrameBuffer定義好的接口訪問這些圖形設(shè)備,從而不用去關(guān)心具體的硬件細(xì)節(jié)。對(duì)于幀緩沖設(shè)備而言,只要在顯示緩沖區(qū)與顯示點(diǎn)對(duì)應(yīng)的區(qū)域?qū)懭腩伾?值,對(duì)應(yīng)的顏色就會(huì)自動(dòng)的在屏幕上顯示。下面來看一下在不同色位模式下緩沖區(qū)與顯示點(diǎn)的對(duì)應(yīng)關(guān)系:




            我相信看完這些以后大家會(huì)對(duì)這一塊有稍一些了解了,下面是我自己的理解:

            LCD是在我們學(xué)習(xí)ARM9時(shí)覺得比較麻煩的一塊,因?yàn)閯偨佑|的時(shí)候一眼望去覺得內(nèi)容可是不少,不知道從哪里下手,呵呵,其實(shí)我們慢慢來分析就會(huì)逐漸明朗起來。

            首先說一下我們平時(shí)所說的多少位的LCD,有24位的,有16位的指的是LCD數(shù)據(jù)的位數(shù),LCD的數(shù)據(jù)實(shí)際上是LCD要顯示的顏色,24位的是紅綠藍(lán)各占8位,16位則是紅綠藍(lán)按照565分配的,其實(shí)24的也可以只接16位,每個(gè)顏色地位接地就可以,所以要給LCD的緩沖區(qū)一個(gè)數(shù)據(jù)才能在LCD上顯示出來。那究竟是怎么顯示的呢,那就得先說一下像素了,LCD的像素實(shí)際上就LCD屏幕有多少個(gè)點(diǎn),LCD顯示的東西都是一個(gè)一個(gè)點(diǎn)拼湊出來的,比如我用的是320*240的LCD,就是說LCD每一行有320個(gè)點(diǎn),而每一列有240個(gè)點(diǎn),所以總共有320*240個(gè)點(diǎn),我們讓適當(dāng)?shù)狞c(diǎn)顯示適當(dāng)?shù)念伾瓦_(dá)到了我們的目的。

            其實(shí)剛開始困擾我們的是LCD的初始化的問題,要設(shè)置的東西比較多,其實(shí)我們是記不住這些東西的,呵呵,作為入門我們可以參考別人的初始化程序,把里面的參數(shù)改成我們自己的LCD的參數(shù)就OK了。

            那么我們到底是怎么把我們要顯示的數(shù)據(jù)送給LCD控制起的呢?是這樣的,我們可以定義一個(gè)二維數(shù)組,把我們要顯示的數(shù)據(jù)存到里面,然后把這個(gè)數(shù)組的地址賦給LCD的相應(yīng)的寄存器,這個(gè)寄存器是LCDSADDRn,具體的設(shè)置大家可以參考數(shù)據(jù)手冊(cè),我們可以把二維數(shù)組的坐標(biāo)和LCD的坐標(biāo)對(duì)應(yīng)起來,那么我們就可以隨意的讓哪一個(gè)像素點(diǎn)顯示什么顏色就顯示什么顏色了。這就把數(shù)據(jù)送出的過程,也就是顯示一個(gè)像素點(diǎn)的過程。

            到現(xiàn)在我們已經(jīng)知道如何顯示一個(gè)像素了,那接下來就是LCD顯示最基本的東西了----字符和圖片。漢字和圖片的顯示都是基于像素點(diǎn)的顯示的,我們把要顯示的字符和圖片轉(zhuǎn)化成相應(yīng)的數(shù)據(jù),然后傳遞給LCD即可。我們可以專門的寫一個(gè)顯示字符的函數(shù)和一個(gè)顯示圖片的函數(shù)。顯示字符的數(shù)據(jù)可以用取模軟件生成,因?yàn)樯傻淖址麛?shù)據(jù)是表示的每一個(gè)點(diǎn)要不要亮,亮的地方用1表示,不亮的地方用0表示,所以如果用LCD顯示,我們還要告訴LCD顯示什么顏色,這才是LCD需要的數(shù)據(jù),比如說16*16的數(shù)據(jù),有16行16列,我們將一行的數(shù)據(jù),也就是16位數(shù)據(jù)的每一位都取出來,為1的地方,我們就給LCD一個(gè)16位的數(shù)據(jù),為0的地方就不給數(shù)據(jù),這樣就能顯示了,取模生成的數(shù)據(jù)都是按行來的。圖片的顯示直接就將16位的數(shù)據(jù)傳遞給LCD,這個(gè)圖片數(shù)據(jù)的產(chǎn)生,我們可以用軟件LCD彩色圖片轉(zhuǎn)換工具(BMP_to_H)生成C語言文件,我們只需對(duì)文件進(jìn)行簡單的修改就能加入到我們的程序中,修改方法在軟件的說明中都有。

            以上這些都是我自己的理解,話雖然不多,但這些都是我剛開始學(xué)的時(shí)候困擾我的地方,我相信看了這些對(duì)你理解LCD到底是怎樣顯示的會(huì)有一定的幫助,說的不對(duì)的地方,請(qǐng)大家及時(shí)幫我改正,呵呵。

            下一篇文章中我將結(jié)合具體的代碼分析一下LCD的操作過程。


            上一頁 1 2 下一頁

            關(guān)鍵詞: ARM9S3C2440LCD顯

            評(píng)論


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

            關(guān)閉