電子鎖實(shí)驗(yàn)報(bào)告_第1頁
電子鎖實(shí)驗(yàn)報(bào)告_第2頁
電子鎖實(shí)驗(yàn)報(bào)告_第3頁
電子鎖實(shí)驗(yàn)報(bào)告_第4頁
電子鎖實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、電子密碼鎖設(shè)計(jì)設(shè)計(jì)任務(wù)及要求分析設(shè)計(jì)一個(gè)電子密碼鎖,在鎖開的狀態(tài)下輸入密碼,設(shè)置的密碼共4位,用數(shù)據(jù)開關(guān)K1K10分別代表數(shù)字1,2,9,0,輸入的密碼用數(shù)碼管顯示,最后輸入的密碼顯示在最右邊的數(shù)碼管上,即每輸入一位數(shù),密碼在數(shù)碼管上的顯示左移一位??蓜h除輸入的數(shù)字,刪除的是最后輸入的數(shù)字,每刪除一位,密碼在數(shù)碼管的顯示右移一位,并在左邊空出的位上補(bǔ)充“0”。用一位輸出電平的狀態(tài)代表鎖的開閉狀態(tài)。根據(jù)題目要求,本次設(shè)計(jì)包括鍵盤輸入電路的設(shè)計(jì),輸出顯示電路的設(shè)計(jì),密碼控制電路。其中輸出顯示電路包括數(shù)碼管顯示電路和密碼鎖開關(guān)狀態(tài)顯示電路。方案比較及認(rèn)證在本次設(shè)計(jì)中,我們使用的Altera公司的FP

2、GA芯片EPF10K10LC84-3。由于采用VHDL 語言設(shè)計(jì),使用FPGA 實(shí)現(xiàn),因而體積小,功耗低、性能特別靈活,稍加修改就可以改變密碼的位數(shù)和輸入密碼的次數(shù),因而升級和維護(hù)都很方便,而且容易做成ASIC 芯片,具有較好的應(yīng)用前景。但由于結(jié)構(gòu)還比較簡單,有待進(jìn)一步完善。系統(tǒng)原理闡述在本實(shí)驗(yàn)中采用的是VHDL編程,通過文本編輯方式建立模塊,通過原理圖方式將生成的圖形符號連接,然后再下載,進(jìn)行硬件的仿真。為達(dá)到密碼鎖的以上功能,可將電子密碼鎖分為以下幾個(gè)模塊進(jìn)行設(shè)計(jì):按鍵輸入電路:2、密碼控制電路:包括密碼刪除、修改與檢驗(yàn)。3、輸出顯示電路。其中,最為關(guān)鍵的是密碼控制電路即主電路的設(shè)計(jì)??梢?/p>

3、為主電路分配如下管腳:其中set為密碼設(shè)置端口, check為密碼檢驗(yàn)端口, close為關(guān)鎖端口, back為刪除密碼端口, clk時(shí)鐘輸入端口, dn3.為數(shù)字輸入端口,lock密碼鎖狀態(tài)顯示端口。在此電路中每輸一位數(shù),密碼在數(shù)碼管上左移一位。設(shè)制刪除密碼back,每按下一次back,刪除最后輸入的數(shù)字,左邊空處補(bǔ)0。設(shè)置密碼確認(rèn)信號set,當(dāng)四位密碼輸入完畢,按下set,設(shè)置的密碼被存儲。設(shè)置密碼鎖狀態(tài)信號lock, lock=0表示鎖未開,lock=1表示鎖開,同時(shí)設(shè)置關(guān)鎖信號close,按下close,則鎖關(guān)閉。設(shè)置密碼檢驗(yàn)信號check,在lock=0下從數(shù)據(jù)開關(guān)書去四位開鎖數(shù)字,

4、按下check,若數(shù)據(jù)等于設(shè)置的密碼或萬能密碼,則lock=1設(shè)計(jì)方案結(jié)構(gòu)圖根據(jù)本次設(shè)計(jì)的特點(diǎn),可以根據(jù)對密碼的處理方式分為密碼輸入模塊,密碼存儲模塊,密碼設(shè)置模塊,密碼顯示模塊。如下圖所示:圖1其中,密碼輸入模塊即為按鍵編碼電路,其原理圖如下。 其中n9.0為按鍵輸入端口, sout3.0為輸出端口。按鍵輸入編碼通過案件輸入高低電平,每按一個(gè)鍵通過編碼顯示對應(yīng)的數(shù)字。圖2 密碼存儲模塊即使用EPF10K10LC84-3芯片中的寄存器模塊。密碼控制模塊的原理圖如所示。其中set為密碼設(shè)置端口, check為密碼檢驗(yàn)端口, close為關(guān)鎖端口, back為刪除密碼端口, clk時(shí)鐘輸入端口,

5、dn3.為數(shù)字輸入端口,sout15.0為16位輸出端口,lock密碼鎖狀態(tài)顯示端口。圖3軟件設(shè)計(jì)軟件思想為了簡化設(shè)計(jì)過程,根據(jù)fpga的設(shè)計(jì)特點(diǎn),我在本次設(shè)計(jì)過程中將整個(gè)軟件設(shè)計(jì)分成不同的功能模塊:鍵盤輸入模塊,數(shù)碼管顯示模塊,密碼存儲模塊,密碼匹配模塊。對上述每個(gè)模塊進(jìn)行程序編程和波形仿真正確以后,再把它們添加至工程下進(jìn)行整體編譯,管腳分配和整體原理圖生成。最后對整個(gè)工程進(jìn)行功能仿真。流程圖整體流程圖圖4密碼設(shè)置流程圖 圖6源程序及程序注釋鍵盤輸入電路的VHDL語言源程序library ieee; -定義實(shí)體use ieee.std_logic_1164.all; use ieee.std

