电子技术课程设计报告设计课题:电子密码锁电子密码锁一、设计任务与要求1.掌握PCB制板技术2.掌握电子密码锁的原理及其应用3.作好焊接及检查二、方案设计与论证1.方案一采用单片机芯片,和CD系列,CD4043,CD4082,CD4066组合模式,而用按键开关作为输入端口,共需要10个开关分别作为123456789#*。
工作原理:10位输入按键中,1.5.8.9.0为有效按键,2.3.4.6.7为伪码键。
密码输入由密码键和输入电路IC1来完成。
密码控制电路为IC2。
电路欲设密码为05198。
在密码输入按键中,SB0控制着IC2的电源供给并使IC2开机时复位,同时通过RP、C1设定了10秒的限时功能。
当按下SB0后必须在10秒内完成密码的输入操作,否则无效。
按键SB5与IC2的置位端1S相连,按下SB5时,IC2的1Q输出高电平。
按键SB1,SB9,SB8分别与IC1的S1、S2、S3的一个输入端相连。
S1,S2,S3的输出端分别连接着IC2的2S,3S和0S。
当顺序按下SB1,SB9,SB8时,IC2DE 2Q、3Q、0Q输出高电平。
IC2的1R~0R并联后通过电阻R6接低电平,1S、2S、3S、0S分别通过电阻R5~R2接低电平。
伪码键SB2、SB3、SB4、SB6、SB7的一端并联后接到IC2的0R~3R,当按下其中任何一键后,IC2的4个D 触发器全部复位,以前按下的有效键全部失效。
C1、RP组成10秒限时电路,当按下SB0后,电源经SB0、VD1向C1充电,当充到接近电源电压时,IC2的S4接通,IC2的VDD通过S4得到工作电流。
松开SB0后,C1通过RP放电,放电时间为10秒,10秒后S4断开,IC2失电。
IC3为2-4输入与门电路CD4082,当IC2的4个输出端均为高电平时,IC3的1脚输出高电平并使R7使VT导通,继电器吸合。
操作过程:按照电路设定密码05198的顺序按下密码键。
当按下SB0后,电源经SB0路通过VT1向C1充电,当C1充电至S4的接通电压后,S4接通,电源经S4加至IC2的VDD。
另一路通过VD2加至IC2的4个R端使IC2的4个触发器全部复位。
接着按下SB5使IC2中的1Q输出高电平,输出的高电平经反馈线使IC1中的S1导通,这时按下SB1,使IC2的2Q输出高电平,2Q输出的高电平使IC1的S2接通,这时再按下SB9,使IC2的3Q输出高电平,密码输入完毕,检测LED灯状态。
图1 电子密码锁设计框图2.方案二采用单片机中央芯片,辅用密码键盘,LED,二极管等组件。
通过电话键盘输入密码,输入后按#号键,密码就保存下来,断开控制开关,只要不断电,信息就会永远保存,密码还可重复输入!这里充分用到ZH9437的强大功能。
工作原理:通过ZH9437提供所需工作频率和电源,开锁时只要按顺序按下密码键,再按#号键就可以,芯片的16脚输出一个2S的低电平开锁信号。
SR301集成电路的典型应用,电话键盘为12位密码,G为3.6伏的独立充电电池其作用是用来防止电源停电时保留预置密码信息不被丢失。
密码设置方法:合上密码开关S1,就在键盘上输入密码,最多输入12位密码。
输入后按下“*”号键,密码就被存储在集成块内,然后断开S1,只要电路不掉点,密码信息也就不会丢失。
R6是限流电阻器,阻值取决于电源电压U,R6=100(U-3.6)。
设置密码也用下面方法:不需要开关S1,在接通电源U,这时密码自动设为0,按0键,然后就可输入新的密码,输入后按“*”号键。
只要U 不变保持,密码信息就被保留。
更改密码只要重复以上步骤即可。
开锁操作:首先输入完正确密码后,输入完后按“*”确认,集成块的OUT1脚输出一个2S宽的开锁正脉冲,可通过驱动器电路使电磁铁抽动锁;同时OUT2的状态变化一次,可通过外围电路进行有关信息就被保留,如驱动发光二级管等。
错误操作:输入错误密码,按#号键,由于密码不对,OUT1、OUT2、的状态讲究变化一次,可通过外围电路进行有关信息显示,这时报警器报警0.2S,OUT3状态不变,再重复输入错误密码,按“#”号键,结果与上述相同,第三次输入错误密码,按“#”号键,由于密码不对,电路将使蜂鸣器报警60S,同时OUT3端还输出一个宽度为60S的正脉冲,以驱动外设的报警电路或其他保安电路等。
3.方案论证由于器件所限,不是所有的都能找到,故儿倾向于简单电路。
而且SR301的价格比较而言是算高的。
从经济性和电路制作的难易性,方案一都比方案二可行。
从电路的可靠及性能上分析,一个是用单片机,一个是纯数字电路,输入部分一部分是按键开关,一部分是电话键盘,有所差异,一般采取按键开关比较多,所以索然性能相当,我还是选择方案一。
三、单元电路设计与参数计算图2 CD4066控制与输入电路四、总原理图及元器件清单1.总原理图图3 电子密码锁总原理图2.元件清单五、安装与调试1.焊接工具:电烙铁在万能板上涂一层助焊剂,对照原理图将元件合理安装在万能板上,检查元件位置是否正确。
检查无误后,用电烙铁将每个元件用焊锡焊牢,保证每个元件不虚焊。
在焊元件时根据不同元件耐热性能尽量减少焊接时间。
焊集成块时,先焊插槽。
焊接完毕后用万用表检查是否短路和断路。
2.调试工具:万用表、独立电源接入九伏电压,LED并没有亮起来,没有工作,按键后,LED也没有亮,说明电路有问题,待做修改后,LED 灯亮起,按键完毕,灯闪下。
但并未能顺利按键设定密码,用万用表检查,发现有短路,摸下局部温度三级管焊盘比较热,再测发现三极管接反,重新接正后,一切正常。
六、性能测试与分析(软件设计与调试)可以采取不同阻值的滑动电阻,只要满足I1*RP=〈Uvd1即可,Rp取的大可以获得大的调节范围,但灵敏度会下降。
时间间隔为10秒,时间常数应选得长些,对一些动作满的人就更需要了,CD系列的芯片性能还是比较可靠的。
C语言源程序#include <AT89X52.H>unsigned char code ps[]={1,2,3,4,5};unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};unsigned char pslen=9;unsigned char templen;unsigned char digit;unsigned char funcount;unsigned char digitcount;unsigned char psbuf[9];bit cmpflag;bit hibitflag;bit errorflag;bit rightflag;unsigned int second3; unsigned int aa; unsigned int bb;bit alarmflag;bit exchangeflag; unsigned int cc; unsigned int dd;bit okflag;unsigned char oka; unsigned char okb;void main(void){unsigned char i,j;P2=dispcode[digitcount]; TMOD=0x01;TH0=(65536-500)/256; TL0=(65536-500)%256; TR0=1;ET0=1;EA=1;while(1){if(cmpflag==0){if(P3_6==0) //function key {for(i=10;i>0;i--)for(j=248;j>0;j--);if(P3_6==0){if(hibitflag==0){funcount++;if(funcount==pslen+2) {funcount=0;cmpflag=1;}P1=dispcode[funcount]; }else{second3=0;}while(P3_6==0);}}if(P3_7==0) //digit key {for(i=10;i>0;i--)for(j=248;j>0;j--);if(P3_7==0){if(hibitflag==0){digitcount++;if(digitcount==10){digitcount=0;}P2=dispcode[digitcount];if(funcount==1){pslen=digitcount;templen=pslen;}else if(funcount>1){psbuf[funcount-2]=digitcount; }}else{second3=0;}while(P3_7==0);}}}else{cmpflag=0;for(i=0;i<pslen;i++){if(ps[i]!=psbuf[i]){hibitflag=1;i=pslen;errorflag=1;rightflag=0;cmpflag=0;second3=0;goto a;}}cc=0;errorflag=0;rightflag=1;hibitflag=0;a: cmpflag=0;}}}void t0(void) interrupt 1 using 0 {TH0=(65536-500)/256;TL0=(65536-500)%256;if((errorflag==1) && (rightflag==0)) {bb++;if(bb==800){bb=0;alarmflag=~alarmflag;}if(alarmflag==1){P0_0=~P0_0;}aa++;if(aa==800){aa=0;P0_1=~P0_1;}second3++;if(second3==6400){second3=0;hibitflag=0;errorflag=0;rightflag=0;cmpflag=0;P0_1=1;alarmflag=0;bb=0;aa=0;}}if((errorflag==0) && (rightflag==1)) {P0_1=0;cc++;if(cc<1000) {okflag=1;}else if(cc<2000) {okflag=0;}else{errorflag=0; rightflag=0; hibitflag=0; cmpflag=0;P0_1=1;cc=0;oka=0;okb=0;okflag=0;P0_0=1;}if(okflag==1) {oka++;if(oka==2) {oka=0;P0_0=~P0_0; }}else{okb++;if(okb==3){okb=0;P0_0=~P0_0;}}}}七、结论与心得本次课程设计是数字和单片机的课程设计,运用的是学的数字电路以及单片机的知识,在制板方面,运用了PROTEL知识,由于很多的元器件都是要自己画分装形式,特别是PROTEL里面有的但是其本身却是错的这样的情况给我们带来了很大的麻烦,表现在9015这个三极管的分装上,首先起管脚分布出现了错误,再则其大小过小导致我后来在焊接的时出了比较大的麻烦,当然通过本次的自己制板我也学到了很多的知识,首先在板的大小方面,通过本次我的板来看还是有点过大,这个就是在经济上带来了浪费,这个是在当时布线的时候所没有想到的,还有就是焊接,本次做的板焊接的时候比较难,原因是其对锡丝的吸附力太差,因此出现了焊焦的情况,当然也存在我自己的焊接技术问题,但通过这次的自己焊接进一步巩固了自己在焊接方面的能力。