简单六位数字密码锁
简易电子密码锁(基于51单片机)报告

简易电子密码锁设计&我的设计思想联想到日前在安全技术防范领域,具有防盗报警功能的电子密码控制系统逐渐代替传统的机械式密码控制系统,并结合近期的学习过程和一些参考书籍,完成了简易的电子密码锁设计学习。
电子密码控制是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
电子密码控制不论性能还是安全性都已大大超过了机械类结,具有良好的应用前景。
一、设计目的与内容设计了一个简易电子密码锁,可按要求从矩阵键盘输入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文件。
6位数字密码大全

6位数字密码大全首先,我们需要明白一个概念,那就是一个安全的密码应该是由数字、大小写字母和特殊符号组成的组合,这样才能大大增加密码的复杂度,提高破解的难度。
但是在某些情况下,我们可能只能使用数字作为密码,因此,我们需要找到一些6位数字密码的组合,来确保密码的安全性。
以下是一些常见的6位数字密码组合:1. 123456。
2. 000000。
3. 111111。
4. 654321。
5. 121212。
6. 777777。
7. 888888。
8. 999999。
9. 666666。
10. 555555。
以上这些密码组合都是非常常见的,很多人会选择这样简单的数字组合作为自己的密码。
但是,这些密码组合非常容易被破解,因此我们在设置密码的时候一定要避免使用这些常见的组合。
接下来,我们来看一些相对安全一些的6位数字密码组合:1. 135790。
2. 246810。
3. 987654。
4. 159357。
5. 369258。
6. 753951。
7. 852147。
8. 456123。
9. 654321。
10. 147258。
以上这些密码组合相对来说比较不容易被破解,因为它们的组合看起来比较随机,不容易被人猜到。
当然,即使是这样的密码组合,我们在设置密码的时候也需要注意一些规则,比如避免使用连续的数字、重复的数字等等。
最后,我们还可以通过一些特殊的方式来设置6位数字密码,比如通过自己的生日、纪念日、电话号码等个人信息来设置密码,这样的密码组合对于别人来说是比较难猜到的。
但是需要注意的是,这样的密码组合也存在被猜到的风险,因此在设置密码的时候一定要慎重考虑。
总的来说,一个安全的6位数字密码应该是比较随机的组合,避免使用常见的组合,同时也要避免使用个人信息来设置密码。
希望大家在设置密码的时候能够注意这些问题,保护好自己的个人信息和财产安全。
VHDL密码锁(6位串行输入).doc

VHDL密码锁(6位串行输入)《电子设计自动化》课程设计题目:数字密码锁电路(1.1)院(系)信息科学与工程学院专业 15通信工程届别班级学号姓名任课老师数字密码锁电路,难度系数1.1实验要求设计一个密码锁,有6位十进制数字密码,串行输入;能设置密码;有开锁和错误指示(LED);如果连续输错三次,则一刻钟内不能再开锁。
本设计的各个模块由相应的VHDL程序具体实现,并在Quartus Ⅱ9.0环境下进行了整体电路的模拟仿真,最终实现“密码锁设计”的要求。
实验设计要求6位串行输入,并且由于实验板输入键位的有限,还同时增加了输入密码与设置密码键位的重叠,使密码锁电路输入输出形成一个反馈,通过对输出的判断,让电路自动识别输入的数字是设置的密码还是输入的密码。
在程序初始载入实验板时,还要让密码锁的初始设置密码和输入密码相同,从而达到能够初始设置密码的逻辑要求。
同时因为实验板输出的LED灯有限,还要求设计的密码锁电路的显示能够在输入密码、设置密码和倒计时之间灵活智能选择,从而达到满足使用的要求。
密码锁在输入三次错误密码后需要开始一个一刻钟即900秒的倒计时,则需要设计一个逻辑电路使电路能够在输入和错误倒计时之间自由变化。
此为本实验设计的主要难点和创新。
目录1.系统设计 (4)2.单元电路设计 (7)3.软件设计 (12)4.系统测试 (23)5.结论 (24)6.参考文献 (24)7.附录 (25)8.其他 (26)系统设计设计要求:设计一个密码锁,有6位十进制数字密码,串行输入;能设置密码;有开锁和错误指示(LED);如果连续输错三次,则一刻钟内不能再开锁。
系统设计方案:先设计1.0难度的密码锁,此时不需要一刻钟计时模块。
该电路首先需要一个输入模块,由于实验板的限制,安排两个键位作为输入,分别实现6个密码位的选择和对确定位密码的输入,所以在输入模块之前,还需要通过计数器来分别得到两个输入;之后设计一个密码合成及选择模块,将得到的6个4位的密码相加得到一个24位的密码,方便之后的比较,同时需要在输入模块添加一个选择,分别确定此时的输入信息是设置密码还是输入密码;将得到的24位设置密码和输入密码分别放到一个确认模块,起到输入确认并且使初始信息清零的作用;最后将两个24位数据放入比较模块,确定密码锁的状态,状态的显示由LED灯实现;输出显示LED模块从输入模块之前接出,显示当前电路的输入;同时,在计数器之前需要加入消抖模块,使实验板能够稳定输入;在LED模块之前需要添加译码器,以输出正确显示。
6位密码锁课程设计

