鍵盤及接口顯示電路EDA_第1頁
鍵盤及接口顯示電路EDA_第2頁
鍵盤及接口顯示電路EDA_第3頁
鍵盤及接口顯示電路EDA_第4頁
鍵盤及接口顯示電路EDA_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書河南科技大學(xué)河南科技大學(xué)課課 程程 設(shè)設(shè) 計(jì)計(jì) 說說 明明 書書課程名稱課程名稱 EDA 技術(shù) 題題 目目 鍵盤及接口顯示電路 學(xué)學(xué) 院院 車輛與動(dòng)力工程學(xué)院 班班 級(jí)級(jí) 農(nóng)業(yè)電氣化與自動(dòng)化 091 學(xué)生姓名學(xué)生姓名 盧浩冉 指導(dǎo)教師指導(dǎo)教師 羅四倍 日日 期期 2012 年 7 月 12 號(hào) 車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書2鍵盤及接口顯示電路摘 要本文通過對(duì) 44 矩形鍵盤的信息采集,并能夠在數(shù)碼顯示管上顯示所按下的信息。通過循環(huán)輸出行信號(hào),檢測(cè)列信號(hào)輸入,將行列信號(hào)相并,來達(dá)到采集信號(hào)的目地,并通過譯碼在 7 段數(shù)碼管上顯示出來。此次設(shè)計(jì),為了防止抖動(dòng)引起

2、的混亂,加入了一個(gè)防抖動(dòng)環(huán)節(jié)。在譯完一個(gè)鍵值后,加了一個(gè)計(jì)算環(huán)節(jié),一旦檢測(cè)到列信號(hào)后,譯碼,緊跟著進(jìn)入計(jì)數(shù)環(huán)節(jié),此時(shí)鍵抖動(dòng)不會(huì)進(jìn)入其他環(huán)節(jié),這樣可以防止抖動(dòng)。給精度較高的場(chǎng)合應(yīng)用提供了良好的條件,為以后高精度的應(yīng)用創(chuàng)造良好空間。設(shè)計(jì)中通過按鍵控制可以顯示字符串,例如“HELLO”,較小的改動(dòng)可以任意顯示 5 個(gè)字符,這在廣告中的用處隨處可見,給現(xiàn)代生活帶來了方便。關(guān)鍵詞:鍵盤掃描 譯碼顯示 字符串車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書3目 錄第一章 緒論 .41.1 設(shè)計(jì)目的和意義 .41.2 設(shè)計(jì)任務(wù)及要求 .4第二章 總體設(shè)計(jì) .52.1 工作原理 .52.2 設(shè)計(jì)思路 .52.3 數(shù)碼管顯示譯

3、碼模塊設(shè)計(jì) .62.4 字符串“HELLO”的模塊實(shí)現(xiàn) .72.4.1 七段數(shù)碼管譯碼掃描顯示.72.4.2 原理圖.8第三章 仿真 .93.1 鍵盤掃描功能的仿真.93.2 字符串的仿真.10第四章 程序 .114.1 鍵盤掃描程序.114.2 字符串顯示程序.16第五章 結(jié)論 .18參考文獻(xiàn) .19 車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書4第一章 緒論1.1 設(shè)計(jì)目的和意義 本次設(shè)計(jì)的目的就是通過實(shí)踐深入理解計(jì)算機(jī)組成原理,了解 EDA 技術(shù)并掌握 VHDL 硬件描述語言的設(shè)計(jì)方法和思想。以計(jì)算機(jī)組成原理為指導(dǎo),通過學(xué)習(xí)的 VHDL 語言結(jié)合電子電路的設(shè)計(jì)知識(shí)理論聯(lián)系實(shí)際,掌握所學(xué)的課程知識(shí)和基

