杂志信息网-创作、查重、发刊有保障。

电子密码锁的设计毕业论文内容有设计任务设计要求

发布时间:2024-07-08 04:06:45

电子密码锁的设计毕业论文内容有设计任务设计要求

#include#define uchar unsigned char#define uint unsigned int#define WRITE 0xA0 /* 定义24C04的器件地址SLA和方向位W */#define READ 0xA1 /* 定义24C04的器件地址SLA和方向位R */#define FALSE 0#define TRUE ~FALSE//////////////////////////////////////////////////////////////////////#define HIGH 1#define LOW 0sbit lcdrs=P2^0;sbit lcdrw=P2^1;sbit lcden=P2^2;sbit alarm=P2^3;sbit red=P2^7;sbit green=P2^6;sbit SDA = P3^6;sbit SCL = P3^7;sbit WP = P3^5;uchar hour,min,sec,us,js=0;uchar flag=1,canscan=0,lock=0;uchar password[6];uchar password1[6];uchar password2[6];uchar input[6]={0,1,2,3,4,5};uchar code a[]={0xF7,0xFB,0xFD,0xFE};uchar CODE[6] = {0,0,0,0,0,0};uchar scannum=0;void delay1( void ) {}/***************************************************************************** 函数原型: void I_start(void);* 功 能: 提供I2C总线工作时序中的起始位。 ****************************************************************************/void I_start( void ) { SDA = HIGH ; delay1() ; SCL = HIGH ; delay1() ; SDA = LOW ; delay1() ; SCL = LOW ; delay1() ; }/***************************************************************************** 函数原型: void I_stop(void);* 功 能: 提供I2C总线工作时序中的停止位。****************************************************************************/void I_stop( void ) { SDA = LOW ; delay1() ; SCL = HIGH ; delay1() ; SDA = HIGH ; delay1() ; SCL = LOW ; delay1() ; }/***************************************************************************** 函数原型: void I_init(void);* 功 能: I2C总线初始化。在main()函数中应首先调用本函数, 然后再调用* 其它函数。****************************************************************************/void I_init( void ) { SCL = LOW ; I_stop() ;}/***************************************************************************** 函数原型: bit I_clock(void);* 功 能: 提供I2C总线的时钟信号, 并返回在时钟电平为高期间SDA 信号线上状* 态。本函数可用于数据发送, 也可用于数据接收。****************************************************************************/bit I_clock( void ) { bit sample ; SCL = HIGH ; delay1() ; sample = SDA ; SCL = LOW ; delay1() ; return ( sample ) ; }/***************************************************************************** 函数原型: bit I_send(uchar I_data);* 功 能: 向I2C总线发送8位数据, 并请求一个应答信号ACK。如果收到ACK应答* 则返回1(TRUE), 否则返回0(FALSE)。****************************************************************************/bit I_send( uchar I_data ) { uchar i ; /* 发送8位数据 */ for ( i=0 ; i<8 ; i++ ) { SDA = (bit)( I_data & 0x80 ) ; I_data = I_data << 1 ; I_clock() ; } /* 请求应答信号ACK */ SDA = HIGH ; return ( ~I_clock() ); }/***************************************************************************** 函数原型: uchar I_receive(void);* 功 能: 从I2C总线上接收8位数据信号, 并将接收到8位数据作为一个字节* 返回, 不回送应答信号ACK。主函数在调用本函数之前应保证SDA信* 号线处于浮置状态, 即使8051的P7脚置1。****************************************************************************/uchar I_receive( void ) { uchar I_data = 0; register uchar i ; for ( i=0 ; i<8 ; i++ ) { I_data *= 2 ; if (I_clock()) I_data++; } return ( I_data ) ;}/***************************************************************************** 函数原型: void I_Ack(void);* 功 能: 向I2C总线发送一个应答信号ACK, 一般用于连续数据读取时。*****************************************************************************//*void I_Ack( void ) { SDA = LOW ; I_clock() ; SDA = HIGH ;} */***************************************************************************** 函数原型: bit E_address(uchar Address);* 功 能: 向24C04写入器件地址和一个指定的字节地址。*****************************************************************************/bit E_address( uint Address ) { I_start() ; if ( I_send( WRITE ) ) return ( I_send( Address ) ) ; else return ( FALSE ) ;}/***************************************************************************** 函数原型: bit E_read_block(void);* 功 能: 从24C04中读取BLOCK_SIZE个字节的数据并转存于外部RAM存储映象* 单元, 采用序列读操作方式从片内0地址开始连续读取数据。如果* 24C04不接受指定的地址则返回0(FALSE)。*****************************************************************************/uchar E_read(uchar add ) { uchar rec=0; E_address(add); I_start() ; I_send( READ ); rec = ( I_receive() ); I_clock() ; I_stop() ; return rec;}/***************************************************************************** 函数原型: void wait_5ms(void);* 功 能: 提供5ms延时(时钟频率为12MHz)。*****************************************************************************/void wait_5ms( void ) { int i ; for ( i=0 ; i<1000 ; i++ ); }/***************************************************************************** 函数原型: bit E_write_block(void);* 功 能: 将外部RAM存储映象单元中的数据写入到24C04的头BLOCK_SIZE个字节。* 采用字节写操作方式, 每次写入时都需要指定片内地址。如果24C04* 不接受指定的地址或某个传送的字节未收到应答信号ACK, 则返回0* (FALSE)。*****************************************************************************/void E_write( uchar s,uint add ) { if ( E_address(add) ) { if(I_send(s)) { I_stop() ; wait_5ms(); } }}void t0_init() { TMOD=0x01; TL0=0xb0;TH0=0x3c; TR0=0; EA=1; ET0=1;} void delay(uchar n){ uchar i; while(n--) for(i=125;i>0;i--);}/*1602液晶程序*///向液晶写入命令或地址void write_com(uchar com){ lcdrs=0; lcdrw=0; P0=com; delay(2); lcden=1; delay(2); lcden=0;}//向液晶写入数据void write_data(uchar date){ lcdrs=1; lcdrw=0; P0=date; delay(2); lcden=1; delay(2); lcden=0;}//设置显示模式 void init_lcd(){ write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);}//显示位置确定void gotoxy(uchar x,uchar y){ if(x==1) write_com(0x80+y); if(x==2) write_com(0xc0+y);}//字符串的显示void write_str(uchar *str){ while(*str!='/0') { write_data(*str); delay(2); str++; }}//数字的显示void write_num(uchar num){ write_data(0x30+num);}void write_num2(uchar num){ uchar x,y; x=num/10; y=num%10; write_num(x); write_num(y);}/*按键子程序*/uchar scan(void){ uchar row,col; uchar j,m; P1=0xF0; if((P1&0xF0)!=0xF0) { delay(1); if((P1&0xF0)!=0xF0) col=~(P1|0x0F); j=0; P1=a[j]; while(j<=3) { if((P1&0xF0)!=0xF0) { row=~a[j]; break; } else {j++;P1=a[j];} } m=row+col; return(m); } else return(0);} uchar coding(uchar m){ uchar k; switch(m) { case(0x08+0x80):k=0;break; case(0x08+0x40):k=1;break; case(0x08+0x20):k=2;break; case(0x08+0x10):k=3;break; case(0x04+0x80):k=4;break; case(0x04+0x40):k=5;break; case(0x04+0x20):k=6;break; case(0x04+0x10):k=7;break; case(0x02+0x80):k=8;break; case(0x02+0x40):k=9;break; case(0x02+0x20):k=10;break; case(0x02+0x10):k=11;break; case(0x01+0x80):k=12;break; case(0x01+0x40):k=13;break; case(0x01+0x20):k=14;break; case(0x01+0x10):k=15;break; } return(k);}void setpassword()//修改密码子函数{ uchar tmp,key,i=0,j,jj; gotoxy(1,0); write_str(" "); gotoxy(1,10); write_str("SET "); while(1) { tmp=scan(); if(tmp!=0&&js==0) { key=coding(tmp); if(key<=9&&i<6)//输入密码 { if(i<6){password1[i]=key;gotoxy(1,i);write_data(0x2a);} i++; alarm=0; delay(250); alarm=1; } if(i>=6&&(key==11)){ gotoxy(1,10); write_str("SET AG"); gotoxy(1,0); write_str(" "); js=js+1; i=0; // break; } delay(250); } if(tmp!=0&&js==1) { key=coding(tmp); if(key<=9&&i<6)//输入密码 { if(i<6){password2[i]=key;gotoxy(1,i);write_data(0x2a);} i++; alarm=0; delay(250); alarm=1; } if(i>=6&&(key==11)){ for(j=0;j<=5;j++) { if (password2[j]!=password1[j]) { gotoxy(1,10); write_str("SET er"); gotoxy(1,0); write_str(" "); break; } else { for(jj=0;jj<=5;jj++) { password[jj]=password1[jj]; } gotoxy(1,10); write_str("SET OK"); gotoxy(1,0); write_str(" "); js=0; break; } } js=0; break; delay(250); } } } }void buzzeralarm()//报警函数{alarm=0;delay(250);alarm=1;delay(250);alarm=0;delay(250);alarm=1;delay(250);alarm=0;delay(250);alarm=1;delay(250);}void time0() interrupt 1 { TL0=0xb0;TH0=0x3c;alarm=0;if(++us==20){ us=0; gotoxy(1,6); write_num2(sec); gotoxy(1,3); write_num2(min); gotoxy(1,0); write_num2(hour);if(++sec==60) { sec=0; if(++min==60) { min=0; if(++hour==1) { hour=0;TR0=0;lock=0; gotoxy(2,10); write_str("UNLOCKED"); } } } } if (min==5) { hour=0;TR0=0;lock=0; gotoxy(2,10); write_str("UNLOCKED"); alarm=1; scannum=0; gotoxy(1,0); write_str(" "); }}void main(void){ uchar tmp,key,i=0,j,ii; green=0; red=0; t0_init(); init_lcd(); I_init(); WP = 0; for(ii = 0;ii <6;ii++) { E_write(CODE[ii],ii); } for(ii = 0;ii < 6;ii++) { password[ii]= E_read(ii); } while(1) { tmp=scan(); if(tmp!=0) { key=coding(tmp); if((key<=9)&&(i<6)&&(lock==0)&&(green!=1))//输入密码 { red=0; gotoxy(1,10); write_str(" "); gotoxy(1,i); input[i]=key; i++; alarm=0; write_data(0x2a); delay(250); alarm=1; } if(key==10)//清除已输入的密码 { gotoxy(1,i-1); write_data(0x20); if(i>0)i--; delay(250); } if(i==6&&key==11)//确认键 { i=0; for(j=0;j<=5;j++) { if(input[j]!=password[j])flag=1; else flag=0; } if(lock==0) { if(flag){ scannum++; gotoxy(2,10); write_str("ERR! "); write_num(scannum); red=1; for(j=0;j<=1;j++) { buzzeralarm(); } if(scannum==3){lock=1;TR0=1;} } else { gotoxy(2,10); write_str("OK! "); green=1; buzzeralarm(); } } if(lock){gotoxy(2,10); write_str("LOCKED");} gotoxy(1,0); write_str(" "); canscan=0; delay(250); } if((green==1)&&(key==13)){green=0; scannum=0;gotoxy(2,10); write_str("LOCKED");} if((key==12)&&(green==1))//修改密码 { setpassword(); } } }}

