电子密码锁_大连理工大学数电课设
数电电子密码锁课程设计

数电电子密码锁课程设计一、课程目标知识目标:1. 理解数字电路基础知识,掌握电子密码锁的基本原理;2. 学会使用逻辑门、触发器等基本数字电路元件,并应用于电子密码锁的设计;3. 掌握电子密码锁的编码与解码技术,了解其安全性分析。
技能目标:1. 能够运用所学知识,设计并搭建一个简单的电子密码锁电路;2. 学会使用相关软件(如Multisim等)进行电路仿真,提高实际操作能力;3. 培养学生团队协作、动手实践和问题解决能力。
情感态度价值观目标:1. 培养学生对数字电路和电子技术的兴趣,激发创新意识;2. 增强学生的信息安全意识,了解密码学在生活中的应用;3. 树立正确的价值观,认识到科学技术对社会发展的积极作用。
课程性质:本课程为实践性较强的课程,结合理论知识,培养学生的实际操作能力和团队协作能力。
学生特点:学生在本年级已具备一定的数字电路基础,对电子技术有一定了解,但实际操作能力有待提高。
教学要求:教师应注重理论与实践相结合,关注学生个体差异,提供个性化指导,确保学生在课程中学有所获。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。
二、教学内容1. 数字电路基础知识回顾:逻辑门、触发器、计数器等基本元件的工作原理与应用;- 教材章节:第一章 数字逻辑电路基础2. 电子密码锁原理讲解:密码锁的工作流程、安全性分析;- 教材章节:第三章 安全电子密码锁3. 电子密码锁电路设计:使用逻辑门、触发器等元件设计密码锁电路;- 教材章节:第二章 组合逻辑电路设计4. 电路仿真与实验操作:利用Multisim软件进行电路仿真,实际搭建电子密码锁;- 教材章节:第四章 电路仿真与实验5. 编码与解码技术:了解常见编码方式,学习密码锁的解码技巧;- 教材章节:第三章 安全电子密码锁6. 团队协作与项目实施:分组进行项目实践,培养学生的团队协作能力和实际操作能力;- 教材章节:附录 实践项目指导教学进度安排:第一周:回顾数字电路基础知识,学习电子密码锁原理;第二周:设计电子密码锁电路,进行电路仿真;第三周:实际操作,搭建电子密码锁,学习编码与解码技术;第四周:团队协作,完成项目实施,进行成果展示与评价。
课程设计电子密码锁

课程设计电子密码锁一、教学目标本课程旨在让学生了解和掌握电子密码锁的基本原理和制作方法,培养学生的电子技术应用能力和创新思维。
具体目标如下:1.知识目标:(1)了解电子密码锁的工作原理及其基本组成部分;(2)掌握常用电子元器件的识别、选用和应用;(3)学习编程和电路设计的基本方法。
2.技能目标:(1)能够独立完成电子密码锁的电路设计;(2)熟练使用编程软件进行程序设计;(3)具备团队协作能力和问题解决能力。
3.情感态度价值观目标:(1)培养学生对电子技术的兴趣和热情;(2)增强学生的创新意识和实践能力;(3)培养学生具备良好的团队精神和合作意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.电子密码锁的基本原理及其组成部分;2.常用电子元器件的识别、选用和应用;3.电路设计的基本方法;4.编程软件的使用和程序设计;5.电子密码锁的制作和调试。
三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:用于讲解基本原理和知识点;2.讨论法:引导学生探讨和解决问题;3.案例分析法:分析实际案例,加深学生对知识的理解;4.实验法:动手实践,培养学生的操作技能。
四、教学资源为了支持教学,我们将准备以下教学资源:1.教材:提供基本知识和理论学习;2.参考书:拓展学生的知识视野;3.多媒体资料:辅助讲解和展示实验过程;4.实验设备:用于学生的动手实践。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性;2.作业:布置适量的作业,评估学生的理解和掌握程度;3.考试成绩:通过期中和期末考试,全面评估学生的知识掌握和应用能力。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材和大纲,合理安排每个章节的教学内容;2.教学时间:根据课程内容和学生的实际情况,合理分配课堂讲解、实验操作等时间;3.教学地点:选择适当的实验室和教室,确保教学顺利进行。
电子密码锁课程设计

