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

          新聞中心

          EEPW首頁(yè) > 光電顯示 > 設(shè)計(jì)應(yīng)用 > FPGA的LCD液晶顯示器設(shè)計(jì)

          FPGA的LCD液晶顯示器設(shè)計(jì)

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

            由制作的顯示面板廣泛應(yīng)用于軍用設(shè)備中,本設(shè)計(jì)采用Spartan-3E 為硬件,該2×16字符型內(nèi)嵌一個(gè)Sitronix ST7066U圖形控制器,實(shí)現(xiàn)了顯示器的字符或者漢字的滿屏顯示、滿屏移動(dòng)顯示以及單個(gè)字符在屏幕上的移動(dòng)顯示,所有功能用VHDL語(yǔ)言實(shí)現(xiàn),符合LCD顯示器要求,達(dá)到各種顯示效果。

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

            由于LCD 體積小、重量輕、功耗低,應(yīng)用非常廣泛,如作為飛機(jī)、坦克和船上的顯示面板,可縮小原CRT顯示器的所占空間,減輕設(shè)備重量,增強(qiáng)機(jī)動(dòng)性。

            本設(shè)計(jì)采用Spartan-3E開(kāi)發(fā)板上的一個(gè)內(nèi)嵌Si.tronix ST7066U圖形控制器的字符型LCD,實(shí)現(xiàn)了:(1) 單個(gè)字符在任意位置的顯示以及字符的滿屏顯示及滿屏移動(dòng)顯示;(2) 自定義字符(漢字)的顯示以及單個(gè)字符的滿屏移動(dòng)顯示。其中,圖形控制器[1]負(fù)責(zé)接收控制指令及數(shù)據(jù)并將其發(fā)送給LCD顯示器。

            1 Sitronix ST7066U 圖形控制器

            該控制器有三個(gè)內(nèi)部存儲(chǔ)空間,DD RAM、CGROM、CG RAM,送數(shù)據(jù)之前應(yīng)先初始化。

           ?。?)DD RAM(顯示數(shù)據(jù)RAM)

            存儲(chǔ)字符編碼,從物理上講DD RAM共有80個(gè)字符位置,每行有40個(gè)字符,但只有16個(gè)可被顯示,剩余的24個(gè)不被顯示。在讀或?qū)懼?,需初始化地址?jì)數(shù)器,地址計(jì)數(shù)器在讀或?qū)懼罂杀3殖?shù)或者自動(dòng)增1或減1。

           ?。?)CG ROM(字符產(chǎn)生器ROM)

            包含每個(gè)事先定好的字符的字體位圖。

            (3)CG RAM(字符產(chǎn)生器RAM)

            包含8位的自定義字符位圖,每個(gè)自定義字符位由8行位圖的5個(gè)點(diǎn)組成,具體用法與DD RAM相同。

            1.1 與 的接口信號(hào)

            LCD與的接口信號(hào)[2]有:(1)使能信號(hào)LCD_E;(2)寄存器選擇信號(hào)LCD_RS;(3)讀/寫(xiě)控制信號(hào)LCD_RW;(4)4根LCD數(shù)據(jù)線與StrataFlash數(shù)據(jù)線SF_D《11:8》復(fù)用。

            1.2 時(shí)序分析

            SF_D《11:8》的數(shù)據(jù)值,LCD_RS、LCD_RW必須建立并在LCD_E 轉(zhuǎn)向高電平之前至少穩(wěn)定40 ns,LCD_E 保留高電平時(shí)間至少230 ns。在許多應(yīng)用中,LCD_RW恒置低,因?yàn)橐话悴粫?huì)從顯示屏讀取數(shù)據(jù)。

            如圖1所示,數(shù)據(jù)以8位形式傳送,分為高4位和低4位,先傳高4位再傳低4位,其間隔時(shí)間至少1us。一個(gè)8位的寫(xiě)操作在下個(gè)通信之前間隔時(shí)間至少為40 us,而在清屏命令之后該延時(shí)需增至1.64 ms。

            

            圖1 字符型LCD 接口時(shí)序圖

            2 數(shù)據(jù)顯示設(shè)計(jì)

            2.1 流程圖

            如圖2所示,LCD數(shù)據(jù)顯示包括上電初始化、配置顯示屏、寫(xiě)數(shù)據(jù)給顯示屏,在寫(xiě)數(shù)據(jù)之前應(yīng)先設(shè)定初始地址。

            

            圖2 LCD 顯示流程圖

            本開(kāi)發(fā)板晶振為50 MHz。

            具體實(shí)現(xiàn)步驟如下:

            1. 上電初始化

            上電后顯示屏需建立通信協(xié)議即初始化,目的在于建立FPGA與LCD的4位數(shù)據(jù)接口,具體如下:

            (1)等待至少15 ms,即750000個(gè)時(shí)鐘周期。

           ?。?)寫(xiě)SF_D《11:8》=0x3,LCD_E保持高電平12個(gè)時(shí)鐘周期。

            (3)等待至少4.1 ms,即205000個(gè)時(shí)鐘周期。

           ?。?)寫(xiě)SF_D《11:8》=0x3,LCD_E保持高電平12個(gè)時(shí)鐘周期。

            (5)等待至少100 us,即5000個(gè)時(shí)鐘周期。

           ?。?)寫(xiě)SF_D《11:8》=0x3,LCD_E保持高電平12個(gè)時(shí)鐘周期。

            (7)等待至少40 us,即2000個(gè)時(shí)鐘周期。

           ?。?)寫(xiě)SF_D《11:8》=0x2,LCD_E保持高電平12個(gè)時(shí)鐘周期。

            (9)等待至少40 us,即2000個(gè)時(shí)鐘周期。

            2. 顯示屏配置

            根據(jù)字符型LCD的命令設(shè)置而確定發(fā)送數(shù)據(jù)。

            (1)發(fā)功能設(shè)置命令0x28,配置顯示屏。

           ?。?)發(fā)進(jìn)入模式命令0X06,顯示屏設(shè)置為自動(dòng)增地址指針,設(shè)置指針移動(dòng)方向?yàn)橄蜃笄乙?guī)定不移動(dòng)顯示。

           ?。?)發(fā)顯示開(kāi)/斷命令0x0c,將顯示字符的地址存儲(chǔ)在DD RAM中。

            (4)最后發(fā)清屏命令,此后等待時(shí)間至少為1.64 ms。

            3. 寫(xiě)數(shù)據(jù)給顯示屏

            具體步驟如下:

           ?。?)先指定初始地址即發(fā)送一個(gè)設(shè)置DD RAM地址命令給DD RAM中指定的初始7位地址。

           ?。?)再發(fā)送一個(gè)或多個(gè)數(shù)據(jù)值即使用DD RAM命令寫(xiě)數(shù)據(jù)給顯示屏。8位數(shù)據(jù)值通過(guò)查表地址送給CG RAM,CG RAM中存儲(chǔ)的位圖驅(qū)動(dòng)5×8點(diǎn)陣給相應(yīng)的字符。

            如果地址計(jì)數(shù)器配置為自動(dòng)增1,則可依次寫(xiě)多個(gè)字符編碼,每個(gè)字符自動(dòng)存儲(chǔ)并顯示在下個(gè)位置,繼續(xù)寫(xiě)字符直至在第一行的最后停止,而剩余的數(shù)據(jù)不會(huì)自動(dòng)在第二行顯示,因?yàn)镈D RAM的映射從第一行到第二行不連續(xù)。

            2.2 程序設(shè)計(jì)實(shí)現(xiàn)

            按照上面的步驟,先對(duì)LCD上電初始化,再進(jìn)行配置,配置不同顯示效果也不同。

            1. 單個(gè)字符的顯示

            先設(shè)定一個(gè)DD RAM地址命令為初始地址,根據(jù)給定的命令知首地址為“10000000”, 緊接著往CG RAM中寫(xiě)數(shù)據(jù),通過(guò)嚴(yán)格控制時(shí)序關(guān)系達(dá)到單個(gè)字符的顯示。默認(rèn)地址設(shè)置為自動(dòng)遞增,若在初始地址的基礎(chǔ)上遞加,則顯示字符就會(huì)變到相應(yīng)的位置。例如:若首地址設(shè)為“10000001”,則顯示字符就會(huì)出現(xiàn)在第2個(gè)位置。

            2. 字符的滿屏顯示及滿屏移動(dòng)顯示

            在顯示單個(gè)字符的基礎(chǔ)上通過(guò)不停的寫(xiě)數(shù)據(jù)到LCD顯示器中就會(huì)達(dá)到滿屏顯示的效果。

            配置顯示屏?xí)r,第二步設(shè)置模式命令0X06(00000110)時(shí),最低位定義是否移動(dòng)顯示,若將最低位改為1時(shí),則會(huì)出現(xiàn)滿屏左移或右移的現(xiàn)象。

            3. 自定義字符(漢字)的顯示

            ASCII碼表不能滿足需求時(shí)用戶需要自定義,如漢字的顯示。具體步驟如下:

           ?。?)初始化CG RAM地址;

           ?。?)往CG RAM中寫(xiě)入漢字對(duì)應(yīng)的字模信息;

           ?。?)建立好字模后,往DD RAM中寫(xiě)索引值,范圍為(0x00~0x07),則新建的字符就會(huì)顯示出來(lái)。

            

            圖3 自定義字符的顯示

            初始化CG RAM 地址時(shí),指定命令為“01XXXXXX”,低三位代表字模信息的行數(shù),緊接著的三位代表索引到DD RAM中的地址。寫(xiě)字模信息時(shí),數(shù)據(jù)位為“XXX D4D3D2D1D0”,高三位0,1都可以,低五位為字模信息。如圖3 所示,顯示“口”時(shí),需要三行字模信息1C、14、1C,即寫(xiě)入的數(shù)據(jù)應(yīng)為:“00011100”、“00010100”、“00011100”。

            4. 單個(gè)字符在整個(gè)屏幕上的移動(dòng)顯示

            能夠?qū)崿F(xiàn)移動(dòng)顯示的方法有兩種[3]:

            (1)將前一個(gè)位置顯示的字符清除掉,在下個(gè)位置顯示同樣的字符達(dá)到移動(dòng)顯示的效果,這需要使用清屏命令來(lái)實(shí)現(xiàn);

            (2)通過(guò)程序設(shè)計(jì)來(lái)控制:對(duì)前一個(gè)位置顯示的字符進(jìn)行判斷,若顯示的不是空白內(nèi)容,則將顯示空白內(nèi)容的數(shù)據(jù)賦給原來(lái)的顯示字符,這樣原來(lái)顯示字符的位置上就會(huì)出現(xiàn)空白內(nèi)容,再通過(guò)程序判斷當(dāng)前位置的字符,若為空白內(nèi)容則將原來(lái)顯示字符的數(shù)據(jù)賦給它。由于地址設(shè)為自動(dòng)遞增,故在下一個(gè)位置上就會(huì)出現(xiàn)與原來(lái)相同的字符,依次類推,最終結(jié)果就是單個(gè)字符在整個(gè)屏幕上的移動(dòng)顯示。

            第一種方法每次使用清屏命令后,地址返回到初始地址,而寫(xiě)下一個(gè)字符時(shí)必須返回到未使用清屏命令之前的地址,但由于在配置顯示屏?xí)r已經(jīng)將地址設(shè)為自動(dòng)遞增,因此采用這種方法程序控制[4]較復(fù)雜,故采用第二種方法。

            關(guān)鍵程序代碼如下:

            If Dat=“00110001”then ---- “00110001”顯示“1”;

            Dat:=“00100000”; ---“00100000”顯示空白內(nèi)容;

            w_state 《= wr64;

            elsif Dat = “00100000” thenDat := “00110001”;

            w_state 《= wr85;

            end if;

            由于顯示屏上每行只有16 個(gè)字符可以顯示,所以要想達(dá)到在整個(gè)屏幕上移動(dòng)顯示,需要對(duì)地址準(zhǔn)確控制。

            地址控制具體步驟:從第一行的第1個(gè)位置開(kāi)始逐次加1,當(dāng)?shù)降?6個(gè)位置時(shí),將地址加24使其跳到第二行的第1個(gè)位置,緊接著從第二行的第1個(gè)位置開(kāi)始逐次加1直到第16個(gè)位置,當(dāng)?shù)搅说诙械牡?6個(gè)位置時(shí)將地址再返回到初始地址即第一行的第一個(gè)位置。程序代碼如下:

            if cPos 《 “10001111” then --- cPos 為指向地址的變量

            cPos := cPos+1; ---第一行時(shí)逐次加1

            elsif cPos = “10001111”then ----第一行最后1位置跳到第二行第1個(gè)位置

            cPos := “10101000”;

            elsif cPos 《 “10110111”then

            cPos := cPos+1; ---第二行時(shí)逐次加1elsif cPos = “10110111”then -- 返回到初始地址

            cPos := “10000000”;

            end if;

            字符的移動(dòng)顯示需用動(dòng)畫(huà)演示,圖4僅列出四個(gè)特殊位置的顯示效果圖。

            

            圖4 單個(gè)字符的滿屏移動(dòng)顯示圖

            3 結(jié)語(yǔ)

            本設(shè)計(jì)實(shí)現(xiàn)了字符型的多樣化顯示,創(chuàng)新點(diǎn)是:?jiǎn)蝹€(gè)字符的滿屏移動(dòng)顯示沒(méi)有采用傳統(tǒng)的清屏命令而是采用顯示空白內(nèi)容與非空白內(nèi)容的交替賦值來(lái)實(shí)現(xiàn)。由于可以對(duì)該顯示器進(jìn)行多次編程,能方便地應(yīng)用于實(shí)際,滿足現(xiàn)代化的要求。



          關(guān)鍵詞: FPGA LCD 液晶顯示器

          評(píng)論


          相關(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); })();