北邮小学期简易密码锁实验报告

合集下载

北邮数字电路综合实验报告

北邮数字电路综合实验报告

数字电路综合实验报告简易智能密码锁一、实验课题及任务要求设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。

基本要求:1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。

通过密码设置确定键(BTN 键)进行锁定。

2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。

输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。

3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。

闭锁状态下不能清除密码。

4、用点阵显示开锁和闭锁状态。

提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。

2、密码锁的密码位数(4~6 位)可调。

3、自拟其它功能。

二、系统设计2.1系统总体框图2.2逻辑流程图2.3MDS图2.4分块说明程序主要分为6个模块:键盘模块,数码管模块,点阵模块,报警模块,防抖模块,控制模块。

以下进行详细介绍。

1.键盘模块本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。

键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出高电平,在读入输出的行值时,通常高电平会被低电平拉低,当当前位置为高电平“1”时,没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。

数字密码锁实训报告总结

数字密码锁实训报告总结

一、引言随着科技的不断发展,电子技术已经深入到人们的日常生活中。

电子密码锁作为一种新型的锁具,因其安全性高、操作简便、易于维护等优点,在各个领域得到了广泛应用。

为了提高学生的实践能力,本实训项目以数字密码锁为核心,通过理论学习和实践操作,让学生掌握数字密码锁的设计与实现方法。

二、实训目的1. 了解数字密码锁的基本原理和组成;2. 掌握数字密码锁的设计与实现方法;3. 提高学生的动手能力和创新能力;4. 培养学生的团队协作精神。

三、实训内容1. 数字密码锁的基本原理数字密码锁是一种利用数字电路实现密码输入和开锁功能的锁具。

其基本原理是:将密码输入到锁内,通过比较输入密码与预设密码是否一致,来控制开锁信号的输出。

2. 数字密码锁的组成数字密码锁主要由以下几个部分组成:(1)密码输入模块:负责将用户输入的密码转换为数字信号;(2)密码存储模块:存储预设的密码;(3)密码比较模块:比较输入密码与预设密码是否一致;(4)控制模块:根据密码比较模块的结果,控制开锁信号的输出;(5)输出模块:输出开锁信号,驱动锁具解锁。

3. 数字密码锁的设计与实现本实训项目采用以下方法设计数字密码锁:(1)选用合适的数字电路芯片,如74LS112双JK触发器等;(2)根据数字密码锁的功能需求,设计相应的电路;(3)利用EDA工具进行电路仿真,验证电路功能;(4)编写程序,实现密码输入、存储、比较和控制等功能;(5)将程序烧录到单片机或FPGA等芯片中,实现数字密码锁的功能。

四、实训过程1. 理论学习在学习过程中,我们首先了解了数字密码锁的基本原理和组成,掌握了数字电路的基本知识,如逻辑门、触发器等。

2. 设计与仿真根据实训要求,我们选用74LS112双JK触发器等芯片,设计了一个简单的数字密码锁电路。

利用EDA工具进行电路仿真,验证电路功能。

3. 编程与调试编写程序,实现密码输入、存储、比较和控制等功能。

将程序烧录到单片机或FPGA等芯片中,进行调试,确保数字密码锁的功能正常。

电子密码锁实验报告

电子密码锁实验报告

电子密码锁实验报告一,实验目的1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力。

2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题。

3.学会自己独立分析问题、解决问题。

4学习定时器时间计时处理、按键扫描及LED数码管显示的设计方法。

5.根据设计任务及要求利用实验平台上单片机及其外围元器件,设计符合功能的电子密码锁。

二,实验要求设计要求:1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。

2:可以自行设定或删除8位密码,能够掉电保存。

3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。

三,实验基本原理1.键盘接口必须具有去抖动、按键识别基本功能。

