【正文】
ar_to_integer (39。h39。),8)。) then case address is when 000000 =data=conv_std_logic_vector (char_to_integer (39。event and clk2=39。其中對(duì)沒(méi)有在模塊中定義的地址,一致輸出“ ”所對(duì)應(yīng)的數(shù)據(jù),即16*8的空白。end function。 end case。 = result := 165A。 when 39。Y39。 = result := 1658。... when 39。d39。 = result := 1663。 when 39。b39。 = result := 1661。 when 39。:39。 = result := 162E。 when 39。 39。函數(shù)程序如下function char_to_integer(indata : character) return integer isvariable result : integer range 0 to 16FF。如下程序所示,若想改變顯示的內(nèi)容只需要改變進(jìn)程中每一行末尾char_to_integer函數(shù)括號(hào)中的內(nèi)容即可。相應(yīng)的RAM返回給顯示控制模塊所對(duì)應(yīng)的數(shù)據(jù)。設(shè)計(jì)采用訪問(wèn)RAM的方式對(duì)英文字符進(jìn)行調(diào)用。exinstruction_on amp。exinstruction_on amp。exinstruction_off amp。 exinstruction_onamp。039。datawidth8 amp。 exinstruction_onamp。039。datawidth8 amp。 exinstruction_offamp。039。datawidth8 amp。when DRAWFUNR= 在使用寫入數(shù)據(jù)命令前,必須轉(zhuǎn)會(huì)常規(guī)指令集 state=CLEARRAM。when DRAWFUNOFF= 關(guān)閉顯示 state=SETGDRAM。state=DRAWFUNON。 then 這個(gè)選擇結(jié)構(gòu)用于選擇打開(kāi)或者關(guān)閉顯示,state=DRAWFUNOFF。when SETFUNCTION2= 啟用特殊指令集if flag_p=39。因此,其狀態(tài)機(jī)設(shè)計(jì)與字符顯示不同的部分如下:…when SHIFT= 游標(biāo)和顯示移位,這一部和字符顯示部分一樣state=SETFUNCTION1。00 when state = SETFUNCTION else 10000000 when state = SETDDRAM else…… 圖片顯示前初始化模塊的設(shè)計(jì)圖片顯示初始化的狀態(tài)機(jī)設(shè)計(jì)圖片顯示時(shí)需要用到擴(kuò)充指令集。 amp。 39。blank_cur when state = SWITCHMODE else 00010100 when state = SHIFT else 001amp。open_displayamp。139。039。 when state = WRITERAM or state = READRAM else 39。rs=39。初始數(shù)據(jù)的賦值:psb=39。其中,為了選擇并行的數(shù)據(jù)發(fā)送模式,PSB引腳應(yīng)為H?!? 其中,由于時(shí)鐘信號(hào)的周期約為80us,因此在這兩個(gè)狀態(tài)中加入了計(jì)數(shù)器用以延遲,延遲時(shí)間為時(shí)鐘周期的64倍。 when SETFUNCTION= 功能設(shè)置state=SETDDRAM1。when SWITCHMODE= 顯示狀態(tài)開(kāi)state=SHIFT。state=SETMODEend if。 鐘時(shí)間state=RETURNCURSOR。end if。 一個(gè)0到64的計(jì)數(shù)器對(duì)其進(jìn)行延遲處理elsediv_counter2 =0。when CLEAR= 清屏狀態(tài),使LCD屏幕上顯示全白if div_counter2 DIVSS2 then DIVSS2為64,由于清屏狀態(tài)所需要的執(zhí)div_counter2 = div_counter2+1。elsestate=IDLE。flag=39。039。 mydff2 : DFF port map (d=sig2,clk=sig3, q=enable)。 out_clk= sig2。begin sig1= not sig2。end ponent。 clk: in std_logic。在分頻之后由于時(shí)鐘信號(hào)需要同時(shí)控制LCD模塊以及FPGA的模塊,因此需要編寫一個(gè)程序,使得兩者之間同步。 時(shí)鐘電路的設(shè)計(jì):由于FPGA開(kāi)發(fā)板上自帶的晶振頻率為50MHZ,因此需要一個(gè)分頻器對(duì)其進(jìn)行分頻。當(dāng)數(shù)據(jù)全部寫入完畢,則可以通過(guò)再次使用特殊指令集,開(kāi)啟圖像顯示,將GDRAM中的數(shù)據(jù)顯示在屏幕上。而同時(shí),在對(duì)GDRAM的地址以及內(nèi)容進(jìn)行操作時(shí),必須保持繪圖顯示的關(guān)閉狀態(tài),因此在初始化時(shí),需要將繪圖顯示關(guān)閉。其中,字符顯示模塊的初始化流程圖如圖41所示:圖41字符初始化流程圖其中直至寫數(shù)據(jù)這一步驟之前都為起始的初始化動(dòng)作。 初始化模塊設(shè)計(jì) LCD模塊初始化設(shè)計(jì)對(duì)1286412模塊的初始化采用狀態(tài)機(jī)的方式,通過(guò)資料中給出的1286412模塊的說(shuō)明,選擇所需要的初始化命令,結(jié)合特定的時(shí)鐘頻率,對(duì)LCD進(jìn)行初始化。之后介紹了本設(shè)計(jì)中最關(guān)鍵的顯示控制模塊,并列舉了詳細(xì)的設(shè)計(jì)方法。天津工業(yè)大學(xué)本科畢業(yè)論文 第四章 第四章 系統(tǒng)軟件設(shè)計(jì)本章首先對(duì)該系統(tǒng)的各個(gè)模塊的設(shè)計(jì)思路進(jìn)行描述,并給出框圖。該模塊自帶字庫(kù)。其中的數(shù)據(jù)分別來(lái)自中英文字符模塊,動(dòng)態(tài)數(shù)據(jù)模塊,以及圖像數(shù)據(jù)模塊。之后通過(guò)顯示控制模塊對(duì)LCD進(jìn)行顯示的控制。也可配合EDA實(shí)驗(yàn)主板進(jìn)行可編程邏輯器件的入門學(xué)習(xí)用。方便用戶開(kāi)發(fā)自己的產(chǎn)品,最大限度的為用戶節(jié)約學(xué)習(xí)成本和加快學(xué)習(xí)的速度。核心板簡(jiǎn)單實(shí)用、擴(kuò)展性好,尤其適合前期用戶開(kāi)發(fā)驗(yàn)證用?;咎匦?l 低電源電壓(VDD:++)l 顯示分辨率:12864點(diǎn)l 內(nèi)置漢字字庫(kù),提供8192個(gè)1616點(diǎn)陣漢字(簡(jiǎn)繁體可選)l 內(nèi)置128個(gè)168點(diǎn)陣字符l 2MHZ時(shí)鐘頻率l 顯示方式:STN、半透、正顯l 驅(qū)動(dòng)方式:1/32DUTY,1/5BIASl 視角方向:6點(diǎn)l 背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10l 通訊方式:串行、并口可選l 內(nèi)置DCDC轉(zhuǎn)換電路,無(wú)需外加負(fù)壓l 無(wú)需片選信號(hào),簡(jiǎn)化軟件設(shè)計(jì)l 工作溫度:0℃+55℃,存儲(chǔ)溫度:20℃+60℃外觀尺寸圖:FYD128640402B點(diǎn)陣圖形液晶顯示模塊外觀尺寸如圖22所示:圖22 FYD128640402B點(diǎn)陣圖形液晶顯示模塊外觀尺寸圖模塊接口說(shuō)明:串行接口管腳信號(hào),如表21所示:表21串行接口管腳信號(hào)說(shuō)明并行接口,如表22所示:表22并行接口說(shuō)明 FPGA選用XC2S50系列開(kāi)發(fā)板是針對(duì)FPGA的初、中級(jí)學(xué)習(xí)者設(shè)計(jì),幫助用戶降低學(xué)習(xí)成本和加快用戶快速進(jìn)入可編程邏輯器件設(shè)計(jì)開(kāi)發(fā)領(lǐng)域,提供一個(gè)幫助用戶快速開(kāi)始可編程邏輯器件學(xué)習(xí)之旅的硬件平臺(tái)。低電壓低功耗是其又一顯著特點(diǎn)。利用該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。對(duì)此模塊的設(shè)計(jì),主體結(jié)構(gòu)以狀態(tài)機(jī)來(lái)實(shí)現(xiàn)。顯示控制模塊主要負(fù)責(zé)在LCD顯示多行字符時(shí)進(jìn)行換行操作,在用戶指定數(shù)據(jù)在屏幕的指定顯示位置時(shí)設(shè)置該位置所對(duì)應(yīng)的RAM的值,以及在圖像顯示時(shí)進(jìn)行的ROM地址重映射算法,和對(duì)LCD顯示區(qū)對(duì)應(yīng)RAM進(jìn)行的寫入操作。 系統(tǒng)總體設(shè)計(jì)框圖系統(tǒng)設(shè)計(jì)總體框圖如圖21所示,在系統(tǒng)上電后,F(xiàn)PGA將首先對(duì)系統(tǒng)進(jìn)行初始化操作,在初始化操作中最重要的是寄存器的復(fù)位,顯示開(kāi)關(guān)的控制,功能設(shè)置以及對(duì)顯示屏幕進(jìn)行清屏。課題研究預(yù)期技術(shù)目標(biāo):中文及英文字符在LCD上的正常顯示;圖像數(shù)據(jù)在LCD上的正常顯示;輸入變動(dòng)的數(shù)據(jù)能在LCD上的同步刷新顯示;天津工業(yè)大學(xué)本科畢業(yè)論文 第二章 第二章 系統(tǒng)總體設(shè)計(jì) 系統(tǒng)設(shè)計(jì)要求根據(jù)本系統(tǒng)設(shè)計(jì)要求,使用VHDL語(yǔ)言,利用Altera提供的FPGA/CPLD開(kāi)發(fā)集成環(huán)境QuartusⅡ調(diào)試開(kāi)發(fā)。課題研究預(yù)期理論目標(biāo):掌握FPGA對(duì)LCD的控制方法,為課題研究做好理論準(zhǔn)備;通過(guò)FPGA對(duì)LCD的控制,使得任何開(kāi)發(fā)者都可以較為容易地通過(guò)此顯示控制模塊,在液晶上顯示所需的內(nèi)容。同時(shí)LCD屏幕上的點(diǎn)陣也被拆分為上下兩個(gè)半屏,分別對(duì)應(yīng)Y地址的08和915這導(dǎo)致了取模后的圖形所對(duì)應(yīng)的數(shù)組,如若按普通方法則不能正常顯示。并利用QUARTUS II 實(shí)現(xiàn)相關(guān)模塊的設(shè)計(jì),在FPGA上實(shí)現(xiàn)對(duì)LCD的控制,顯示任意中文,英文和圖像。 課題的主要研究?jī)?nèi)容和重點(diǎn)、難點(diǎn)本課題的主要內(nèi)容是基于FPGA的LCD控制器的設(shè)計(jì)研究,并兼顧程序的易用性以方便以后模塊的移植。數(shù)碼相框和便攜DVD播放器等其它應(yīng)用每年需要的顯示屏越來(lái)越多。有源矩陣LCD供應(yīng)商正在緊盯這個(gè)市場(chǎng),以防止AMOLED供應(yīng)商染指。推動(dòng)顯示屏單位出貨量增長(zhǎng)的