




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 課 程 設 計課程名稱課程名稱 eda 技術技術 課題名稱課題名稱 鍵盤掃描與數(shù)碼管及點陣顯示設計鍵盤掃描與數(shù)碼管及點陣顯示設計 專專 業(yè)業(yè) 電子科學與技術電子科學與技術 班班 級級 0802 學學 號號 * 姓姓 名名 * 指導教師指導教師 * 2011 年年 6 月月 20 日日 湖南工程學院課程設計任務書課程名稱課程名稱: eda 技術 題題 目目:鍵盤掃描與數(shù)碼管及點陣顯示設計 專業(yè)班級:電科 0802 學號: * 學生姓名: * 指導老師: * 審 批:任務書下達日期 2011 年 6 月 13 日設計完成日期 2011 年 6 月 20 日設計內容與設計要求一設計內容:1 設計并
2、調試鍵盤掃描與數(shù)碼管顯示電路;2 鍵盤為 3*4,數(shù)碼管為 7 段 8 位;3 以數(shù)字形式顯示鍵盤 16 個輸入鍵的識別;4 外設置控制開關和防抖動電路;5 功能擴展(自選):彩燈狀態(tài)的轉換以及點陣字符的顯示 二設計要求:1.設計思路清晰,整體設計給出框圖,提供頂層電路圖;2.應用 vhdl 完成各次級模塊設計,繪出具體設計程序;3.完成設計仿真和程序下載; 4.寫出設計報告主要設計條件1提供所需元件及芯片;2提供電源和調試設備;3提供 ewb 設計軟件說明書格式1 課程設計封面;2 設計仿真;3 編程下載;4 總結與體會;5 附錄;6 參考文獻。7 任務書;8 說明書目錄;9 設計總體思路;
3、10 單元電路設計程序;進 度 安 排月 日 日 課題電路設計。 月 日日 總體電路設計和子模塊設計 月 日 日 軟件仿真和聯(lián)線。 月 日 日 電路調試 月 日 寫設計報告,打印相關圖紙,月 日 答辯; 參 考 文 獻一 電子技術與 eda 技術課程設計 郭照南 主編中南大學出版社0目錄目錄第第 1 章章 總體方案設計分析總體方案設計分析.11.1 基本設計思路.11.2 總體框圖.1第第 2 章章 各級模塊設計與分析各級模塊設計與分析.22.1 鍵盤掃描程序設計及仿真.22.2 點陣顯示程序設計及仿真.52.3 彩燈顯示程序設計及仿真.112.4 數(shù)碼管掃描程序設計及仿真.14第第 3 章章
4、 系統(tǒng)總電路設計與仿真系統(tǒng)總電路設計與仿真.163.1 系統(tǒng)總電路模塊圖.163.2 總電路仿真波形.163.3 系統(tǒng)總體電路圖.17第第 4 章章 軟件的調試與下載軟件的調試與下載.184.1 引腳鎖定.184.2 引腳鎖定后總電路圖.194.3 程序下載界面.194.4 系統(tǒng)總體仿真結果.20第第 5 章章 總結與體會總結與體會.21第第 6 章章 參考文獻參考文獻.22第第 7 章章 附錄附錄.237.1 點陣字符顯示效果圖.237.2 彩燈顯示結果.231第第 1 章章 總體方案設計分析總體方案設計分析1.1 基本設計思路基本設計思路首先利用鍵盤掃描程序完成鍵盤掃描及按鍵輸出值的輸出,
5、同時在其中加入按鍵消抖程序,以保證按鍵每次按下的鍵值都是有效準確的理想輸出信號。同時通過按鍵掃描的輸出定義兩個控制信號量(程序中即xuanze 和 dz 兩信號)以通過按鍵的按下來達到控制彩燈狀態(tài)切換以及點陣字符顯示切換的目的。其中,定義了兩個彩燈控制信號,以用來選擇彩燈模塊中兩種彩燈顯示狀態(tài)的切換,而點陣控制信號則定義了五個狀態(tài)以控制點陣顯示的五個狀態(tài)的切換。從而整個系統(tǒng)則通過鍵盤掃描程序中的兩個控制信號連接成了一個整體。最后就將鍵盤掃描的輸出信號連接到數(shù)碼管顯示模塊,彩燈模塊連接到 8 個 led 燈,而點陣模塊的輸出則接入到點陣上。再在現(xiàn)有的基礎上加入清零信號 cr。綜上,整個系統(tǒng)的功能
6、即得以實現(xiàn)。1.2 總體框圖總體框圖2圖 1.1 系統(tǒng)總體框圖第第 2 章章 各級模塊設計與分析各級模塊設計與分析2.1 鍵盤掃描程序設計及仿真鍵盤掃描程序設計及仿真2.1.1 基本設計思路基本設計思路本模塊采用行輸入,列輸出,并定義一個五位的矢量信號 count,此矢量通過時鐘脈沖的輸入計數(shù),并且定義一個信號量 sel 并取其中間兩位,以此兩位構成的四個狀態(tài)進行鍵盤列掃描,同時再在另外一個進程中通過三個條件語句的選擇判斷以確定三個行鍵中哪個按下,并結合列掃描中 sel 所取的四個狀態(tài)共同連接賦值給一個四位矢量 knum,并由此確定了鍵盤的 12 個狀態(tài)。最后利用另外一個進程中對 knum 值
7、的判斷從而確定對應的按鍵值的輸出,以及其他各控制鍵值的信號輸出(其中包括,控制彩燈狀態(tài)的控制信號 xuanze,以及控制點陣顯示狀態(tài)的控制信號dz) 。2.1.2 鍵盤掃描模塊圖鍵盤掃描模塊圖clkcrkin1kin2kin3xuanze1.0dz2.0keyv3.0keycode4.0keyscaninst1圖 2.1.1 鍵盤掃描模塊圖3圖中 clk 接時鐘脈沖,cr 是復位端,kin1,kin2,kin3 為行掃描輸入,xuanze 為彩燈控制信號,dz 為點陣控制信號,keyv 為列輸出,keycode為按鍵顯示數(shù)值輸出。2.1.3 鍵盤掃描程序鍵盤掃描程序library ieee;
8、use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity keyscan is port(clk ,cr : in std_logic; -掃描時鐘輸入 kin1,kin2,kin3 : in std_logic; -按鍵行掃描輸入 xuanze : out std_logic_vector(1 downto 0); dz:out std_logic_vector(2 downto 0); keyv: out std_logic_vector(3 down
9、to 0);-按鍵列掃描 keycode : out std_logic_vector(4 downto 0) ); -段碼顯示輸出 end keyscan; architecture a of keyscan is signal sel : std_logic_vector(1 downto 0); signal knum : std_logic_vector(3 downto 0); signal count : std_logic_vector(4 downto 0); signal count0 : std_logic; begin sel=count(3 downto 2); cou
10、nt0=count(0); p1: process(clk) -產生掃描信號 begin if clkevent and clk=1 then count keyv keyv keyv keyv keyv=1111; end case ; end process; p3: process(count0,count,kin1,kin2,kin3) -查鍵值 begin if (cr=0) then knum=1 & 1& count(3 downto 2); elsif count0event and count0=1 then if(kin3=0) and count(1)=0 then -第
11、三行有鍵按下時 knum=1 & 0& count(3 downto 2); elsif(kin2=0) and count(1)=0 then -第二行有鍵按下時 knum=0 & 1 & count(3 downto 2); elsif (kin1=0) and count(1)=0 then -第一行有鍵按下時 knum=0 & 0 & count(3 downto 2); end if; end if; end process; p4:process(knum) -鍵值譯碼顯示輸出 begin if cr=0 then xuanze=11;dz keycode=00000;xuanze
12、=00;dz keycode=00001;xuanze=00;dz keycode=00010;xuanze=00;dz keycode=00011;xuanze=00;dz keycode=00100;xuanze=00;dz keycode=00101;xuanze=00;dz keycode=00110;xuanze=00;dz keycode=00111;xuanze=00;dz keycode=01000;xuanze=00;dz keycode=01001;xuanze=00;dz keycode=01010;xuanze=01;dz keycode=01011;xuanze=10
13、;dz keycode=01100;xuanze=00;dz=000; end case ; end if; end process; end a;2.1.4 鍵盤掃描仿真波形鍵盤掃描仿真波形圖 2.1.2 鍵盤掃描仿真波形2.2 點陣顯示程序設計及仿真點陣顯示程序設計及仿真2.2.1 基本設計思路基本設計思路 程序通過鍵盤掃描程序中的點陣輸出控制信號 dz 來控制點陣字符顯示的狀態(tài),然后定義點陣的行列為輸出類型,通過六個 case 語句以及 16個顯示狀態(tài)的循環(huán)掃描來達到字符顯示效果。最終結果,通過 6 個按鍵的控制分別輸出“湖” , “南” , “工” , “程” , “學” , “院”六
14、個字符。62.2.2 點陣顯示模塊圖點陣顯示模塊圖clkcrdz2.0hang15.0lie3.0dianzhenginst2圖 2.2.1 點陣顯示模塊圖其中 clk 接時鐘脈沖,cr 接復位端,dz 接從鍵盤掃描程序中輸出的點陣控制信號,hang,lie 分別定義為點陣的行列的 20 個輸入引腳。2.2.3 點陣顯示程序點陣顯示程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity dianzheng isport(
15、clk ,cr : in std_logic; -掃描時鐘輸入 dz : in std_logic_vector(2 downto 0); hang : out std_logic_vector(15 downto 0); lie : out std_logic_vector(3 downto 0);end entity dianzheng;architecture behav of dianzheng issignal sel : std_logic_vector(3 downto 0);signal count : std_logic_vector(4 downto 0);type zhu
16、angtai is (s0,s1,s2,s3,s4,s5); signal current_state, next_state: zhuangtai; beginsel=count(3 downto 0);p0: process(clk) -產生掃描信號 begin if cr=0 then count=00000;7 elsif clkevent and clk=1 then count=count+1; if( count=10000) then count=00000;end if; current_state if(dz=001) then case sel is when 0000=
17、 lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;hang lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state=s0; elsif(dz=010)
18、then next_state=s1; elsif(dz=011)then lie=1111;hang=0000000000000000;next_state=s2; elsif(dz=100)then lie=1111;hang=0000000000000000;next_state=s3; elsif(dz=000)then lie=1111;hang=0000000000000000;next_state=s4; elsif(dz=111)then 8lie=1111;hang=0000000000000000;next_state case sel is when 0000= lie=
19、1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;hang lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state case sel is when 0000=
20、lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;hang lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state case sel is when 00
21、00= lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;hang lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state case sel is whe
22、n 0000= lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;hang lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang=0000000000000000; end case ; next_state case sel is
23、 when 0000= lie=1111;hang lie=1110;hang lie=1101;hang lie=1100;hang lie=1011;hang lie=1010;hang lie=1001;hang lie=1000;hang lie=0111;hang lie=0110;hang lie=0101;hang lie=0100;hang lie=0011;hang lie=0010;hang lie=0001;hang lie=0000;hang count=00000;hang next_state=s0; end case; end process p1;end beh
24、av;112.2.4 點陣顯示仿真波形點陣顯示仿真波形圖 2.2.2 點陣顯示仿真波形2.3 彩燈顯示程序設計及仿真彩燈顯示程序設計及仿真2.3.1 基本設計思路基本設計思路程序通過鍵盤掃描程序輸出的彩燈控制信號 xuanze 的控制來保證兩個彩燈在兩個狀態(tài)之間的順利切換,其中一個狀態(tài)為彩燈向左流水與向右流水的循環(huán)顯示,另一個狀態(tài)為彩燈向中間流水。整體利用狀態(tài)機來實現(xiàn),并在第一個狀態(tài)的時候就利用條件語句對 xuanze 值的判斷從而控制狀態(tài)機的循環(huán)路徑,從而達到了控制兩個彩燈狀態(tài)的目的。2.3.2 彩燈顯示模塊圖彩燈顯示模塊圖clkcrxuanze1.0keycode24.0comb_outp
25、uts7.0leddenginst4圖 2.3.1 彩燈顯示模塊圖12圖中 clk 接時鐘脈沖,cr 接復位端,xuanze 接鍵盤掃描程序的彩燈控制信號輸出端,comb_outputs 接 8 個 led 燈。2.3.3 彩燈顯示程序彩燈顯示程序library ieee;use ieee.std_logic_1164.all;entity leddeng isport( clk,cr : in std_logic; xuanze : in std_logic_vector(1 downto 0); comb_outputs :out std_logic_vector(7 downto 0);
26、 keycode2:in std_logic_vector(4 downto 0) );end entity leddeng;architecture behav of leddeng is type zhuangtai is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23); signal current_state, next_state: zhuangtai; beginp0: process(clk,cr) beginif cr=0 then current_s
27、tate=s0;elsif (clk event and clk=1) then current_state if xuanze=01 then comb_outputs=01111111;next_state=s1; elsif xuanze=10 then next_state=s14; elsif xuanze=00 then next_state=s23;elsif xuanze=11then comb_outputs=11111111;next_state=s23;else comb_outputs=11111111;next_state comb_outputs=10111111;
28、next_state comb_outputs=11011111;next_state comb_outputs=11101111;next_state comb_outputs=11110111;next_state comb_outputs=11111011;next_state comb_outputs=11111101;next_state comb_outputs=11111110;next_state comb_outputs= 11111101;next_state comb_outputs= 11111011;next_state comb_outputs=11110111;n
29、ext_state comb_outputs=11101111;next_state comb_outputs=11011111;next_state comb_outputs=10111111;next_state comb_outputs=11111111;next_state comb_outputs=01111110;next_state comb_outputs=10111101;next_state comb_outputs=11011011;next_state comb_outputs=11100111;next_state comb_outputs=11011011;next
30、_state comb_outputs=10111101;next_state comb_outputs=01111110;next_state comb_outputs=00000000;next_state comb_outputs=11111111;next_state next_state=s0; end case; end process p1;end behav;2.3.4 彩燈顯示仿真波形彩燈顯示仿真波形圖 2.3.2 彩燈顯示仿真波形142.4 數(shù)碼管掃描程序設計及仿真數(shù)碼管掃描程序設計及仿真2.4.1 基本設計思路基本設計思路由于本程序中只需要用到一位數(shù)碼管的顯示,因此就無需
31、數(shù)碼管進行動態(tài)掃描,因此,直接在程序中選通一位數(shù)碼管即可。并把鍵盤掃描程序的鍵值輸出信號直接接到數(shù)碼管掃描程序的輸入信號端口,再通過case 語句的選擇即可將對應的數(shù)碼管段值狀態(tài)輸入到數(shù)碼管進行相應的顯示,實現(xiàn)系統(tǒng)指定的功能。2.4.2 數(shù)碼管掃描模塊圖數(shù)碼管掃描模塊圖crkeycode14.0sg6.0btscan_ledinst5圖 2.4.1 數(shù)碼管掃描模塊圖圖中 cr 接復位端,keycode1 接鍵盤掃描的鍵值輸出信號端口,sg作為數(shù)碼管七段的控制輸出信號,bt 作為八位數(shù)碼管的位選端。2.4.3 數(shù)碼管掃描程序數(shù)碼管掃描程序library ieee;use ieee.std_log
32、ic_1164.all;use ieee.std_logic_unsigned.all;entity scan_led is port ( cr : in std_logic; keycode1:in std_logic_vector(4 downto 0); sg : out std_logic_vector(6 downto 0);bt : out std_logic ); end;architecture one of scan_led is15beginp1:process( keycode1 ) beginif(cr=0) then bt=0; elsif(cr=1) then bt
33、 sg sg sg sg sg sg sg sg sg sg sg sg sg null ; end case ; end process p1; end;2.4.4 數(shù)碼管掃描仿真波形數(shù)碼管掃描仿真波形圖 2.4.2 數(shù)碼管掃描仿真波形16第第 3 章章系統(tǒng)總電路設計與仿真系統(tǒng)總電路設計與仿真3.1 系統(tǒng)總電路模塊圖系統(tǒng)總電路模塊圖clkcrkin1kin2kin3clk1sg6.0btkeyv3.0comb_outputs7.0hang15.0lie3.0block1inst2 圖 3.1.1 總電路模塊圖圖中,clk 接時鐘脈沖,cr 接復位端,kin1,kin2,kin3 分別接入鍵盤
34、行掃描,clk1 接一提供給點陣顯示的時鐘脈沖。sg60接數(shù)碼管段選信號,bt 為數(shù)碼管位選信號輸出,keyv3.0為鍵盤列掃描,comb_outputs7.0控制彩燈的輸出端,hang15.0,lie3.0分別為點陣行列的輸入掃描信號。3.2 總電路仿真波形總電路仿真波形圖 3.2.1 總電路仿真波形173.3 系統(tǒng)總體電路圖系統(tǒng)總體電路圖圖 3.3.1 系統(tǒng)總體電路圖18第第 4 章章 軟件的調試與下載軟件的調試與下載4.1 引腳鎖定引腳鎖定19圖 4.1.1 引腳鎖定列表4.2 引腳鎖定后總電路圖引腳鎖定后總電路圖圖 4.2.1 引腳鎖定后總電路圖204.3 程序下載界面程序下載界面圖 4.3.1 程序下載界面4.4 系統(tǒng)總體仿真結果系統(tǒng)總體仿真結果圖 4.4.1 系統(tǒng)總體仿真結果部分相應的實驗顯示效果參見附錄。21第第 5 章章 總結與體會總結與體會歷時兩個星期的 eda 課程設計終于落下帷幕,在這兩個星期中,我們從接到課題,到查找資料,再到自己獨立編程仿真調試程序,最后到接硬件調試,我們的每一步都走出了自己奮斗的精彩。剛開始我們組抽到了做鍵盤掃描程序的課題。本以為這是個很容易的課題,也很快地查找好
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國水霧化鐵粉市場投資趨勢及前景發(fā)展規(guī)劃研究報告2025-2030年
- 小學語文教師個人專業(yè)發(fā)展計劃
- 電子商務C2C相關項目投資計劃書范本
- 第一單元活動二隊列設計(教學設計)-2024-2025學年四年級上冊綜合實踐活動人教版
- 旅游行業(yè)智慧旅游目的地管理與運營方案
- 股份合作協(xié)議書與股東權益保障方案
- 建筑結構設計知識專項測試卷
- 散熱硅脂涂布工藝標準
- 前端開發(fā)框架使用手冊
- 提升員工職業(yè)技能的方法與策略探討
- 增演易筋洗髓內功圖說(校對勘誤版)
- DB43∕T 801-2013 二次張拉低回縮鋼絞線豎向預應力短索錨固體系設計、施工和驗收規(guī)范
- 附表1:網(wǎng)絡及信息安全自查表
- 奇妙的海洋生物
- ART-850A系列數(shù)字式廠用變保護測控裝置技術說明書
- 精裝修工程一戶一驗記錄表
- 紅色大氣中考百日誓師大會PPT模板
- 哈薩克斯坦共和國有限責任公司和補充責任公司法
- 維語宗教事務條例(2015)
- IQC(來料)檢測報告模板
- (完整版)電機學第五版課后答案_(湯蘊璆)
評論
0/150
提交評論