去图书馆找本书抄,这个有现成的例子

到大学生部落家园里面去下载就可以了,那里很多很多的毕业设计和毕业论文的,下载到合适的记得给我分,

电子密码锁的设计毕业论文主要内容

同学,您可以先着手做看看,哪里遇到困难再求助,这对你以后毕业找工作有帮助。毕业设计在于过程,不在结果,只要认真做了,您会学到很多。这个课题不难,也有很多人做过。

电子密码锁毕业设计论文

电子密码锁摘要 本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安工作,有极高的安全系数。关键词 电子密码锁 电压比较器 555单稳态电路 计数器 JK触发器 UPS电源。1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。

摘要】本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安全工作,具有极高的安全系数。【关键词】电子密码锁、电压比较器、555单稳态电路、计数器、JK触发器、UPS电源。一、引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。二、总体方案设计1、设计思路共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。

啥意思?你想让人帮你写吗?

电子密码锁论文设计

电子密码锁摘要 本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安工作,有极高的安全系数。关键词 电子密码锁 电压比较器 555单稳态电路 计数器 JK触发器 UPS电源。1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。2 总体方案设计1设计思路共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。2总体方框图 3 设计原理分析电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。1 键盘输入、密码修改、密码检测、开锁及执行电路 其电路如下图1所示: 图1 键盘输入、密码修改、密码检测、开锁、执行电路开关K1~K9是用户的输入密码的键盘,用户可以通过开关输入密码,开关两端的电容是为了提高开关速度,电路先自动将IC1~IC4清零,由报警电路送来的清零信号经C25送到T11基极,使T11导通,其集电极输出低电平,送往IC1~IC4,实现清零。 密码修改电路由双刀双掷开关S1~S4组成(如图2所示), 它是利用开关切换的原理实现密码的修改。例如要设定密码为1458,可以拨动开关S1向左,S2向右,S3向左,S4向右,即可实现密码的修改,由于输入的密码要经过S1~S4的选择,也就实现了密码的校验。本电路有16组的密码可供修改。 图2 密码修改电路 由两块74LS112(双JK触发器,包含IC1~IC4)组成密码检测电路。由于IC1处于计数状态,当用户按下第一个正确的密码后,CLK端出现了一个负的下降沿,IC1计数,Q端输出为高电平,用户依次按下有效的密码,IC2~IC3也依次输出高电平,送入与门IC5,使其输出开锁的高电平信号送往IC13的2脚,执行电路动作,实现开锁。执行电路是由一块555单稳态电路(IC13),以及由T10、 T11组成的达林顿管构成。若IC13的2脚输入一高电平,则3脚输出高电平,使T10导通,T11导通,电磁阀开启,实现开门,同时T10集电极上接的D5(绿色发光二极管)发亮,表示开门,20秒后,555电路状态翻转,电磁阀停止工作,以节电。其中电磁阀并联的电容C24使为了提高电磁阀的力矩。2 报警电路报警电路实现的功能是:当输入密码的时间超过40秒(一般情况下用户输入不会超过),电路报警80秒,防止他人恶意开锁。电路包含两大部分,2分钟延时和40秒延时电路。其工作原理是当用户开始输入密码时,电路开始2分钟计时,超出40秒,电路开始80秒的报警。如图3所示 图3 报警电路 有人走近门时,触摸了TP端(TP端固定在键盘上,其灵敏度非常高,保证电路可靠的触发),由于人体自身带的电,使IC10的2脚出现低电平,使IC10的状态发生翻转,其3脚输出高电平,T5导通(可以通过R12控制T1的基极电流),其集电极接的黄色发光二极管D3发光,表示现在电子锁处于待命状态,T6截止,C4开始通过R14充电(充电时间是40秒,此时为用户输入密码的时间,即用户输入密码的时间不能超过40秒,否则电路就开始报警, 由于用户经常输入密码,而且知道密码,一般输入密码的时间不会超过40秒),IC2开始进入延时40秒的状态。 开始报警:当用户输入的密码不正确或输入密码的时间超过40秒,IC11的2脚电位随着C4的充电而下降,当电位下降到1/3Vcc时(即40秒延时结束时候),3脚变成高电位(延时时是低电平),通过R15使(R15的作用是为了限制T7的导通电流防止电流过大烧毁三极管)T7导通,其集电极上面接的红色发光二极管D4发亮,表示当前处于报警状态,T8也随之而导通,使蜂鸣器发声,令贼人生怯,实现报警停止报警:当达到了80秒的报警时间,IC10的6,7脚接的电容C5放电结束,IC10的3脚变成低电平,T5截止,T6导通,强制使强制电路处于稳态,IC11的3脚输出低电平,使T7,T8截止,蜂鸣器停止报警;或者用户输入的密码正确,则有开锁电路中的T10集电极输出清除报警信号,送至T12(PNP),T12导通,强制使T7基极至低电位,解除报警信号。3 报警次数检测及锁定电路若用户操作连续失误超过3次,电路将锁定5分钟。其工作原理如下:当电路报警的次数超过3次,由IC9(74161)构成的3位计数器将产生进位,通过IC7,输出清零信号送往74161的清零端,以实现重新计数。经过IC8(与门),送到IC12(555)的2脚,使3脚产生5分钟的高电平锁定脉冲(其脉冲可由公式T=1RC计算得出),经T9倒相,送IC6输入端,使IC6输出低电平,使IC13不能开锁,到锁定的目的。电路图如下图4所示: 图4 报警次数检测及锁定电路4 备用电源电路为了防止停电情况的发生,本电路后备了UPS电源,它包括市电供电电路,停电检测电路,电子开关切换电路,蓄电池充电电路和蓄电池组成。其电路图如下图5所示:220V市电通过变压器B降压成12V的交流电,再经过整流桥整流,7805稳压到5V送往电子切换电路,由于本电路功耗较少,所以选用10W的小型变压器。 图5 电源电路由R8,R9,R6,R7及IC14构成电压比较器,正常情况下,V+V- IC14输出高电平,由T3,T4构成的达林顿管使继电器J开启,将其常开触电将蓄电池和电路相连,实现市电和蓄电池供电的切换,保证电子密码锁的正常工作(视电池容量而定持续时间)。其电路图如下图6所示: 图6 停电检测及电子开关切换电路T1,T2构成的蓄电池自动充电电路,它在电池充满后自动停止充电,其中D1亮为正在充电,D2为工作指示。由R4,R5,T1构成电压检测电路,蓄电池电压低,则T1,T2导通,实现对其充电;充满后,T1,T2截止,停止充电,同时D1熄灭,电路中C4的作用是滤除干扰信号。其电路图如图7所示: 图7 蓄电池自动充电电路 4 总结与体会以上为实习期间所设计的电子密码锁电路,它经过多次修改和整理,以是一个比较不错的设计,可以满足人们的基本要求,但因为水平有限,此电路中也存在一定的问题,譬如说电路的密码不能遗忘,一旦遗忘,就很难打开,这可以通过增加电路解决,但过于复杂,本次设计未其中;用开关作74LS112的CLK脉冲,不是很稳定,可以调换其它高速开关或计数脉冲;电路密码只有16种可供修改,但由于他人不知道密码的位数,而且还要求在规定的时间内按一定的顺序开锁,所以他人开锁的几率很小;电路中未加显示电路,但可通过其它数字模块实现这一功能。这需要一段时间的进一步改进,如果有好的意见,希望老师给以支持。通过这三周的学习,我感觉有很大的收获:首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我个人的动手能力:能够充分利用图书馆去查阅资料,增加了许多课本以外的知识。能对protel 99、和EWB等仿真软件操作,能达到学以致用。对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。在实习中,我感受到了老师对学生的那种悔人不卷的精神,每天的固定时间,老师都来给我们指导,使我们少走弯路,顺利完成实习任务,请允许我向你们致意崇高的敬意,感谢你们,老师! 参考文献[1] 康华光电子技术基础(第四版)[M]北京:高等教育出版社,1998 [1] 梁宗善新型集成块应用[M]武汉:华中理工大出版社,2004