电子密码锁课程设计一、实验目的1. 了解电子密码锁的工作原理和功能特点;2. 掌握单片机控制电子密码锁的方法;3. 实现简单的密码输入和密码验证功能;4. 提高学生的实际能力和动手能力。
二、实验原理电子密码锁系统是一种安全控制系统,能对进出某些区域的人员进行限制和管理。
它具有输入密码,验证密码和控制出入等功能。
电子密码锁通常由以下部分组成:键盘、单片机控制器、液晶显示器、声音提示器、锁芯以及供电电路等。
本实验设计采用AVR单片机实现电子密码锁的输入密码、验证密码和控制开锁等功能。
1. 输入密码:用户通过键盘输入密码,可输入4位数字密码。
各按键所代表的数字0~9的ASCII码值在程序中已定义好了。
单片机通过扫描键盘,在液晶显示器上实时显示输入的密码。
2. 验证密码:当用户输入4位数字密码完成后,单片机将输入的密码与预设密码进行比较,如果密码正确,则在液晶显示器上显示“Welcome”;如果密码错误,则在液晶显示器上显示“Wrong password”。
3. 控制开锁:在液晶显示器上显示“Welcome”后,单片机控制锁芯电机工作,并同时发出蜂鸣声,表示开锁。
开锁后,液晶显示器提示“Lock opened”;如果输入的密码错误,则不会开锁。
三、实验器材AVR开发板、电子密码锁电路板、1602液晶显示器、4*4矩阵键盘、蜂鸣器、12V电池、导线等。
四、实验步骤1. 按照电路图进行电路连接;2. 用AVR Studio或Keil等软件创建一个AVR单片机工程,编写以下程序:#include <avr/io.h>#include <avr/delay.h>#include <string.h>#include "lcd.h"#define true 1#define false 0unsigned char password[5] = "1234"; unsigned char buffer[6];unsigned char cursor = 0;unsigned char locked = false;unsigned char getKeyCode(){unsigned char i, j, k, key;for(i=0; i<4; i++){PORTB = 0x10 << i;_delay_us(10);k = PINB & 0b00001111;if(k == 0b00001111)continue;for(j=0; j<4; j++)if(k & (1 << j))return i*4+j;}return 0xFF;}void getPassword(){memset(buffer, 0x00, sizeof(buffer));cursor = 0;LCD_gotoxy(0, 1);LCD_puts("Enter password:");while(true){unsigned char key = getKeyCode();_delay_ms(50);if(key == 0xFF)continue;else if(key <= 9){if(cursor < 4){buffer[cursor++] = key + '0';LCD_gotoxy(cursor, 0);LCD_putchar('*');}}else if(key == 10){if(cursor == 4){if(strcmp(buffer, password) == 0){LCD_clrscr();LCD_puts("Welcome");locked = false;_delay_ms(3000);LCD_clrscr();}else{LCD_clrscr();LCD_puts("Wrong password");_delay_ms(3000);LCD_clrscr();}}getPassword();break;}else if(key == 11){if(cursor > 0){LCD_gotoxy(cursor--, 0);LCD_putchar(' ');buffer[cursor] = 0;}}}}void main(){DDRB = 0xF0;PORTB = 0x0F;LCD_init();LCD_puts("Please enter");LCD_gotoxy(0, 1);LCD_puts("password");while(true){if(!locked){PORTD |= 0b00000001;_delay_ms(1000);PORTD &= 0b11111110;_delay_ms(1000);}else{getPassword();}}}3. 编译、下载程序到AVR开发板中,连接电子密码锁电路板和单片机开发板上的接口电缆,接上12V电池;4. 按下电子密码锁电路板上的“reset”按键,程序开始运行,1602液晶显示器上提示“Please enter password”;5. 输入4位数字密码,按“#”键确认,系统进行密码比较,如果密码正确,则在液晶显示器上提示“Welcome”;如果密码错误,则在液晶显示器上提示“Wrong password”;6. 如果密码正确,则系统控制锁芯电机工作,并同时发出蜂鸣声,表示开锁。
密码锁数电课程设计

