a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 光電顯示 > 設計應用 > FPGA的LCD液晶顯示器設計

FPGA的LCD液晶顯示器設計

作者: 時間:2017-10-20 來源:網絡 收藏

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

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

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

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

  1 Sitronix ST7066U 圖形控制器

  該控制器有三個內部存儲空間,DD RAM、CGROM、CG RAM,送數據之前應先初始化。

  (1)DD RAM(顯示數據RAM)

  存儲字符編碼,從物理上講DD RAM共有80個字符位置,每行有40個字符,但只有16個可被顯示,剩余的24個不被顯示。在讀或寫之前,需初始化地址計數器,地址計數器在讀或寫之后可保持常數或者自動增1或減1。

  (2)CG ROM(字符產生器ROM)

  包含每個事先定好的字符的字體位圖。

  (3)CG RAM(字符產生器RAM)

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

  1.1 與 的接口信號

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

  1.2 時序分析

  SF_D《11:8》的數據值,LCD_RS、LCD_RW必須建立并在LCD_E 轉向高電平之前至少穩定40 ns,LCD_E 保留高電平時間至少230 ns。在許多應用中,LCD_RW恒置低,因為一般不會從顯示屏讀取數據。

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

  

  圖1 字符型LCD 接口時序圖

  2 數據顯示設計

  2.1 流程圖

  如圖2所示,LCD數據顯示包括上電初始化、配置顯示屏、寫數據給顯示屏,在寫數據之前應先設定初始地址。

  

  圖2 LCD 顯示流程圖

  本開發板晶振為50 MHz。

  具體實現步驟如下:

  1. 上電初始化

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

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

  (2)寫SF_D《11:8》=0x3,LCD_E保持高電平12個時鐘周期。

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

  (4)寫SF_D《11:8》=0x3,LCD_E保持高電平12個時鐘周期。

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

  (6)寫SF_D《11:8》=0x3,LCD_E保持高電平12個時鐘周期。

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

  (8)寫SF_D《11:8》=0x2,LCD_E保持高電平12個時鐘周期。

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

  2. 顯示屏配置

  根據字符型LCD的命令設置而確定發送數據。

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

  (2)發進入模式命令0X06,顯示屏設置為自動增地址指針,設置指針移動方向為向左且規定不移動顯示。

  (3)發顯示開/斷命令0x0c,將顯示字符的地址存儲在DD RAM中。

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

  3. 寫數據給顯示屏

  具體步驟如下:

  (1)先指定初始地址即發送一個設置DD RAM地址命令給DD RAM中指定的初始7位地址。

  (2)再發送一個或多個數據值即使用DD RAM命令寫數據給顯示屏。8位數據值通過查表地址送給CG RAM,CG RAM中存儲的位圖驅動5×8點陣給相應的字符。

  如果地址計數器配置為自動增1,則可依次寫多個字符編碼,每個字符自動存儲并顯示在下個位置,繼續寫字符直至在第一行的最后停止,而剩余的數據不會自動在第二行顯示,因為DD RAM的映射從第一行到第二行不連續。

  2.2 程序設計實現

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

  1. 單個字符的顯示

  先設定一個DD RAM地址命令為初始地址,根據給定的命令知首地址為“10000000”, 緊接著往CG RAM中寫數據,通過嚴格控制時序關系達到單個字符的顯示。默認地址設置為自動遞增,若在初始地址的基礎上遞加,則顯示字符就會變到相應的位置。例如:若首地址設為“10000001”,則顯示字符就會出現在第2個位置。

  2. 字符的滿屏顯示及滿屏移動顯示

  在顯示單個字符的基礎上通過不停的寫數據到LCD顯示器中就會達到滿屏顯示的效果。

  配置顯示屏時,第二步設置模式命令0X06(00000110)時,最低位定義是否移動顯示,若將最低位改為1時,則會出現滿屏左移或右移的現象。

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

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

  (1)初始化CG RAM地址;

  (2)往CG RAM中寫入漢字對應的字模信息;

  (3)建立好字模后,往DD RAM中寫索引值,范圍為(0x00~0x07),則新建的字符就會顯示出來。

  

  圖3 自定義字符的顯示

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

  4. 單個字符在整個屏幕上的移動顯示

  能夠實現移動顯示的方法有兩種[3]:

  (1)將前一個位置顯示的字符清除掉,在下個位置顯示同樣的字符達到移動顯示的效果,這需要使用清屏命令來實現;

  (2)通過程序設計來控制:對前一個位置顯示的字符進行判斷,若顯示的不是空白內容,則將顯示空白內容的數據賦給原來的顯示字符,這樣原來顯示字符的位置上就會出現空白內容,再通過程序判斷當前位置的字符,若為空白內容則將原來顯示字符的數據賦給它。由于地址設為自動遞增,故在下一個位置上就會出現與原來相同的字符,依次類推,最終結果就是單個字符在整個屏幕上的移動顯示。

  第一種方法每次使用清屏命令后,地址返回到初始地址,而寫下一個字符時必須返回到未使用清屏命令之前的地址,但由于在配置顯示屏時已經將地址設為自動遞增,因此采用這種方法程序控制[4]較復雜,故采用第二種方法。

  關鍵程序代碼如下:

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

  Dat:=“00100000”; ---“00100000”顯示空白內容;

  w_state 《= wr64;

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

  w_state 《= wr85;

  end if;

  由于顯示屏上每行只有16 個字符可以顯示,所以要想達到在整個屏幕上移動顯示,需要對地址準確控制。

  地址控制具體步驟:從第一行的第1個位置開始逐次加1,當到第16個位置時,將地址加24使其跳到第二行的第1個位置,緊接著從第二行的第1個位置開始逐次加1直到第16個位置,當到了第二行的第16個位置時將地址再返回到初始地址即第一行的第一個位置。程序代碼如下:

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

  cPos := cPos+1; ---第一行時逐次加1

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

  cPos := “10101000”;

  elsif cPos 《 “10110111”then

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

  cPos := “10000000”;

  end if;

  字符的移動顯示需用動畫演示,圖4僅列出四個特殊位置的顯示效果圖。

  

  圖4 單個字符的滿屏移動顯示圖

  3 結語

  本設計實現了字符型的多樣化顯示,創新點是:單個字符的滿屏移動顯示沒有采用傳統的清屏命令而是采用顯示空白內容與非空白內容的交替賦值來實現。由于可以對該顯示器進行多次編程,能方便地應用于實際,滿足現代化的要求。



關鍵詞: FPGA LCD 液晶顯示器

評論


相關推薦

技術專區

關閉