版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)號(hào):1206024118 姓名:張帥中北大學(xué)課程設(shè)計(jì)說明書 學(xué)生姓名:張帥學(xué) 號(hào):1206024118學(xué) 院: 儀器與電子學(xué)院專 業(yè): 微電子題 目:利用按鍵開關(guān)控制液晶顯示器進(jìn)行十六進(jìn)制數(shù)字顯示指導(dǎo)教師: 焦新泉 趙冬青 2010年 6月 30日目 錄第一章、課程設(shè)計(jì)目的第二章、課程設(shè)計(jì)內(nèi)容及要求2.1、設(shè)計(jì)內(nèi)容2.2、設(shè)計(jì)要求第三章、設(shè)計(jì)方案及實(shí)現(xiàn)情況3.1、設(shè)計(jì)思路3.2、工作原理及框圖3.3、各模塊功能描述及仿真結(jié)果3.4、試驗(yàn)箱驗(yàn)證情況第四章、課程設(shè)計(jì)總結(jié)第五章、參考文獻(xiàn)附錄1:系統(tǒng)整體電路圖 FPGA引腳分配圖 液晶顯示屏說明書第
2、1章 課程設(shè)計(jì)目的1.學(xué)習(xí)操作數(shù)字電路設(shè)計(jì)實(shí)驗(yàn)開發(fā)系統(tǒng),掌握液晶顯示模塊的工作原理及應(yīng)用。2.掌握組合邏輯電路、時(shí)序邏輯電路的設(shè)計(jì)方法。3.學(xué)習(xí)掌握可編程器件設(shè)計(jì)的全過程。第二章 課程設(shè)計(jì)內(nèi)容和要求2.1、設(shè)計(jì)內(nèi)容用VHDL語言編寫程序,實(shí)現(xiàn)利用按鍵開關(guān)控制液晶屏顯示16進(jìn)制數(shù)。2.2、設(shè)計(jì)要求1學(xué)習(xí)掌握按鍵開關(guān)控制模塊、液晶顯示模塊的工作原理及應(yīng)用;2. 熟練掌握VHDL編程語言,編寫按鍵開關(guān)控制模塊的控制邏輯;3. 仿真所編寫的程序,模擬驗(yàn)證所編寫的模塊功能;4. 下載程序到芯片中,硬件驗(yàn)證所設(shè)置的功能,能夠?qū)崿F(xiàn)十六進(jìn)制數(shù)字的顯示;5. 整理設(shè)計(jì)內(nèi)容,編寫設(shè)計(jì)說明書。第三章 設(shè)計(jì)方案及實(shí)現(xiàn)
3、情況3.1、設(shè)計(jì)思路根據(jù)題目設(shè)計(jì)要求,利用單一按鍵控制液晶屏循環(huán)顯示16進(jìn)制數(shù),0F。設(shè)計(jì)將系統(tǒng)分為五個(gè)模塊,延時(shí)模塊,消抖模塊,按鍵輸入模塊,譯碼模塊和液晶屏控制模塊,先分別用quartus編寫每個(gè)模塊并生成頂層文件 ,最后下載到試驗(yàn)箱就可以實(shí)現(xiàn)最后的結(jié)果了。3.2、工作原理及框圖EP3C10E144C8內(nèi)部時(shí)鐘經(jīng)過延時(shí)程序后,信號(hào)由消抖模塊的XD管腳輸入,消抖完成后,又在譯碼模塊中將四位二進(jìn)制代碼翻譯成八位2進(jìn)制的ASCII碼,最后輸入到液晶屏控制模塊中,實(shí)現(xiàn)對(duì)液晶屏的控制。與此同時(shí),每按下一次按鍵,按鍵模塊中的變量就會(huì)+1,當(dāng)加到1111B即F時(shí),自動(dòng)清零,實(shí)現(xiàn)了0-F循環(huán)顯示。流程圖如
4、下:信號(hào)消抖模塊按鍵輸入模塊譯碼模塊 時(shí) 鐘 信 號(hào)LCD液晶控制模塊 系統(tǒng)流程框圖3.3、各模塊功能描述及仿真結(jié)果(1)延時(shí)電路由于FPGA芯片內(nèi)部時(shí)鐘頻率很高,而OCMJ 系列液晶顯示屏的工作頻率一般在100HZ-1KZ左右,因此若果要直接利用芯片內(nèi)部時(shí)鐘,則必須進(jìn)行降頻即分頻處理,否則當(dāng)按鍵輸入信號(hào)時(shí),液晶屏由于工作頻率很高而無法正常顯示字符。程序代碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity yanshi isp
5、ort( clk,rst:in std_logic;clkout:out std_logic);end yanshi;architecture fenpin_behave of yanshi issignal inclk: std_logic_vector(12 downto 0);signal inner: std_logic;beginprocess(clk,rst)beginif rst = '0' theninclk <= "0000000000000"inner <= '0'elsif clk'event and
6、 clk = '1' then-每來一個(gè)上升沿,inclk加一if inclk = "1111111111111" theninner <= not inner;-當(dāng)inclk加滿的時(shí)候,inner取反inclk <= inclk + 1;else inclk <= inclk + 1;end if;end if;end process;clkout <= inner;end fenpin_behave;仿真結(jié)果:如圖仿真結(jié)果,利用功能仿真減少誤差(以下各模塊均使用功能仿真),延時(shí)電路可以把FPGA內(nèi)置10MHZ的時(shí)鐘信號(hào)進(jìn)行大約81
7、920分頻(count=1111111111111)為666HZ左右的信號(hào),因此,此模塊可以吧FPGA內(nèi)部時(shí)鐘信號(hào)分頻到合適的頻率信號(hào)以保證液晶模塊的正常工作。(2)消抖電路加入本模塊的原因是因?yàn)榘存I開關(guān)在按下時(shí)信號(hào)會(huì)產(chǎn)生抖動(dòng),在硬件實(shí)現(xiàn)是可能出現(xiàn)按一下跳過很多個(gè)數(shù)的情況,對(duì)程序的輸入會(huì)產(chǎn)生影響,因此加入模塊后消除抖動(dòng)。程序代碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity xiaodou is port( rst:in s
8、td_logic; anjian: in std_logic; clk: in std_logic; anjianout: out std_logic );end xiaodou;architecture a of xiaodou is signal count:integer range 0 to 100; begin process(clk,rst,anjian)begin if(rst='0')then count<=0; anjianout<='0' elsif(clk'event and clk='1')then i
9、f(count=100)then count<=0; anjianout<=not anjian; else count<=count+1; end if; end if; end process;end a;仿真結(jié)果:如圖所示消抖模塊方仿真結(jié)果,由仿真圖可以看出,當(dāng)按鍵時(shí)間小于30ms時(shí),按鍵輸出不產(chǎn)生信號(hào),因此可以避免鍵盤抖動(dòng)產(chǎn)生的誤操作,很好的實(shí)現(xiàn)了鍵盤消抖功能。(3) 計(jì)數(shù)電路該模塊的作用是將按鍵key輸入進(jìn)來的信號(hào)進(jìn)行處理,每按一次,數(shù)自動(dòng)+1,直到count為1111時(shí)自動(dòng)循環(huán),將按鍵的數(shù)值通過keyout發(fā)送給譯碼模塊。程序代碼:library ieee;use
10、 ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jishu isport( key:in std_logic; rst:in std_logic; keyout:out std_logic_vector(3 downto 0) );end jishu;architecture keywork of jishu issignal q: std_logic;signal counter : std_logic_vector(3 downto 0);begin q
11、<=key when rst='1'else '0' process(q,rst) begin if(rst='0')then counter<="0000" elsif q'event and q='1' then if counter="1111" then counter<="0000" else counter<=counter+1; end if; end if; keyout<=counter; end process;
12、end keywork;仿真結(jié)果:如圖仿真結(jié)果,按鍵模塊將按鍵次數(shù)裝換成四位二進(jìn)制數(shù)發(fā)送給下一個(gè)模塊,以實(shí)現(xiàn)十六數(shù)字的循環(huán)顯示。(4)譯碼電路該模塊的作用是將數(shù)字的ASCII碼編譯成8位2進(jìn)制ASCII碼送給液晶屏控制程序,當(dāng)顯示到 F時(shí)置0。程序代碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity yima is port(B:in std_logic_vector(3 downto 0); X:out std_logic_vector(7 downto 0);end yima;a
13、rchitecture B1 of yima issignal c:std_logic_vector(3 downto 0);begin c<=B;X<="00110000" when ( c="0000" ) else "00110001" when ( c="0001" ) else "00110010" when ( c="0010" ) else "00110011" when ( c="0011" ) else &
14、quot;00110100" when ( c="0100" ) else "00110101" when ( c="0101" ) else "00110110" when ( c="0110" ) else "00110111" when ( c="0111" ) else "00111000" when ( c="1000" ) else "00111001" when ( c=&
15、quot;1001" ) else "01000001" when ( c="1010" ) else "01000010" when ( c="1011" ) else "01000011" when ( c="1100" ) else "01000100" when ( c="1101" ) else "01000101" when ( c="1110" ) else "0
16、1000110" when ( c="1111" ) else "00110000"end B1;仿真結(jié)果:如圖所示四位二進(jìn)制代碼0-F經(jīng)過譯碼后變?yōu)榘宋欢M(jìn)制代碼,然后輸出給下一個(gè)模塊即顯示模塊。(5)液晶屏顯示電路本模塊用狀態(tài)機(jī)的方法實(shí)現(xiàn),每次按鍵按下,顯示模塊接收到要顯示的8位二進(jìn)制ASCII碼時(shí),模塊將液晶屏模式選擇代碼F9,橫坐標(biāo)07,縱坐標(biāo)03分三次輸入到液晶屏中,然后再將要顯示的數(shù)的ASCII碼的8位2進(jìn)制碼輸入到液晶屏進(jìn)行顯示。其中液晶屏橫縱坐標(biāo),以及BUSY和REQ信號(hào)的控制將在附錄中給出,此處不再贅述。程序代碼:LIBRAR
17、Y IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY xianshi ISPORT(busy:inSTD_LOGIC;clk1 :inSTD_LOGIC;db_ascii:inSTD_LOGIC_VECTOR(7 DOWNTO 0);req:outSTD_LOGIC;db:outSTD_LOGIC_VECTOR(7 DOWNTO 0);END xianshi;ARCHITECTURE XS OF xianshi ISSIGNALready:ST
18、D_LOGIC;TYPEstate IS (CMD_SEND,XX_SEND,YY_SEND,ASCII_SEND); SIGNAL current_state:state;-SIGNAL db_send: std_logic_vector(7 downto 0);BEGINPROCESS(clk1,busy,ready,db_ascii) variable cnt1: std_logic_vector(2 downto 0); BEGIN -db_send<=db_ascii;IF rising_edge(clk1) THENCASE current_state ISWHEN CMD_
19、SEND =>IF busy='0' THENIF ready='1' THEN current_state <= XX_SEND;ready <= '0'ELSEdb <= "11111001"req <= '1'ready <= '0'END IF;ELSEreq <= '0'ready <= '1'current_state <= CMD_SEND;END IF;WHEN XX_SEND =>IF
20、busy='0' THENIF ready='1' THENcurrent_state <= YY_SEND;ready <= '0'ELSEdb <= "00000111"req <= '1'ready <= '0'END IF;ELSEreq <= '0'ready <= '1'current_state <= XX_SEND;END IF;WHEN YY_SEND =>IF busy='0'
21、; THENIF ready='1' THENcurrent_state <= ASCII_SEND;ready <= '0'ELSEdb <= "00000011"req <= '1'ready <= '0'END IF;ELSEreq <= '0'ready <='1'current_state <= YY_SEND;END IF;WHEN ASCII_SEND =>IF busy='0' THENIF r
22、eady='1' THENcurrent_state <= CMD_SEND;ready <= '0'ELSE db <=db_ascii; req <= '1'ready <= '0' END IF;ELSEreq <= '0'ready <= '1'current_state <= ASCII_SEND;END IF;END CASE;END IF;END PROCESS;END XS;仿真結(jié)果:此仿真結(jié)果需要用到譯碼電路的8位二進(jìn)制ASCII碼,
23、因此使用總體仿真結(jié)果替代之,同時(shí)也可以驗(yàn)證總體仿真結(jié)果。 由仿真結(jié)果可以看出,液晶模塊最后根據(jù)按鍵輸入一次輸出F9 07 03 31,F(xiàn)9 07 03 32,F(xiàn)9 07 03 33.以此類推,最后成功的把要顯示的字符輸出給液晶模塊,實(shí)現(xiàn)了利用按鍵控制液晶屏顯示十六進(jìn)制數(shù)。利用protues仿真結(jié)果初步驗(yàn)證了各模塊和整體電路的系統(tǒng)功能,最后通過USB下載到試驗(yàn)箱中,利用硬件驗(yàn)證系統(tǒng)的整體功能,由下圖可以看出,本實(shí)驗(yàn)設(shè)計(jì)的系統(tǒng)功能是完整可靠的,可以很好的完成實(shí)驗(yàn)要求。3.4、試驗(yàn)箱驗(yàn)證情況第四章 課程設(shè)計(jì)總結(jié) 通過本次課程設(shè)計(jì)我學(xué)到了很多東西,以前雖然也做過不少VHDL程序的設(shè)計(jì),但都是在已經(jīng)有寫
24、好的程序的情況下。這次從設(shè)計(jì)到實(shí)現(xiàn)都獨(dú)立完成還是第一次,自己親身試過之后才會(huì)發(fā)現(xiàn),軟件上做出來的正確結(jié)果和硬件的實(shí)現(xiàn)有著巨大的差距。編譯好的程序在硬件實(shí)現(xiàn)時(shí)還有很多的因素要考慮,要處理。比如,消抖程序中的count值的設(shè)定,有的同學(xué)count=50就足夠了,而有的在設(shè)定為50時(shí)抖動(dòng)的相當(dāng)厲害,這都需要在硬件實(shí)現(xiàn)時(shí)再進(jìn)行調(diào)試,有時(shí)候甚至整個(gè)程序都要重新編寫。這次課程設(shè)計(jì)我收獲了很多學(xué)到了很多。今后會(huì)更加珍惜課程設(shè)計(jì)的機(jī)會(huì),努力讓自己學(xué)到更多的知識(shí)。第五章 參考文獻(xiàn)1侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì). 西安:西安電子科技大學(xué)出版社,19992求是科技.CPLD/FPGA應(yīng)用開發(fā)
25、技術(shù)與工程實(shí)踐. 北京:人民郵電出版社,20053羅苑棠.CPLD/FPGA常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講. 北京:電子工業(yè)出版社,20074任勇峰,莊新敏.VHDL與硬件實(shí)現(xiàn)速成.北京:國(guó)防工業(yè)出版社,2005附錄1:系統(tǒng)整體電路圖附錄2:FPGA引腳分配圖EP3C10E144C8芯片作為主芯片,以下為具體I/O分配表:附錄3:液晶顯示屏說明書OCMJ2X8(128X32)引腳說明引腳名稱方向說明引腳名稱方向說明1VLED+I背光源正極(LED+5V)8DB1I數(shù)據(jù)12VLED-I背光源負(fù)極(LED-OV)9DB2I數(shù)據(jù)23VSSI地10DB3I數(shù)據(jù)34VDDI(+5V)11DB4I數(shù)據(jù)45
26、REQI請(qǐng)求信號(hào),高電平有效12DB5I數(shù)據(jù)56BUSYO應(yīng)答信號(hào)=1:已收到數(shù)據(jù)并正在處理中=0:模塊空閑,可接收數(shù)據(jù)13DB6I數(shù)據(jù)67DB0I數(shù)據(jù)014DB7I數(shù)據(jù)7硬件接口協(xié)議 接口協(xié)議為 請(qǐng)求/應(yīng)答(REQ/BUSY) 握手方式。應(yīng)答B(yǎng)USY 高電平(BUSY =1) 表示 OCMJ 忙于內(nèi)部處理,不能接收用戶命令;BUSY 低電平(BUSY =0)表示 OCMJ 空閑,等待接收用戶命令。發(fā)送命令到 OCMJ可在BUSY =0 后的任意時(shí)刻開始,先把用戶命令的當(dāng)前字節(jié)放到數(shù)據(jù)線上,接著發(fā)高電平REQ 信號(hào)(REQ =1)通知OCMJ請(qǐng)求處理當(dāng)前數(shù)據(jù)線上的命令或數(shù)據(jù)。OCMJ模塊在收到
27、外部的REQ高電平信號(hào)后立即讀取數(shù)據(jù)線上的命令或數(shù)據(jù),同時(shí)將應(yīng)答線BUSY變?yōu)楦唠娖剑砻髂K已收到數(shù)據(jù)并正在忙于對(duì)此數(shù)據(jù)的內(nèi)部處理,此時(shí),用戶對(duì)模塊的寫操作已經(jīng)完成,用戶可以撤消數(shù)據(jù)線上的信號(hào)并可作模塊顯示以外的其他工作,也可不斷地查詢應(yīng)答線BUSY是否為低(BUSY =0?),如果BUSY =0,表明模塊對(duì)用戶的寫操作已經(jīng)執(zhí)行完畢??梢栽偎拖乱粋€(gè)數(shù)據(jù)。如向模塊發(fā)出一個(gè)完整的顯示漢字的命令,包括坐標(biāo)及漢字代碼在內(nèi)共需5個(gè)字節(jié),模塊在接收到最后一個(gè)字節(jié)后才開始執(zhí)行整個(gè)命令的內(nèi)部操作,因此,最后一個(gè)字節(jié)的應(yīng)答B(yǎng)USY 高電平(BUSY =1)持續(xù)時(shí)間較長(zhǎng)。電性能參數(shù)模塊時(shí)間參數(shù)表編號(hào)名稱單位值說 明最小值最大值1TruS0.4-數(shù)據(jù)線上數(shù)據(jù)穩(wěn)定時(shí)間2TbuS220最大模塊響應(yīng)時(shí)間3TrtuS11-最小REQ保持時(shí)間4Ts1uS2045最大數(shù)據(jù)接收時(shí)間5Ts2mS-0.130*最大命令指令處理時(shí)間*:不同命令所占用的時(shí)間各不相同,具體時(shí)間在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024的賓館承包經(jīng)營(yíng)合同范本
- 新課標(biāo)高中英語語法系統(tǒng)全解虛擬語氣
- 教育讀書心得體會(huì)(15篇)
- 支教活動(dòng)的策劃書
- 我新學(xué)期的學(xué)習(xí)計(jì)劃范文合集五篇
- 學(xué)生會(huì)部門干部競(jìng)選演講稿
- 游泳安全協(xié)議書
- 工程監(jiān)理個(gè)人工作總結(jié)
- 感恩節(jié)旗下演講稿五篇
- 新學(xué)期學(xué)習(xí)計(jì)劃合集七篇
- 2024年2024年離婚協(xié)議書模板
- 2024年柔性直流輸電系統(tǒng)寬頻振蕩分析與控制報(bào)告-華北電力大學(xué)(劉崇茹)
- 應(yīng)急第一響應(yīng)人理論考試試卷(含答案)
- MOOC 跨文化交際通識(shí)通論-揚(yáng)州大學(xué) 中國(guó)大學(xué)慕課答案
- EDA實(shí)驗(yàn)報(bào)告1組合邏輯電路的設(shè)計(jì)
- 《運(yùn)動(dòng)生理學(xué)》教案
- 陳春花管理學(xué)著作精華解讀之《管理的常識(shí)》
- 鉆孔灌注樁試樁施工方案
- 外貿(mào)銷售合同
- 混凝土地面施工方案
- 2020學(xué)校食堂自查自糾報(bào)告3篇
評(píng)論
0/150
提交評(píng)論