电子锁实验报告.docx
- 文档编号:4494686
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:12
- 大小:130.28KB
电子锁实验报告.docx
《电子锁实验报告.docx》由会员分享,可在线阅读,更多相关《电子锁实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
电子锁实验报告
电子密码锁设计
设计任务及要求分析
设计一个电子密码锁,在锁开的状态下输入密码,设置的密码共4位,用数据开关K1~K10分别代表数字1,2,…,9,0,输入的密码用数码管显示,最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位。
可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”。
用一位输出电平的状态代表锁的开闭状态。
根据题目要求,本次设计包括键盘输入电路的设计,输出显示电路的设计,密码控制电路。
其中输出显示电路包括数码管显示电路和密码锁开关状态显示电路。
方案比较及认证
在本次设计中,我们使用的Altera公司的FPGA芯片EPF10K10LC84-3。
由于采用VHDL语言设计,使用FPGA实现,因而体积小,功耗低、性能特别灵活,稍加修改就可以改变密码的位数和输入密码的次数,因而升级和维护都很方便,而且容易做成ASIC芯片,具有较好的应用前景。
但由于结构还比较简单,有待进一步完善。
系统原理阐述
在本实验中采用的是VHDL编程,通过文本编辑方式建立模块,通过原理图方式将生成的图形符号连接,然后再下载,进行硬件的仿真。
为达到密码锁的以上功能,可将电子密码锁分为以下几个模块进行设计:
按键输入电路:
2、密码控制电路:
包括密码删除、修改与检验。
3、输出显示电路。
其中,最为关键的是密码控制电路即主电路的设计。
可以为主电路分配如下管脚:
其中set为密码设置端口,check为密码检验端口,close为关锁端口,back为删除密码端口,clk时钟输入端口,dn[3..]为数字输入端口,lock密码锁状态显示端口。
在此电路中每输一位数,密码在数码管上左移一位。
设制删除密码back,每按下一次back,删除最后输入的数字,左边空处补0。
设置密码确认信号set,当四位密码输入完毕,按下set,设置的密码被存储。
设置密码锁状态信号lock,lock=0表示锁未开,lock=1表示锁开,同时设置关锁信号close,按下close,则锁关闭。
设置密码检验信号check,在lock=0下从数据开关书去四位开锁数字,按下check,若数据等于设置的密码或万能密码,则lock=1
设计方案结构图
根据本次设计的特点,可以根据对密码的处理方式分为密码输入模块,密码存储模块,密码设置模块,密码显示模块。
如下图所示:
图1
其中,密码输入模块即为按键编码电路,其原理图如下。
其中n[9..0]为按键输入端口,sout[3..0]为输出端口。
按键输入编码通过案件输入高低电平,每按一个键通过编码显示对应的数字。
图2
密码存储模块即使用EPF10K10LC84-3芯片中的寄存器模块。
密码控制模块的原理图如所示。
其中set为密码设置端口,check为密码检验端口,close为关锁端口,back为删除密码端口,clk时钟输入端口,dn[3..]为数字输入端口,sout[15..0]为16位输出端口,lock密码锁状态显示端口。
图3
软件设计
软件思想
为了简化设计过程,根据fpga的设计特点,我在本次设计过程中将整个软件设计分成不同的功能模块:
键盘输入模块,数码管显示模块,密码存储模块,密码匹配模块。
对上述每个模块进行程序编程和波形仿真正确以后,再把它们添加至工程下进行整体编译,管脚分配和整体原理图生成。
最后对整个工程进行功能仿真。
流程图
整体流程图
图4
密码设置流程图
图6
源程序及程序注释
键盘输入电路的VHDL语言源程序
libraryieee;---定义实体
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitytrais
port(n:
instd_logic_vector(9downto0);---定义按键输入端口
sout:
outstd_logic_vector(3downto0));----定义编码输入端口
endtra;
architectureatoftrais-----定义结构体
signaltemp:
std_logic_vector(3downto0);
begin
process(n)
begin
casenis----输入键编码
when"0000000001"=>temp<="0001";
when"0000000010"=>temp<="0010";
when"0000000100"=>temp<="0011";
when"0000001000"=>temp<="0100";
when"0000010000"=>temp<="0101";
when"0000100000"=>temp<="0110";
when"0001000000"=>temp<="0111";
when"0010000000"=>temp<="1000";
when"0100000000"=>temp<="1001";
when"1000000000"=>temp<="0000";
whenothers=>temp<="1111";
endcase;
endprocess;
sout<=temp;----sout怎么传出的
endat;
数码管显示电路的VHDL语言源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityledsis-----定义实体
port(din:
instd_logic_vector(15downto0);----16输入信号
clk:
instd_logic;---时钟信号
con:
bufferstd_logic_vector(1downto0);
led7:
outstd_logic_vector(6downto0);---七段数码管输入信号
sn:
outstd_logic_vector(2downto0));----数码管七段译码信号
endleds;
architectureheofledsis-----定义结构体
signaldb:
std_logic_vector(3downto0);
begin
process(clk,din)
begin
ifclk'eventandclk='1'then
con<=con+1;----数码管的片选计数
endif;
if(con="00")then---片选为0,0~3位显示
db<=din(3downto0);
sn<="000";
elsif(con="01")then----片选为1,4~7位显示
db<=din(7downto4);
sn<="001";
elsif(con="10")then----片选为2,8~11位显示
db<=din(11downto8);
sn<="010";
elsif(con="11")then----片选为3,12~15位显示
db<=din(15downto12);
sn<="011";
endif;
casedbis----数码管的译码
when"0000"=>led7<="0111111";
when"0001"=>led7<="0000110";
when"0010"=>led7<="1011011";
when"0011"=>led7<="1001111";
when"0100"=>led7<="1100110";
when"0101"=>led7<="1101101";
when"0110"=>led7<="1111101";
when"0111"=>led7<="0000111";
when"1000"=>led7<="1111111";
when"1001"=>led7<="1101111";
whenothers=>led7<="0000000";
endcase;
endprocess;
endhe;
密码存储电路的VHDL语言源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityregmis---实体定义port(set,check:
instd_logic;
clk:
instd_logic;
c:
instd_logic_vector(15downto0);
a,b:
outstd_logic_vector(15downto0);
clr:
outstd_logic);
endregm;
architecturebehvofregmis----结构体定义
begin
process(set,check,clk)
begin
ifclk'eventandclk='1'then
ifset='1'then---设置密码时,输入数据送给a,显示电路清零
a<=c;
clr<='0';
elseclr<='1';
endif;
ifcheck='1'then----检验时,输入数据送给b
b<=c;
endif;
endif;
endprocess;
endbehv;
密码匹配电路的VHDL语言源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycompareis---实体定义
port(a,b:
instd_logic_vector(15downto0);
sd0:
outstd_logic);
endcompare;
architectureaofcompareis----结构体定义
begin
process(a,b)
begin
ifa>"0000000000000000"andb>"0000000000000000"then----若有按键
ifa=bthen----若a=b
sd0<='0';---触发器置位为1
elsifa="1000100010001000"then---或为万能密码,触发器置位为1
sd0<='0';
elsesd0<='1';
endif;
endif;
endprocess;
enda;
密码控制电路的VHDL语言源程序
libraryieee;---实体定义
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityzhangis
port(blk:
inack,cstd_logic;
n:
instd_logic_vector(9downto0);
sout:
std_logic_vector(15downto0));
endzhang;
architectureatofzhangis----结构体定义
signaltemp:
std_logic_vector(3downto0);
signalfn:
std_logic;
signalacc:
std_logic_vector(15downto0);
signalnc:
std_logic_vector(2downto0);
begin
process(clk,n)
begin
ifclk'eventandclk='1'then----输入开关编码
casenis
when"0000000001"=>temp<="0001";
when"0000000010"=>temp<="0010";
when"0000000100"=>temp<="0011";
when"0000001000"=>temp<="0100";
when"0000010000"=>temp<="0101";
when"0000100000"=>temp<="0110";
when"0001000000"=>temp<="0111";
when"0010000000"=>temp<="1000";
when"0100000000"=>temp<="1001";
when"1000000000"=>temp<="0000";
whenothers=>temp<="1111";
endcase;
fn<=not(temp(3)andtemp
(2)andtemp
(1)andtemp(0));----设置输入上升沿
nc:
="000";
iffn='1'then
ifnc<4then----输入左移控制
acc<=acc(11downto0)&temp;
nc<=nc+1;
endif;
endif;
ifback='1'then----删除右移控制
ifnc>=0then
acc<="0000"&acc(15downto4);
nc<=nc-1;
endif;
endif;
endprocess;
endat;
密码开启显示电路VHDL语言源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydiffis---实体定义
port(d,close,sd0:
instd_logic;
lock:
outstd_logic);
enddiff;
architectureartofdiffis----结构体定义
begin
process(close,sd0)
variablelock_1:
std_logic;
begin
lock_1:
='0';
ifsd0='0'thenlock_1:
='1';---若输入正确的密码锁开
endif;
ifclose='1'then
lock_1:
=d;
endif;
lock<=lock_1;
endprocess;
endart;
调试记录及结果分析
功能仿真波形及结果分析
键盘输入电路功能仿真图
图7
数码管显示电路功能仿真图
图8
密码存储模块电路功能仿真图
图9
整体电路功能仿真图
图10
结果分析
总结
参考资料5篇以上
附录:
程序清单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子锁 实验 报告