电子锁实验报告文档格式.docx

上传人:b****5 文档编号:17427950 上传时间:2022-12-01 格式:DOCX 页数:12 大小:130.28KB
下载 相关 举报
电子锁实验报告文档格式.docx_第1页
第1页 / 共12页
电子锁实验报告文档格式.docx_第2页
第2页 / 共12页
电子锁实验报告文档格式.docx_第3页
第3页 / 共12页
电子锁实验报告文档格式.docx_第4页
第4页 / 共12页
电子锁实验报告文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

电子锁实验报告文档格式.docx

《电子锁实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《电子锁实验报告文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

电子锁实验报告文档格式.docx

根据本次设计的特点,可以根据对密码的处理方式分为密码输入模块,密码存储模块,密码设置模块,密码显示模块。

如下图所示:

图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)

casenis----输入键编码

when"

0000000001"

=>

temp<

="

0001"

;

0000000010"

0010"

0000000100"

0011"

0000001000"

0100"

0000010000"

0101"

0000100000"

0110"

0001000000"

0111"

0010000000"

1000"

0100000000"

1001"

1000000000"

0000"

whenothers=>

1111"

endcase;

endprocess;

sout<

=temp;

----sout怎么传出的

endat;

数码管显示电路的VHDL语言源程序

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:

begin

process(clk,din)

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位显示

=din(7downto4);

001"

10"

)then----片选为2,8~11位显示

=din(11downto8);

010"

11"

)then----片选为3,12~15位显示

=din(15downto12);

011"

casedbis----数码管的译码

led7<

0111111"

0000110"

1011011"

1001111"

1100110"

1101101"

1111101"

0000111"

1111111"

1101111"

0000000"

endhe;

密码存储电路的VHDL语言源程序

entityregmis---实体定义port(set,check:

c:

a,b:

outstd_logic_vector(15downto0);

clr:

outstd_logic);

endregm;

architecturebehvofregmis----结构体定义

process(set,check,clk)

ifset='

then---设置密码时,输入数据送给a,显示电路清零

a<

=c;

clr<

='

0'

elseclr<

ifcheck='

then----检验时,输入数据送给b

b<

endbehv;

密码匹配电路的VHDL语言源程序

entitycompareis---实体定义

port(a,b:

sd0:

endcompare;

architectureaofcompareis----结构体定义

begin

process(a,b)

ifa>

"

0000000000000000"

andb>

then----若有按键

ifa=bthen----若a=b

sd0<

---触发器置位为1

elsifa="

1000100010001000"

then---或为万能密码,触发器置位为1

sd0<

elsesd0<

enda;

密码控制电路的VHDL语言源程序

---实体定义

entityzhangis

port(blk:

inack,cstd_logic;

n:

std_logic_vector(15downto0));

endzhang;

architectureatofzhangis----结构体定义

signalfn:

std_logic;

signalacc:

std_logic_vector(15downto0);

signalnc:

std_logic_vector(2downto0);

process(clk,n)

then----输入开关编码

casenis

fn<

=not(temp(3)andtemp

(2)andtemp

(1)andtemp(0));

----设置输入上升沿

nc:

iffn='

ifnc<

4then----输入左移控制

acc<

=acc(11downto0)&

temp;

nc<

=nc+1;

endif;

ifback='

then----删除右移控制

ifnc>

=0then

&

acc(15downto4);

=nc-1;

密码开启显示电路VHDL语言源程序

entitydiffis---实体定义

port(d,close,sd0:

lock:

enddiff;

architectureartofdiffis----结构体定义

begin

process(close,sd0)

variablelock_1:

lock_1:

ifsd0='

thenlock_1:

---若输入正确的密码锁开

ifclose='

then

lock_1:

=d;

lock<

=lock_1;

endart;

调试记录及结果分析

功能仿真波形及结果分析

键盘输入电路功能仿真图

图7

数码管显示电路功能仿真图

图8

密码存储模块电路功能仿真图

图9

整体电路功能仿真图

图10

结果分析

总结

参考资料5篇以上

附录:

程序清单

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1