6位密码锁课程设计一、课程目标知识目标:1. 学生能够理解密码锁的基本原理,掌握6位密码锁的构造和功能。
2. 学生能够运用数学逻辑思维,分析密码的组合方式和可能性。
3. 学生能够运用所学知识,解释日常生活中类似密码锁的加密技术应用。
技能目标:1. 学生能够运用逻辑推理和数学方法,设计出具有较高安全性的6位密码锁。
2. 学生能够运用所学知识,解决与密码锁相关的实际问题,提高解决问题的能力。
3. 学生能够通过小组合作,进行有效沟通与协作,共同完成密码锁的设计与验证。
情感态度价值观目标:1. 培养学生对密码学及信息安全领域的兴趣,激发学生的求知欲和探索精神。
2. 培养学生严谨、细心的学习态度,提高学生对安全意识的认识。
3. 培养学生团队协作精神,学会尊重他人意见,共同为达成目标而努力。
本课程针对六年级学生的认知特点,以实际生活中的密码锁为载体,结合数学和逻辑思维,引导学生掌握密码锁的基本原理和设计方法。
课程注重培养学生的实践能力和创新意识,同时强化学生的安全意识,提升综合素质。
通过本课程的学习,学生能够将所学知识应用于实际生活,为未来的学习和发展奠定基础。
二、教学内容1. 密码锁原理介绍:讲解密码锁的基本工作原理,包括密码的设置、存储和比对过程。
- 教材章节:第三章《数据的表示与加密》- 内容列举:数字编码、加密算法初步介绍2. 6位密码锁设计:分析6位密码的组合方式和可能性,探讨如何设计出安全性高的密码。
- 教材章节:第四章《简单的加密技术》- 内容列举:排列组合、概率统计在密码设计中的应用3. 实践操作:分组进行密码锁设计实践,让学生亲身体验设计过程,提高实际操作能力。
- 教材章节:第五章《实践活动》- 内容列举:动手制作简易密码锁、分析密码锁的破解方法4. 密码锁应用与拓展:介绍密码锁在现实生活中的应用,激发学生学习兴趣,拓展知识面。
- 教材章节:第六章《密码学在日常生活中的应用》- 内容列举:密码锁在银行、手机等领域的应用案例教学内容按照上述安排,注重理论与实践相结合,逐步引导学生掌握密码锁相关知识。
数字密码锁