密码锁数电课程设计一、课程目标知识目标:1. 理解数字电路基本原理,掌握密码锁中涉及的逻辑门、触发器等组件的工作原理;2. 学会分析简单的数字电路图,识别密码锁电路中的关键电子元件及其功能;3. 掌握二进制数与十进制数的转换方法,并运用至密码锁的密码设置与破解。
技能目标:1. 能够运用所学知识设计简单的密码锁电路,并进行仿真测试;2. 培养学生动手操作能力,完成密码锁电路的搭建与调试;3. 提高学生问题解决能力,学会运用逻辑推理和分析方法解决密码锁相关的问题。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学习热情,形成积极探索科学技术的态度;2. 增强学生的团队协作意识,培养合作解决问题的能力;3. 强化学生的创新意识,鼓励学生在设计过程中提出独特见解,形成独立思考的习惯。
课程性质分析:本课程为初中信息技术课程,结合了电子技术与实际应用,旨在帮助学生将理论知识与实践操作相结合。
学生特点分析:初中学生对新鲜事物充满好奇,具备一定的动手操作能力和逻辑思维能力,但缺乏实际电子技术应用经验。
教学要求:1. 注重理论与实践相结合,强调动手实践在教学过程中的重要性;2. 以学生为主体,激发学生主动探索、合作学习的兴趣;3. 关注个体差异,鼓励学生发挥自身优势,提高综合素质。
二、教学内容1. 数字电路基础:包括逻辑门(与、或、非门等)、触发器(RS触发器、D触发器等)的基本原理与运用;2. 密码锁原理:介绍密码锁的基本构成,分析其工作原理,讲解密码设置与破解的方法;3. 二进制与十进制转换:学习二进制数与十进制数的转换方法,并应用于密码锁密码的设置与破解;4. 电路图分析:学会分析简单的数字电路图,识别密码锁电路中的关键电子元件及其功能;5. 密码锁电路设计与仿真:运用所学知识设计简单的密码锁电路,利用Multisim等软件进行仿真测试;6. 密码锁电路搭建与调试:动手操作,搭建密码锁电路,进行调试与优化。
数电课程设计电子密码锁

数字逻辑设计课程设计报告书题目名称:电子密码锁学院:光电信息学院小组成员:钟永捷2011059080024侯晨涛2011059170003徐昊2011059060029指导教师:李*日期: 2013年6月28日一、小组成员分工情况侯晨涛:所有编程工作、资料查找工作量:60%钟永捷:辅助编程、图表制作、资料查找工作量:20%徐昊:论文写作、图表制作、资料查找工作量:20%二、题目分析1.输入信号通过扫描键盘的行与检测键盘的列得到输入信号。
2.输出信号通过译码器得到的显示器显示信息,开关锁动作。
三、设计总框图四、各模块说明(一)键盘扫描模块1.原理通过时序信号产生脉冲,不间断地向矩阵键盘的行输入1110-1101-1011-0111的循环序列。
同时将各列的电平置高,检测矩阵键盘各列的电平变化。
若在一定时间内,扫描到第n列电平为零时恰好第m行的m,位置上键被按下。
输入电平也为零,则判断键盘上[]n2. 模块框图3. 状态表此模块只需要通过编码器实现即可,假定前四位表示各行扫描结果,后三位表示各列扫描的结果。
按下“8”键1011 101 S8 1000按下“9”键1011 011 S9 1001按下“#”键0111 011 S10 1010按下“*”键0111 110 S11 10114.仿真结果Key_in代表按键按下与否情况,Key_mem将其记录并输出,scan为行扫描信号,Key_out为按键输出值。
如上仿真结果所示,当scan为1110时,扫描第一行。
按下第一个键,即Key_in为110,此时Key_out 为0001,即输出值为1。
其它状态依此类推。
(二)输入模块1.原理设置两个寄存器,一个作为用户所想设置密码的密码寄存器。
另一个寄存器则是将键盘Input的键值存储起来。
最后通过一个比较器将两个寄存器的值进行比较。
若相同则输出“open”,反之,输出“error”。
比较器内部通过多位异或门实现。
王艳数电课程设计报告

