密码锁报告文件
- 格式:doc
- 大小:1.32 MB
- 文档页数:28
简易电子密码锁设计&我的设计思想联想到日前在安全技术防范领域,具有防盗报警功能的电子密码控制系统逐渐代替传统的机械式密码控制系统,并结合近期的学习过程和一些参考书籍,完成了简易的电子密码锁设计学习。
电子密码控制是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
电子密码控制不论性能还是安全性都已大大超过了机械类结,具有良好的应用前景。
一、设计目的与内容设计了一个简易电子密码锁,可按要求从矩阵键盘输入6位数密码如“080874”,输入过程中有按键音提示。
当密码输入正确并按下确认键(“OK”键)后,发光二极管被点亮。
二、工作原理与基本操作过程介绍采用80C51为核心的单片机控制。
利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,进行电子密码锁的设计。
(1)键盘的人工编码给每个按键指定一个按键值,报告设定按键S1~S9对应的按键值分别为“1~9”,S10为数字“0”,S11为“OK”,S12~S16对应的按键值分别为12~16。
(2)根据按键值,指定每个按键对应的输入数字和信息。
如下表为每个按键代表的数字和输入信息。
当键盘扫描程序扫描到S10键被按下时,将其代表的按键值“0”通知CPU,CPU根据事先的规定,就会知道输入的数字是“0”。
矩阵键盘中每个按键所代表的数字和输入信息(3)输入数字和密码对比。
先将设定的密码用一个数组保存,报告中用的密码“080874”和“OK”确认信息可以用如下数组保存:Unsigned char D[ ]={0,8,0,8,7,4,11};在主程序接收到数字和信息后,通过逐位对比的方法进行判断。
输入的数字经对比正确时,程序才会继续顺序执行,否则,程序拒绝继续执行。
(4)执行预期功能。
如果输入密码正确,执行预期功能,报告设计为点亮P3.0口引脚LED。
三、电路图设计(Proteus绘制)四、程序设计(C语言)矩阵式键盘实现的电子密码锁程序#include<reg51.h> //包含51单片机寄存器定义的头文件sbit P14=P1^4; //将P14位定义为P1.4引脚sbit P15=P1^5; //将P15位定义为P1.5引脚sbit P16=P1^6; //将P16位定义为P1.6引脚sbit P17=P1^7; //将P17位定义为P1.7引脚sbit sound=P3^7; //将sound位定义为P3.7unsigned char keyval; //储存按键值/************************************************************** 函数功能:延时输出音频**************************************************************/ void delay(void){unsigned char i;for(i=0;i<200;i++);}/************************************************************** 函数功能:软件延时子程序**************************************************************/ void delay20ms(void){unsigned char i,j;for(i=0;i<100;i++)for(j=0;j<60;j++);}/************************************************************** 函数功能:主函数**************************************************************/ void main(void){unsigned char D[ ]={0,8,0,8,7,4,11}; //设定密码EA=1; //开总中断ET0=1; //定时器T0中断允许TMOD=0x01; //使用定时器T0的模式1TH0=(65536-500)/256; //定时器T0的高8位赋初值TL0=(65536-500)%256; //定时器T0的高8位赋初值TR0=1; //启动定时器T0keyval=0xff; //按键值初始化while(keyval!=D[0]) //第一位密码输入不正确,等待;while(keyval!=D[1]) //第二位密码输入不正确,等待;while(keyval!=D[2]) //第三位密码输入不正确,等待;while(keyval!=D[3]) //第四位密码输入不正确,等待;while(keyval!=D[4]) //第五位密码输入不正确,等待;while(keyval!=D[5]) //第六位密码输入不正确,等待;while(keyval!=D[6]) //没有输入“OK”,等待;P3=0xfe; //P3.0引脚输出低电平,点亮LED}/**************************************************************函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位**************************************************************/void time0_interserve(void) interrupt 1 using 1 //定时器T0的中断编号为1,使用第一组寄存器{unsigned char i;TR0=0; //关闭定时器T0P1=0xf0; //所有行线置为低电平“0”,所有列线置为高电平“1”if((P1&0xf0)!=0xf0) //列线中有一位为低电平“0”,说明有键按下delay20ms(); //延时一段时间、软件消抖if((P1&0xf0)!=0xf0) //确实有键按下{P1=0xfe; //第一行置为低电平“0”(P1.0输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=1; //可判断是S1键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=2; //可判断是S2键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=3; //可判断是S3键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=4; //可判断是S4键被按下P1=0xfd; //第二行置为低电平“0”(P1.1输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=5; //可判断是S5键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=6; //可判断是S6键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=7; //可判断是S7键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=8; //可判断是S8键被按下P1=0xfb; //第三行置为低电平“0”(P1.2输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=9; //可判断是S9键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=0; //可判断是S10键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=11; //可判断是S11键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=12; //可判断是S12键被按下P1=0xf7; //第四行置为低电平“0”(P1.3输出低电平“0”)if(P14==0) //如果检测到接P1.4引脚的列线为低电平“0”keyval=13; //可判断是S13键被按下if(P15==0) //如果检测到接P1.5引脚的列线为低电平“0”keyval=14; //可判断是S14键被按下if(P16==0) //如果检测到接P1.6引脚的列线为低电平“0”keyval=15; //可判断是S15键被按下if(P17==0) //如果检测到接P1.7引脚的列线为低电平“0”keyval=16; //可判断是S16键被按下for(i=0;i<200;i++) //让P3.7引脚电平不断取反输出音频{sound=0;delay();sound=1;delay();}}TR0=1; //开启定时器T0TH0=(65536-500)/256; //定时器T0的高8位赋初值TL0=(65536-500)%256; //定时器T0的高8位赋初值}五、用Proteus软件进行仿真利用Keil软件进行编译通过后,生成hex文件。
重庆交通大学信息科学与工程学院课程设计报告班级: 2011级电子1班姓名:陈易学号: 631106020133 设计项目名称:电子密码锁实验所属课程:专业方向课程设计实验室(中心):现代电子实验中心指导教师:兰章礼设计完成时间: 2014 年 6 月 5 日一、设计的目标本次设计主要以STC89C52RC单片机为核心,实现开锁,修改密码,重置密码和保存密码等,完成基本的密码锁功能。
二、系统组成框架图2-1单片机控制方案三、主要元器件四、原理图五、主要软件流程本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。
主要程序设计流程图如下所示:图5-1 主程序流程图图5-2 键功能流程图图5-3 开锁流程图图5-4 密码设置流程图六、核心代码#include<reg52.h>#include<message.h>#include<1602.h>#include<Keyscan.h>#include<Login.h>#include<24c02.h>void open(); //开锁void set(); //修改密码void admin(); //使用管理员解除键盘锁void password_recovery(); //重置密码//系统管理员密码,系统初始化提示录入//系统初始化,还需要录入用户密码!// uchar admin_pwd[max_code]="999999";uchar key_value=0;uchar key_flage=0;uchar error_count=0;uchar is_colse_key=1; //1表示打开键盘0 表示关闭键盘!/********************开锁********************/void open(){clear();dis_arr(message1,0x80);input_pwd(pwd);clear();if(check_pwd(pwd,init_pwd)>0){//开锁成功dis_arr(message3,0x80);//dis_arr(message3,0x80);send_remand(0x80+0x0b);write_data(check_pwd(pwd,init_pwd)+0x30); //显示是哪个用户开锁key_flage=0;error_count=0;}else{//如果输入的密码错误,错误次数将+1;error_count++;if(error_count>=error_max_count){clear();dis_arr(message11,0x80);dis_arr(message12,0xc0);//现在开始锁定键盘管理员密码不可修改!//系统初始化第一次就提示录入管理员密码!//关闭键盘响应事件is_colse_key=0;key_flage=17;}else{dis_arr(message2,0x80);}key_flage=0;}}/********************修改密码********************/void set(){clear();dis_arr(message4,0x80);input_pwd(pwd);clear();//旧密码正确//系统管理员密码不允许修改!if(check_pwd(pwd,init_pwd)>0){//显示请输入新密码dis_arr(message5,0x80);//输入新密码input_pwd(new_pwd);clear();//显示再次输入密码dis_arr(message6,0x80);input_pwd(confirm_pwd);clear();//开始比较两次密码是否一致if(check_change_pwd(new_pwd,confirm_pwd)==1){//如果一致显示修改密码成功dis_arr(message8,0x80);//最后一步把数据写进去//这点进行二次判断//判断输入的是那个用户的密码!copy_password(new_pwd,init_pwd[check_pwd(pwd,init_pwd)-1]);// dis_arr(new_pwd,0xc0); //////////// //对密码的初始止进行修改//key_flage=0;}else{//如果不一致则显示修改失败dis_arr(message10,0x80);key_flage=0;}}else{//不正确则显示密码错误退出dis_arr(message2,0x80);key_flage=0;}}/********************解除键盘锁********************/ void admin(){//调用管理员的密码开门//添加一个功能,就是恢复被用户的密码//第一步清屏clear();//提示输入管理员密码dis_arr(message13,0x80);input_pwd(pwd);clear();if(check_pwd(pwd,init_pwd)==4){//开锁成功dis_arr(message3,0x80);is_colse_key=1;key_flage=0;error_count=0;}else{dis_arr(message2,0x80);key_flage=0;}}/********************重置密码********************/void password_recovery(){uchar error_flage=1;uchar exit_flage=1;uchar select_user=1;//恢复用户默认密码clear();//提示输入管理员密码dis_arr(message13,0x80);input_pwd(pwd);clear();if(check_pwd(pwd,init_pwd)==4) //输入是否是管理员密码{//成功//提示用户选择恢复那个用户的密码//开始捕获键盘输入//如果输入while(exit_flage){dis_arr(message15,0x80);key_value=keyscan();//表示输入合法if(key_value<10){//显示出输入的数字显示出输入的选项//但是10以后是不对的!send_remand(0xc0);write_data(key_value+0x30);}if((key_value==0||key_value>3)&&key_value!=17){clear();//提示用户输入的不存在,询问是否需要重新输入dis_arr(message16,0x80);dis_arr(message17,0xc0);//来检测按键while(error_flage){key_value=keyscan();if(key_value==key_ensure){clear();error_flage=0;}//退出if(key_value==key_exit){clear();exit_flage=0;error_flage=0;}}}if(key_value>=1&&key_value<=3){//询问是否是否确认重置这个用户的密码select_user=key_value;dis_arr(message18,0x80);//来检测按键while(exit_flage){key_value=keyscan();if(key_value==key_ensure){//重置密码copy_default_password(default_pwd,init_pwd[select_user-1]);clear();dis_arr(message19,0x80);exit_flage=0;}//退出if(key_value==key_exit){exit_flage=0;}}}//表示输入不合法,重新输入这个时候退出模式怎么弄//// 什么是否可以退出!按下确定键之后就进行确认是否恢复成为默认密码什么时候可以退出,按下清楚键!//退出if(key_value==key_exit){exit_flage=0;}}}else{dis_arr(message2,0x80);key_flage=0;}}//存储初始化密码void save_init_pwd(){save_data(4, init_pwd[0]);save_data(14,init_pwd[1]);save_data(24,init_pwd[2]);save_data(34,init_pwd[3]);}void read_init_pwd(){read_data(4,init_pwd[0]);read_data(14,init_pwd[1]);read_data(24,init_pwd[2]);read_data(34,init_pwd[3]);}void main(){uchar i='d',adr=1;clear();init();dis_arr(message9,0x80);//第一步先设计一个输入密码函数,用于接收输入的密码!//输入密码输入完成后按确定键退出//read_init_pwd();// dis_arr(init_pwd[0],0x80);// dis_arr(init_pwd[1],0x87);// dis_arr(init_pwd[2],0xc0);// dis_arr(init_pwd[3],0xc7);while(1){key_value=keyscan();if((key_value!=17&&is_colse_key)||key_value==admin_model){key_flage=key_value;}if(key_flage==open_door){open();}if(key_flage==key_set){set();save_init_pwd();}if(key_flage==admin_model){admin();}if(key_flage==code_reset){password_recovery();save_init_pwd();}key_flage=0;}}七、设计总结与体会通过这次实验,让我学会了许多知识。
一、实验目的1. 理解文件加密的基本原理和重要性。
2. 掌握使用加密工具对文件进行加密和解密的方法。
3. 提高对数据安全性的认识和实际操作能力。
二、实验环境1. 操作系统:Windows 102. 加密工具:TrueCrypt3. 实验材料:待加密文件(如文档、图片等)三、实验内容1. 理论学习(1)文件加密的基本原理:文件加密是通过将原始文件内容进行转换,使得只有拥有正确密钥的人才能解密还原原始文件的过程。
(2)加密算法:常见的加密算法有AES、DES、RSA等,其中AES加密算法因其安全性高、速度快而被广泛应用。
2. 实验步骤(1)准备实验材料:选择一个待加密的文件,如Word文档、图片等。
(2)安装TrueCrypt软件:从官方网站下载TrueCrypt软件,安装并运行。
(3)创建加密文件容器:在TrueCrypt软件中,点击“创建容器”,选择“标准TrueCrypt容器”作为加密方式,设置容器大小和加密算法。
(4)将文件放入加密容器:将待加密的文件拖拽到加密容器中,此时文件将被自动加密。
(5)保存加密文件:将加密后的文件保存到安全位置。
(6)解密文件:在TrueCrypt软件中,选择加密文件容器,输入密码,点击“打开容器”,即可解密文件。
3. 实验结果(1)加密文件:实验成功将待加密文件加密,并生成了加密文件容器。
(2)解密文件:使用正确密码成功解密加密文件,验证了加密和解密过程的有效性。
四、实验分析1. 文件加密的重要性(1)保护隐私:加密文件可以有效防止他人未经授权访问和篡改文件内容,保护个人隐私。
(2)数据安全:在数据传输过程中,加密文件可以防止数据被截获和篡改,提高数据安全性。
(3)合规要求:某些行业或组织对数据安全有严格要求,加密文件可以帮助企业或个人满足合规要求。
2. TrueCrypt加密工具的特点(1)免费:TrueCrypt是一款免费的开源加密软件,用户可以免费下载和使用。
数字密码锁实验报告⼀、主要要求及指标:1.设置三个正确的密码键,实现按密码顺序输⼊的电路。
密码键只有按顺序输⼊后才能输出密码正确信号。
2.设置若⼲个伪键,任何伪键按下后,密码锁都⽆法打开。
3.每次只能接受四个按键信号,且第四个键只能是“确认”键,其他⽆效。
4.能显⽰已输⼊键的个数(例如显⽰* 号)。
5.第⼀次密码输错后,可以输⼊第⼆次。
但若连续三次输⼊错码,密码锁将被锁住,必须系统操作员解除(复位)。
⼆、设计⽅案1.⽅案原理图:输⼊控制伪码键密码键确认键按键个数计数74LS164复位返回键复位键值锁存密码顺序判别亮灯显⽰输出控制亮灯报警密码正确2. 基本原理:输⼊按键,当密码键按正确循序按下,密码信号输⼊D触发器构成的移位寄存器,输⼊正确时信号从Q1移到Q3 ,Q3为“1”时输出密码正确信号,亮绿灯显⽰正确,否则信号传递失败,灯不亮。
按键同时⽤74164记录按键个数,⽆论密码键还是伪键,每次按键都产⽣⼀个脉冲,输出⼀个按键信号使⼀盏灯亮。
当最后位按键(第四位)不是“确认键”时,亮起红灯提⽰,重新按键。
扩展部分:当连续三次输⼊错码,74164计数电路输出错误信号,亮起红灯报警,同时使⽤与门控制使密码锁被锁住,此时必须系统操作员解除(复位)。
3.设计⽅案⽐较:按键个数计数电路我们考虑了两个⽅案。
⼀是:74164记录按键个数,⼆是由D触发器构成移位寄存器计数。
D触发器计数需使⽤更多元件,且增加电路复杂程度,使安全性稳定性⼤⼤降低,故我们最终选择了74164移位寄存器记录按键个数。
三、单元电路设计计算1、本电路主要包含四部分,分别是密码电路、按键个数计数电路、错误输⼊计数电路和防抖电路。
2、密码电路(硬件固化密码)1)⼯作原理当密码键按正确顺序按下,密码正确信号从Q1移到Q3,Q3为‘1’时表⽰密码正确输⼊。
2)D触发器7474N⼯作原理真值表:时序图:3)电路图本部分由4个D触发器和6个开关构成。
其中前三个D触发器分别代表密码的三位,第四个D触发器是确认键。
简易智能密码锁实验报告一、实验要求:设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。
基本要求: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,状态从锁定状态变成开锁状态。
电子门锁质量报告模板一、引言电子门锁是一种智能化家居产品,随着人们对家居安全的需求增加,电子门锁市场逐渐扩大。
本报告旨在对电子门锁的质量进行评估,并且分析其中存在的问题。
二、检测方法1.测试样本为了评估电子门锁的质量,我们在市场上随机选取了15款不同品牌的电子门锁,覆盖市场各种价位和样式。
2.测试步骤我们使用以下方法对电子门锁进行测试:1.安装:按照说明书的指导,进行门锁的安装与连接。
2.功能:测试门锁开关,使用密码、指纹和钥匙功能。
3.安全性:测试门锁抗冲击、抗暴力开锁等安全性能。
4.电池寿命:测试门锁使用电池寿命。
3.测试结果经过一周时间的测试,我们对15款电子门锁进行了全面检测。
结果如下:品牌样式价格(元)功能安全性电池寿命A 普通款499 及格中20天B 普通款699 良好中25天C 指纹款899 及格良好15天D 普通款599 不良中10天E 指纹款999 优秀优秀30天F 普通款499 及格不良15天G 指纹款1099 优秀优秀35天H 普通款599 及格中20天I 普通款699 良好中25天J 指纹款899 及格良好15天K 普通款599 不良中10天L 指纹款999 优秀优秀30天M 普通款499 及格不良15天N 指纹款1099 优秀优秀35天4.测试总结综合测试结果,我们分析出以下问题:1.在样本中,有5款电子门锁的安全性能不及格,需要进一步完善设计。
2.在样本中,有4款电子门锁的电池寿命较短,需要考虑优化电池寿命。
3.在价格相似的情况下,使用指纹识别的电子门锁性能更加优秀。
三、建议1.对门锁的安全性能进行进一步检测,尤其是暴力开锁的抗击性能。
2.优化电子门锁的电池设计,延长电池寿命。
3.加强对指纹识别技术的应用,提高电子门锁的智能化水平。
四、结论本次电子门锁测试覆盖了市场上多个品牌,从功能、安全性能和电池寿命等多个方面测试了电子门锁的质量。
在此过程中,我们发现了多个问题,提出了相应的解决方案。
简易密码锁设计实验报告(一)简易密码锁设计实验报告研究背景在当前的社会中,密码锁已经广泛应用于各种领域,如个人家庭、办公场所、银行等。
密码锁在保障安全的同时,也带来了便捷。
因此,设计一款简易密码锁具有重要意义。
实验目的本次实验旨在设计一款简易密码锁,能够通过输入正确的密码从而打开锁,同时能够保护用户的安全。
实验步骤1.确定锁的锁舌位置和大小,确定锁的存储方式。
2.选择合适的电子元件,如单片机、键盘、LED灯等。
3.设计程序流程,完成程序并进行调试。
4.进行实验,并测试相关数据。
5.对实验结果进行分析,总结实验过程中的问题并提出改进方案。
实验结果及分析经过一段时间的实验,我们设计出了一款简易密码锁。
该密码锁通过输入正确的密码可以打开锁,密码为“123456”。
在打开锁的过程中,如果输入错误的密码,则锁将不会打开,并提示密码错误。
同时,该密码锁还具有防止暴力破解的功能,在输入密码错误达到一定次数时,将自动锁死。
在实验过程中,我们发现了一些问题,如电路连线不够稳定、程序层次不够清晰等。
针对这些问题,我们进行了相应的改进,在稳定电路连线的同时,也简化了程序层次,提高了密码锁的使用体验。
结论通过本次实验,我们成功地设计出了一款简易密码锁,并成功地实现了输入正确密码可以打开锁的功能。
在实验过程中,我们遇到了一些问题,但经过不断地实验和调整,最终得到了一个较为完善的版本。
参考文献无。
实验心得通过本次实验,我进一步了解了密码锁的设计和工作原理。
在实验过程中,我采用科学严谨的方法去解决问题,例如测试数据、重新设计程序以及频繁的测试与优化。
这个过程让我深深地体会到了科学实验具有的重要性,只有不断地实验、总结、优化,才能得到一个经得起实验检验的好结果。
同时,在实验过程中我还学会了合理地进行电路的布线以及如何选取合适的元件,这些都是我在日后实际工作中所必备的技能。
在实验过程中,我还发现设计中的细节问题常常决定一个产品的品质,在以后的工作中,我会更加注重产品的细节设计。
电子密码锁实验报告一、实验目的。
1.了解电子密码锁的工作方式,制定设计方案。
2.利用ISE软件进行可编程逻辑器件设计,完成逻辑仿真功能。
3.使用编译器将设计实现,下载到BASYS2实验板上进行调试和验证所设计的四位二进制数的运算.二、实验器材.1.Pentium—Ⅲ计算机一台;2.BASYS2 实验板一只;三、实验方案。
1.基本功能。
利用开关进行密码输入,并利用一个微动开关作为触发判断,密码正确则显示RRRR,错误则显示FFFF。
2.清零功能。
利用一个微动开关,当微动开关按下则预设密码和验证密码都为0,可以重新设定密码。
3.利用开关进行十进制密码输入。
本密码锁使用sw[3:0]进行密码输入,利用开关表示出十进制数的二进制形式,利用两个微动开关分别作为预设密码与验证密码的确认键,按下确认键则密码输入。
4。
数码管显示本密码锁可以动态显示输入的密码,并且当每一位密码输入时,原密码自动左移一位,未输入密码时数码管显示零。
四、实验原理图。
五、实验模块说明及部分代码。
module checker(s1,c1,c2,c3,an,a_to_go,clk,clr);input [3:0]s1;input c1,c2,c3;output reg[3:0]an;output [6:0]a_to_go;input clr;input clk;reg [16:0] clk_cnt;reg [3:0]num_ge1;reg [3:0]num_shi1;reg [3:0]num_bai1;reg [3:0]num_qian1;reg [3:0]num_ge2;reg [3:0]num_shi2;reg [3:0]num_bai2;reg [3:0]num_qian2;reg [3:0]flag;reg [3:0]choose=0;(* KEEP =”TRUE" *)reg [1:0]panduan;always @(posedge clk)begin //分频clk_cnt=clk_cnt+1;if(clk_cnt[16])clk_cnt=0;endalways @(*)begin //数码管是能循环case(clk_cnt[14:13])2'b00:begin an[3]=1;an[2]=1;an[1]=1;an[0]=0;end2'b01:begin an[3]=1;an[2]=1;an[1]=0;an[0]=1;end2’b10:begin an[3]=1;an[2]=0;an[1]=1;an[0]=1;end2’b11:begin an[3]=0;an[2]=1;an[1]=1;an[0]=1;end default:begin an[3]=1;an[2]=1;an[1]=1;an[0]=1;end endcaseendalways @(posedge c2 or posedge clr)begin //输入设定密码if(clr)beginnum_ge1=0;num_shi1=0;num_bai1=0;num_qian1=0;endelsebeginnum_qian1=num_bai1;num_bai1=num_shi1;num_shi1=num_ge1;num_ge1=s1[3]*8+s1[2]*4+s1[1]*2+s1[0];endendalways @(posedge c3 or posedge clr)begin //输入测试密码if(clr)beginnum_ge2=0;num_shi2=0;num_bai2=0;num_qian2=0;endelsebeginnum_qian2=num_bai2;num_bai2=num_shi2;num_shi2=num_ge2;num_ge2=s1[3]*8+s1[2]*4+s1[1]*2+s1[0];endendalways @(posedge c2 or posedge c3 or posedge c1)begin //显示密码还是原码if(c2)beginchoose=0;endelseif(c3)beginchoose=1;endelsebeginchoose=2;endendalways @(*)begin //显示case(choose)0:case(clk_cnt[14:13])2’b00:begin flag=num_ge1;end2'b01:begin flag=num_shi1;end2’b10:begin flag=num_bai1;end2’b11:begin flag=num_qian1;enddefault begin flag=0;endendcase1:case(clk_cnt[14:13])2'b00:begin flag=num_ge2;end2’b01:begin flag=num_shi2;end2’b10:begin flag=num_bai2;end2’b11:begin flag=num_qian2;enddefault begin flag=0;endendcase2:if(panduan==1)begin flag=4'ha;endelseif(panduan==0)begin flag=4’hf;endelsebegin flag=0;endendcaseendalways @(posedge c1 or posedge clr)begin //判断if(clr)beginpanduan=2;endelseif(num_ge1==num_ge2)if(num_shi1==num_shi2)if(num_bai1==num_bai2)if(num_qian1==num_qian2)beginpanduan=1;endelse begin panduan=0;endelse begin panduan=0;endelse begin panduan=0;endelse begin panduan=0;endendset a1(.flag(flag),。
第1篇一、实验目的1. 了解密码报警锁的基本原理和设计方法。
2. 掌握密码报警锁的硬件电路设计和软件编程。
3. 通过实验,验证密码报警锁的功能和性能。
二、实验原理密码报警锁是一种结合了密码识别和报警功能的电子锁。
其基本原理如下:1. 用户输入密码:当用户需要开锁时,通过键盘输入预设的密码。
2. 密码识别:系统对输入的密码进行识别,判断是否与预设密码一致。
3. 开锁:若密码正确,则通过继电器控制锁具开启;若密码错误,则系统发出报警信号。
4. 报警:当密码连续输入错误达到预设次数时,系统发出声光报警信号。
三、实验器材1. 实验箱:包含AT89C51单片机、键盘、继电器、蜂鸣器、LED灯、电源等。
2. 仿真软件:Proteus。
四、实验步骤1. 硬件电路设计(1)根据实验要求,设计密码报警锁的硬件电路图。
(2)使用Proteus软件进行电路仿真,验证电路的正确性。
2. 软件编程(1)编写密码报警锁的软件程序,实现密码识别、开锁、报警等功能。
(2)使用Proteus软件进行程序仿真,验证程序的正确性。
3. 硬件调试(1)将设计好的电路焊接成实体电路。
(2)将编写好的程序烧录到单片机中。
(3)进行硬件调试,验证密码报警锁的功能和性能。
4. 功能测试(1)输入正确密码,验证开锁功能。
(2)输入错误密码,验证报警功能。
五、实验结果与分析1. 硬件电路设计经过Proteus仿真,电路设计符合预期,能够实现密码报警锁的基本功能。
2. 软件编程经过Proteus仿真,软件程序运行正常,能够实现密码识别、开锁、报警等功能。
3. 硬件调试经过硬件调试,密码报警锁能够实现预设功能,性能稳定。
4. 功能测试(1)输入正确密码,锁具开启,验证开锁功能。
(2)输入错误密码,系统发出报警信号,验证报警功能。
六、实验总结本次实验成功设计并实现了密码报警锁。
通过实验,掌握了密码报警锁的基本原理、硬件电路设计和软件编程方法。
实验过程中,提高了动手能力和问题解决能力。
密码锁实验报告篇一:电子密码锁实验报告密码锁实验报告一,实验目的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在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。
程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。
计算机硬件技术基础课程设计设计题目:电子密码门锁设计学院班级:指导教师:小组成员:二零一四年九月十日目录摘要 (2)1 绪论 (3)1.1引言 (3)1.2 设计背景 (3)1.3 功能介绍 (3)1.4 小组成员分工 (4)2 系统设计 (5)2.1 硬件系统设计框图 (5)2.1.1 80486微处理器简介 (5)2.1.2 4×4矩阵键盘 (6)2.1.3 报警电路 (6)2.1.4 三色LED显示电路 (7)2.1.5 第五片8255A模块 (8)2.1.6 8254模块 (8)2.2 系统设计软件流程图 (9)2.2.1 主程序流程图 (9)2.2.2 开门程序流程图 (10)2.2.3 修改密码程序流程图 (11)3 总结与感想 (12)3.1同学的总结与感想 (12)3.2同学的总结与感想 (14)3.3同学的总结与感想 (15)4 程序 (17)摘要随着科技的进步和人民生活水平的逐步提高,人们对锁的安全性的要求也越来越高。
传统锁机械构造简单,被撬事件屡见不鲜;电子锁安全、灵活,受到了广大用户的青睐。
本次设计我们主要以80486微处理器对电子密码锁施以监测和控制。
硬件方面,我们主要运用到了4×4小键盘、三色数码管、LED小灯和扬声器,通过硬件方面紧密的配合,实现了电子密码锁的功能。
软件方面,我们采用的是汇编语言控制各个硬件。
经数次测试,本系统的各项功能均以达到此次设计的所有要求。
关键词:80486微处理器 4×4小键盘三色数码管 LED小灯扬声器1 绪论1.1 引言随着科技的进步和人民生活水平的逐步提高,人们对锁的安全性的要求也越来越高。
传统锁机械构造简单,被撬事件屡见不鲜;电子锁安全、灵活,受到了广大用户的青睐。
科技的进步给人们的生活带来极大的方便,同时也满足着人们越来越高要求。
近几年市场上出现的指纹锁、激光锁、声控锁、人脸识别锁都说明了这个问题。
电子密码锁是利用人们设置的密码作为钥匙来对门进行开关控制的一种锁,其安全、灵活的特性满足了人们多新型锁的要求。
同时,电子密码锁还具备着原理简单、程序容易实现、硬件电路不复杂的特点,这就为广大大学生在平时的学习生活中中提供了很好的练手机会。
基于以上原因,在此次课程设计中我们小组设计了电子密码锁。
1.2 设计背景随着社会的进步,各种犯罪手段越来越高明,传统机械锁已不能满足安全的需要,因此各种新型锁应运而生。
电子密码锁是新型锁的一种,因此,研究一种安全性能高、灵活性好的电子密码锁既具有现实意义,又能推动新型锁的发展。
而作为一名自动化人,我们有义务为任何一项科技的革命贡献出自己的力量。
1.3 功能介绍开门程序或修改密码程序,同时三色LED显示“go”提示用户进行后面步骤本设计是以扬声器作为发声装置,以4×4键盘作为功能按键,根据预设的密码对门锁实现安全控制。
只有密码完全符合时才能开门,密码不符时控制三色LED红绿交错显示“CUO”,扬声器发声报警。
基本功能如下:密码为6位,预设密码为“123456”。
首先三色LED会显示“sec”(即“select”),提示用户进行功能选择(选开门功能或修改密码功能)。
按下开门键(A键)或修改密码键(C键)分别进入的相应操作。
若按下开门键(A键),则继续输入密码,若密码正确,则按下确认键(D键)门开,指示灯闪一下。
然后按关门键(B键)关门,指示灯闪两下,最后按下返回键(E键)返回。
若输入的密码错误,三色LED显示“CUO”,则按下确认键后继续输密码,若密码正确则门开。
若密码错误错上3次则扬声器报警,且三色LED红绿交错显示“CUO”提示信息。
按下返回(E键),回到功能选择,三色LED显示“sec”。
若按下修改密码键(C键),进入修改密码程序,LED显示“go”以后输入原初始密码(预设密码“123456”),若密码错误,三色LED显示“CUO”,则按下确认键后继续输密码,若密码正确则进入密码修改界面。
若密码错误错上3次则扬声器报警,且三色LED红绿交错显示“CUO”提示信息。
若密码正确,按下确认键(D键),三色LED显示“GC”,再按键盘,输入新开门6位密码,输入完成后按确认键(D键)保存新密码,并按返回键(E键)返回功能选择。
1.4 小组成员任务分工姓名学号任务何川20115137 程序框架构思、部分子程序的编写、程序和硬件调试、硬件电路研究、论文修改刘雯文20115111 课题方案制定、部分子程序编写、程序和硬件调试、硬件电路研究、论文编写邱栋20115129 部分子程序编写、硬件电路研究、程序和硬件调试、材料准备、论文排版2 系统设计2.1 硬件系统设计框图2.1.1 80486微处理器简介80486是针对多用户和多任务系统需要而推出的高性能32位微处理器。
除 了80286具有的各种寄存器外,80486有若干控制寄存器、调试寄存器和测试寄存器,而且寄存器的容量都扩充到了32位或以上,因此具有32位数据处理能力。
另外,80486还可进行64位的数据运算,如32位乘32位的乘法运算和64位除以32位的除法运算等,并且进一步增强了位处理指令的功能。
片内存储管理部件可实现段页式存储管理。
80486共有三种工作方式:实地址方式、保护虚地址方式和保护虚拟8086方式 (简称虚拟8086方式)。
80486的指令流水线已增加到6级,即取指令、指令译码、地址生成、取操作数、执行指令和回写结果。
80486提供了32位外部总线接口,最大数据传输速率显著提高。
总线接口支持动态数据宽度控制,能自动地在16位和32位数据总线间进行切换,以适应不同位数的存储器和I/O 设备。
80486微处理器报警电路密码输入4×4小键盘三色LED 显示电路2.1.2 4×4矩阵键盘键盘设计:采用4×4矩阵键盘的形式对门进行开关的控制,密码的重置、以及三色数码管显示的按键操作等。
其中,键盘的行与8255芯片的PA0~PA3相连,键盘的列与8255芯片的PB0~PB3相连。
(8255芯片的片选接320H) 按键功能0~9 数字键A 开门键B 关门键C 设置键D 确认键E 返回键F 无效2.1.3 报警电路报警电路:警报的发声功能由扬声器实现。
由于扬声器发声需要振动源,因此扬声器的振动源与8254的计时器0的输出端OUT0相连。
扬声器的工作原理:扬声器是一种把电信号转变为声信号的换能器件,扬声器的性能优劣对音质的影响很大。
扬声器在音响设备中是一个最薄弱的器件,而对于音响效果而言,它又是一个最重要的部件。
扬声器的种类繁多,而且价格相差很大。
音频电能通过电磁,压电或静电效应,使其纸盆或膜片振动并与周围的空气产生共振(共鸣)而发出声音。
上图为本次课程设计使用的扬声器电路原理图,工作原理为:在电阻R1的左端输入由8254芯片产生的一定频率的方波信号,该信号经过两级三极管的放大后,驱动扬声器工作,从而产生想要的声音。
2.1.4 三色LED显示电路三色LED显示电路:由于本设计的显示部分采用的是三色LED,而在设计提供的试验箱中,三色LED本身与固定的4片8255芯片相连,且地址固定,所以显示部分已不再需要另接线路。
2.1.5 第五片8255A模块第五片8255A模块电路:本实验课题选择320H地址作为第五片8255A的片选。
第五片8255A模块A口作为输入(PA3~PA0与4×4矩阵键盘P3~P0相连),B口作为输出(PB3~PB0与4×4矩阵键盘Q3~Q0相连),C口作为输出(PC7和PC6分别与LED小灯相连,作为门开关的状态显示)。
2.1.6 8254模块8254模块:本实验设计选择8254定时器的通道0,片选地址为300H。
其OUT0输出的频率作为扬声器的输入,本设计课题扬声器发声的频率为1000HZ,扬声器不发声的频率为10HZ。
8254引脚8254引脚的接线GATE0 +5VCLK0 47K HZOUT0 扬声器的频率输入2.2 系统设计软件流程图2.2.1 主程序流程图开始有关工作单元初始化三色LED初始化,显示“sec”调用键盘扫描程序N进入开门程序Y进入修改密码程序YN键值==0BBH ?键值==7EH ?2.2.2 开门程序流程图开始输入密码密码正确?开门(LED 小灯闪一下)按关门键关门(LED 小灯闪两下)按返回键返回三色LED 提示密码错,并重新输入密码密码正确?Count=3Count ——Count==0?三色LED 红绿交错显示密码错,扬声器报警按返回键返回YYYNNN2.2.3 修改密码程序流程图开始Count=3输入密码三色LED 显示修改密码输入新密码按返回键返回按确认键保存新密码密码正确?三色LED 提示密码错,并重新输入密码密码正确?Count ——Count==0?三色LED 红绿交错显示密码错,扬声器报警按返回键返回YNYNYN3 总结与感想3.1同学的总结与感想:经过了漫长的暑假,一来学校就要做课程设计,对我来说确实压力山大。
更别说是我们已经学过了很久的计算机硬件了。
对我而言,由于当初教我计算机硬件的老师尽职尽责,自我感觉这门课还学得可以。
但现在,经过了一年,这门课也忘得差不多了。
我知道9月1号每个人就会拿到课程设计的题目。
为了做课程设计的时候不至于无所适从,我提前3填来到学校,看了3天的计算机硬件,慢慢捡回了一些关于这门课的回忆。
9月1号,我们拿到了课程设计的题目。
在众多的题目中我最钟意的是无声电子琴,但我们分到的却是电子密码锁这个题目。
一开始拿到这个题目的时候我有点无所是从,不知道该从何下手。
但就在当天下午,我们的组长——v同学就召集我们开了一个小会,把有关这个设计的思路捋了捋。
总的来说我们就分成了三个部分:主程序、开门程序和修改密码程序。
或许是很久没有碰过计算机硬件这门课了,亦或许是太久没有用汇编语言编程了,在设计的过程中我们还是遇到了很多的技术难点。
技术难点1:怎么存放初始密码?我们刚开始想的办法是:预设6个单独的变量,把输入的密码一个一个同这6个单独变量比较,若全部都相等,则输入密码正确。
但后来的实践告诉我们这样根本行不通。
因为如果这样,我们就需要比较六次,而这样是很麻烦的。
为了解决这个技术难点,我们预设了一个表,里面装着初始密码,再把SI指向表的首地址,并专门设置了一个计数的变量count,每比较一次并且相等count 就减一,如若某一位不相等就跳出比较。
经实践证明,这种方法可行且有效。
技术难点2:怎么把修改的密码存起来?其实解决了问题1就解决了这个问题。
通过建表的方式,并使DI指向表的首地址,然后把输入的密码一个个存入[DI]中。
技术难点3:报警问题。
或许,在任何一个项目中,设计者都有脑袋短路的时候吧,而这个问题就是我们小组三个成员集体都脑袋短路的时候出现的问题。