
EDA 电子密码锁设计
“很不好意思,今天刚刚得到了毕设答辩通知,时间很仓促了。
而且这个vhdl语言现在也生疏了,弄了半天也没好。
真的是给你整不了这个了。
你找个高手帮忙修改一下吧” 这下面这个是在网上找到的一个,你也试着改改,偶们现在在做毕设,时间很紧。
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -------------------------------------------------------------------- entity exp19 is port( Clk : in std_logic; --时钟信号 Rst : in std_logic; --复位信号 Kr : in std_logic_vector(3 downto 0); --键盘行 Kc : buffer std_logic_vector(3 downto 0); --键盘列 SPK : out std_logic; --扬声器输出 KEY_State : out std_logic; --按键指示 Door : buffer std_logic; --门状态 Display : out std_logic_vector(7 downto 0); --七段码管显示 SEG_SEL : buffer std_logic_vector(2 downto 0)); --七段码管片选 end exp19; -------------------------------------------------------------------- architecture behave of exp19 is signal keyr,keyc : std_logic_vector(3 downto 0); signal kcount : std_logic_vector(2 downto 0); signal kflag1,kflag2 : std_logic; signal buff1,buff2,buff3,buff4,buff5,buff6 : integer range 0 to 15; signal push_num : integer range 0 to 15; --按键次数 signal Disp_Temp : integer range 0 to 15; signal Disp_Decode : std_logic_vector(7 downto 0); signal SEC1,SEC10 : integer range 0 to 9; signal Clk_Count1 : std_logic_vector(3 downto 0); --1KHz时钟分频计数器 signal Clk_Count2 : std_logic_vector(9 downto 0); --2Hz时钟分频计数器 signal Clk1KHz : std_logic; signal Clk2Hz : std_logic; signal Clk1Hz : std_logic; signal Error_Num : integer range 0 to 3; signal Error_Flag : std_logic; signal Error_Count : std_logic_vector(2 downto 0); signal Music_Count : std_logic_vector(2 downto 0); begin process(Clk) begin if(Clk'event and Clk='1') then if(Clk_Count1<10) then Clk_Count1<=Clk_Count1+1; else Clk_Count1<=0001; end if; end if; end process; Clk1KHz<=Clk_Count1(2); process(Clk1KHz) begin if(Clk1KHz'event and Clk1KHz='1') then if(Clk_Count2<1000) then Clk_Count2<=Clk_Count2+1; else Clk_Count2<=0000000001; end if; end if; end process; Clk2Hz<=Clk_Count2(9); process(Clk2Hz) begin if(Clk2Hz'event and Clk2Hz='1') then Clk1Hz<=not Clk1Hz; end if; end process; process(Clk1KHz) --扫描键盘 begin if(Clk1KHz'event and Clk1KHz='1') then if(Kr=1111) then kflag1<='0'; kcount<=kcount+1; if(kcount=0) then kc<=1110; elsif(kcount=1) then kc<=1101; elsif(kcount=2) then kc<=1011; else kc<=0111; end if; else kflag1<='1'; keyr<=Kr; keyc<=Kc; end if; kflag2<=kflag1; end if; end process; KEY_State<=kflag1; process(Clk1KHz,Rst) --扫描键盘 begin if(Rst='0') then push_num<=0; elsif(Clk1KHz'event and Clk1KHz='1') then if(push_num=6) then push_num<=0; elsif(kflag1='0' and kflag2='1') then push_num<=push_num+1; end if; end if; end process; process(Clk1KHz,Rst) --密码校验 begin if(Rst='0') then Door<='0'; Error_Num<=0; Error_Flag<='0'; elsif(Clk1KHz'event and Clk1KHz='1') then if(push_num=5 and Error_Num<3) then --修改此处的值可修改门的密码,此处密码为123456 if(buff1=1 and buff2=2 and buff3=3 and buff4=4 and buff5=5 and buff6=6) then Door<='1'; else Door<='0'; end if; elsif(push_num=6 and Error_Num<3) then if(Door='0') then Error_Flag<='1'; Error_Num<=Error_Num+1; else Error_Flag<='0'; Error_Num<=0; end if; elsif(Error_Count=4) then Error_Flag<='0'; elsif(Error_Flag='1') then Door<=not Error_Count(0); end if; end if; end process; process(Clk2Hz,Rst) begin if(Rst='0' or Error_Flag<='0') then Error_Count<=000; elsif(Clk2Hz'event and Clk2Hz='1' and Error_Flag<='1') then Error_Count<=Error_Count+1; end if; end process; process(Clk) --报警声音分频 begin if(Clk'event and Clk='1') then Music_Count<=Music_Count+1; end if; end process; process(Clk) --超出错误次数,开始报警 begin if(Error_Num>=3) then if(Clk1Hz='1') then SPK<=Music_Count(2); else SPK<=Music_Count(1); end if; end if; end process; process(Clk1KHz,Rst) --显示右移 begin if(Rst='0' or push_num=0) then --复位时,全灭 buff1<=15; buff2<=15; buff3<=15; buff4<=15; buff5<=15; elsif(Clk1KHz'event and Clk1KHz='1') then if(kflag1='1' and kflag2='0' and (((keyr=1110 or keyr=1011)and keyc\\\/=0111)or keyr=1101)) then buff1<=buff2; buff2<=buff3; buff3<=buff4; buff4<=buff5; buff5<=buff6; end if; end if; end process; process(Clk1KHz,Rst) -- 获取键值 begin if(Rst='0' or push_num=6) then --全灭 buff6<=15; elsif(Clk1KHz'event and Clk1KHz='1') then if(kflag1='1' and kflag2='0') then if(keyr=1110) then case keyc is when 1110=>buff6<=1; when 1101=>buff6<=4; when 1011=>buff6<=7; when others=>buff6<=buff6; --no change end case; elsif(keyr=1101) then case keyc is when 1110=>buff6<=2; when 1101=>buff6<=5; when 1011=>buff6<=8; when 0111=>buff6<=0; when others=>buff6<=buff6; --no change end case; elsif(keyr=1011) then case keyc is when 1110=>buff6<=3; when 1101=>buff6<=6; when 1011=>buff6<=9; when others=>buff6<=buff6; --no change end case; end if; end if; end if; end process; process(SEG_SEL) begin case (SEG_SEL+1) is when 000=>Disp_Temp<=10; --'-' when 001=>Disp_Temp<=buff1; when 010=>Disp_Temp<=buff2; when 011=>Disp_Temp<=buff3; when 100=>Disp_Temp<=buff4; when 101=>Disp_Temp<=buff5; when 110=>Disp_Temp<=buff6; when 111=>Disp_Temp<=10; --'1' end case; end process; process(Clk) begin if(Clk'event and Clk='1') then --扫描累加 SEG_SEL<=SEG_SEL+1; Display<=Disp_Decode; end if; end process; process(Disp_Temp) --显示转换 begin case Disp_Temp is when 0=>Disp_Decode<=00111111; --'0' when 1=>Disp_Decode<=00000110; --'1' when 2=>Disp_Decode<=01011011; --'2' when 3=>Disp_Decode<=01001111; --'3' when 4=>Disp_Decode<=01100110; --'4' when 5=>Disp_Decode<=01101101; --'5' when 6=>Disp_Decode<=01111101; --'6' when 7=>Disp_Decode<=00000111; --'7' when 8=>Disp_Decode<=01111111; --'8' when 9=>Disp_Decode<=01101111; --'9' when 10=>Disp_Decode<=01000000; --'-' when others=>Disp_Decode<=00000000; --全灭 end case; end process; end behave;
指纹锁和密码锁哪个更好用
基于51单片机的电子密码锁设计摘要:本文设计了一种基于单片机的电子密码锁,由单片机系统、矩阵键盘、LED显示和报警系统组成。
系统能完成开锁、超次锁定、报警、修改用户密码基本的密码锁的功能。
除上述基本的密码锁功能外,还具有掉电存储、声光提示等功能。
本密码锁具有安全性高、成本低、功耗低、易操作、记住密码即可开锁等优点。
关键词:STC89C52;电子密码锁;矩阵键盘1绪论1.1课题背景随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。
锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。
随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。
据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。
这种锁是通过键盘输入一组密码完成开锁过程。
研究这种锁的初衷,就是为提高锁的安全性。
由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。
电子锁只需记住一组密码,无需携属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。
电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。
但较实用的还是按键式电子密码锁。
1.2课题设计目标本设计采用STC89C52单片机为主控芯片,通过软件程序组成电子密码锁系统,能够实现:(1)密码输入错误,
《电子密码锁》主要参考了哪些文献
本人做毕业设计,急需要这些资料。
我来为你解答你悬赏多少分
指纹锁远程临时密码怎么实现
1、用APP也好,微信小程好,在生成临时密码时,必须正入管理员密码,而这码储存在锁的可读写储存器里。
2、生成临时密码过程不过就是管理员密码加上随机函数通过加密算法生成另一串字符(如果知道算法可反编译,哈哈~吓你),加上随机函数的目的是每次生成的密码不一样。
3、在输入临时密码开锁时,实际上就是通过相同算法,锁的固化程序先把储存器的管理员密码通过相同算法生成临时密码,然后把输入的临时密码随机码字符部分去掉,只取管理员密码。
4、锁的固化程序进行身份验证,将两个临时密码进行逐位比对,如果有一位不问,呵呵你懂的,反之,开门。
5、如果两把锁管理员密码相同,但算法不同,不能互相开锁。
但同一厂家的锁可能算法相同,也就是说同一厂家如果管理员密码相同,可能生成的密码可以相互开锁。
为最大程度避免这种情况,临时密码10分钟内有效。
但这样一来,手机生成密码的时间(年月日时分秒)也被加入到算法里,(即手机生成密码时为管理员密码+随机函数码+当时日期时间)开锁时和锁的时间比对,差距10分钟以上不能开锁。
这样一来,手机时间和锁的时间相差10分钟以上,哪怕生成了密码也不能开锁。
密码锁PLC控制
课程设计说明书课程名称可编程控制器课程设计系别专业班级学号学生姓名指导教师2014年12月摘要随社会的飞速发展,科技也在日益进步,我们的生活慢慢科技化、现代化,个人的隐私显得比以前更加重要。
市面的密码锁大多数为机械锁,单片机控制密码锁,计算机控制密码锁等。
本设计主要以PLC强大的逻辑、计数、计时功能来设计一个四位密码锁,并通过组态软件进行监控。
目录1绪论12系统的硬件配置12.1PLC简介12.2PLC的分类12.3PLC的特点22.4编程元件地址分配32.5控制要求32.6流程图42.7输入输出接线图43系统软件设计53.1梯形图54组态图85课设总结10参考文献11附录121绪论科技的不断发展,社会的不断进步,人们的生活水平也在不断的提高。
在这个大前提下,如何更好的强化家庭防盗这一问题也变得尤其的突出,传统的机械锁由于其构造的简单,“失职”的时间屡见不鲜。
不仅如此,机械锁一般陪有钥匙,易丢失,锁便无用了,因此机械锁注定会被淘汰。
而电子锁保密性高,一般采用多位密码多重加密,即使密码泄漏也可修改密码继续使用;而且安全系数高,对于错误尝试会有报警提示,能更好的防止不法分子的行为。
因此,密码锁受到了广大用户的青睐。
出于安全、方便等方面的需要,许多智能锁已相继问世,但这些产品的特点是针对特定指纹或有效卡,只能适用于保密要求高且仅



