




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2.2系統(tǒng)的輸入、輸出端口以及寄存器清單及說明: CLK 輸入時鐘方波信號端口 KIN 鍵盤按鍵輸入端口 KOUT 鍵盤完整編碼碼值輸出端口(七位二進制數(shù)) KOUT1 掃描信號輸出端口(三位二進制數(shù)) SIN 鍵盤消抖輸入端口(七位二進制數(shù)) SOUT 鍵盤消抖輸出端口(七位二進制數(shù)) LIN 鍵盤按鍵編碼模塊輸入端口(七位二進制數(shù)) DF 數(shù)字按鍵標志寄存器 FF 功能按鍵標志寄存器 ND 數(shù)字按鍵識別編碼寄存器 NF 功能按鍵識別編碼寄存器 LOCK 電子密碼鎖上鎖狀態(tài)標志寄存器 LOCK1 電子密碼鎖報警狀態(tài)標志寄存器 UNLOCK 電子密碼鎖開鎖狀態(tài)標志寄存器 NULL1 電子密碼鎖
2、無密碼狀態(tài)標志寄存器 DATA 電子密碼鎖數(shù)碼顯示數(shù)據(jù)寄存器 CAT 電子密碼鎖數(shù)碼顯示位選寄存器 DISPLAY 電子密碼鎖數(shù)碼顯示段選寄存器(十七位二進制數(shù)) NUM0、NUM1、NUM2、NUM3數(shù)碼顯示中分位顯示數(shù)據(jù)寄存器 DISNUM 數(shù)碼顯示段選數(shù)據(jù)寄存器 I1 數(shù)碼顯示計數(shù)器 SCANS 鍵盤掃描中按鍵完整編碼寄存器 SCAN 鍵盤掃描寄存器 CNT 鍵盤消抖計數(shù)器 SIN1 鍵盤按鍵鍵值寄存器 I 鍵盤掃描計數(shù)器 DF1 數(shù)字按鍵狀態(tài)標志寄存器 ACC 鍵盤數(shù)字輸入暫存器 T 報警計數(shù)器 REG 電子密碼鎖密碼存儲器 NC 計數(shù)器1鍵盤輸入掃描部分源程序LIBRARY IEEE
3、;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY kbscan1 is PORT(clk:in STD_LOGIC; kin:in STD_LOGIC_VECTOR(3 DOWNTO 0);-PC7-PC4 kout:out STD_LOGIC_VECTOR(7 downto 0);-PC3-PC kout1: out STD_LOGIC_VECTOR(3 downto 0); end kbscan1; architecture a of kbscan
4、1 is signal scans: std_logic_vector(7 downto 0);-PC7-PC0 signal scan : std_logic_vector(3 downto 0);-PC3-PC0 signal cnt :integer range 0 to 140; signal sin1:std_logic_vector(3 downto 0); signal i:integer range 0 to 3; begin scans<=scan& kin; kout<=scans; kout1<=scan; process(clk) begin
5、if(falling_edge(clk)then if(i=3)then i<=0; else i<=i+1; end if; case i is when 0=>scan<="0001" when 1=>scan<="0010" when 2=>scan<="0100" when 3=>scan<="1000" end case; end if; end process; End a;2鍵盤輸入消抖部分源程序LIBRARY IEEE;USE IEEE.S
6、TD_LOGIC_1164.ALL;ENTITY xiaodou is Port(clk :in STD_LOGIC; sin:in std_logic_vector(7 downto 0); sout:out std_logic_vector(7 downto 0); end xiaodou; architecture behavioral of xiaodou is signal cnt :integer range 0 to 120; signal sin1:std_logic_vector(7 downto 0); begin process(clk) begin sin1<=s
7、in; if (rising_edge(clk)then if(sin1=sin)then cnt<=cnt+1; else sin1<=sin; cnt<=0; end if; if(cnt=120)then sout<=sin; cnt<=0; end if; end if; end process; end behavioral; 3鍵盤輸入編碼部分源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;E
8、NTITY bianma is PORT(clk:in STD_LOGIC; lin:in STD_LOGIC_VECTOR(7 DOWNTO 0);-PC7-PC4 DF,FF: out std_logic; nd,nf:BUFFER std_logic_vector(3 downto 0); end bianma; architecture b of bianma is begin process(clk) begin if clk'event and clk='1' then case lin is when"10000001"=>ND&
9、lt;="0000"-0 when"00010001"=>ND<="0001"-1 when"00010010"=>ND<="0010"-2 when"00010100"=>ND<="0011"-3 when"00100001"=>ND<="0100"-4 when"00100010"=>ND<="0101"-5 wh
10、en"00100100"=>ND<="0110"-6 when"01000001"=>ND<="0111"-7 when"01000010"=>ND<="1000"-8 when"01000100"=>ND<="1001"-9 when others =>ND<="1111" END CASE; END IF; IF CLK'EVENT AND CL
11、K='1' THEN CASE LIN IS when"00011000"=>NF<="0001"-qingchu when"00101000"=>NF<="0010"-queren when"01001000"=>NF<="0011"-shangsuo when"10001000"=>NF<="0100"-kaisuo when"10000100"=&
12、gt;NF<="0101"-wangjimima when"10000010"=>NF<="0111"-genggaimima When others =>NF<="1000" END CASE; END IF; END PROCESS; DF<=NOT(ND(3) AND ND(2) AND ND(1) AND ND(0); FF<=NF(2) OR NF(1) OR NF(0); end b;4 電子密碼鎖的控制部分程序DF 數(shù)字按鍵標志寄存器 FF 功能按鍵標志寄存器
13、 ND 數(shù)字按鍵識別編碼寄存器 NF 功能按鍵識別編碼寄存器 LOCK 電子密碼鎖上鎖狀態(tài)標志寄存器 LOCK1 電子密碼鎖報警狀態(tài)標志寄存器 UNLOCK 電子密碼鎖開鎖狀態(tài)標志寄存器 NULL1 電子密碼鎖無密碼狀態(tài)標志寄存器 DATA 電子密碼鎖數(shù)碼顯示數(shù)據(jù)寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY kongzhi IS PORT(CLK: IN STD_LOGIC; DF,FF: in STD_LOGIC; ND,NF:in STD_LOGIC_VECTOR(3 downTO 0); LOCK,LOCK1,UNLOCK:buff
14、er STD_LOGIC; NULL1: buffer STD_LOGIC; DATA: out STD_LOGIC_VECTOR(15 downTO 0) ); END kongzhi; ARCHITECTURE V1 OF kongzhi IS signal i1:integer range 0 to 3; signal df1:std_logic; signal ACC: STD_LOGIC_VECTOR(15 DOWNTO 0); signal t: INTEGER RANGE 0 TO 2; signal REG:STD_LOGIC_VECTOR(15 downTO 0); sign
15、al NC,A:INTEGER RANGE 0 TO 3; begin PROCESS(FF,DF)IS BEGIN if rising_edge(clk) then IF FF='1'THEN IF NF="0001"THEN ACC<="0000000000000000" NC<=0; END IF; ELSE df1<=df; IF df1='0'and DF='1' THEN IF NC<4 THEN ACC<=ACC(11 DOWNTO 0)&ND; NC&l
16、t;=NC+1; END IF; END IF; END IF; IF FF='1' THEN IF NF="0011" THEN REG<=ACC; LOCK<='0' UNLOCK<='1' LOCK1<='1' NULL1<='1' else IF NF="0100" THEN IF REG=ACC THEN LOCK<='1' UNLOCK<='0' LOCK1<='1'
17、NULL1<='1' ELSE LOCK<='0' UNLOCK<='1' IF t=2 THEN REG<="1000100010001000" LOCK1<='0' lock<='1' unlock<='1' null1<='1' t<=0; ELSE t<=t+1; END IF; END IF; else IF NF="0101" THEN REG<="1000
18、100010001000" LOCK<='0' UNLOCK<='1' LOCK1<='1' NULL1<='1' else IF NF="0111" THEN IF UNLOCK='1' THEN IF REG=ACC THEN REG<="0000000000000000" NULL1<='0' LOCK<='1' LOCK1<='1' UNLOCK<='
19、;1' END IF; END IF; else IF NF="0010" THEN REG<=ACC; NULL1<='1' LOCK<='0' LOCK1<='1' UNLOCK<='1' END IF; end if; end if; end if; end if; end if; end if; END PROCESS; DATA<=ACC; END ARCHITECTURE V1; CAT 電子密碼鎖數(shù)碼顯示位選寄存器 DISPLAY 電子密碼鎖數(shù)碼顯示段選
20、寄存器(十七位二進制數(shù)) DISPLAY 電子密碼鎖數(shù)碼顯示段選寄存器(十七位二進制數(shù)) NUM0、NUM1、NUM2、NUM3數(shù)碼顯示中分位顯示數(shù)據(jù)寄存器 DISNUM 數(shù)碼顯示段選數(shù)據(jù)寄存器 I1 數(shù)碼顯示計數(shù)器 5電子密碼鎖的數(shù)碼顯示模塊源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LEDXIANSHI IS PORT(CLK :IN STD_LOGIC; DATA: in STD_LOGIC_VECTOR (15 DOWNTO 0); CAT:OUT STD_LOGIC_VECTOR(0 TO 3); DISPLAY:OUT ST
21、D_LOGIC_VECTOR(16 DOWNTO 0); END LEDXIANSHI; ARCHITECTURE BEHAVIORAL OF LEDXIANSHI IS Signal NUM0,NUM1,NUM2,NUM3: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DISNUM:STD_LOGIC_VECTOR(16 DOWNTO 0); SIGNAL I1:INTEGER RANGE 0 TO 3; BEGIN NUM0<=DATA(3 DOWNTO 0);NUM1<=DATA(7 DOWNTO 4);NUM2<=DATA(11 DOWN
22、TO 8);NUM3<=DATA(15 DOWNTO 12); DISPLAY<=DISNUM; PROCESS(CLK) BEGIN IF(RISING_EDGE(CLK)THEN IF(I1=3)THEN I1<=0; ELSE I1<=I1+1; END IF; END IF; END PROCESS; PROCESS(I1) BEGIN CASE I1 IS WHEN 0=>CAT<="1110" CASE NUM0 IS WHEN "0000"=>DISNUM<="00000000011
23、111111" WHEN "0001"=>DISNUM<="00000000000001100" WHEN "0010"=>DISNUM<="00001000101110111" WHEN "0011"=>DISNUM<="00001000100111111" WHEN "0100"=>DISNUM<="01001010110000000" WHEN "0101&quo
24、t;=>DISNUM<="00001100110111011" WHEN "0110"=>DISNUM<="00001000111111011" WHEN "0111"=>DISNUM<="00000000000001111" WHEN "1000"=>DISNUM<="00001000111111111" WHEN "1001"=>DISNUM<="00001000
25、110111111" WHEN OTHERS=>DISNUM<=NULL; END CASE; WHEN 1 => CAT<="1101" CASE NUM1 IS WHEN "0000"=>DISNUM<="00000000011111111" WHEN "0001"=>DISNUM<="00000000000001100" WHEN "0010"=>DISNUM<="0000100010111
26、0111" WHEN "0011"=>DISNUM<="00001000100111111" WHEN "0100"=>DISNUM<="01001010110000000" WHEN "0101"=>DISNUM<="00001100110111011" WHEN "0110"=>DISNUM<="00001000111111011" WHEN "0111"
27、=>DISNUM<="00000000000001111" WHEN "1000"=>DISNUM<="00001000111111111" WHEN "1001"=>DISNUM<="00001000110111111" WHEN OTHERS=>DISNUM<=NULL; END CASE; WHEN 2=> CAT<="1011" CASE NUM2 IS WHEN "0000"=>D
28、ISNUM<="00000000011111111" WHEN "0001"=>DISNUM<="00000000000001100" WHEN "0010"=>DISNUM<="00001000101110111" WHEN "0011"=>DISNUM<="00001000100111111" WHEN "0100"=>DISNUM<="0100101011000000
29、0" WHEN "0101"=>DISNUM<="00001100110111011" WHEN "0110"=>DISNUM<="00001000111111011" WHEN "0111"=>DISNUM<="00000000000001111" WHEN "1000"=>DISNUM<="00001000111111111" WHEN "1001"=&g
30、t;DISNUM<="00001000110111111" WHEN OTHERS=>DISNUM<=NULL; END CASE; WHEN 3=> CAT<="0111" CASE NUM3 IS WHEN "0000"=>DISNUM<="00000000011111111" WHEN "0001"=>DISNUM<="00000000000001100" WHEN "0010"=>DISN
31、UM<="00001000101110111" WHEN "0011"=>DISNUM<="00001000100111111" WHEN "0100"=>DISNUM<="01001010110000000" WHEN "0101"=>DISNUM<="00001100110111011" WHEN "0110"=>DISNUM<="00001000111111011&q
32、uot; WHEN "0111"=>DISNUM<="00000000000001111" WHEN "1000"=>DISNUM<="00001000111111111" WHEN "1001"=>DISNUM<="00001000110111111" WHEN OTHERS=>DISNUM<=NULL; END CASE; END CASE; END PROCESS; END BEHAVIORAL;6電子密碼鎖的數(shù)碼顯示部分
33、(附加)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LEDXIANSHI IS PORT(CLK :IN STD_LOGIC; DATA: in STD_LOGIC_VECTOR (15 DOWNTO 0); CAT:OUT STD_LOGIC_VECTOR(0 TO 3); DISPLAY:OUT STD_LOGIC_VECTOR(16 DOWNTO 0); END LEDXIANSHI; ARCHITECTURE BEHAVIORAL OF LEDXIANSHI IS signal NUM0,NUM1,NUM2,NUM3: STD_LOG
34、IC_VECTOR(3 DOWNTO 0); SIGNAL DISNUM:STD_LOGIC_VECTOR(16 DOWNTO 0); SIGNAL I1:INTEGER RANGE 0 TO 3; BEGIN NUM0<=DATA(3 DOWNTO 0);NUM1<=DATA(7 DOWNTO 4);NUM2<=DATA(11 DOWNTO 8);NUM3<=DATA(15 DOWNTO 12); DISPLAY<=DISNUM; PROCESS(CLK) BEGIN IF(RISING_EDGE(CLK)THEN IF(I1=3)THEN I1<=0;
35、ELSE I1<=I1+1; END IF; END IF; END PROCESS; PROCESS(I1) BEGIN CASE I1 IS WHEN 0=>CAT<="1110" CASE NUM0 IS WHEN "0000"=>DISNUM<="00000000011111111" WHEN OTHERS=>DISNUM<="01111111100000000" END CASE; WHEN 1=> CAT<="1101" CASE
36、 NUM1 IS WHEN "0000"=>DISNUM<="00000000011111111" WHEN OTHERS=>DISNUM<="01111111100000000" END CASE; WHEN 2=> CAT<="1011" CASE NUM2 IS WHEN "0000"=>DISNUM<="00000000011111111" WHEN OTHERS=>DISNUM<="0111111
37、1100000000" END CASE; WHEN 3=> CAT<="0111" CASE NUM3 IS WHEN "0000"=>DISNUM<="00000000011111111" WHEN OTHERS=>DISNUM<="01111111100000000" END CASE; END CASE; END PROCESS; END BEHAVIORAL;數(shù)碼管顯示library IEEE;use IEEE.STD_LOGIC_1164.ALL;use I
38、EEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity KeyScan isport(RESET:in std_logic;CLK:in std_logic; -基本時鐘源6MHzKeyIn:in std_logic_vector(3 downto 0);-column列KeyOut:out std_logic_vector(3 downto 0); -row行LED_A: out std_logic; -4位數(shù)碼管引腳LED_B: out std_logic;LED_C: out std_logic;LED_D: out
39、std_logic;LED_E: out std_logic;LED_F: out std_logic;LED_G: out std_logic;LED_VCC1: out std_logic; -時十位LED_VCC2: out std_logic; -時個位LED_VCC3: out std_logic; -分十位LED_VCC4: out std_logic; -分個位LED_TimePoint:out std_logic; -冒號LED_Point:out std_logic; -小數(shù)點 LED_EN1:out std_logic -小數(shù)點 );end KeyScan;architec
40、ture Behavioral of KeyScan issignal timecnt:integer range 0 to 100000; -分頻計數(shù)器,用來得到10ms時鐘signal time10ms:std_logic;-10ms時鐘signal scanvalue : std_logic_vector(3 downto 0);-記錄掃描數(shù)據(jù)signal combvalue : std_logic_vector(7 downto 0);-KeyIn、KeyOut組合值signal cpy_scanvalue : std_logic_vector(3 downto 0);-備份掃描數(shù)據(jù)s
41、ignal count:integer range 0 to 60000;-分頻器,產生毫秒時鐘基準signal scancnt:integer range 0 to 3;-LED掃描輪轉signal Data0:integer range 0 to 9; beginLED_EN1<='0'-進程1:產生20ms時鐘process( CLK,RESET)beginif RESET='0' then time10ms<='0'-初始化elsif CLK'event and CLK='1' thentimecnt&
42、lt;=timecnt+1;if timecnt=100000 then time10ms<=not time10ms; timecnt<=0;end if;end if;end process;-進程2:鍵盤掃描輸出process( time10ms,RESET)beginif RESET='0' then scanvalue<="0001"combvalue<="00000000"Data0<=0;-初始化elsif time10ms'event and time10ms='1'
43、then-每10ms進行一次鍵盤掃描KeyOut<=scanvalue; -輸出掃描值 cpy_scanvalue<=scanvalue; -備份掃描值,為了進程3對掃描結果進行比較 case scanvalue is -掃描值移位when "0001" => scanvalue<="0010"when "0010" => scanvalue<="0100"when "0100" => scanvalue<="1000"when
44、 "1000" => scanvalue<="0001"when others => scanvalue<="0001" end case;combvalue<= (KeyIn & cpy_scanvalue); -組合鍵盤掃描的輸入和輸出 case combvalue is -翻譯掃描結果when "00010001" => Data0<=1; -對應鍵盤“1”when "00100001" => Data0<=2; -對應鍵盤“2
45、”when "01000001" => Data0<=3; -對應鍵盤“3”when "00010010" => Data0<=4; -對應鍵盤“4”when "00100010" => Data0<=5; -對應鍵盤“5”when "01000010" => Data0<=6; -對應鍵盤“6”when "00010100" => Data0<=7; -對應鍵盤“7”when "00100100" => Da
46、ta0<=8; -對應鍵盤“8”when "01000100" => Data0<=9; -對應鍵盤“9”when "00011000" => Data0<=0; -對應鍵盤“0”when others => null; -無鍵盤按下 end case;end if;end process;-數(shù)碼管掃描 process(CLK,RESET)-時鐘進程,產生各種時鐘信號beginif RESET='0' then NULL;elsif CLK'event and CLK='1' t
47、hen count<=count+1;if count=60000 then count<=0;if scancnt>3 then scancnt<=0; else scancnt<=scancnt+1;end if;end if; end if;end process;-數(shù)碼管掃描 process(CLK, RESET)begin-LED_VCC信號是1有效,其余信號均為0有效,中間的冒號兩個點分別由VCC2和VCC3控制if RESET='0' then LED_A<='1'LED_B<='1'LED_C<='1'LED_D<='1'LED_E<='1'LED_F<='1'LED_G<='1'LED_VCC1<='0'LED_VCC2<='0' LED_VCC3<='0'LED_VCC4<='0'LED_TimePoint<='1'LED_Po
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年廣東省東莞市七校高一下學期期中聯(lián)考政治試題及答案
- 民間美術教學課件
- 情感分析的跨領域遷移學習策略考核試卷
- 醫(yī)院網(wǎng)絡安全風險管理策略制定考核試卷
- 志愿服務與鄉(xiāng)村產業(yè)發(fā)展互動考核試卷
- 化學中期考試題及答案
- 工業(yè)倍增面試題及答案
- 洪災救助面試題及答案
- 洪洞事業(yè)編試題及答案
- 外貿物流試題及答案
- 2025至2030中國改裝車行業(yè)深度發(fā)展研究與企業(yè)投資戰(zhàn)略規(guī)劃報告
- 鎮(zhèn)江市鑫泰絕緣材料有限公司新型絕緣材料生產項目環(huán)評資料環(huán)境影響
- 商業(yè)領域的數(shù)字化轉型與人才培養(yǎng)的深度融合研究報告
- 2025年木板式家具行業(yè)深度研究報告
- 2025屆陜西省西安西工大附中物理八下期末質量檢測試題含解析
- 2025年中考數(shù)學模擬試卷及答案(共五套)
- 《成人糖尿病患者的高血糖危象:共識報告》-學習與應用
- 2024年浙江省三支一扶考試真題
- 應收賬款信用風險的識別、評估與防控機制研究
- 鍍鋅板知識課件
- 豬場退股協(xié)議書范本
評論
0/150
提交評論