(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。

抖动的持续时间与键的质量相关,一般为5—20mm。

所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。

去抖问题可通过软件延时或硬件电路解决。

(2)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。

常用的方法有行扫描法和线反转法两种。

行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。

线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。

2.利用键盘扫描原理分别设4×4矩阵键盘组成0-9数字键及确认键和删除键,通过0—9数字键设定8位密码和删除键删除密码,利用存储器的永久存储特性将设定的密码存于存储器中,再次重启程序时,能从存储器中读取出来,从而实现掉电保存。

密码锁实验报告doc

密码锁实验报告doc

密码锁实验报告篇一:电子密码锁实验报告密码锁实验报告一,实验目的1. 学习8051定时器时间计时处理、跑马灯、按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上8个LED数码管,按键,跑马灯实现设置密码,密码锁的功能二,实验要求基本要求:1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。

2:可以自行设定或删除8位密码。

3:用5位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用绿色led发光二极管亮一秒钟做为提示,若密码不正确,禁止按键输入3秒,同时用红色led发光二极管亮三秒钟做为提示;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。

三,实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.05s中断一次并当作一个计数,设定定时1秒的中断计数初值为20。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

四,实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash 只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

1在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。

简易14位数字密码锁控制电路设计实验报告

简易14位数字密码锁控制电路设计实验报告

简易14位数字密码锁控制电路设计实验报告实验目的:本实验旨在掌握基本的数字锁控制电路设计方法,通过具体实验操作,使学生对数字锁的原理、控制电路以及数字电路的设计方法等有更加深入的了解和认识。

实验器材:1.数字集成电路:CD4017B、CD4069UB、CD4073B、SN74LS08N;2.10K电位器、电容、电阻器、LED灯等。

实验原理:密码锁控制电路是由数字集成电路CD4017B、CD4069UB、CD4073B及SN74LS08N组成的。

其中CD4017B为计数器,CD4069UB、CD4073B和SN74LS08N为逻辑门电路,用于实现密码锁控制功能。

CD4017B为数字集成电路,它是一个10位二进制计数器,可以用于电子时钟、计时器、频率分频器等电路中。

它具有高速、低功耗、可升级性等优点,被广泛地应用于数字电路中。

CD4069UB、CD4073B和SN74LS08N均为逻辑门电路,主要用来实现与门、或门、非门等逻辑运算。

在本实验中,CD4017B接在控制端,用于实现计数和循环控制功能;CD4069UB、CD4073B和SN74LS08N三个逻辑门电路用于实现锁定、解锁功能。

实验步骤:1. 选择合适的元器件,按照电路图连接电路。

将电路连接好后,注意检查电路连接是否正确、元器件是否插紧等。

2. 按照实验要求进行编程。

将编程程序设置为14位数字密码,具体程序如下:3. 按照要求测试实验电路。

输入正确的密码,即可实现锁定或解锁功能。

实验结果:通过实验操作,我们成功地设计出一款14位数字密码锁控制电路,其操作流程为输入密码-验证密码-锁定或解锁。

通过实验可以看出,密码锁控制电路设计简单,操作方便,具有广泛的应用前景。

实验分析:数字密码锁是一种常见的电子密码产品,可以用于保护个人财产、资料等,在家庭、宾馆等场所得到了广泛的应用。

基于数字集成电路和逻辑门电路设计数字密码锁控制电路,具有操作简单、易于维护和升级等优点,被广泛地应用于数字电路中。

简易位数字密码锁控制电路设计实验报告

简易位数字密码锁控制电路设计实验报告

简易位数字密码锁控制电路设计实验报告Coca-cola standardization office【ZZ5AB-ZZSYT-ZZ2C-ZZ682T-目录一、前言 (2)二、课设任务 (2)三、方案设计、原理分析 (2)四、译码电路设计 (8)五、报警信号产生器 (10)六、调试及结果..........................................(12)七、体会 (13)一、前言本次课程设计的基本任务是着重提高学生在EDA知识学习与应用方面的实践技能。

学生通过电路设计安装、调试、整理资料等环节,初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。

EDA技术是电子信息类专业的一门新兴学科,是现代电子产品设计的核心,其任务是掌握在系统可编程逻辑器件及其应用设计技术,为电子产品开发研制打下坚实基础。

本课程设计对学生有如下要求:根据设计任务和指标,初步电路;通过调查研究,设计计算,确定电路方案;选择元器件,在计算机上连好线路,独立进行试验,并通过调试、仿真、改进方案;分析实验结果,写出设计总结报告:学会自己分析,找出解决问题方法;对设计中遇到的问题,能独立思考、查阅资料,寻找答案。

二、课设任务1、14位数字密码分成高7位(DH6…DH0)和低7位(DL6…DL0),用数字逻辑开关预置,输出信号out为1表示开锁,否则关闭。

2、14位数字密码分时操作,先预置高7位,然后再置入低7位。

3、要求电路工作可靠,保密性强,开锁出错立即报警。

4、利用MAX plus2 软件进行设计、编译,并在FPGA芯片上实现。

5、简易14位数字密码锁模块的框图如下:三、方案设计、原理分析首先我是一班的三号,所以我的密码时0100010 0000011。

我所做的设计是先把高七位输入锁存,然后在输入低七位,最后判断密码是否正确,密码正确就开锁,密码错误就报警。

数字密码锁控制电路的组成部分:YMQ 模块,1、IC9A的设计设计要求14位数字密码分时操作,先预置高七位0100010,而后置低七位0000011,首先可以使用寄存器将高七位存起来,而后与低七位一起进行译码,如果密码正确,输出OUT2为1,否则为0.2、数字密码锁控制电路原理图:输入密码正确时波形图输入错误密码时波形图数字密码锁控制电路的VHDL语言编程原理分析:当CLR为0时,寄存器与D触发器被清零,此时在A……G输入高七位密码0100010,用CLK给一个脉冲,由于此时输出端Q为0,经过一个非门为1,与CLK一起经过一个与门,送入寄存器CLK 端,产生上升沿;而经过非门的CLR为1,送入寄存器中,将高七位通过寄存器送入译码器的高七位中。

北邮密码锁小学期报告

北邮密码锁小学期报告

北京邮电大学电路综合实验报告实验题目:学生姓名:班级:小班学号:同组姓名:E-MAIL:目录一.设计目的、用途、功能二.硬件设计三、软件设计四、实验器材五、实验过程六、分工情况七、实验总结和心得体会八、参考文献九、代码摘要:本项目是做一个基于ATMega 16单片机的电子密码锁,通过4×4键盘和LCD液晶显示,实现了密码锁的密码验证、重新设置、输入错误后报警直到复位后启动倒计时功能,在倒计时内键盘自动锁死,倒计时结束后恢复所有功能等一些基本功能,通过LCD的巧妙使用实现友好的人机界面功能,更具人性化,除此之外还创新性的实现了LCD的开锁功能和键盘的重新定义。

通过LCD的开锁功能和对键盘的重新定义以及倒计时功能可以有效地防止密码被盗,同时也降低了成本,便于携带安装。

关键字:ATMega16 单片机、密码锁、键盘、 LCD 、开锁、倒计时一.设计目的、用途、功能1.设计目的随着科技的发展,安全问题越来越受到人们重视,不仅居家安全受到重视,出门在外行李物品的安全问题也受到了很多关注,在此基础上各种安全产品相继问世,如指纹防盗,红外防盗等,虽然这类产品的安全性较高,但其成本也同样较高,并且携带安装不方便,这种种缺点限制了其发展。

本设计的目的就是为了在保证高安全性的前提下,实现降低成本,方便携带安装的功能,真正服务于人民。

当然对于密码锁,我们接触最多的就是取款机了,我们设计的这个密码锁,与众不同的地方就是我们可以让我们的液晶显示屏无限循环的显示操作指南,只有当你按下键盘上的任意一个键的时候才可以终止这种循环。

还有一点,就是我们的密码锁加了倒计时这个功能,当输入错误次数超过三次的时候,就不能再输入了,更加安全。

2. 设计用途由于本设计成本较低且安全性能稳定,可适用于家庭防盗、行李箱、车载行李箱等一些安全性能要求不高且需要便携的产品上,其安全性能远远优于同等成本的安全性。

其中输入密码错误无限报警和自动锁死的功能能提高用户的警觉性,降低失窃率。

北邮数电综合实验报告

北邮数电综合实验报告

北邮数电综合实验报告综合实验报告:基于北邮数电实验的电子门禁系统设计与实现摘要:本次实验通过使用北邮数电实验室提供的器件和设备,设计并实现了一个简易的电子门禁系统。

该系统能够通过输入正确的密码或使用合法的身份卡,实现对门禁的控制和管理。

本文将详细介绍系统设计的原理、实验过程和结果,并对实验进行了总结和评价。

一、引言电子门禁系统是当前社会中广泛应用的一种重要安全保障设施。

它通过使用密码、身份卡等识别方式,对人员出入进行控制和管理。

本实验旨在通过北邮数电实验的学习和实践,学习和掌握电子门禁系统的设计与实现。

二、实验器材与原理实验器材:1.键盘2.蜂鸣器3.LCD显示屏4.数码安全码锁5.单片机开发板6.电源模块7.连线模块实验原理:该电子门禁系统的基本原理如下:1.用户通过键盘输入密码或刷合法的身份卡;2.单片机接收到输入的密码或读取身份卡信息;3.单片机对输入的密码或身份卡信息进行核对;5. 若核对失败,则控制蜂鸣器发出门禁错误提示音,并在LCD显示屏上显示“Access Denied”等拒绝信息。

三、实验过程与结果1.按照实验器材的接线要求,将键盘、蜂鸣器和LCD显示屏与开发板连接好;2.根据实验原理,编写相应的控制程序,并将程序烧录到单片机中;3.打开电源模块,开启电子门禁系统;4.用户通过键盘输入密码或刷合法的身份卡;5.系统接收到用户输入并进行核对;7. 核对失败时,蜂鸣器发出门禁错误提示音,LCD显示屏上显示“Access Denied”等拒绝信息。

实验结果显示,该电子门禁系统能够根据用户输入的密码或身份卡信息,进行核对并作出相应的操作。

当核对成功时,系统会解锁门禁并显示欢迎信息;当核对失败时,系统会发出错误提示并拒绝门禁。

四、实验总结本次实验通过设计和实现基于北邮数电实验的电子门禁系统,使得我们更加深入地了解了电子门禁系统的原理和应用。

通过实验,我们学会了利用键盘、蜂鸣器和LCD显示屏等器材,通过单片机控制,实现了一个简易的电子门禁系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简易智能密码锁实验报告一、实验要求:设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。

基本要求:1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。

通过密码设置确定键(BTN 键)进行锁定。

2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。

输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。

3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。

闭锁状态下不能清除密码。

4、用点阵显示开锁和闭锁状态。

提高要求:1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。

2、密码锁的密码位数(4~6 位)可调。

二、系统设计:1、设计思路:在数字电路设计中,自顶向下设计方法的主要思想是对数字系统进行划分,将复杂的设计原理简化为相对简单的模块设计,不同的模块用来完成数字系统中某一部分的具体功能。

总体思路:2、总体框图:三、仿真波形及波形分析1、键盘输入模块图3-1 键盘输入仿真在上图中,clkjp时钟控制jpcat,jpcat控制kbout从0111到1110变换,然后手动控制kbin来模拟键盘的案件,从jpout就能看到的键入的数字。

2、防抖图3-2 防抖仿真上图中可以看见,btn1只在上升沿才有用,而clear会持续到一个周期的最后才会完毕。

3、状态转移图3-3 状态转移模块仿真如上图所示,开始,按下set=1,set1=1,setmode=1,进入设置密码状态。

然后,jpout连续输入2和6,改了密码,然后btn2=1代表按下了确定键,lockmode变成1,setmode变成0,状态从设定状态变成锁定状态。

再之后,ipout输入2和6,再次btn2=1(按下确定键),lockmode 变成0,状态从锁定状态变成开锁状态。

整个就实现了一个循环。

四、源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mms isport (clk : in std_logic;set:in std_logic;btn1,btn2,btnloc:in std_logic;smgzf: out std_logic_vector(6 downto 0);smgcatout:out std_logic_vector(5 downto 0);kbin: in std_logic_vector(3 downto 0);kbout: buffer std_logic_vector(3 downto 0);dzrow,dzcolr,dzcolg: out std_logic_vector(7 downto 0); fmq: out std_logic);end mms;architecture behave of mms issignal clkjp: std_logic;signal clksmg: std_logic;signal clkdz: std_logic;signal clkfd: std_logic;signal clkfm: std_logic;signal jpcat: integer range 0 to 3;signal smgcat:integer range 0 to 5;signal dzcat:integer range 0 to 7;signal tmp1: integer range 0 to 99999;--jpsignal tmp2: integer range 0 to 999;--dzsignal tmp3: integer range 0 to 999;--smgsignal tmp4: integer range 0 to 2499999;--fdsignal tmp5: integer range 0 to 20;--alarm timesignal tmpdo: integer range 0 to 97655;--alarm timesignal jpout:integer range 0 to 10;signal alarm:std_logic;signal m1y,m2y,m3y,m4y:std_logic_vector(6 downto 0);signal m1,m2,m3,m4,mm1,mm2,mm3,mm4: integer range 0 to 9; signal wei:integer range 0 to 3;signal kwei:integer range 0 to 4;signal setmode:std_logic;signal set1:std_logic;signal lockmode:std_logic;signal clear: std_logic;signal sure: std_logic;signal lock: std_logic;signal noise:std_logic;signal beep:std_logic;beginfangdou:process(clk)beginif(clk'event and clk='1')thenif (tmp4=2499999) thentmp4<=0;clkfd<=not clkfd;elsetmp4<=tmp4+1;end if;end if;end process;shezhi:process(set,sure)beginif(clkfd'event and clkfd='1')thenif(set='1')then --set进入改密码状态 set1<='1';end if;if(sure='1')thenset1<='0';end if;end if;end process;qingling:process(btn1)beginif(clkfd'event and clkfd='1')thenif(btn1='1')then --clear为清零键 clear<='1';else clear<='0';end if;end if;end process;queding:process(btn2)beginif(clkfd'event and clkfd='1')thenif(btn2='1')thensure<='1'; --sure为btn5(确定键) else sure<='0';end if;end if;end process;suoding:process(btnloc)beginif(clkfd'event and clkfd='1')thenif(btnloc='1')then --lock为锁定键lock<='1';else lock<='0';end if;end if;end process;suoyou:process(jpout)beginif(clkfd'event and clkfd='1')thenalarm<='0';if(lockmode='1')then --在锁定状态wei<=0;if(jpout/=10)then --按了键if(kwei=3)then mm4<=jpout;kwei<=kwei+1;elsif(kwei=2)then mm3<=jpout;kwei<=kwei+1;elsif(kwei=1)then mm2<=jpout;kwei<=kwei+1;elsif(kwei=0)then mm1<=jpout;kwei<=kwei+1;end if;end if;if(sure='1')then --进入判断密码的状态if((mm1=m1)and(mm2=m2)and(mm3=m3)and(mm4=m4)and(kwei=4))then lockmode<='0';alarm<='0';else kwei<=0;alarm<='1';end if;end if;else --在开锁状态kwei<=0;if((lock='1'))then --进入锁定状态lockmode<='1';setmode<='0';alarm<='0';elseif(set1='1')then setmode<='1'; --进入改密码状态else setmode<='0';end if;end if;if(clear='1') then --密码直接清零然后锁定m1<=0;m2<=0;m3<=0;m4<=0;mm1<=0;mm2<=0;mm3<=0;mm4<=0;wei<=0;kwei<=0;alarm<='0';setmode<='0';lockmode<='1';elsif(setmode='1')thenif(jpout/=10)then --如有输入if(wei=0)then m1<=jpout;wei<=wei+1;mm1<=jpout;elsif(wei=1)then m2<=jpout;wei<=wei+1;mm2<=jpout;elsif(wei=2)then m3<=jpout;wei<=wei+1;mm3<=jpout;elsif(wei=3)then m4<=jpout;wei<=0;mm4<=jpout;end if;end if;if(sure='1')then lockmode<='1';setmode<='0';alarm<='0'; --如果按了清零 end if;end if;end if;end if;end process;jianpan1:process(clk)beginif(clk'event and clk='1')thenif (tmp1=99999) thentmp1<=0;clkjp<=not clkjp;elsetmp1<=tmp1+1;end if;end if;end process;jianpan2:process(clkjp)beginif(clkjp'event and clkjp='1')thenif (jpcat=3)thenjpcat<=0;elsejpcat<=jpcat+1;end if;end if;end process;jianpan3:process(jpcat)begincase jpcat iswhen 0=>kbout<="0111";when 1=>kbout<="1011";when 2=>kbout<="1101";when 3=>kbout<="1110";end case;end process;jianpan4:process(jpcat)beginif((kbout="0111")and(kbin="0111"))then jpout<=0;elsif((kbout="0111")and(kbin="1011"))then jpout<=4; elsif((kbout="0111")and(kbin="1101"))then jpout<=8; elsif((kbout="1011")and(kbin="0111"))then jpout<=1; elsif((kbout="1011")and(kbin="1011"))then jpout<=5; elsif((kbout="1011")and(kbin="1101"))then jpout<=9; elsif((kbout="1101")and(kbin="0111"))then jpout<=2; elsif((kbout="1101")and(kbin="1011"))then jpout<=6; elsif((kbout="1110")and(kbin="0111"))then jpout<=3; elsif((kbout="1110")and(kbin="1011"))then jpout<=7; else jpout<=10;end if;end process;mimafuzhi1:process(m1)begincase m1 iswhen 0=>m1y<="1111110";when 1=>m1y<="0110000";when 2=>m1y<="1101101";when 3=>m1y<="1111001";when 4=>m1y<="0110011";when 5=>m1y<="1011011";when 6=>m1y<="1011111";when 7=>m1y<="1110000";when 8=>m1y<="1111111";when 9=>m1y<="1111011";end case;end process;mimafuzhi2:process(m2)begincase m2 iswhen 0=>m2y<="1111110";when 1=>m2y<="0110000";when 2=>m2y<="1101101";when 3=>m2y<="1111001";when 4=>m2y<="0110011";when 5=>m2y<="1011011";when 6=>m2y<="1011111";when 7=>m2y<="1110000";when 8=>m2y<="1111111";when 9=>m2y<="1111011";end case;end process;mimafuzhi3:process(m3)begincase m3 iswhen 0=>m3y<="1111110";when 1=>m3y<="0110000";when 2=>m3y<="1101101";when 3=>m3y<="1111001";when 4=>m3y<="0110011";when 5=>m3y<="1011011";when 6=>m3y<="1011111";when 7=>m3y<="1110000";when 8=>m3y<="1111111";when 9=>m3y<="1111011";end case;end process;mimafuzhi4:process(m4)begincase m4 iswhen 0=>m4y<="1111110";when 1=>m4y<="0110000";when 2=>m4y<="1101101";when 3=>m4y<="1111001";when 4=>m4y<="0110011";when 5=>m4y<="1011011";when 6=>m4y<="1011111";when 7=>m4y<="1110000";when 8=>m4y<="1111111";when 9=>m4y<="1111011";end case;end process;shumaguan1:process(clk) --分出数码管的频率 beginif(clk'event and clk='1')thenif (tmp3=999) thentmp3<=0;clksmg<=not clksmg;elsetmp3<=tmp3+1;end if;end if;end process;shumaguan2:process(clksmg) --数码管按位扫描beginif(clksmg'event and clksmg='1')thenif (smgcat=5)thensmgcat<=0;elsesmgcat<=smgcat+1;end if;end if;end process;shumaguan3:process(setmode,lockmode,smgcat) --数码管按位扫描出的数字 beginif(setmode='1')thencase smgcat iswhen 0=>smgcatout<="110111";smgzf<=m1y;when 1=>smgcatout<="111011";smgzf<=m2y;when 2=>smgcatout<="111101";smgzf<=m3y;when 3=>smgcatout<="111110";smgzf<=m4y;when 4=>smgcatout<="111111";when 5=>smgcatout<="111111";end case;elsif(lockmode='0')thencase smgcat iswhen 0=>smgcatout<="110111";smgzf<=m1y;when 1=>smgcatout<="111011";smgzf<=m2y;when 2=>smgcatout<="111101";smgzf<=m3y;when 3=>smgcatout<="111110";smgzf<=m4y;when 4=>smgcatout<="111111";when 5=>smgcatout<="111111";end case;elsesmgzf<="0000001";if (kwei=1)then smgcatout<="111110";elsif (kwei=2)then smgcatout<="111100";elsif (kwei=3)then smgcatout<="111000";elsif (kwei=4)then smgcatout<="110000";else smgcatout<="111111";end if;end if;end process;dianzhen1:process(clk)beginif(clk'event and clk='1')thenif (tmp2=999) thentmp2<=0;clkdz<=not clkdz;elsetmp2<=tmp2+1;end if;end if;end process;dianzhen2:process(clkdz)beginif(clkdz'event and clkdz='1')thenif (dzcat=7)thendzcat<=0;elsedzcat<=dzcat+1;end if;end if;end process;dianzhen3:process(lockmode,clkdz)beginif(lockmode='0')thencase dzcat is--√when 0=>dzrow<="01111111";dzcolr<="00000000";dzcolg<="11111111"; when 1=>dzrow<="10111111";dzcolr<="00000000";dzcolg<="11111111"; when 2=>dzrow<="11011111";dzcolr<="00000000";dzcolg<="01100110"; when 3=>dzrow<="11101111";dzcolr<="00000000";dzcolg<="11111111"; when 4=>dzrow<="11110111";dzcolr<="00000000";dzcolg<="11111111"; when 5=>dzrow<="11111011";dzcolr<="00000000";dzcolg<="01100110"; when 6=>dzrow<="11111101";dzcolr<="00000000";dzcolg<="01100110"; when 7=>dzrow<="11111110";dzcolr<="00000000";dzcolg<="11000110"; end case;elsecase dzcat is--Xwhen 0=>dzrow<="01111111";dzcolr<="10111111";dzcolg<="00000000"; when 1=>dzrow<="10111111";dzcolr<="00001001";dzcolg<="00000000"; when 2=>dzrow<="11011111";dzcolr<="10111101";dzcolg<="00000000"; when 3=>dzrow<="11101111";dzcolr<="10001001";dzcolg<="00000000"; when 4=>dzrow<="11110111";dzcolr<="10101001";dzcolg<="00000000"; when 5=>dzrow<="11111011";dzcolr<="10001001";dzcolg<="00000000"; when 6=>dzrow<="11111101";dzcolr<="10011011";dzcolg<="00000000"; when 7=>dzrow<="11111110";dzcolr<="10001001";dzcolg<="00000000"; end case;end if;end process;fmq1:process(alarm)beginif(alarm='1')thenif(clkfd'event and clkfd='1')thenif(tmp5=2)thentmp5<=0;noise<='0';else tmp5<=tmp5+1;noise<='1';end if;end if;else noise<='0';end if;end process;fmq2:process(clk)beginif(clk'event and clk='1')thenif (tmpdo=97655) thentmpdo<=0;clkfm<=not clkfm;elsetmpdo<=tmpdo+1;end if;end if;end process;fmq3:process(noise)beginif(noise='1')thenif(clkfm'event and clkfm='1')thenbeep<=not beep;end if;else beep<='0';end if;end process;fmq4:process(beep)beginfmq<=beep;end process;end behave;五、功能说明及资源利用1、功能说明本人设计的这个简易密码锁有五个基本状态,启动程序时在开锁状态,按下btn7进入修改密码的状态,修改密码之后按下btn5进入闭锁状态,再之后直接输入验证密码,按下btn5确定后,进入验证密码的状态,如果不正确,蜂鸣器响并进入闭锁状态,若正确就回到开锁状态,这样形成一个循环。

相关文档
最新文档