读一读 想一想
重要的文件箱,一般使用由六个数字组成的密码锁。
某市私家车车牌号是由四个数字组 成的,由于私人汽车发展迅速,车辆管 理部门就在四个数字最前面增加了一个 英文字母。这样可增加多少个车牌号?
车牌目前没有字母O,没有字母I,因为字 母O和I与数字0、1相似,所以车牌中没有。但 各地公安系统曾经用O,比如:京O;沪O等等, 有些地方已经取消,但还有保留的。
如果密码锁的密码是由三个数字 组成的,那么0、1、2、3、4、5、6、7、8、9这十个 数字就能组成1000个密码。
你能根据两个数字组成100个密码推 算出这个结果吗?试一试!
想一想
一个由三个数字组成密码的密码锁,一共有1000 个密码。
如果每试一组密码花费10秒,你知道试1000次 最长需要几小时呢?
练一练:
1.电话号码从六位升为七位,可增 加多少用户?从七位升为八位呢? 2.三个数字密码和三个字母密码哪 个更安全?为什么?
1、结合具体事例,经历了探索数 字编码的过程。
2、了解了数字密码的编码规律, 能解答简单数字编码的实际问题。
3、知道了数字密码的用途。
Hale Waihona Puke 学习目标:1.结合具体事例,经历探索数字编码的过程。 2.了解数字密码的编码规律,能简单解答数 字密码的实际问题。 3.知道数字密码的用途,体会数学的价值,树 立学好数学的信心。
1、假如密码锁的密码是由两个 数字□□组成的,每格都可以出现0、 1、2、3、4、5、6、7、8、9十个数 字。
这样的密码锁一共有多少个密码?
三彪智能密码锁f2说明书

三彪智能密码锁f2说明书三彪智能密码锁F2说明书一、产品概述三彪智能密码锁F2是一款高端智能密码锁,采用先进的指纹识别、密码输入和钥匙开锁三种方式,能够保障您的家庭和办公室的安全。
本产品具有防水、防撬、防盗等多种功能,并且支持多组指纹录入,方便多人使用。
二、产品特点1. 三种开锁方式:支持指纹识别、密码输入和钥匙开锁三种方式,满足不同用户的需求;2. 多组指纹录入:可录入多组指纹,方便多人使用;3. 高安全性:采用先进的指纹识别技术,识别率高且安全性好;4. 防撬设计:锁身和锁舌采用加固设计,防撬性能强;5. 防水设计:经过特殊处理,具有一定的防水性能,适用于室内和室外使用;6. 防盗报警:密码输入错误达到一定次数或指纹识别失败,会自动触发报警功能,保障您的家庭和办公室的安全;7. 低电提醒:当电池电量低时,会自动发出低电报警提醒,及时更换电池。
三、产品参数1. 尺寸:XXXXX2. 重量:XXXXX3. 材质:XXXXX4. 电源电压:XXXXX5. 工作温度:XXXXX6. 密码位数:6位数字密码7. 指纹识别时间:小于1秒8. 电池寿命:约一年,取决于使用频率和电池品质四、使用方法1. 指纹录入:按照说明书中的步骤录入指纹,每组指纹最多可以录入10个;2. 密码设置:按照说明书中的步骤设置密码,密码长度为6位数字;3. 钥匙开锁:使用配套的钥匙进行开锁;4. 开锁操作:根据所选择的开锁方式进行操作,指纹识别时请将手指按在指纹传感器上,等待识别成功后即可开锁;5. 低电提醒:当电池电量低时,会自动发出低电报警提醒,请及时更换电池。
五、注意事项1. 请妥善保管好钥匙,避免钥匙丢失或被盗;2. 避免将锁暴露在阳光直射和雨水浸泡的环境中,以免影响产品的使用寿命;3. 避免使用尖锐物品撬动或击打锁体,以免损坏锁体;4. 请勿将产品暴露在高温或低温环境中,以免影响产品的性能;5. 如有其他问题,请及时联系售后服务中心。
PLC六位密码锁