4、本單元電路的綜合設(shè)計(jì)應(yīng)用。通過對(duì)掌握 44 鍵盤的掃描的巧妙實(shí)現(xiàn)和對(duì)字符串的顯示過程.鞏固和綜合運(yùn)用所學(xué)知識(shí),提高 IC 設(shè)計(jì)能力,提高分析、解決計(jì)算機(jī)技術(shù)實(shí)際問題的獨(dú)立工作能力。1.2 設(shè)計(jì)任務(wù)及要求 1. 鍵盤掃描功能:能夠?qū)匦捂I盤信息采集;2. 顯示功能:能夠顯示相應(yīng)的按鍵信息,并能夠在按鍵控制下切換為字符串顯示“HELLO”!3. 掌握數(shù)碼管工作的原理,并能夠?qū)υO(shè)計(jì)的程序進(jìn)行仿真和測(cè)試,以實(shí)現(xiàn)相應(yīng)的功能。車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書5第二章 總體設(shè)計(jì)2.1 工作原理可編程器件的 KEY_HANG3.0行信號(hào)輸出端不停循環(huán)輸出“1110”“1101”“1011”“0111”。當(dāng)沒有

5、鍵按下時(shí)可編程器件的 KEY_LIE3.0列信號(hào)輸入端檢測(cè)到的是“1111”。當(dāng)有按鍵按下時(shí),如按下 1,此時(shí) KEY_HANG3.0行信號(hào)輸出為“0111”,即 KEY_HANG3.0的 3 管腳為“0”,可由電路看出,此時(shí)輸入端KEY_LIE3.0檢測(cè)到的將是“0111”。KEY_LIE3.0的 3 管腳為 0,可以在編寫程序時(shí),將輸出信號(hào) KEY_HANG3.0與輸入信號(hào) KEY_LIE3.0同時(shí)判斷,比如可以認(rèn)為當(dāng)數(shù)據(jù)“KEY_HANG&KEY_LIE”為“01110111”時(shí),可譯碼成數(shù)據(jù) 1,。同理可得其他按鍵的編碼。根據(jù)不同數(shù)據(jù)的編碼譯成不同的數(shù)據(jù)。2.2 設(shè)計(jì)思路1.循

6、環(huán)輸出行信號(hào),檢測(cè)列信號(hào)輸入,將行列信號(hào)相并。2.譯鍵值。3.去抖動(dòng)。在譯沒一個(gè)鍵值后,為了防止抖動(dòng),加了一個(gè)計(jì)算環(huán)節(jié),一旦檢測(cè)到列信號(hào)后,譯碼,緊跟著進(jìn)入計(jì)數(shù)環(huán)節(jié),此時(shí)鍵抖動(dòng)不會(huì)進(jìn)入其他環(huán)節(jié),這樣可以防止抖動(dòng)。4.數(shù)碼管譯碼、循環(huán)顯示。電路的具體功能羅列如下: 1) 采用44矩陣鍵盤作為操作數(shù)和操作符的輸入設(shè)備。 2) 采用2位8段數(shù)碼管作為輸出顯示設(shè)備,顯示按下的數(shù)字及簡單的功能。 3) 由于所有鍵盤在按下或者彈起的時(shí)候均有按鍵抖動(dòng),所以應(yīng)該采用去抖電路,當(dāng)檢測(cè)到有按鍵按下去的時(shí)候,應(yīng)該延時(shí)20ms后,再進(jìn)行檢測(cè),如果仍有鍵盤按鍵被按下去的話,則進(jìn)行鍵盤讀值。 車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說

7、明書6當(dāng)CLK_1K上升沿到來時(shí)狀態(tài)轉(zhuǎn)為state0,然后判斷列與非后的值,看是否有按鍵按下,如果有輸入數(shù)據(jù),則自動(dòng)啟動(dòng)20ms的計(jì)數(shù)器,當(dāng)計(jì)滿數(shù)后,產(chǎn)生一個(gè)指示信號(hào),此信號(hào)為1bit,高電平有效。當(dāng)讀到此指示信號(hào)后,便再次將row信號(hào)鎖存至寄存器,便得到鍵盤的一個(gè)返回值。如果row沒有變化,則state轉(zhuǎn)換為state2,對(duì)第二行進(jìn)行按鍵掃描。依此類推,掃描第三行與第四行。因?yàn)槠胀ǖ陌存I都是接觸式的,當(dāng)按鍵閉合或釋放時(shí),上下接觸面都會(huì)產(chǎn)生一個(gè)很短暫的抖動(dòng),如圖2.2所示,這個(gè)抖動(dòng)時(shí)間一般都會(huì)持續(xù)5-10ms,雖然這個(gè)抖動(dòng)時(shí)間很短,但對(duì)于FPGA工作在50M的高頻率上的器件來說,還是可以捕捉的

