下载此beplayapp体育下载

基于51单片机的密码锁(可改密码).pdf


beplayapp体育下载分类:论文 | 页数:约37页 举报非法beplayapp体育下载有奖
1 / 37
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该beplayapp体育下载所得收入归上传者、原创者。
  • 3.下载的beplayapp体育下载,不会出现我们的网址水印。
1 / 37 下载此beplayapp体育下载
beplayapp体育下载列表 beplayapp体育下载介绍
该【基于51单片机的密码锁(可改密码) 】是由【1781111****】上传分享,beplayapp体育下载一共【37】页,该beplayapp体育下载可以免费在线阅读,需要了解更多关于【基于51单片机的密码锁(可改密码) 】的内容,可以使用beplayapp体育下载的站内搜索功能,选择自己适合的beplayapp体育下载,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此beplayapp体育下载到您的设备,方便您编辑和打印。:..实****报告实****名称:单片机应用实****院(系)名称:电气与信息工程学院专业班级:xxxxxxxxx学生姓名:xxxxxx学号:xxxxxx指导教师:xxxxxxxxxx黑龙江工程学院教务处制2014年7月:..目录第1章总体设计方案………………………………………………………………………………….………………...………………………………………………………………………………………………….…............4第2章硬件电路设计….……………………………………………………………………………….……...............……………………………………………………………………………….…………...……………………………………………………………………………………………………………..………………………………………………………………………………………………………….….…………………………………………………………………………………..…………..………………………………………………………………………………………………….….…………………………………………………………..…………………………………...10第3章系统软件设计……………………………………………………………………………………....................…………………………………………………………………………………………………....……………………………………………………………………………………………………….12总结…………………………………………………………………………………………………………………………...................13参考文献………………………………………………………………………………………………………..………...................14附录…………………………………………………………………………………………………………………..............................15附录一……………………………………………………………………………………………………………………………………...15附录二……………………………………………………………………………………………………………….……………………..15-1-:..实****任务书xxxx系电气与信息专业测控12-1学生姓名部工程学院班级指导教师姓职副教授是否外聘□是否名xxx称讲师题目名称键盘式电子密码锁一、设计的内容、目的和意义本次实****是有关于键盘式电子密码锁的设计。在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙***,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。本次实****的目的是实现电子密码锁的功能,并运用单片机技术设计一个结构简单,并且相对低成本的密码锁。二、设计的技术指标要求1、研究方法(1)总体按照最优化的方法进行软件设计和硬件设计,走软件实现道路;(2)对软硬件进行模块划分,并对各单元电路结合EDA工具进行论证设计;(3)在查阅文献基础上展开设计,力求创新。2、技术要求(1)采用6位密码(2)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘-2-:..摘要本次设计使用ATMEL公司的STC89C52实现一基于单片机的智能电子密码锁的设计,其主要具有如下功能:1、设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。2、密码可以由用户自己修改设定(只支持6位密码),初始密码输入成功后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。3、报警、锁定键盘功能。密码输入错误1602LCD会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。4、AT24C02保存密码,支持复位保存,掉电保存功能。方案比较及选择方案1用数字逻辑器件搭建电子密码锁,电路复杂庞大,且稳定性差,密码位数有限,保密性差方案2:用FPGA可编程逻辑器件设计电子密码锁,程序通用性差,可读性低,不易移植。成本昂贵方案3:单片机AT89c51为核心,设计一个电子密码锁系统。系统分为硬件和软件两个部分。硬件部分主要包括键盘输入模块、显示电路模块、密码存储模块、单片机电路模块等;软件部分主要包括如下模块:系统的主流程、键盘的扫描、LCD的读写、密码存储器的读写比较等。确定方案及理由:方案1需要大量逻辑器件。方案2需要FPGA可编程逻辑器件,价格昂贵所以本次实****选择价格简单操作相对简单的第三个方案。-3-:..、清除、更改、***等功能:1、密码输入功能:插上电源后,LCD提示输入密码,输入密码时在1602LCD上显示“*”每输入一个数字,LCD上向右移一格,同时“*”加一个。值到输入6个“*”为此,若一次性输入大于6个密码,则只保留前6位密码,按“确定”生效。若按取消键,锁关闭,所有输入清除。2、密码更改功能:将输入的值作为新的密码(初始密码是6个0)。3、当密码输入成功后,或者密码修改成功后,LCD上有提示成功字符,同时蜂鸣器响两声作为提示。。键盘输入模块显示模块报警电路复位电路STC89C52密码存储模块***、液晶显示模块、AT24C02存储模块、电源模块以及蜂鸣器与继电器模块。系统的总体工作过程是这样的:首先,从键盘输入密码,单片机采集到密码后通过液晶显示,同时与AT24C02存储模块中的密码比对,密码正确后继电器开关打向另一端以模拟***过程,三次密码输入错误后报警模块报警。4:..通过对器件性价比及其他方面的考虑,键盘采用矩阵式键盘,显示采用LCD1602字符型液晶显示器为了,用外扩一个AT24C02E2PROM存储密码。。。,电路图如图所示5:..:第1脚:为地。第2脚:VCC接5V正电源。第3脚:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个20K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15~16脚:空脚。,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。6:..,从而得知按下的哪个键,具体过程如下:(1)查询是否有键按下。单片机向行扫描口输出全为“0”的扫描码,然后从列检测口检测信号,只要有一列信号不为“1”,则表示有键按下,且不为“1”的列即对应为按下的按键所在的列。(2)查询按下按键所在的行、列位置。前面已经取得了按下键的列,接下来要确定按键所在的行,这需要进行逐行扫描,单片机首先使第1行为“0”,其余各行为“1”,接着进行行列检测,若为全“1”,表示不在第1行,否则即在第1行;然后使第2行为全“0”,其余各行为“1”,再进行列检测,若为全“1”,表示不在第2行;这样逐行检测,直到找到按键所在的行。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的错误动作。在扫描键盘过程中,应该注意以下问题:(1)当按下或松开按键时,按键会产生机械抖动。这种抖动经常发生在按下或松开瞬间,一般持续几到十几秒,抖动时间随按键的结构不同而不同,。在扫描键盘过程中,必须想办法消除按键,否则会引起错误。较为简单的方法就是用软件延时方法来消除按键的抖动,一旦发现有键按下,就延时20ms以后再测按键的状态。这样就避开按键发生抖动的那一段时间,使CPU能可靠地读按键状态。在编制键盘扫描程序时,只要发现按键状态有变化,即无论是按下还是松开,程序都延时20ms以后再进行其他操作。(2)在键盘扫描中,应防止按一次键而有多个对应键值输入的情况。这种情况的发生是由于键扫描速度和键处理速度较快,当某一个键按下还未松开时键扫描程序和键处理程序已执行了多遍。这样,由于程序执行和按键动作不同步而造成按一个键有多个键值输入的错误状态。为避免发生这种情况,必须保证按一次键,CPU只对该键做一次处理。为此,在键扫描程序中不仅要检测是否有键7:..按下,在有键按下的情况,做一次处理,而且在键处理完毕后,还应检测按下的键否松开,只有当按下的键松开以后,程序才往下执行。这样每按一个键,只做一个键处理,使二者达到同步,消除按一次键有多个键值输入的错误情况。根据需要,本设计的4*4键盘设定10个数字键(0-9)和3个功能键。,可以作以后扩充所用。因此根据上面提到的4*4键盘的键值编码方法,。按键行号列号键值编码11111H(00010001)21221H(00100001)31341H(01000001)42112H(00010010)52222H(00100010)62342H(01000010)73114H(00010100)83224H(00100100)93344H(01000100)*(取消)4118H(00011000)04228H(00101000)#(确认)4348H(01001000)D(修改)4488H(10001000):..,本系统使用AT24C02用来保存用户设置的密码,它的SCL、SDA端分别接单片机的T0、T1端,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机可以对器件进行正常的读/写操作;A0、A1、A2是器件地址输入端,都接低电平表示只有一个AT24C02被器件寻址。该电路要注意的是SCL、SDA必须加上一上接电阻,。用户设置的密码存放在AT24C02中,当需要更改或读取用户密码时,只需对AT24C02里的数据更改或读取。AT24C02支持I2C总线数据传送协议,I2C总线协议规定,任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据发送或接收的模式,通过器件地址输入端A0A1和A2可以实现将最多8个24WC01和24WC02器件4个242C04器件,2个24WC08器件和1个24WC16器件连接到总线上。系统供电电源电路设计本系统需要采用5V电源,所采用的电源电路是由整流电路和三端稳压器组成的。电路输出电压和最大输出电流决定于所选三端稳压器。其电源电路如图所示。:..13+VCCTF17805+-5V279053-***,LED灯提示,蜂鸣器响,,蜂鸣器电路1、继电器:(1)概述:继电器是一种电子控制器件,它具有控制系统和被控制系统,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。2、蜂鸣器::..采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。这里对单片机在蜂鸣器驱动上的应用作一下描述。本设计使用的是自激蜂鸣器,自激蜂鸣器是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过三极管放大驱动电流就能使蜂鸣器发出声音。:..,系统的硬件电路设计已经完成了。然而,对于一个完整的设计系统来说,只有硬件电路的设计完成是不够的,它必须通过软件编程来实现系统工作的控制功能,从而才能实现电路应有的系统功能。单片机系统的软件设计主要使用汇编语言或高级语言。汇编语言与系统硬件的关系密切,可方便地实现诸如中断管理以及模拟/数字量的输入/输出等功能,具有占用系统资源小、执行速度快的特点,但是,对复杂的大型应用系统,其代码可读性差,并不利于升级和维护。高级语言的代码效率和长度都不如汇编语言,但其结构清晰、可读性好、开发周期短、有极强的可移植性,在多数应用方面执行效率与汇编语言的差距也不大,近年来得到了极为广泛的应用。而C语言既有高级语言的各种特点,又可对硬件进行操作,并可进行结构化程序设计。用C语言编写的程序较容易移植,可生成简洁、可靠的目标代码,用C语言进行单片机计算机开发已经是必然的发展趋势。本设计整体软件思路为:大量程测量后切换模拟开关决策量程范围,周而复始的测量,并显示。本设计以单片机作为系统的核心控制单元,运用C语言进行编程工作,按照工作流程来实现设计要求的对交流真有效值的测试功能,并且通过软硬件的不断调整,来完善优化设计系统,从而实现结构化程序设计。:..主程序流程设计通过之前的硬件系统设计,综合各方面的考虑,系统主控流程图如图所示开始初始化屏幕显示扫描按键否是否有键按下是是修改并保存修改键按下密码否否输入键按下是接受6位密码是密码是否正确***:..以上为本次单片机实****设计的电子密码锁电路,通过这次实****发现自己的看法有点太片面,实****不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次实****使自己明白了原来的那点知识是非常欠缺的,要学****的东西还很多,通过这次实****明白学****是一个长期积累的过程,在以后的工作和生活中都应该不断的学****努力提高自己的知识和综合素质。在这次实****中,同学之间互相帮助,有什么不懂的大家在一起商量,发现我们所学的知识实在是有限,不过我们能够充分利用网络的优势去查阅资料。在整个设计过程中学到了许多东西,也培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学****工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦。虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次实****的最大收获和财富,使我终身受益。此次所设计的密码锁由于自己的能力有限未能将其拓展为红外遥控密码锁。但在以后的生活和工作中,我会继续努力学****争取将其完成。通过这次实****我感觉有很大的收获:首先,通过学****使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实****也段练了我个人的动手能力:能够充分利用图书馆去查阅资料,增加了许多课本以外的知识。能对AD9、和Keil51等仿真软件操作,能达到学以致用。对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。:..参考文献[1][M].电子工业出版社,2009,1.[2][M].西安电子科技大学出版社,2002,1.[3][M].清华大学出版社,1996,2.[4][M].高等教育出版社,1998,4.[5]美HowardJohnoon,(英文版)[M].电子工业出版社1991,1.[6][M].科学技术文献出版社,2002,2.[7][M].,8.[8]江思敏,姚鹏翼,[M].清华大学出版社,2002,1.[9][M].1988,1.[10]戴佳,[M].电子工业出版社,2006,1.[11][M].清华大学出版社2006,:..附录附录1总原理图附录2源程序源程序#include<>#include<>#defineLCM_DataP0#defineucharunsignedchar#defineuintunsignedint//#defineBusy0x80//用于检测LCM状态字中的Busy标识16:..#definew6//定义密码位数sbitlcd1602_rs=P2^5;sbitlcd1602_rw=P2^6;sbitlcd1602_en=P2^7;sbitScl=P3^4;//24C02串行时钟sbitSda=P3^5;//24C02串行数据sbitALAM=P2^1;//报警sbitKEY=P2^0;//***sbitopen_led=P2^2;//***指示灯bitoperation=0;//操作标志位bitpass=0;//密码正确标志//bitResetEn=0;//重设密码充许标志bitReInputEn=0;//重置输入充许标志bits3_keydown=0;//3秒按键标志位bitkey_disable=0;//锁定键盘标志unsignedcharcountt0,second;//t0中断计数器,秒计数器voidDelay5Ms(void);unsignedcharcodea[]={0xFE,0xFD,0xFB,0xF7};//控盘扫描控制表//显示名称correct输入正确error//输入错误unsignedcharcodecodepass[]passunsignedcharcodeLockOpen[]open//OPEN//INPUTunsignedcharcodeinitword[]unsignedcharInputData[6];//输入密码暂存区17:..unsignedcharCurrentPassword[6]={1,3,1,4,2,0};//当前密码值unsignedcharTempPassword[6];unsignedcharN=0;//密码输入位数记数unsignedcharErrorCont;//错误次数计数unsignedcharCorrectCont;//正确输入计数unsignedcharReInputCont;//重新输入计数unsignedcharcodeinitpassword[6]={0,0,0,0,0,0};//=====================5ms延时==============================voidDelay5Ms(void){unsignedintTempCyc=5552;while(TempCyc--);}//===================400ms延时==============================voidDelay400Ms(void){unsignedcharTempCycA=5;unsignedintTempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);}}//============================24C02============================voidmDelay(uintt)//延时{uchari;while(t--){for(i=0;i<125;i++){;}}}voidNop(void)//空操作{18:.._nop_();_nop_();_nop_();_nop_();}/*起始条件*/voidStart(void){Sda=1;Scl=1;Nop();Sda=0;Nop();}/*停止条件*/voidStop(void){Sda=0;Scl=1;Nop();Sda=1;Nop();}/*应答位*/voidAck(void){Sda=0;Nop();Scl=1;Nop();Scl=0;}/*反向应答位*/voidNoAck(void){Sda=1;Nop();Scl=1;Nop();19:..Scl=0;}/*发送数据子程序,Data为要求发送的数据*/voidSend(ucharData){ucharBitCounter=8;uchartemp;do{temp=Data;Scl=0;Nop();if((temp&0x80)==0x80)Sda=1;elseSda=0;Scl=1;temp=Data<<1;Data=temp;BitCounter--;}while(BitCounter);Scl=0;}/*读一字节的数据,并返回该字节值*/ucharRead(void){uchartemp=0;uchartemp1=0;ucharBitCounter=8;Sda=1;do{Scl=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;20:..if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}voidWrToROM(ucharData[],ucharAddress,ucharNum){uchari;uchar*PData;PData=Data;for(i=0;i0;x--)for(y=110;y>0;y--);}//--------------------------写指令---------------------------()//****液晶写入指令函数****{lcd1602_rs=0;//数据/指令选择置为指令lcd1602_rw=0;//读写选择置为写;//送入数据delay(1);lcd1602_en=1;//拉高使能端,为制造有效的下降沿做准备delay(1);lcd1602_en=0;//en由高变低,产生下降沿,液晶执行命令}//-------------------------写数据-----------------------------write_1602dat(uchardat)//***液晶写入数据函数****{lcd1602_rs=1;//数据/指令选择置为数据lcd1602_rw=0;//读写选择置为写P0=dat;//送入数据delay(1);22:..lcd1602_en=1;//en置高电平,为制造下降沿做准备delay(1);lcd1602_en=0;//en由高变低,产生下降沿,液晶执行命令}//-------------------------初始化-------------------------voidlcd_init(void){(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据(0x0c);//开显示不显示光标(0x06);//整屏不移动,光标自动右移(0x01);//清显示}//==============将按键值编码为数值=========================unsignedcharcoding(unsignedcharm){unsignedchark;switch(m){case(0x18):k=1;break;case(0x28):k=2;break;case(0x48):k=3;break;case(0x88):k='A';break;case(0x14):k=4;break;case(0x24):k=5;b

基于51单片机的密码锁(可改密码) 来自beplayapp体育下载www.apt-nc.com转载请标明出处.

相关beplayapp体育下载 更多>>
非法内容举报中心
beplayapp体育下载信息
  • 页数37
  • 收藏数0收藏
  • 顶次数0
  • 上传人1781111****
  • 文件大小2.71 MB
  • 时间2024-02-04