利用鍵盤控制液晶顯示器_第1頁
利用鍵盤控制液晶顯示器_第2頁
利用鍵盤控制液晶顯示器_第3頁
利用鍵盤控制液晶顯示器_第4頁
利用鍵盤控制液晶顯示器_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、中北大學(xué)課程設(shè)計(jì)說明書學(xué)生姓名:毛雪嬌 學(xué) 號: 0706024101學(xué)院:電子與計(jì)算機(jī)科學(xué)技術(shù)學(xué)院專業(yè):微電子學(xué)題目: 利用鍵盤控制液晶顯示器進(jìn)行漢字顯示指導(dǎo)教師:王紅亮 職稱: 講師2010年6月25日1 .課程設(shè)計(jì)目的 22 .課程設(shè)計(jì)內(nèi)容和要求 22.1、 設(shè)計(jì)內(nèi)容 22.2、 設(shè)計(jì)要求 23、設(shè)計(jì)方案及實(shí)現(xiàn)情況 23.1、 設(shè)計(jì)思路 23.2、 工作原理及框圖 33.3、 各模塊功能描述 63.4、 仿真結(jié)果 143.5、 實(shí)驗(yàn)箱驗(yàn)證情況 144、課程設(shè)計(jì)總結(jié) 155、參考文獻(xiàn) 16-7 -1、課程設(shè)計(jì)目的(1)學(xué)習(xí)操作數(shù)字電路設(shè)計(jì)實(shí)驗(yàn)開發(fā)系統(tǒng),掌握液晶顯示器的工作原理及應(yīng)用。(2)

2、掌握組合邏輯電路、時(shí)序邏輯電路的設(shè)計(jì)方法。(3)學(xué)習(xí)掌握可編程器件設(shè)計(jì)的全過程。2、課程設(shè)計(jì)內(nèi)容和要求2.1、 設(shè)計(jì)內(nèi)容利用vhdls言進(jìn)行編程,使鍵盤控制液晶顯示器進(jìn)行漢字的顯示。2.2、 設(shè)計(jì)要求1 .學(xué)習(xí)掌握鍵盤控制模塊、液晶顯示模塊的工作原理及應(yīng)用;2 .熟練掌握vhd編程語言,編寫鍵盤控制模塊的控制邏輯;3 .仿真所編寫的程序,模擬驗(yàn)證所編寫的模塊功能;4 .下載程序到芯片中,硬件驗(yàn)證所設(shè)置的功能,能夠?qū)崿F(xiàn)漢字顯示;5 .整理設(shè)計(jì)內(nèi)容,編寫設(shè)計(jì)說明書。3、設(shè)計(jì)方案及實(shí)現(xiàn)情況3.1、 設(shè)計(jì)思路利用process進(jìn)程語句進(jìn)行不同功能的實(shí)現(xiàn),主要有分頻,消抖,鍵盤掃描,鍵盤譯碼, 數(shù)據(jù)存儲

3、模塊,控制液晶顯示器,主要是鍵盤模塊和液晶模塊,鍵盤主要是掃描信號,當(dāng)其 掃描到一個(gè)信號時(shí),向液晶顯示器發(fā)出一個(gè)該信號對應(yīng)的地址信號,液晶顯示器接收到該地 址信號后,輸出相應(yīng)的數(shù)據(jù),該數(shù)據(jù)為用戶要其顯示的漢字的區(qū)位碼。當(dāng)按鍵分別為“1”、“2”、“3”、“4”、“5”、“6”時(shí),液晶顯示器顯示的漢字分別為“中”、“北”、“大”、“學(xué)”、 “春”、“天”。3.2、 工作原理及框圖1 .矩陣式鍵盤矩陣式鍵盤又叫行列式鍵盤,是用i/o 口線組成的行、列矩陣結(jié)構(gòu),在每根行線與列線 的交叉處,二線不直接相通而是通過一個(gè)按鍵跨接接通。采用這種矩陣結(jié)構(gòu)只需m根行輸出線和n根列輸入線,就可連接mx n個(gè)按鍵。