8、到的。為了使CPU對(duì)于一次按鍵操作只處理一次,在軟件中必須加入去除抖動(dòng)處理。如圖2.1所示圖 2.1 按鍵閉合時(shí)產(chǎn)生的抖動(dòng)由圖中可以看出,最簡單的去抖方法就是每隔一段時(shí)間讀一次鍵盤,時(shí)間間隔大于10ms 即可。如果連續(xù)兩次檢測(cè)都有按鍵被按下,則可以肯定有按鍵被按下,而且也進(jìn)入閉合穩(wěn)定期。2.3 數(shù)碼管顯示譯碼模塊設(shè)計(jì) 數(shù)碼管顯示譯碼電路主要用來對(duì)實(shí)際的二進(jìn)制數(shù)據(jù)裝換為8段數(shù)碼管的實(shí)際顯示控制碼,采用兩個(gè)2位的8段共陰極數(shù)碼管,數(shù)碼管的顯示方式有兩種:靜態(tài)顯示和動(dòng)態(tài)顯示。具體如下: 靜態(tài)顯示方式:所謂靜態(tài)顯示就是指無論是多少位數(shù)碼管,同時(shí)處于顯示狀態(tài)需要的硬件電路較多(每一個(gè)數(shù)碼管都需要一個(gè)鎖存

9、器) ,將造成很大的不便,同時(shí)由于所有數(shù)碼管都處于被點(diǎn)亮狀態(tài),所以需要的電流很大,當(dāng)數(shù)碼管的數(shù)量增多車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書7時(shí),對(duì)電源的要求也就隨之增高。所以,在大部分的硬件電路設(shè)計(jì)中,很少采用靜態(tài)顯示方式。 動(dòng)態(tài)顯示方式:所謂動(dòng)態(tài)顯示,是指無論在任何時(shí)刻只有一個(gè)數(shù)碼管處于顯示狀態(tài),每個(gè)數(shù)碼管輪流顯示。動(dòng)態(tài)顯示的優(yōu)點(diǎn)是:硬件電路簡單(數(shù)碼管越多,這個(gè)優(yōu)勢(shì)越明顯) ,由于每個(gè)時(shí)刻只有一個(gè)數(shù)碼管被點(diǎn)亮,所以所有數(shù)碼管消耗的電流較??;缺點(diǎn)是:數(shù)碼管亮度不如靜態(tài)顯示時(shí)的亮度高,例如有8個(gè)數(shù)碼管,以1秒為單位,每個(gè)數(shù)碼管點(diǎn)亮的時(shí)間只有1/8秒,所以亮度較低;如果刷新率較低,會(huì)出現(xiàn)閃爍現(xiàn)象;如果

10、數(shù)碼管直接與單片機(jī)連接,軟件控制上會(huì)比較麻煩等。 顯示譯碼方式如下: 1) 時(shí)鐘上升沿到來時(shí)分別對(duì)位選和段選進(jìn)行譯碼。 2) 將輸入的2bite位選數(shù)據(jù)譯碼成4比特?cái)?shù)據(jù)控制數(shù)碼管的2位,由于是共陰極數(shù)碼管要選定相應(yīng)的數(shù)碼管則使該位位低電平,其它位為高電平即可,如:0000譯碼為0111_1111,對(duì)應(yīng)于實(shí)驗(yàn)板上的左邊第一位數(shù)碼管。 3) 將輸入的4bite段選數(shù)據(jù)譯碼為8比特?cái)?shù)據(jù)控制8個(gè)LED的亮滅,最高位接A,最低位接小數(shù)點(diǎn)位DP。若要顯示0則對(duì)應(yīng)的譯碼為 8b1111_1100。 2.4 字符串“HELLO”的模塊實(shí)現(xiàn)2.4.1 七段數(shù)碼管譯碼掃描顯示clk:時(shí)鐘輸入端,此信號(hào)是串行掃描的