大连理工大学本科实验报告-------数电课程设计题目:电子密码锁课程名称:数字电路课程设计学院系:电子信息与电气工程学部专业:自动化班级:电自1001学生姓名:王艳学号:201081089完成日期:2012—12—18成绩:题目:电子密码锁1 设计要求一.基本功能1、设计一个密码锁,开锁代码为8位二进制数,通过串行以按键的形式输入,要求能够显示当前输入的位数,但不显示输入的具体密码。
2、当输入代码的位数和给定的密码一致,按下开锁键,用LED显示开锁成功。
如果密码不正确,提示开锁不成功,当连续三次密码输入错误,不允许再输入密码,并且提示报警。
不同的提示可用不同的LED闪烁频率或花型显示来表示。
3、开锁的密码可以进行设置,但设置的前提是原来密码必须输入正确。
二.扩展功能运用PS2接口,通过键盘来输入密码。
2 设计分析及系统方案设计密码锁控制器是硬件与软件的结合。
根据设计要求,以FPGA芯片和VHDL语言设计此电子密码锁。
本演示系统实现了:1、输入密码正确后,正确小灯(green)亮,错误小灯(red)不亮;2、当输入密码正确后,可修改密码,可使用want开关正确进行密码修改功能,而后密码被重新设定为新的密码,当密码输入错误的时候并不可以修改密码,此时即使按下want 键也不好用;3、输入错误密码,正确小灯(green)不亮,错误小灯(red)亮;4、按下reset后,密码归为初始密码;5、输入密码时,同时数码管显示输入密码个数,不显示具体密码;6、显示连续输入错误密码次数,用数码管显示,次数小于3时,自动进入下一次输入状态,错误次数大于等于3,即以1HZ频率闪烁的LED灯提示报警报警,且无法再次输入密码,直到按下 reset.3系统以及模块硬件电路设计用VHDL设计电子密码锁方案:作为通用电子密码锁,主要由 3 个部分组成:数字密码输入电路、密码锁控制电路和密码锁显示电路。
3.1系统总框图3.2密码提示电路七段数码管是电子开发过程中常用的输出显示设备。
数电课程设计电子密码锁设计

摘要通过本次设计掌握数字电路系统设计的方法,熟悉电子密码锁设计相关硬件的使用,了解电子密码锁的系统构成,利用数字门电路实现电子密码锁的设计与实现,可以加深自己对所学专业的认识,关联知识,增强自己的动手能力,积累实践经验,为以后的工作打好基础。
采用逻辑门电路设计电子密码锁,阐述了其工作原理,给出了具体的电路原理图。
该密码锁具有密码预置功能,保密性强,误码报警,并且报警时间可以设定,同时用数码管显示出报警时间。
密码正确时驱动继电器控制开锁指示灯,误码时报警信号由蜂鸣器发出,声音为间歇式鸣笛。
采用自行设计的5V稳压电源供电,具有耗电省等特点。
使用时用户必须按下确认按钮后方可知用户输入的密码是否与预置密码一致,当密码正确时密码锁可以被打开,点亮绿色二极管亮代表密码正确,锁可以打开。
当开锁输入码与密码不一致时,则报警。
报警时间持续3秒,输入连续3次错误时则报警时间延长为10s。
相对于基于单片机技术的电子密码锁,用简单门电路来来构成系统,可靠性提高,并且价格便宜。
关键字:电子密码锁;数字电路;预置密码;误码报警.目录第一章绪论 (5)第二章设计总体思路及相关芯片的使用 (6)2.1基本设计原理 (6)2.2设计总体框图 (4)2.3 常用芯片的的使用功能 (7)第三章设计的具体过程 (8)3.1 密码识别电路 (8)3.2秒脉冲产生电路 (8)3.3报警电路 (9)3.4报警次数检测电路 (7)3.5电子密码锁总体电路设计 (9)第四章仿真与调试 (11)4.1 仿真软件简介(Multisim简介) (11)4.2仿真电路的建立 (12)4.3 仿真效果分析 (12)4.4 调试要点及注意事项 (16)第五章设计总结 (15)参考文献 (16)附录 (19)第一章绪论随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。
锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。
电子技术课程设计--电子密码锁(正规版)