6、_logic_unsigned.all;entity tra isport( n:in std_logic_vector(9 downto 0); -定義按鍵輸入端口sout:out std_logic_vector(3 downto 0); -定義編碼輸入端口end tra; architecture at of tra is -定義結(jié)構(gòu)體signal temp:std_logic_vector(3 downto 0); beginprocess(n)begin case n is -輸入鍵編碼when "0000000001"=>temp<="00

7、01"when "0000000010"=>temp<="0010"when "0000000100"=>temp<="0011"when "0000001000"=>temp<="0100"when "0000010000"=>temp<="0101"when "0000100000"=>temp<="0110"when &q

8、uot;0001000000"=>temp<="0111"when "0010000000"=>temp<="1000"when "0100000000"=>temp<="1001"when "1000000000"=>temp<="0000"when others=>temp<="1111"end case;end process;sout<=temp; -s

9、out怎么傳出的end at;數(shù)碼管顯示電路的VHDL語言源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity leds is -定義實(shí)體port(din:in std_logic_vector(15 downto 0); -16輸入信號clk:in std_logic; -時(shí)鐘信號 con: buffer std_logic_vector(1 downto 0); led7:out std_logic_vector(6 downto 0); -七段數(shù)碼管輸入信號sn:out std

10、_logic_vector(2 downto 0); -數(shù)碼管七段譯碼信號end leds;architecture he of leds is -定義結(jié)構(gòu)體signal db:std_logic_vector(3 downto 0);begin process(clk,din)beginif clk'event and clk='1' thencon<=con+1; -數(shù)碼管的片選計(jì)數(shù) end if;if(con="00") then -片選為0,03位顯示db<=din(3 downto 0);sn<="000&quo

11、t;elsif(con="01") then -片選為1,47位顯示db<=din(7 downto 4);sn<="001"elsif(con="10") then -片選為2,811位顯示db<=din(11 downto 8);sn<="010"elsif(con="11") then -片選為3,1215位顯示db<=din(15 downto 12);sn<="011"end if;case db is -數(shù)碼管的譯碼when &

12、quot;0000"=>led7<="0111111"when "0001"=>led7<="0000110"when "0010"=>led7<="1011011"when "0011"=>led7<="1001111"when "0100"=>led7<="1100110"when "0101"=>led7<=&

13、quot;1101101"when "0110"=>led7<="1111101"when "0111"=>led7<="0000111"when "1000"=>led7<="1111111"when "1001"=>led7<="1101111"when others=>led7<="0000000"end case;end process;e

14、nd he;密碼存儲電路的VHDL語言源程序library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity regm is -實(shí)體定義port(set,check:in std_logic;clk:in std_logic;c:in std_logic_vector(15 downto 0); a,b:out std_logic_vector(15 downto 0); clr:out std_logic);end regm;architecture behv of regm is -結(jié)構(gòu)體定義b

15、egin process(set,check,clk)begin if clk'event and clk='1' then if set='1' then -設(shè)置密碼時(shí),輸入數(shù)據(jù)送給a,顯示電路清零 a<=c; clr<='0' else clr<='1'end if;if check='1' then -檢驗(yàn)時(shí),輸入數(shù)據(jù)送給b b<=c;end if;end if;end process;end behv;密碼匹配電路的VHDL語言源程序library ieee;use ieee

16、.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity compare is -實(shí)體定義port(a,b:in std_logic_vector(15 downto 0); sd0:out std_logic);end compare;architecture a of compare is -結(jié)構(gòu)體定義 beginprocess(a,b)beginif a>"00000" and b>"00000" then -若有按鍵if a=b then -若a=bsd0<='

17、0' -觸發(fā)器置位為1 elsif a="11000"then -或?yàn)槿f能密碼,觸發(fā)器置位為1 sd0<='0' else sd0<='1'end if;end if;end process;end a;密碼控制電路的VHDL語言源程序library ieee; -實(shí)體定義use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity zhang isport(blk:in ack,cstd_logic; n:in std_logic_vector(9

18、downto 0);sout:std_logic_vector(15 downto 0);end zhang;architecture at of zhang is -結(jié)構(gòu)體定義signal temp:std_logic_vector(3 downto 0);signal fn:std_logic;signal acc:std_logic_vector(15 downto 0);signal nc:std_logic_vector(2 downto 0);beginprocess(clk,n)beginif clk'event and clk='1' then -輸入開

19、關(guān)編碼 case n iswhen "0000000001"=>temp<="0001"when "0000000010"=>temp<="0010"when "0000000100"=>temp<="0011"when "0000001000"=>temp<="0100"when "0000010000"=>temp<="0101"wh

20、en "0000100000"=>temp<="0110"when "0001000000"=>temp<="0111"when "0010000000"=>temp<="1000"when "0100000000"=>temp<="1001"when "1000000000"=>temp<="0000"when others=>temp<="1111"end case;fn<=not(temp(3) and temp(2) and temp(1) and temp(0); -設(shè)置輸入上升沿nc:="000" if fn='1' then if nc<4 then -輸入左移控制 acc<=acc(11 downto 0)&temp; nc<=nc+1; end i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論