11、同步信號(hào)。data_control7.0:8 個(gè)分別控制數(shù)碼管顯示的輸入信號(hào); led_addr7.0:對(duì) 8 個(gè)數(shù)碼管進(jìn)行串行掃描的輸出控制信號(hào); seg7_data6.0:驅(qū)動(dòng) 7 段數(shù)碼管各顯示段的輸出信號(hào);車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書82.4.2 原理圖圖 2.2 字符串顯示原理圖車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書9第三章 仿真3.1 鍵盤掃描功能的仿真沒有鍵按下時(shí)行循環(huán)輸出“”“”“”“”圖 3.1 無按鍵時(shí)波形當(dāng)隨機(jī)按下時(shí)行保持所按下的狀態(tài)不變 圖 3.2 隨機(jī)按鍵時(shí)波形車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書103.2 字符串的仿真圖 3.3 字符串顯示車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書

12、11第四章 程序4.1 鍵盤掃描程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jp isport(clk,start:in std_logic;kbcol:in std_logic_vector(3 downto 0); -行掃描信號(hào)kbrow:out std_logic_vector(3 downto 0); -列掃描信號(hào)seg7_out:out std_logic_vector(6 downto 0);-顯示控制信號(hào)scan:out std_logic_vector(7 d

13、ownto 0) -數(shù)碼管地址選擇控制信號(hào));end jp;architecture one of jp issignal count,sta:std_logic_vector(1 downto 0);signal seg7:std_logic_vector(6 downto 0);signal dat:std_logic_vector(4 downto 0);signal fn:std_logic; -按鍵標(biāo)志位,判斷是否有鍵被按下beginscan=00000001; -只使用一個(gè)數(shù)碼管顯示-循環(huán)掃描計(jì)數(shù)器process(clk) beginif clkevent and clk=1the

14、ncountkbrow=0001;stakbrow=0010;stakbrow=0100;stakbrow=1000;stakbrow=1111;end case;end if;end process;-行掃描譯碼process(clk,start)beginif start=0thenseg7case kbcol iswhen 0001=seg7=1111001;datseg7=1101101;datseg7=0110000;datseg7=1111110;datseg7=0000000;datcase kbcol iswhen 0001=seg7=1111000;datseg7=10111

15、11;datseg7=1011011;datseg7=0110011;datseg7=0000000;datcase kbcol iswhen 0001=seg7=0011111;datseg7=1110111;datseg7=1111011;datseg7=1111111;datseg7=0000000;datcase kbcol iswhen 0001=seg7=1000111;datseg7=1001111;datseg7=0111101;datseg7=1001110;datseg7=0000000;datseg7=0000000;end case;end if;end process

16、;-產(chǎn)生按鍵標(biāo)志位,用于存儲(chǔ)按鍵信息fn=not (dat(0) and dat(1) and dat(2) and dat(3) and dat(4);process(fn)beginif fnevent and fn=1then -按鍵信息存儲(chǔ)車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書16seg7_out =seg7;end if;end process;end one;4.2 字符串顯示程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Scan8led isport(clk:in st

17、d_logic;data_control:in std_logic_vector(4 downto 0); led_addr:out std_logic_vector(4 downto 0); seg7_data:out std_logic_vector(6 downto 0);end entity scan8led;architecture one of scan8led istype aaaa is array (0 to 3)of integer;constant a:aaaa:=(0,1,2,3);type seg7_data_type is array(natural range)o

18、f std_logic_vector(6 downto 0);constant seg7_data_table:seg7_data_type(0 to 5):=(-gfedcba 1110110, 1111001, 0111000, 0111000, 0011111, 0000000);type led_addr_type is array(natural range)of std_logic_vector(7 downto 0);constant led_addr_table:led_addr_type(0 to 4):=(-dizhibiao車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書17000000

19、01,00000010,00000100,00001000,00010000);begin process(clk)variable count:integer range 0 to 4:=0;beginif(clkevent and clk=1)thencount:=count+1;led_addr=led_addr_table(count);if(data_control(count)=1)thenseg7_data=seg7_data_table(count);elseseg7_data=seg7_data_table(5);end if;end if;end process;end architecture one;車輛與動(dòng)力工程學(xué)院課程設(shè)計(jì)說明書18第五章 結(jié)論這次EDA課程設(shè)計(jì)歷時(shí)十天,學(xué)到很多很多的東西。同時(shí)不僅可以鞏固以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次設(shè)計(jì),進(jìn)一步加深了對(duì)EDA的了解,讓我對(duì)它有了更加濃厚的興趣。特別是當(dāng)每一個(gè)子模塊編寫調(diào)試成功時(shí),都會(huì)很高興。在編寫頂層文件的程

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論