




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中北大學(xué)課 程 設(shè) 計(jì) 說 明 書 學(xué)生姓名:郭士西學(xué) 號(hào):0906024147學(xué) 院:電子與計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 專 業(yè):微電子學(xué) 題 目:利用按鍵控制點(diǎn)陣進(jìn)行十進(jìn)制數(shù)字顯示 指導(dǎo)教師: 崔永俊 職稱: 副教授 2012 年 6 月 22 日目 錄1.課程設(shè)計(jì)目的22.課程設(shè)計(jì)內(nèi)容及要求2 2.1設(shè)計(jì)內(nèi)容2 2.2設(shè)計(jì)要求23.設(shè)計(jì)方案及實(shí)現(xiàn)情況2 3.1設(shè)計(jì)思路2 3.2工作原理及框圖3 3.3各模塊程序代碼及仿真結(jié)果4 3.4實(shí)驗(yàn)箱驗(yàn)證情況204課程設(shè)計(jì)總結(jié)245.參考文獻(xiàn)251、課程設(shè)計(jì)目的 (1)學(xué)
2、習(xí)操作數(shù)字電路設(shè)計(jì)實(shí)驗(yàn)開發(fā)系統(tǒng),掌握點(diǎn)陣顯示模塊的工作原理及應(yīng)用。(2)掌握組合邏輯電路、時(shí)序邏輯電路的設(shè)計(jì)方法。(3)學(xué)習(xí)掌握可編程器件設(shè)計(jì)的全過程。2、課程設(shè)計(jì)內(nèi)容和要求2.1、設(shè)計(jì)內(nèi)容 (1)學(xué)習(xí)掌握按鍵開關(guān)控制模塊、點(diǎ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ì)說明書。2.2、設(shè)計(jì)要求 (1)本課程設(shè)計(jì)說明書; (2)VHDL源程序及內(nèi)部原理圖; (3)該設(shè)計(jì)可以在實(shí)驗(yàn)箱上正常工作
3、并演示。 3、設(shè)計(jì)方案及實(shí)現(xiàn)情況3.1、設(shè)計(jì)思路 根據(jù)題目設(shè)計(jì)要求,由于整個(gè)過程的實(shí)現(xiàn)比較繁瑣,所以采用模塊化設(shè)計(jì)思想會(huì)更好些,對(duì)于不同的功能用不同的程序模塊實(shí)現(xiàn)。各個(gè)模塊之間保持相對(duì)獨(dú)立,最終將各個(gè)模塊合在一塊,這樣有利于對(duì)不同的功能模塊進(jìn)行理解個(gè)、分析、調(diào)試、仿真。利用按鍵開關(guān)控制點(diǎn)陣進(jìn)行十進(jìn)制數(shù)字顯示,我們可以采用單個(gè)按鍵計(jì)數(shù)遞增的形式進(jìn)行顯示,也可以利用十個(gè)按鍵,每個(gè)對(duì)應(yīng)一個(gè)十進(jìn)制數(shù)字,進(jìn)行隨意顯示。我更傾向于十個(gè)按鍵同時(shí)使用,這是我的初衷。 我把整個(gè)系統(tǒng)分成四個(gè)模塊,包括分頻模塊、消抖模塊、列控制模塊和顯示模塊。分頻模塊,我通過查找資料和參考試驗(yàn)箱把它設(shè)為1000分頻,偶數(shù)分頻比較容
4、易實(shí)現(xiàn)。消抖要十個(gè)鍵同時(shí)消抖,并且具有保持功能,所以這里需要斟酌一下,否則點(diǎn)陣不能一直點(diǎn)亮,這樣就省去了鎖存模塊,一箭雙雕。列掃描模塊就是利用時(shí)鐘上升沿信號(hào)對(duì)點(diǎn)陣進(jìn)行逐列循環(huán)掃描,把這個(gè)信號(hào)給sel3到sel0作為選擇信號(hào)。顯示模塊就是通過sel端口和按鍵消抖后的信號(hào)進(jìn)行選擇,屬于掃描行信號(hào)。到此就可以很好的做以下細(xì)致的工作了。3.2、工作原理及框圖 (1)工作原理 16×16 LED點(diǎn)陣由四塊8×8 LED 點(diǎn)陣組成,共256個(gè)LED燈,只需要讓對(duì)應(yīng)的LED燈點(diǎn)亮,就可以漢字?jǐn)?shù)字顯示,如圖1、2,列選擇信號(hào)如表1. 圖1.點(diǎn)陣實(shí)物圖 表1. 圖2.點(diǎn)亮示意圖 SEL3SE
5、L2SEL1SEL0點(diǎn)亮列號(hào)1111第1列1110第2列1101第3列1100第4列1011第5列1010第6列1001第7列1000第8列0111第9列0110第10列0101第11列0100第12列0011第13列0010第14列0001第15列0000第16列 (2)系統(tǒng)連接圖, 輸入1MHz的時(shí)鐘,分頻為1K,消抖6ms 圖3. 系統(tǒng)連接總圖3.3、各模塊的程序代碼及仿真結(jié)果 (1)分頻模塊 由于我的是一千分頻,在仿真上很難觀察,所以我的仿真圖是十分頻的。 一千分頻程序library ieee;Use ieee.std_logic_1164.all;use ieee.std_logic
6、_unsigned.all;entity fenpin is port(clk:in std_logic; clk_out:out std_logic);end fenpin;architecture fenpin_1 of fenpin issignal cnt:integer range 0 to 999:=0;begin process(clk) begin if clk'event and clk='1' then -上升沿有效 if cnt=999 then -從0到999為一千 cnt <= 0; else cnt <= cnt+1; end i
7、f; end if; end process;process(cnt)beginif cnt<500 then clk_out<='0'-0到499為低電平else clk_out<='1'end if;end process;end fenpin_1;圖4. 十分頻仿真波形仿真圖 (2)消抖模塊 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xiaodou isport(clk,rst:in std_logic; key_in
8、:in std_logic_vector(0 to 9); -按鍵輸入 key_out:out std_logic_vector(0 to 9);-經(jīng)消抖按鍵輸出end xiaodou;architecture rt1 of xiaodou issignal num:integer range 0 to 5; -計(jì)6次消抖,為6msbeginprocess(clk)beginif(rst='0') thenif(clk'event and clk='1') then if(key_in/="1111111111")then -說明有鍵
9、按下if (num=5)then num<=0;key_out<=key_in; -計(jì)滿6次說明有效else num<=num+1;end if;elsenum<=0;-無鍵按下保持上次的值,計(jì)數(shù)清0end if;end if;elsenum<=0;key_out<="1111111111"end if;end process;end rt1; 從圖5我們看到只要有鍵按下,那么就一直有一個(gè)輸出低電平信號(hào),這說明點(diǎn)陣可以保持點(diǎn)亮狀態(tài)。并且key_in1持續(xù)六個(gè)周期,產(chǎn)生了低電平,而key_in2持續(xù)了5個(gè)周期,沒產(chǎn)生低電平說明消抖確實(shí)是六次
10、即6ms,成功實(shí)現(xiàn)消抖。圖5.按鍵消抖仿真圖形 (3)列掃描模塊 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lie isport(clk:in std_logic; sel:out std_logic_vector(3 downto 0);end lie; architecture control_1 of lie isbeginprocess(clk) variable tmp:std_logic_vector(3 downto 0);beginif clk'ev
11、ent and clk='1' then if tmp="1111" then-循環(huán)16進(jìn)制計(jì)數(shù) tmp:="0000" else tmp:=tmp+1; end if;end if;sel<=tmp-1;end process;end control_1; 仿真圖6 列掃描仿真結(jié)果 (4)顯示模塊 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity xianshi isport( key_out:in std_logi
12、c_vector(0 to 9);-按鍵信號(hào) sel:in std_logic_vector(3 downto 0);-列掃描信號(hào)dout:out std_logic_vector(15 downto 0);-輸出控制行,進(jìn)行相應(yīng)顯示end xianshi; architecture xianshi_1 of xianshi isbegin process(key_out,sel)-把按鍵和列掃描信號(hào)作為敏感信號(hào) begin case key_out is when "0111111111"=> case sel is when "0000"=&g
13、t;dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010"=>dout<="0000000000000000" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when
14、 "1110"=>dout<="0000000000000000" when "1111"=>dout<="0000000000000000"-顯示0 when others=>null; end case; when "1011111111"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout&
15、lt;="0000000000000000" when "0010"=>dout<="0000000000000000" when "0011"=>dout<="0000000000000000" when "0100"=>dout<="0000000000000000" when "1001"=>dout<="0000000000000000" when "
16、1010"=>dout<="0000000000000000" when "1011"=>dout<="0000000000000000" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="00000000000000
17、00" when "1111"=>dout<="0000000000000000"-顯示1 when others=>null; end case; when "1101111111"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010&qu
18、ot;=>dout<="0000000000000000" when "0011"=>dout<="0000000000000000" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="0000000000000000"
19、; when "1111"=>dout<="0000000000000000"-顯示2 when others=>null; end case; when "1110111111"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010"=>
20、;dout<="0000000000000000" when "0011"=>dout<="0000000000000000" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="0000000000000000" when
21、"1111"=>dout<="0000000000000000"-顯示3 when others=>null; end case; when "1111011111"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010"=>dout&l
22、t;="0000000000000000" when "0011"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="0000000000000000" when "1111"=>dout<="0000000000000000"-顯示4 when oth
23、ers=>null; end case; when "1111101111"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010"=>dout<="0000000000000000" when "0011"=>dout<=&quo
24、t;0000000000000000" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="0000000000000000" when "1111"=>dout<="0000000000000000"-顯示5 when others=>
25、;null; end case; when "1111110111"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010"=>dout<="0000000000000000" when "0011"=>dout<="00000
26、00000000000" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="0000000000000000" when "1111"=>dout<="0000000000000000"-顯示6 when others=>null;
27、end case; when "1111111011"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010"=>dout<="0000000000000000" when "0011"=>dout<="000000000000
28、0000" when "0100"=>dout<="0000000000011100" when "0101"=>dout<="0000000000111100" when "0110"=>dout<="0000000011101100" when "0111"=>dout<="0000001111001100" when "1010"=>dout<
29、;="0000000000001100" when "1011"=>dout<="0000000000011100" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="0000000000000000" when "11
30、11"=>dout<="0000000000000000"-顯示7 when others=>null; end case; when "1111111101"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010"=>dout<="
31、;0000000000000000" when "0011"=>dout<="0000000000000000" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="0000000000000000" when "1111"
32、;=>dout<="0000000000000000"-顯示8 when others=>null; end case; when "1111111110"=> case sel is when "0000"=>dout<="0000000000000000" when "0001"=>dout<="0000000000000000" when "0010"=>dout<="000000
33、0000000000" when "0011"=>dout<="0000000000000000" when "1100"=>dout<="0000000000000000" when "1101"=>dout<="0000000000000000" when "1110"=>dout<="0000000000000000" when "1111"=>dout<="0000000000000000"-顯示9 when others=>null; en
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 隧道監(jiān)控量測(cè)必測(cè)項(xiàng)目表
- 燈具安裝方案
- 河北省承德市隆化縣2023-2024學(xué)年四年級(jí)下學(xué)期數(shù)學(xué)期末數(shù)學(xué)試卷(含答案)
- IT創(chuàng)新創(chuàng)業(yè)教育基礎(chǔ) 課件 第1-3講-IT創(chuàng)新創(chuàng)業(yè)的基本概念-IT創(chuàng)新創(chuàng)業(yè)成功要素
- 新疆生產(chǎn)建設(shè)兵團(tuán)第三師圖木舒克市第一中學(xué)2022-2023學(xué)年高二下學(xué)期期末考試化學(xué)試題(含答案)
- 汽車傳感器與檢測(cè)技術(shù)電子教案:現(xiàn)代檢測(cè)系統(tǒng)的構(gòu)成
- 黑龍江省哈爾濱市2022-2023學(xué)年高二下學(xué)期期末考試化學(xué)試題(含答案)
- 從化團(tuán)建活動(dòng)策劃方案
- 付費(fèi)學(xué)員活動(dòng)方案
- 代扣代繳業(yè)務(wù)活動(dòng)方案
- 碳碳復(fù)合材料
- 某水庫除險(xiǎn)加固工程監(jiān)理實(shí)施細(xì)則
- 2025年民航氣象中心公開招聘應(yīng)屆畢業(yè)生6人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 營(yíng)業(yè)性演出管理?xiàng)l例
- 【MOOC】?jī)x器分析-北京化工大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 高等數(shù)學(xué)基礎(chǔ)-002-國(guó)開機(jī)考復(fù)習(xí)資料
- 信息與電子工程導(dǎo)論(浙江大學(xué))知到智慧樹章節(jié)答案
- 公安調(diào)解和解協(xié)議書范本
- 大模型原理與技術(shù)-課件 chap10 多模態(tài)大模型
- TFT-LCD顯示原理介紹
- 2024年陜西省中考物理試題(A卷)含答案
評(píng)論
0/150
提交評(píng)論