电子技术课程设计--电子密码锁(正规版)电子技术课程设计报告电子密码锁专业:自XX摘要电子密码锁主要由设置密码、输入密码、验证密码、错误锁定等几局部组成。
设置密码电路:可修改密码,通过锁存器与输入端开关组的配合,将开关组的密码锁存在锁存器输出端。
输入密码电路:由开关组和锁存器构成,从开关组输入密码,传入锁存器记录,在锁存器使能端控制下传输给验证密码电路。
验证密码电路:主要由数值比拟器实现密码验证功能,密码正确时,输出开锁/改密信号,密码错误时,输出密码错误信号。
错误锁定电路:密码错误信号作为脉冲通入计数器,当错误次数到达3次时产生清零信号,同时清零信号作为计时器触发信号,使计时器开始计时3分钟,计时器输出信号控制输入密码电路的锁存器锁定3分钟,使密码锁3分钟内无法输入密码。
设置密码电路由开锁信号和改密开关共同控制,当且仅当改密开关断开且有开锁信号时,方可修改密码。
关键词:密码锁,计数,计时,锁存器,数值比拟器目录摘要 (2)1.设计任务书 (4)1.1设计任务 (4)1.2要求 (4)2.设计框图及电路系统概述 (5)2.1功能设计框图 (5)2.2电路系统概述 (5)3.各单元电路的设计方案及原理说明、参数计算 (7)3.1密码验证电路 (7)3.2密码输入电路 (8)3.3密码修改电路 (8)3.4输入错误锁定电路 (10)4.调试过程及结果分析 (12)4.1仿真 (12)4.2实物 (12)5.设计、安装及调试中的体会 (14)6.参考文献 (18)1.设计任务书1.1设计任务电子密码锁主要具有密码验证、密码输入、密码设置、错误锁定这四大功能。
密码验证功能由数值比拟器实现,本设计采用2片74LS85级联实现8位密码〔256种密码组合〕的验证。
密码由开关组输入,并经过锁存器74LS373的控制输入到密码验证电路中。
密码设置由8D锁存器74LS373和输入电路开关组配合使用实现,并有一片555定时器计时,在1分钟内完成设置密码动作方可实现密码的修改和锁存,否那么密码不变。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连理工大学本科实验报告题目:电子密码锁课程名称: 数字电路课程设计学院(系): 电子信息及电气工程学部专业:电气工程及其自动化班级:学生姓名:学号:完成日期:成绩:题目:电子密码锁1 设计要求设计一个8位串行数字锁,并验证其操作。
具体要求如下:1.开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯LT。
否则,系统进入“错误”状态,并发出报警信号。
2.开锁程序由设计者确定,并要求锁内给定的密码是可调的,且预置方便,保密性好。
3.串行数字锁的报警方式是点亮77指示灯LF,并使喇叭鸣叫来报警,报警动作响1分钟,停10秒钟后再重复出现,直到按下复位开关,报警才停止。
此时,数字锁自动进入等待下一次开锁的状态。
4.报警器可以兼作门铃用,门铃响的时间通常为7~10秒。
2 设计分析及系统方案设计系统的结构图如下图所示:本实验要求串行输入八位密码,密码可以随意设置,可以任意更改, 并且能够存储.而且能够显示出当前已经输入或者设置的位数,待输入八位后通过比较电路与预先设置的密码进行比较.如果输入的密码与存储的密码相同锁体打开如果输入的密码与存储的密码不同则报警系统打开发出警报.由于还要求有门铃功能所以增加一个门铃输入当门铃按下后门铃响十秒钟。
对于密码存储以及密码输入比较部分主要由load 控制。
load为0时系统功能为设置密码,此时只需要顺序串行输入八位0/1密码即可,系统将输入的密码自动保存在存储器内以便于输入的密码进行比较,当load为1时系统功能为输入密码,此时只需要顺序串行输入八位0/1即可,待输入八位后系统自动将刚输入的密码与存储器内的密码进行比较如果密码正确则开锁信号lt为1,否则警报信号lf 和响铃信号alm为1 lt为0 对于门铃部分当检测到press信号的下降沿时门铃开始响,计数器开始计数,此时始终脉冲频率为50MHz/16MHz=3.125Hz ,此时当计数器为30时既时间为30/3.125=9.6秒时门铃自动关闭。
3系统以及模块硬件电路设计系统电路图系统电路图如上如所示其中clk1脚接入50MHz的方波,load有两种状态----高电平和低电平状态。
k0 k1 press clr 分别接到四个去抖开关上开关按下去为低电平lt alm2 lf alm分别接到四个发光二级管上,当输出为1时二极管发光。
y0[0~6]分别接到HEX7对应的引脚上实现数码管显示功能。
Y1[0~6]分别接到HEX5对应的引脚上实现数码管显示功能。
其余各种逻辑功能由芯片内部计算执行来实现。
芯片内部程序通过对clk、load、k0、k1、press、clr输入信号的处理通过lt、alm2、lf、alm、y0[0~6]、y1[0~6]进行输出来达到系统所需要的功能。
DE2开发板上使用的元件要给出使用管脚编号。
4 系统的VHDL设计系统的主要功能是通过VHDL语言来实现的。
语言代码如下。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity mima isport (clk:in std_logic; --定义时钟k0:in std_logic; --输入一位0k1:in std_logic; --输入一位1clr:in std_logic; --复位load:in std_logic; --改变状态press:in std_logic; --门铃按钮alm2:out std_logic; --门铃lt:out std_logic; --开锁信号y0:out std_logic_vector(6 downto 0); --输入位数显示y1:out std_logic_vector(6 downto 0); --输出位数显示lf:out std_logic; --亮灯alm:out std_logic); --报警铃end mima;architecture aaa of mima issignal shift,lock:std_logic_vector(7 downto 0):="00000000"; --定义shift,lock signal lam1,lam:std_logic_vector(7 downto 0); --定义lam1,lamsignal la,li:std_logic; --定义la,lisignal clk1:std_logic; --定义clk1signal p:std_logic_vector (4 downto 0); --定义psignal aa:std_logic; --定义aa beginm16:process(clk) --将clk 16M分频variable q: std_logic_vector(22 downto 0);beginif clk'event and clk='1' then q:=q+1; --检测clk上升沿q=q+1end if;if q="11111111111111111111111" then clk1<='1'; -- clk1产生一个上升沿脉冲else clk1<='0';end if;end process m16;process(clk1,clr) --判断是否复位beginif clr='0' thenla<='0';li<='0';elsif clk1'event and clk1='1' then --检测clk1上升沿if load='0' then --判断状态la<='1'; --设置密码elseli<='1'; --输出密码end if;end if;end process;process(clk1,clr) --复位及输入设置密码variable a:integer range 0 to 8;beginif clr='0' then --复位lam<="00000000";--lam置零lam1<="00000000";--lam1置零shift<="00000000";--shift置零a:=0; --a置零lt<='0'; --开锁置零lf<='0'; --警报灯置零alm<='0'; --警报置零elsif clk1'event and clk1='1' then --检测上升沿if li='1' then --输入密码if a/=8 then --判断密码是否输入完毕if k1='0' then --输入1shift<='1'&shift(7 downto 1 ); --依次输入一个1lam<='1'&lam(7 downto 1); --点亮对应的一个小灯a:=a+1;elsif k0='0'then --输入一位0shift<='0'&shift(7 downto 1); --依次输入一个1lam<='1'&lam(7 downto 1); --点亮对应的一个小灯a:=a+1;end if;elsea:=0;if shift=lock then --判断密码是否正确lt<='1'; --正确开锁elself<='1'; --错误警报亮alm<='1'; --错误警报响end if;end if;elsif la='1' then --输入密码a:=0;if k1='0' then --输入一位1lock<='1'&lock(7 downto 1); --lock密码增加一位1lam1<='1'&lam1(7 downto 1); --点亮对应的灯a:=a+1;elsif k0='0' then --输入一位0lock<='0'&lock(7 downto 1); --lock密码增加一位0lam1<='1'&lam1(7 downto 1 ); --点亮对应的灯a:=a+1;end if;end if;end if;end process;code1:process(lam) --将小灯泡显示转换到LED显示begincase lam iswhen "00000000"=>y0<="1111111"; --显示0when "10000000"=>y0<="1111001"; --显示1when "11000000"=>y0<="0100100"; --显示2when "11100000"=>y0<="0110000"; --显示3when "11110000"=>y0<="0011001"; --显示4when "11111000"=>y0<="0010010"; --显示5when "11111100"=>y0<="0000010"; --显示6when "11111110"=>y0<="1111000"; --显示7when "11111111"=>y0<="0000000"; --显示8when others=>y0<="1111111"; --关闭数码管end case;end process;code2:process(lam1) --显示位数begincase lam1 iswhen "00000000"=>y1<="1111111"; --显示0when "10000000"=>y1<="1111001"; --显示1when "11000000"=>y1<="0100100"; --显示2when "11100000"=>y1<="0110000"; --显示3when "11110000"=>y1<="0011001"; --显示4when "11111000"=>y1<="0010010"; --显示5when "11111100"=>y1<="0000010"; --显示6when "11111110"=>y1<="1111000"; --显示7when "11111111"=>y1<="0000000"; --显示8when others=>y1<="1111111"; --关闭数码管end case;end process;pp:process(press) --门铃功能beginif press='0' then --按下门铃alm2<='1'; --门铃响end if;if clk1'event and clk1='1' then p<=p+1; --延时10秒end if;if p=30 thenp<="00000";alm2<='0'; --关闭门铃end if;end process pp;end aaa;5 结论以及结果说明本系统运行在联想计算机平台和Altera DE2平台,用的是quartus60软件调试环境,系统的参数选取均按照要求适当选取。