课程名称:可编程控制器技术及应用设计题目:基于PLC的六位密码锁设计院系:电气工程系专业:电子信息工程年级:20 09级*名:**指导教师:***西南交通大学峨眉校区2012 年 4 月13 日课程设计任务书专业电子信息工程姓名李垚学号20098157开题日期:2012 年 3 月 1 日完成日期:2012 年 6 月15 日题目基于PLC的六密码锁设计一、设计的目的1) 设计出PLC控制的密码锁程序;2) 掌握PLC的编程软件编程平台、定时器、计数器、传送指令、主子程序等有关指令的编程方法;3)熟悉PLC与上机通讯、软件调试的方法;4)培养大学生的综合设计能力、分析问题与解决问题的能力。
二、设计的内容及要求1)设计内容:用PLC设计一个6位密码锁,实现对重要场所的安全门控。
2)设计要求:A、输入密码正确时,执行开门信号。
B、输入密码错误3次以上时报警,密码输入正确后取消报警。
C、重设密码。
三、指导教师评语四、成绩指导教师(签章)年月日摘要:本设计是采用西门子PLC来设计密码程序的,程序中应用到了近20 个计数器。
设计的密码锁外观图类似于银行取款机台上的键盘。
给人感觉就和那种输入密码的过程一样。
其实不然,本设计中采用了计数器控制的特点,每个计数器的次数设定为几次那么所对应的按键就要按几次。
本设计分为开锁环节和解锁环节,开锁环节设定六个按键有效,解锁环节设定了七个按键有效,这样一来设定的开锁密码位数就大于等于六位了,解锁密码位数就大于等于七位。
要看计数器设定的次数而定。
如果密码锁报警的话必须先输入解锁密码,后输入开锁密码方能开锁。
设计背景:随着人们生活水平的提高,如何实现家庭放到这一问题也变得尤其的突出,传统的机械锁由于其结构的简单,被撬的事件屡见不鲜,同时,季节所一般配有金属钥匙,带起来太重,万一弄丢了,所可能就没用了。
电子锁保密性高,密码泄露了,换个密码,锁照样能用;使用灵活性好,安全系数高,能够防止不法分子多次试探密码;性价比好,因此,密码锁受到了广大用户的青睐。
简单六位数字密码锁

