2011-11-08 30 views
0

我正在使用VHDL進行編程並嘗試配置LCD。我的問題與LCD接口時序和開機啓動所需的時間有關。LCD的配置:發送和發送時機

在做初始化,有例如用戶指南中的某些時間限制,說是這樣的:

  1. 等待15ms的
  2. 寫的0x30和等待240ns
  3. 等待4.1ms 等等等

當我寫入0x30到液晶顯示器時,我應該尊重240ns +的接口時間? (用於設置,啓用高電平,啓用保持,啓用低電平)。

糾正我,如果我錯了,但我認爲是當我在初始化我不關心接口時序。當我發送命令(如功能設置,顯示開/關等)時,我會照顧接口時序。

謝謝。 !

回答

1

向顯示控制器寫入任何內容時,您總是需要尊重接口時序,否則可能發送無效數據。較長的超時時間通常使顯示控制器有時間運行各種軟件例程,這可能阻止它監視接口端口。

所以,是的,當寫入0x30作爲初始化序列的一部分時,您需要重視接口時序。

+0

好的謝謝你明確!但現在我想到另一個問題。對於第2點(在上面的列表中),它說,寫入0x30並等待*** 240ns ***,並且對於接口定時,它表示*** 40ns(設置和E高)+ 230ns(保持)+10ns( E-low)+ 1000ns(在上下級之間)***這是1560ns ...所以這次*(定時接口)*比另一個大*(power-on-init)*這就是混淆我......我應該考慮最大的時間嗎? – BRabbit27

1

新建答案:

在給予 http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdf

值得一提的是,大部分的評論聲稱,接口時序較長,則設置定時數據表下面。這是倒退。設置的時間要長於與LCD對話的時間。

爲了讓我更容易,我打算做一個名爲pulse LCD_E的僞函數調用,每次都可以在頭上替換。

Definition of pulse LCD_E 
    wait a minimum of 40 ns (2 clock cycles at 50 MHz)  
    set LCD_E high 
    wait a minimum of 230 ns (12 clock cycles at 50 MHz) 
    set LCD_E low 
    wait a minium 10 ns before changes (.5 clock cycle) 

爲標準寫入命令中的時序圖要求你

set LCD_RS, LCD_DB(7:4), LCD_RW 

pulse LCD_E 

reset LCD_RS, LCD_DB(7:4), LCD_RW for lower nibble 
wait 1 us 

pulse LCD_E 

wait a minium of 40 us before repeating 

初始化是非常相似的,儘管你有一個初始的等待時間,並且僅寫入4位與之間的較長等待命令。

這樣做對初始化

wait at least 15 ms (750,000 clock cycles at 50 MHz) 

set LCD_DB<7:4> = 0x3 
pulse LCD_E 
wait 4.1 ms or longer, which is 205,000 clock cycles at 50 MHz. 

set LCD_DB<7:4> = 0x3, 
pulse LCD_E 
wait 100 μs or longer, which is 5,000 clock cycles at 50 MHz. 

set LCD_DB<7:4> = 0x3 
pulse LCD_E 
wait 40 μs or longer, which is 2,000 clock cycles at 50 MHz. 

set LCD_DB<7:4> = 0x2 
pulse LCD_E 
wait 40 μs or longer, which is 2,000 clock cycles at 50 MH 

Initialization complete 

如果需要EAK出更快的寫入時間由於某種原因,你可以在更長時間的等待過程中設置的下一個數據輸入和刪除初始等待脈衝LCD_E

爲了保護我的舊回答。從數據表中~~

After power-on, the display must be initialized to establish the required communication 
protocol. The initialization sequence is simple and ideally suited to the highly-efficient 
eight-bit PicoBlaze embedded controller. After initialization, the PicoBlaze controller is 
available for more complex control or computation beyond simply driving the display. 

老答案:

如果這是怎麼回事了FPGA和你有其他的時序約束(如等待時間),你可能會考慮使用該

http://en.wikipedia.org/wiki/PicoBlaze

這是一個8位微控制器的VHDL實現,對於LCD設置,寫入和讀取信息非常有用。芯片組非常簡單,易於拾取。另外你可以編碼你自己的外設:)

它的免費軟件,我想你可以在這裏下載。它帶有自己的IDE和調試器。

http://www.picoblaze.info/tools.html

如果它只是你可能只想做一個小項目的所有編碼自己的延誤。但是,如果它在一個更大的項目中進行,這非常有用,值得學習。我認爲它最大運行時間爲50 MHz,因此如果您使用的是更快的時鐘,則可能需要執行一些數字時鐘管理。

+0

感謝您的回答。事實上,這是一個我正在學習FPGA的小型項目,這個想法是學習基礎知識,然後使用picoBlaze。但是讓我感到困惑的是接口時序時間比那些Power-On-Init時間更大。 – BRabbit27

+0

爲什麼會讓你感到困惑?開機順序只需配置LCD即可準備採集數據。接口時序必須讀取數據,發送有關數據是否已收到的反饋,將數據寫入LCD,將存儲器更新爲屏幕上的內容,增加光標位置等。這是一組非常普遍的可能性,但是其中許多可能是正確的。 –

+0

是的,這一部分是明確的。令我困惑的是時機。當上電初始化有一個步驟,說等待240ns,但在接口時序說40ns(設置高半字節)+ 230ns(啓用高和保持)+ 1000ns(低半字節前等待)+ 40ns設置低半字節)+ 230ns(啓用高電平並保持)...所以***只是***初始化,我應該照顧什麼時候? 240ns或全定時接口aprox 1540ns? – BRabbit27