新款的单片机都可以设置密码

单片机制作的新型安全密码锁硕士论文

近年来,随着改革开放的深入发展,电子电器的飞速发展。人民的生活水平有了很大提高。各种高档家电产品和贵重物品为许多家庭所拥有。然而不法分子也是越来越多,原因在于大部分人防盗意识还不够强,造成偷盗现象屡见不鲜。越来越多的居民家庭对财产安全问题十分担忧。因此,出于安全方便等方面的需求,电子密码锁相继问世。本设计是以单片机AT89S51为主控芯片,并结合外围液晶显示LCD1602、存储芯片AT24C02、红外遥控HS0038,以及键盘输入、复位、电源等电路组合而成。系统能够完成开锁、报警、修改密码等基本功能,还能够通过红外来控制单片机的开锁,以及掉电储存密码的功能。整个设计在Keil开发环境下,用C语言编写主控芯片的控制程序来实现具有多功能的电子密码锁。

电子密码锁的设计论文

电子密码锁摘要 本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安工作,有极高的安全系数。关键词 电子密码锁 电压比较器 555单稳态电路 计数器 JK触发器 UPS电源。1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。2 总体方案设计1设计思路共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。2总体方框图 3 设计原理分析电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。1 键盘输入、密码修改、密码检测、开锁及执行电路 其电路如下图1所示: 图1 键盘输入、密码修改、密码检测、开锁、执行电路开关K1~K9是用户的输入密码的键盘,用户可以通过开关输入密码,开关两端的电容是为了提高开关速度,电路先自动将IC1~IC4清零,由报警电路送来的清零信号经C25送到T11基极,使T11导通,其集电极输出低电平,送往IC1~IC4,实现清零。 密码修改电路由双刀双掷开关S1~S4组成(如图2所示), 它是利用开关切换的原理实现密码的修改。例如要设定密码为1458,可以拨动开关S1向左,S2向右,S3向左,S4向右,即可实现密码的修改,由于输入的密码要经过S1~S4的选择,也就实现了密码的校验。本电路有16组的密码可供修改。 图2 密码修改电路 由两块74LS112(双JK触发器,包含IC1~IC4)组成密码检测电路。由于IC1处于计数状态,当用户按下第一个正确的密码后,CLK端出现了一个负的下降沿,IC1计数,Q端输出为高电平,用户依次按下有效的密码,IC2~IC3也依次输出高电平,送入与门IC5,使其输出开锁的高电平信号送往IC13的2脚,执行电路动作,实现开锁。执行电路是由一块555单稳态电路(IC13),以及由T10、 T11组成的达林顿管构成。若IC13的2脚输入一高电平,则3脚输出高电平,使T10导通,T11导通,电磁阀开启,实现开门,同时T10集电极上接的D5(绿色发光二极管)发亮,表示开门,20秒后,555电路状态翻转,电磁阀停止工作,以节电。其中电磁阀并联的电容C24使为了提高电磁阀的力矩。2 报警电路报警电路实现的功能是:当输入密码的时间超过40秒(一般情况下用户输入不会超过),电路报警80秒,防止他人恶意开锁。电路包含两大部分,2分钟延时和40秒延时电路。其工作原理是当用户开始输入密码时,电路开始2分钟计时,超出40秒,电路开始80秒的报警。如图3所示 图3 报警电路 有人走近门时,触摸了TP端(TP端固定在键盘上,其灵敏度非常高,保证电路可靠的触发),由于人体自身带的电,使IC10的2脚出现低电平,使IC10的状态发生翻转,其3脚输出高电平,T5导通(可以通过R12控制T1的基极电流),其集电极接的黄色发光二极管D3发光,表示现在电子锁处于待命状态,T6截止,C4开始通过R14充电(充电时间是40秒,此时为用户输入密码的时间,即用户输入密码的时间不能超过40秒,否则电路就开始报警, 由于用户经常输入密码,而且知道密码,一般输入密码的时间不会超过40秒),IC2开始进入延时40秒的状态。 开始报警:当用户输入的密码不正确或输入密码的时间超过40秒,IC11的2脚电位随着C4的充电而下降,当电位下降到1/3Vcc时(即40秒延时结束时候),3脚变成高电位(延时时是低电平),通过R15使(R15的作用是为了限制T7的导通电流防止电流过大烧毁三极管)T7导通,其集电极上面接的红色发光二极管D4发亮,表示当前处于报警状态,T8也随之而导通,使蜂鸣器发声,令贼人生怯,实现报警停止报警:当达到了80秒的报警时间,IC10的6,7脚接的电容C5放电结束,IC10的3脚变成低电平,T5截止,T6导通,强制使强制电路处于稳态,IC11的3脚输出低电平,使T7,T8截止,蜂鸣器停止报警;或者用户输入的密码正确,则有开锁电路中的T10集电极输出清除报警信号,送至T12(PNP),T12导通,强制使T7基极至低电位,解除报警信号。3 报警次数检测及锁定电路若用户操作连续失误超过3次,电路将锁定5分钟。其工作原理如下:当电路报警的次数超过3次,由IC9(74161)构成的3位计数器将产生进位,通过IC7,输出清零信号送往74161的清零端,以实现重新计数。经过IC8(与门),送到IC12(555)的2脚,使3脚产生5分钟的高电平锁定脉冲(其脉冲可由公式T=1RC计算得出),经T9倒相,送IC6输入端,使IC6输出低电平,使IC13不能开锁,到锁定的目的。电路图如下图4所示: 图4 报警次数检测及锁定电路4 备用电源电路为了防止停电情况的发生,本电路后备了UPS电源,它包括市电供电电路,停电检测电路,电子开关切换电路,蓄电池充电电路和蓄电池组成。其电路图如下图5所示:220V市电通过变压器B降压成12V的交流电,再经过整流桥整流,7805稳压到5V送往电子切换电路,由于本电路功耗较少,所以选用10W的小型变压器。 图5 电源电路由R8,R9,R6,R7及IC14构成电压比较器,正常情况下,V+V- IC14输出高电平,由T3,T4构成的达林顿管使继电器J开启,将其常开触电将蓄电池和电路相连,实现市电和蓄电池供电的切换,保证电子密码锁的正常工作(视电池容量而定持续时间)。其电路图如下图6所示: 图6 停电检测及电子开关切换电路T1,T2构成的蓄电池自动充电电路,它在电池充满后自动停止充电,其中D1亮为正在充电,D2为工作指示。由R4,R5,T1构成电压检测电路,蓄电池电压低,则T1,T2导通,实现对其充电;充满后,T1,T2截止,停止充电,同时D1熄灭,电路中C4的作用是滤除干扰信号。其电路图如图7所示: 图7 蓄电池自动充电电路 4 总结与体会以上为实习期间所设计的电子密码锁电路,它经过多次修改和整理,以是一个比较不错的设计,可以满足人们的基本要求,但因为水平有限,此电路中也存在一定的问题,譬如说电路的密码不能遗忘,一旦遗忘,就很难打开,这可以通过增加电路解决,但过于复杂,本次设计未其中;用开关作74LS112的CLK脉冲,不是很稳定,可以调换其它高速开关或计数脉冲;电路密码只有16种可供修改,但由于他人不知道密码的位数,而且还要求在规定的时间内按一定的顺序开锁,所以他人开锁的几率很小;电路中未加显示电路,但可通过其它数字模块实现这一功能。这需要一段时间的进一步改进,如果有好的意见,希望老师给以支持。通过这三周的学习,我感觉有很大的收获:首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我个人的动手能力:能够充分利用图书馆去查阅资料,增加了许多课本以外的知识。能对protel 99、和EWB等仿真软件操作,能达到学以致用。对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。在实习中,我感受到了老师对学生的那种悔人不卷的精神,每天的固定时间,老师都来给我们指导,使我们少走弯路,顺利完成实习任务,请允许我向你们致意崇高的敬意,感谢你们,老师! 参考文献[1] 康华光电子技术基础(第四版)[M]北京:高等教育出版社,1998 [1] 梁宗善新型集成块应用[M]武汉:华中理工大出版社,2004

单片机制作的新型安全密码锁硕士论文

用STC的单片机,里面有EEPROM,把设定的密码写到里面。正常运行时 输入密码和EEPROM里面的密码比较 正确了就可以进入

啥意思?你想让人帮你写吗?

相关百科