简单六位数字密码锁 This manuscript was revised on November 28, 2020目录第1章绪论设计任务(1)设置七个键位,分别是确认,数字1,数字2,数字3,数字4,数字5,数字6,工作有提示(设通电状态为红灯亮)。
(2)在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。
预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)。
(3)输入密码时,数码管同步显示输入的数字。
(4)输入正确后,有解锁提示(设为绿灯亮),输入错误后也有提示(设为红灯闪烁和鸣笛警告)(5)输入错误后可以重输,要有复位功能。
设计要求利用AT89S52单片机的P2端口的连接到7个按键开关上,分别是输入键数字1,数字2,数字3,数字4,数字5,数字6和确认键,接蜂鸣器。
启动时,按下电源开关,红色指示灯长亮,输入密码,而数码管显示输入的相应数字,然后按下确认键,若密码正确,绿灯亮,数码管熄灭,弱密码错误,红灯闪烁,蜂鸣器响,发出警报。
第2章系统方案设计硬件设计思想键盘设计本设计使用7按键,从上到下,从左至右依次设为确认键,数字1,数字2,数字3,数字4,数字5,数字6,用来输入密码,如下图图键盘仿真图数字显示设计使用共阳极七段数码管来显示输入的数字,图如下:图显示仿真图检验密码电路设计使用LED灯和蜂鸣器来提示输入的密码是否正确,若密码正确,绿灯亮,若密码错误,红灯闪烁,蜂鸣器响,电路如图:图密码验证系统仿真图软件设计思想电子密码锁工作的主要过程是从键盘开始输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。
密码的设定,在此程序中密码是固定的,预设的密码为"532416"共6位密码。
在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。
预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)输入密码时,数码管要在单片机的控制下同步显示输入的数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录第1章绪论 (1)1.1 设计任务 (1)1.2 设计要求 (1)第2章系统方案设计 (2)2.1 硬件设计思想 (2)2.2软件设计思想 (3)第3章电路设计 (4)3.1 电路原理 (4)3.2 电路原理图 (4)第4章程序设计 (5)4.1流程图 (5)4.2 算法描述 (5)第5章程序清单与仿真结果 (6)5.1 程序清单 (6)5.2 仿真结果 (14)第6章设计总结 (17)6.1 设计体会 (17)参考文献 (18)致谢 (19)实物展示..................................... 错误!未定义书签。
第1章绪论1.1 设计任务(1)设置七个键位,分别是确认,数字1,数字2,数字3,数字4,数字5,数字6,工作有提示(设通电状态为红灯亮)。
(2)在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。
预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)。
(3)输入密码时,数码管同步显示输入的数字。
(4)输入正确后,有解锁提示(设为绿灯亮),输入错误后也有提示(设为红灯闪烁和鸣笛警告)(5)输入错误后可以重输,要有复位功能。
1.2 设计要求利用AT89S52单片机的P2端口的P2.0--P2.6连接到7个按键开关上,分别是输入键数字1,数字2,数字3,数字4,数字5,数字6和确认键,P2.7接蜂鸣器。
启动时,按下电源开关,红色指示灯长亮,输入密码,而数码管显示输入的相应数字,然后按下确认键,若密码正确,绿灯亮,数码管熄灭,弱密码错误,红灯闪烁,蜂鸣器响,发出警报。
第2章系统方案设计2.1 硬件设计思想2.1.1 键盘设计本设计使用7按键,从上到下,从左至右依次设为确认键,数字1,数字2,数字3,数字4,数字5,数字6,用来输入密码,如下图图2.1 键盘仿真图2.1.2 数字显示设计使用共阳极七段数码管来显示输入的数字,图如下:图2.2 显示仿真图2.1.3 检验密码电路设计使用LED灯和蜂鸣器来提示输入的密码是否正确,若密码正确,绿灯亮,若密码错误,红灯闪烁,蜂鸣器响,电路如图:图2.3 密码验证系统仿真图2.2软件设计思想电子密码锁工作的主要过程是从键盘开始输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。
密码的设定,在此程序中密码是固定的,预设的密码为"532416"共6位密码。
在单片机内部预设六位密码,在使用密码解锁器时,要按预设的密码依次输入才能完成解锁。
预设密码以外的数字都不能解开密码锁(如输入非6位或输入6位与预设密码不同的数字)输入密码时,数码管要在单片机的控制下同步显示输入的数字。
第3章电路设计3.1 电路原理单片机最小系统。
一个AT89S52单片机做为控制电路,运用其P2口来实现密码的输入和蜂鸣器的报警,通过P0口给数码显示管高低不同电平信号,来实现输入密码的显示,P1接指示灯。
3.2 电路原理图图3.2 电路原理图第4章程序设计4.1流程图图4.1 系统流程图4.2 算法描述1、设计一个延时子程序void delayms(unsigned int t){unsigned int i,j;for(i=t;i>0;i--)for(j=114;j>0;j--);}2、主程序void init()void delayms(unsigned int t)void main()第5章程序清单与仿真结果5.1 程序清单#include<reg52.h>sbit mm1=P2^0;//密码按键1-8sbit mm2=P2^1;sbit mm3=P2^2;sbit mm4=P2^3;sbit mm5=P2^4;sbit mm6=P2^5;sbit mmok=P2^6;sbit l1=P1^0;sbit l2=P1^2;sbit fmq=P2^7;void init(){P0=0xff;//禁止数码管显示mm1=1;mm2=1;mm3=1;mm4=1;mm5=1;mm6=1;mmok=1;fmq=1;l1=1;l2=1;}void delayms(unsigned int t){unsigned int i,j;for(i=t;i>0;i--)for(j=114;j>0;j--);}void main(){unsigned char mmsr,bn,bn1,bn2,bn3,bn4,bn5;mmsr=0;bn=0;bn1=0;bn2=0;bn3=0;bn4=0;bn5=0;mmsr=1;init();while(1){if(mmsr==1){if(mm5==0) //系统8位程序密码532416 {delayms(10);if(mm5==0){bn=1;P0=0xff;//消隐P0=0x92;//显示5}}if((mm3==0)&(bn==1)){delayms(10);if((mm3==0)&(bn==1)){bn1=1;P0=0xff;//消隐P0=0xb0;//显示3}}if((mm2==0)&(bn1==1)) {delayms(10);if((mm2==0)&(bn1==1)){bn2=1;P0=0xff;//消隐P0=0xa4;//显示2}}if((mm4==0)&(bn2==1)) {delayms(10);if((mm4==0)&(bn2==1)) {bn3=1;P0=0xff;//消隐P0=0x99;//显示4}}if((mm1==0)&(bn3==1)) {delayms(10);if((mm1==0)&(bn3==1)){bn4=1;P0=0xff;//消隐P0=0xf9;//显示1}}if((mm6==0)&(bn4==1)) {delayms(10);if((mm6==0)&(bn4==1)) {bn5=1;P0=0xff;//消隐P0=0x82;//显示6 }}if(mm1==0){delayms(10);if(mm1==0){P0=0xff;//消隐P0=0xf9;//显示1}}if(mm2==0){delayms(10);if(mm2==0){P0=0xff;//消隐P0=0xa4;//显示2}}if(mm3==0){delayms(10);if(mm3==0){P0=0xff;//消隐P0=0xb0;//显示3}}if(mm4==0){delayms(10);if(mm4==0){P0=0xff;//消隐P0=0x99;//显示4}}if(mm5==0){delayms(10);if(mm5==0){P0=0xff;//消隐P0=0x92;//显示5}}if(mm6==0){delayms(10);if(mm6==0){P0=0xff;//消隐P0=0x82;//显示8}}if(mmok==0){delayms(10);if(mmok==0){if((bn==1)&(bn1==1)&(bn2==1)&(bn3==1)&(bn4==1)&(bn5==1)) //密码成功{while(1){P0=0xff;l2=0;delayms(100);}}else{while(1){P0=0xff;fmq=0;l1=0;delayms(100);l1=1;delayms(100);}}}}}}}{unsigned char mmsr,bn,bn1,bn2,bn3,bn4,bn5;mmsr=0;bn=0;bn1=0;bn2=0;bn3=0;bn4=0;bn5=0;mmsr=1;init();while(1){if(mmsr==1){if(mm5==0) //系统8位程序密码532416{delayms(10);if(mm5==0){bn=1;P0=0xff;//消隐P0=0x92;//显示5}}if((mm3==0)&(bn==1)) {if((mm1==0)&(bn3==1)) {delayms(10);if((mm1==0)&(bn3==1)){bn4=1;P0=0xff;//消隐P0=0xf9;//显示1}}if((mm6==0)&(bn4==1)) {delayms(10);if((mm6==0)&(bn4==1)){bn5=1;P0=0xff;//消隐P0=0x82;//显示6 }}if(mm1==0){delayms(10);if(mm1==0){P0=0xff;//消隐P0=0xf9;//显示1P0=0x92;//显示5}}if(mm6==0){delayms(10);if(mm6==0){P0=0xff;//消隐P0=0x82;//显示8}}if(mmok==0){delayms(10);if(mmok==0){if((bn==1)&(bn1==1)&(bn2==1)&(bn3==1)&(bn4==1)&(bn5==1)) //密码成功{while(1){P0=0xff;l2=0;delayms(100);}}else{while(1)P0=0xff;}5.2 仿真结果1,开始仿真,按下开关,红灯亮图5.1 仿真图2,输入正确的密码(532416),数码管显示相应的数字图5.2 输入数字“5”图5.3 输入数字“3”图5.4 输入数字“2”图5.5 输入数字“4”图5.6 输入数字“1”图5.7 输入数字“6”3,(正确密码)按下确认键,绿灯亮图5.8 输入正确密码状态图4,若输入错误密码,则红灯闪烁,蜂鸣器响(图内为导通状态)图5.9 输入错误密码状态图第6章设计总结6.1 设计体会通过这次课程设计和设计中遇到的问题,我积累了一定的经验,刚开始做设计时总是会犯一些错误,只有经过不停的改错不停的编译才能得到正确的程序。
这说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。
设计中要求有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确。
对错误的检查要求我要有足够的耐心,这对以后从事集成电路设计工作会有一定的帮助。
本次课程设计是我到目前为止觉得受益匪浅也是收获最大的一次实习。
身为通信专业的学生,设计是我们将来必需具备的技能。
而这次课程设计恰恰给我们提供了一个应用自己所学知识去勇于创新和实践的平台。
从通过理论设计,到仿真软件仿真,再到确定具体方案,再到安装实际电路,最后到调试电路、成型。