4、通過鍵盤掃描程序的行輸出與列輸入就可確認(rèn)按 鍵的狀態(tài),再通過鍵盤處理程序便可識別鍵值。鍵盤掃描電路,鍵盤掃描電路是用來提供鍵盤掃描信號的電路,掃描信號的變化順序依次為 000-001-010-011-100-101-110-111依次的周而復(fù)始,掃描時(shí)依次分別掃描八列按鍵, 當(dāng) 掃描信號周而復(fù)始,掃描時(shí)依次分別掃描八列按鍵,當(dāng)掃描信號依次為000時(shí),掃描0這一列按鍵每掃描一列按鍵,就檢查一次是否有按鍵按下,如果這排有按鍵按下,就馬上停 止掃描,立即進(jìn)行按鍵編碼動作,如果沒有就繼續(xù)掃描下一列。? ? ? ? ? ? ? ? x x x x x- x x- x 二二3.圖1鍵盤電路原理圖sel2-

5、sel0kin3-kin0對應(yīng)的按曜00011100110161011last0111ctrl00111101110171011step0111empty1010111021101reg 11011c0111empty2011111031101exec1011d0111empty31001110mem 11101g1011e0111empty41011110esc110191011f0111shift110111041101a1011nextdilinone111111051101b1011enter0111none圖2按鍵位置與數(shù)碼關(guān)系2 .液晶顯示器接口協(xié)議為請求/應(yīng)答(req/busy握

6、手方式。應(yīng)答busy高電平(busy=1)表示ocmj 忙于內(nèi)部處理,不能接收用戶命令;busy低電平(busy =0表示ocmj空閑,等待接收用戶命令。發(fā)送命令到ocmj可在busy =0后的任意時(shí)刻開始,先把用戶命令的當(dāng)前字節(jié)放到 數(shù)據(jù)線上,接著發(fā)高電平 req信號(req =d通知ocmj青求處理當(dāng)前數(shù)據(jù)線上的命令或數(shù) 據(jù)。ocm蟆塊在收到外部的recw電平信號后立即讀取數(shù)據(jù)線上的命令或數(shù)據(jù),同時(shí)將應(yīng)答 線busy為高電平,表明模塊已收到數(shù)據(jù)并正在忙于對此數(shù)據(jù)的內(nèi)部處理,此時(shí),用戶對模 塊的寫操作已經(jīng)完成,用戶可以撤消數(shù)據(jù)線上的信號并可作模塊顯示以外的其他工作,也可 不斷地查詢應(yīng)答線bu

7、sy1否為低(busy =0 ),如果busy =0表明模塊對用戶的寫操作已 經(jīng)執(zhí)行完畢??梢栽偎拖乱粋€(gè)數(shù)據(jù)。busy圖3模塊寫漢字時(shí)序圖3 .按鍵的抖動問題:由于機(jī)械觸點(diǎn)的彈性振動,按鍵在按下時(shí)不會馬上穩(wěn)定地接通而在彈起時(shí)也不能一下子完全的斷開,因而在按鍵閉合和斷開的瞬間均會出現(xiàn)一連串的抖動,這稱為按鍵的抖動干擾,其產(chǎn)生的波形如圖2所示,當(dāng)按鍵按下時(shí)會產(chǎn)生前沿抖動,當(dāng)按鍵彈起時(shí)會產(chǎn)生后沿抖動。 這是所有機(jī)械觸點(diǎn)式按鍵在狀態(tài)輸出是的共性問題,抖動的時(shí)間長短取決于按鍵的機(jī)械特性 與操作狀態(tài),一般為10ms-100ms此為鍵盤處理設(shè)計(jì)時(shí)要考慮的一個(gè)重要參數(shù)。圖6-2 4城誨矚闈或肩部fc鍵盤抖動干

8、擾的消除:按鍵的抖動會造成按一次鍵產(chǎn)生的開關(guān)狀態(tài)被可編程邏輯器件誤讀幾次。為了使可編程 邏輯器件能正確地讀取按鍵狀態(tài),必須在按鍵閉合或斷開時(shí),消除產(chǎn)生的前沿或后沿抖動,去抖動的方法有硬件方法和軟件方法兩種。本次課程設(shè)計(jì)采用了軟件方法:軟件方法是指編制一段時(shí)間大于100ms的延時(shí)程序,在第一次檢測到有鍵按下時(shí),執(zhí)行這段延時(shí)子程序使鍵的前沿抖動消失后再檢測該鍵狀態(tài),如 果該鍵仍保持閉合狀態(tài)電平,則確認(rèn)為該鍵已穩(wěn)定按下,否則無鍵按下,從而消除了抖動的 影響。同理,在檢測到按鍵釋放后,也同樣要延遲一段時(shí)間,以消除后沿抖動,然后轉(zhuǎn)入對 該按鍵的處理。3.3、 各模塊功能描述library ieee;us

9、e ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;-清零彳s號,時(shí)鐘0信號,應(yīng)答信號-請求信號-掃描信號-鍵盤輸入-數(shù)據(jù)輸出entity hanzi isport(clr,clk,busy: in std_logic;req : out std_logic;sel : out std_logic_vector (2 downto 0);key : in std_logic_vector (3 downto 0); dout: out std_logic_vector(7

10、downto 0);end hanzi;-計(jì)數(shù)信號,用來確定req-存儲器首地址-變地址-數(shù)據(jù)地址-輸入到lcd的數(shù)據(jù)architecture doit of hanzi is signal counter :std_logic_vector(7 downto 0);signal addrbegin :std_logic_vector(7 downto 0);signal addr1: std_logic_vector(7 downto 0);signal addr: std_logic_vector(7 downto 0);signal dat : std_logic_vector(7 do

11、wnto 0);-分頻計(jì)數(shù)-鍵盤掃描輔助信號-彈跳消除計(jì)數(shù)-鍵盤行、列掃描信號結(jié)合后的信號-時(shí)鐘1信號,測試信號,按鍵消抖信-按的哪個(gè)鍵-鍵盤部分-檢測有無按鍵按下signal counterl : std_logic_vector(1 downto 0);signal counte : std_logic_vector(2 downto 0);signal counter2 : std_logic_vector(4 downto 0);signal dcc : std_logic_vector(6 downto 0);signal clk1,test,koff: std_logic;sign

12、al dcc1:std_logic_vector (3 downto 0);號begintest=key(3) and key(2) and key(1) and key(0);p0: process(clr,clk)beginif(clr=0) thencounter1=00;elsif(clkevent and clk=1) thencounter1=counter1+1;end if;end process p0;clk1=0 when counter1=01 else1;-p0為分頻模塊。p1: process(clr,clk1,test)beginif(clr=0) thencoun

13、te=000;elsif(clk1event and clk1=1) thenif(test=0) or (koff=0) thenelsecounte=counte+1;end if;end if;end process p1;sel=counte;dcc=counte & key;-p1為鍵盤掃描模塊。p2: process(clk,test)beginif(clkevent and clk=0) thenif(dcc=0001110) thendcc1=0000;elsif(dcc=0011110) then dcc1=0001;elsif(dcc=0101110) then dcc1=

14、0010;elsif(dcc=0111110) then dcc1=0011;elsif(dcc=1101110) then dcc1=0100;elsif(dcc=1111110) then dcc1=0101;elsif(dcc=0001101) then dcc1=0110;elsif(dcc=0011101) then dcc1=0111;elsif(dcc=1001101) then-9 -dcc1=1000;elsif(dcc=1011101) then dcc1=1001;elsif(dcc=1101101) then dcc1=1010;elsif(dcc=1111101) t

15、hen dcc1=1011;elsif(dcc=0101011) then dcc1=1100;elsif(dcc=0111011) then dcc1=1101;elsif(dcc=1001011) then dcc1=1110;elsif(dcc=1011011) then dcc1=1111;elsif(test=0) then dcc1=1111;end if;end if;end process p2;-p2為鍵盤譯碼。p3: process(test,clk,clr)beginif(clr=0) thencounter2=00000”;koff=1;elsif(clkevent a

16、nd clk=1) then if(test=0) thenkoff=0;elsif(counter211110) thencounter2=counter2+1;elsif(counter2=11110) thenkoff addrbegin addrbegin addrbegin addrbegin addrbegin addrbegin null;end case;end process p4;-p4為將按鍵與存儲器的首地址相對應(yīng)p5: process(clr,busy)beginif(clr=0) thenaddr=00000000;elsif(busyevent and busy=0

17、) then-11 -addr=addrbegin+addu;end if;end process p5;- -p5為在busy允許條件下將首地址與變地址相加構(gòu)成數(shù)據(jù)地址p6: process(clr,busy)beginif(clr=0) thenaddr1=00000000;elsif(busyevent and busy=1) thenif(addr1=00000100) thenaddr1=00000000;elseaddr1=addr1+1;end if;end if;end process p6;- -p6為變地址的自加。p7: process(busy, clk)beginif(

18、busy=1) thencounter=00000000”;elsif(clkevent and clk=1) thencounter=counter+1;end if;end process p7;- -p7為分頻。dout=dat;req=00000100” else計(jì)4個(gè)數(shù)后,req才為1,否則為00;p8:process(addr)begincase addr is-清屏-f0,表示要向lcd中寫入漢字-橫坐標(biāo)-縱坐標(biāo)寫入的內(nèi)容when 00000000 = dat dat dat dat dat dat dat dat dat dat dat dat dat dat dat dat

19、dat dat dat dat dat dat dat dat dat dat dat dat dat dat dat dat=00000000;end case;end process p8;-p8為在lcd中寫入漢字end doit;clrclkiojsyke3/6( inpot -cl rreqclic3直 lin. . dqitrut .# vgc -牖什,:1_5utflft j、:/ 此心 口才 t口 q u t r . j1ke if 3 - - ojhrtnzireqsel2.o 而口幣疝-17 -圖5模塊接口圖l*j+j time目力對11intenral:卜 1q.cm47

20、um3.4、 仿真結(jié)果ref | ie dug同總mg.-clkb-clk- *- busy- ct req- 4* sec- o ssll- seda- key3 1 key2 keyll keyo- * daul:|7.0|小圖6仿真結(jié)果圖此仿真圖形為“中”字的仿真時(shí)序圖。3.5、 實(shí)驗(yàn)箱驗(yàn)證情況按照程序中管腳的分配,連接好電路,然后進(jìn)行程序下載和驗(yàn)證。下面是驗(yàn)證結(jié)果的圖 片。圖7 整體連線圖圖8 實(shí)驗(yàn)結(jié)果4、課程設(shè)計(jì)總結(jié)通過這次的課程設(shè)計(jì),我對可編程邏輯器件的應(yīng)用有了更加深刻的理解,它讓我認(rèn)識到 模塊化設(shè)計(jì)思想的重要性,對于一個(gè)具有一定功能的系統(tǒng)來說,一般都有幾個(gè)實(shí)現(xiàn)不同功能 的模塊。在設(shè)計(jì)這樣的系統(tǒng)時(shí),應(yīng)該首先把系統(tǒng)按照功能分為幾個(gè)相對獨(dú)立的模塊。各個(gè)模 塊用來完成特定的功能。模塊化的設(shè)計(jì)思想不僅可以使設(shè)計(jì)思路更加明晰,同時(shí)還可以提高 程序的可移植性。對于程序的后續(xù)調(diào)試工作也會帶來很大的方便。所以在最初拿到任務(wù)書時(shí),我首先思

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論