找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2245|回复: 0
收起左侧

电子密码锁

[复制链接]
ID:274302 发表于 2018-1-15 13:46 | 显示全部楼层 |阅读模式
摘  要
如今的生活中机械锁已经不能满足人们的要求了,这样电子密码锁就广泛的运用到了生活中,随着各式各样的密码锁诞生,对密码锁的要求也越来越高,所以密码锁在以后的生活中有着很大的发展空间。
本次设计中的密码锁采用的是以单片机为核心的电路,设计出来的安全性高、成本低、功耗低、易操作的电子密码锁。电路中包括了键盘电路、显示电路、报警电路、开锁电路以及掉电存储电路。其中键盘电路采用的是4*4矩阵型键盘,该键盘电路可以为单片机节省I/O口的使用。为了更好的让用户知道输入的信息,在本设计中添加了显示电路。显示电路使用的是使用了单片机的一个串行口,用74LS247驱动数码管发光显示数码,再使用74LS138控制选位信号就可以完成该系统的显示功能。此显示模块方便而且简单。在安全性能方面,本设计中设计出了报警电路,防止外人胡乱使用密码而产生的不良后果,在输入密码错误三次的时候,电路就会发出报警并且会锁定键盘。这样就可以更好的防止用户以外的人胡乱操作密码锁而造成不必要的损失。在设计中因为要考虑原件成本的问题,所以就用了发光二极管来代替密码锁开锁的功能,根据发光二极管的指示来判断密码锁是否开锁,在发光二极管灯亮的时候,密码锁就打开,发光二极管灯灭,则表示密码锁打开失败。因为城市的供电一般很难保证百分百的稳定,所以考虑到停电时给用户带来很多的麻烦,所以本设计中用到了拥有掉电存储功能的电路,该电路中主要芯片为AT24CO2,其中包括了电源电路、电子开关自动切换电路、蓄电池自动充电电路。这样就在停电的情况下密码锁电路依然保持器电路功能。
在本次设计中利用的是汇编语言,经过keil的编译,在protues中仿真,基本实现了以上的功能。
关键词:单片机;4*4矩阵型键盘;报警电路;密码锁;开锁电路
ABSTRACT
Mechanical lock now lifealready can't satisfy people's request, so that electronic combination lock iswidely used to the life, with the birth of a variety of combination lock, alsomore and more high to the requirement of combination lock, so the combinationlock in later life has very big development space.
This combination lock is also used inthe circuit with single-chip microcomputer as the core, designed the highsafety, low cost, low power consumption, easy to operate electronic combinationlock. Includes the keyboard circuit, display circuit, alarm circuit, lockcircuit and electric storage circuit. The keyboard circuit USES is 4 * 4 matrixkeyboard, the keyboard circuit can save MCU I/O port to use. In order to letthe user know the input information, add a display circuit in the design.Display circuit using a serial port is the use of the single chipmicrocomputer, with 74 ls247 drive digital tube light emitting display digital,to use 74 ls138 control function of a signal can be completed the systemdisplay. The display module is convenient and simple. In the field of safetyperformance, we design in the design of the alarm circuit, preventing outsidersadverse consequences as a result of the random use password, input the wrongpassword three times, will send out alarm circuit and will lock the keyboard.So you can better prevent users from outside mishandled combination lock andcause unnecessary loss. Because want to consider in the design of the cost ofthe original, so the light emitting diode was used instead of a combinationlock unlock function, according to the light emitting diode is to determinewhether a combination lock, at the time of led lights, combination lock isopened, led lights, combination lock open failure. Because the city's powersupply, generally it is difficult to guarantee the stability of hundred of, soconsidering the power failure caused a lot of trouble to the user, so thisdesign was used with electrical storage function circuit, main chip in thiscircuit for AT24CO2, including the power supply circuit, electronic automaticswitch, battery charging circuit automatically. Thus in the case of powerfailure combination lock remains device circuit function.
Using assembly language, in this designthrough the keil compiler, in protues simulation, basically achieved the abovefunctions.
Keyword:SCM;4*4 matrix keyboard; alarm circuit; combination lock; the lock circuit
目  录


1  方案论证
1.1  设计要求
(1)本设计为了防止密码被窃取要求在输入密码时在LED屏幕上显示 “-”号。
(2)设计开锁密码位六位密码的电子密码锁。
(3)能够LED显示在密码正确时显示“- - - - - -”,密码错误时显示“000000”,输入密码时显示键入的数字。
(4)实现输入密码错误超过限定的三次电子密码锁定。
(5)4×4的矩阵键盘其中包括0-9的数字键和A-F的功能键
(6)本产品具备报警功能,当输入密码错误时蜂鸣器响并且LED灯亮。
(7)密码可以由用户自己修改设定(只支持6位密码),修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作 。
1.2  方案比较
方案一:采用数字电路控制。图1所示为原理方框图:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif
图1 数字密码锁电路方框图
采用数字电路设计密码锁,采用此方案设计过程比较简单。其核心控制由74LS112双JK触发器构成的数字逻辑电路,一共采用了9个输入键,9个键中有4个是有效的密码按键,其余的则是为干扰设计的按键,如果按下了干扰的按键,键盘输入电路就会自动清零,原先输入的密码报废,需要输入新的密码;对于用户输入密码的时间也有控制,如果用户输入密码的时间超过了40S的话,电路将会报警,电路如果连续报警三次的话,电路将会锁定键盘,并且五分钟内不能使用,以此来防止其他的人非法操作。电路的组成分为两大部分:密码锁电路和备用电源USP,设置备用电源则是为了停电做准备的,否则停电的时候用户将会用不了密码锁,这样会对用户造成很大的麻烦,所以才设置了备用电源。
密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。
方案二:本方案采用是以89S51为核心的单片机控制方案。利用单片机的灵活性和丰富的I/0端口,以及其控制的准确性,实现密码锁的基本功能,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图2所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif
2 单片机控制方案
方案三:采用EDA技术设计六位电子密码锁,作为通用电子密码锁,主要由三个部分组成:数字密码输入电路、密码锁控制电路和密码锁显示电路。
(1)密码锁输入电路包括时序产生电路、键盘扫描电路、键盘译码电路等几个小的功能电路。
(2) 密码锁控制电路包括按键数据的缓冲存储电路,密码的清除、存储、激活电锁电路(寄存器清除信号发生电路),密码核对(数值比较电路),解锁电路(开/关门锁电路)等几个小的功能电路。
(3)密码显示电路主要是在液晶显示屏显示输入的数值。
EDA设计整个密码锁的总框图如图3所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif图3 EDA设计整个密码锁的总框图
1.3  方案的选择
通过比较1.2中的三种方案,单片机这种方案比其它两种方案活动空间要大一些,不仅能实现密码锁的功能而且有着很大的发展空间,而且还可以对系统进行升级,所以我就采用了第二种方案。
本方案采用是以89S51为核心的单片机控制方案。利用单片机的灵活性和丰富的I/0端口,以及其控制的准确性,实现密码锁的基本功能。
初步的设计构想如下:
输入密码采用的是矩阵键盘,包括了10个数字键和6个功能键。
用LED数码管显示所输入的密码,用74JS247驱动数码管发光显示数码,用74LS138控制各位显示器分时进行显示。
因为开锁显示比较麻烦,所以用发光二极管代替开锁电路,当发光二极管灯亮的时候则表示密码正确,并且开锁。
当密码输入错误次数超过三次的时候,系统会发出警报。
电源接通后,数码管显示为“000000”,设置初始密码为“123456”,在键盘上依次按下“123456”时便会开锁。这样可以预防停电后再次来电时没有密码可以用,锁打不开的问题。
按“C”键,清除显示器为“000000”。
如果想要重新设置密码,则先输入密码然后再按“*”键。
输入密码完成后,按“D”键。如果输入的密码和设置的密码相同,则开门。否则显示器清0。
软件的设计包括了键盘值得扫描,LED显示程序,报警程序,开锁程序等等。
2  硬件电路及功能模块设计
2.1  AT89S51的芯片简介
80S51有40引脚双列直插式DIP和44引脚方形扁平式QFP共两种封装形式。其双列直插式封装芯片逻辑符号参见图4。
    输入/输出口线包括了P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7,四个8位的双向口线。
    地址锁存控制信号ALE
在系统扩张时,ALE用于控制把P0口输出低8位的地址送入锁存器然后存起来,用来实现低位的地址和数据的分时传送。除此之外由于ALE是以1/6晶振频率所固定的频率输出的是正脉冲,这样就可以作为外部定时脉冲或外部时钟的使用。
EA则是作为访问程序存储器控制信号。
当EA的号为低电平的时候,对ROM的操作是针对外部程序存储器的;而当EA的高电平的时候,对ROM的读取操作则是从内部存储器开始的,并且可以延续到外部程序存储器。
外部程序存储器读选通信号 PSEN。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg在低电平的时候读外部ROM时PSEN是有效的,用来实现外部的ROM的操作。
复位信号RST。
当输入的复位信号延续两个机器周期以上高电平为有效,用于王城单片机的复位操作。
外部接晶体引线的两个端口XTAL1 和XTAL2。
如果使用芯片内部时钟时候,那么XTAL1和XTAL2用于外接石英晶体谐振和微调电容;如果使用的是外部时钟,那么这两个端口则用于接入外部时钟脉冲信号。                                 
地线Vss                                                                  
+5V电源Vcc                               图4 AT89S51芯片图
2.2 LED显示电路
LED显示电路是为了给使用者能够更好的操作而设计的。该系统是采用的串行显示方式设计,使用了单片机的一个串行口,用74LS247驱动数码管发光显示数码,再使用74LS138控制选位信号,就可以完成该系统的显示功能,显示电路的电路,原理图如图5所示。
用P0.0~P0.3接在74LS247的A,B,C,D四个端口上,74LS247的输出口接LED的七段显示;而P0.4~P0.6接74LS138的A,B,C三个输入口,74LS138的输出口接LED的位显示。通过程序实现数字和位的控制。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg图5 LED显示电路
2.3  单片机最小系统与复位电路设计
最小系统就是单片机在发挥具体测控功能时所必须的组成部分。其中包括了复位电路,震荡电路,输入以及输出设备,电源等。我们简单的介绍一下复位电路,复位电路顾名思义就是产生复位信号,当复位信号送入RST后还要送入片内的触发器,由片内复位电路在每个机器周器的S5P2时刻对触发器输出采样信号,然后由内部复位电路产生复位操作所要的信号。一般来说复位电路包括了上电自动复位和按键复位两种,本设计采用的是上电自动复位。上电自动复位的原理:RST引脚是复位信号的输入端,当高电平的复位信号持续两个机器周期以上的有效时间,则单片机就会上电自动复位。上点自动复位时通过电容的充电来实现的,当接受上电的瞬间,RST端电位与Vcc相同,随着充电电流的减少,RST的电位则渐渐的下降,延续到复位信号无效。按键复位在这里就不给出过多的介绍了,两种复位电路的原理都差不多。按键复位电路用的是脉冲复位电路和电平复位电路两种。图6所示为最小系统方框图:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif
图6 最小系统方框图
2.4  晶振电路
89S51内部有一个用于构成振荡器的高增益反相放大器,其中有XTAL2和XTAL1这两个引脚,这两个引脚分别是该放大器的输出端和输入端两个端口。外部接的石英晶体和两个电容C3、C4 接入放大的反馈电路时,就构成了一个自激振荡器。振荡器如图7所示。这个振荡电路对外接电容C3、C4虽然没有严格的大小要求,但是电容容量的大小则会的振荡频率的高低和振荡工作的稳定性以及起振的难易程度还有温度的稳定性产生轻微的影响。如果使用的是石英晶体的话,我在此使用的是33pf的电容。设计者当然也可以采用外部的时钟。出现这种情况时,由外部而来的时钟脉冲则接到XTAL1端,也就是内部时钟发生器的输入端,XTAL2则处于悬空状态。通过上面的整合,所以本设计采用图7的晶振电路:                     
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
图7 晶振电路
2.5  开锁机构
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.gif通过单片机送给开锁机构,电路则会驱动电磁锁吸合,开锁的目的就会达到。密码锁开锁机构原理如图8所示:
图8 密码锁开锁机构示意图
当用户输入的密码正确而且是在规定的时间内输入的话,单片机就会输出一个开门信号,将这个信号送到开锁驱动电路中区,然后便会驱动电磁锁,这样开锁的目的就会达到。电路图如图9所示。
本次电路的设计中,考虑到需要节省材料,暂时就用发光二极管来代替电磁锁,发光二级管亮的时候,表示开锁;如果灭,表示锁没有打开。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg
图9 密码锁开锁机构电路图
2.6  按键电路的设计
此次设计采用的是行列式键盘,为了减少键盘与单片机接口的时候所占用的I/O线的数目,在按键数目较多的时候,通常会采用这种方法。
在键盘中按键数量比较多的时候,为了减少I/O口的过多占用,一般情况都会将按键排列成矩阵形式,如图10所示。在矩阵式键盘中,每条垂直线和水平线在交叉处都是不直接连通的,都是通过一个按键连接起来的。这样,一个端口(如P1口)就可以构成4*4=16个按键,这样会比直接将端口线用于键盘多出了一倍的空间,而且线的数量越多,区别就会越明显,如果再加上一条线就可以构成20的键盘了,而直接用端口线则只能多出一键(9键)。由此可见,在需要键盘数量比较多的时候,采用矩阵法来做键盘是合理的。
扫描原理
把每个键都分成水平和垂直的两端接入,如果说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。
键盘整体模框图如图10所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg图10 键盘整体模框图
表1 里面给出了4*4矩阵键盘的键码,其中的键盘行列代码则表示的是键盘被按下去的时候出现的代码,低电平有效。例如在按下第一个按键的时候,第一行的代码为0111,列的代码也为0111,这样我们设的第一个按键为0,那么0的键码就出来了,即为77H,以此类推。
表1 键码表
     
键盘行列代码       0111       1011       1101        1110
  
   
0111         0(77H)      1(B7H)    2(D7H)      3(E7H)                                    
  
1011         4(7BH)      5(BBH)    A(DDH)      7(EBH)                                 
  
1101         8(7DH)      9(BDH)    A(DDH)      B(EDH)                                   
  
1110         C(7EH)      D(BEH)    E(DEH)      F(EEH)      
2.7  AT24C02存储单元的设计
掉电存储单元的设计就是为了在掉电的时候存储当前设定的。AT24C02出产于ATMEL公司,该芯片为2KB字节掉电可擦除存储芯片,采用的是单片机通讯和两线串行的总线,最低的电压为2.5V,额定的电流为1mA,静态电流为10mA (5.5V),芯片内的资料可以在掉电的情况下存储四十年左右,而且采用的是DIP封装(8脚),使用比较方便。其电路如图11所示。
图中的R1、R2则是上拉电阻,其作用是为了减少AT24C02的静态功耗,因为AT24C02的数据线和地址线是复用的,而且采用串口模式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg
图11 掉电存储电路原理图
2.8  密码锁的电源电路的设计
为了防止停电造成的麻烦,所以准备了USP后备电源,它包括了城市的供电电路,停电时的检测电路,电子开关的切换电路,蓄电池和蓄电池充电电路组成。
220V的电压经过变压器变成12V的交流电压,然后流经桥式整流电路,再由7805稳压变成5V再送往切换电路,本电路的功耗相对来说比较小,所以就选用10w的小型的变压器。
电源电路图如图12所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg图12 市电供电电路
2.9  电子开关切换电路
由R1,R2,R3,R4和IC14便组成了一个电压比较器,在一般的情况下,V+<V- 这个时候IC14输出的是高电平,常闭开关触点与城市供电电路想通。在市电断开的时候,V+>V- IC14输出的是低电平,由T3和T4组成的电路使继电器开启,其常开触点将电路和蓄电池连接起来,这样就可以实现电路的切换工作,保证了停电的时候密码锁还能正常的工作。
电子开关切换电路电路图如图13所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg
图13 电子开关切换电路
2.10  蓄电池自动充电电路
T1,T2构成了蓄电池的自动充电,这个电路它在电池充满后则会自动停止充电操作,当D1亮的时候电池则是在充电,D2的作用是工作指示。R4,R5,T1则构成了电压检测电路,当蓄电池电压低的时候, T1,T2则导通,实现对蓄电池充电;充电完成后,则T1,T2截止,停止充电,同时D1将会熄灭,电路中C4起到的作用则是滤除电路产生的干扰信号。
蓄电池自动充电电路图如图14所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg
图14 蓄电池自动充电电路图
2.11  设计总框图
总电路包括了电源模块,键盘输入模块,显示模块,开锁模块,还有当密码输入错误时会锁定键盘并且报警的报警电路模块。
总体设计框图如图15所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image024.gif
图15 总体设计框图
3  程序设计
3.1  模块介绍
该系统的软件设计分为以下几个模块:
(1)主程序模块
主程序主要完成初始化、设置中断向量、检查有无调用显示以及有无按键按下等等。
(2)掉电存储服务程序
在逐位密码比较的时候,则需要读取AT24C02的程序,将原来储存在芯片内的数据读到RAM中,输入的密码则和这个密码进行比较。如果是修改密码的话,则将输入的密码保存在AT24C02中
(3)键盘的扫描以及识别子程序
  键盘采用的是查询的方式,在主程序中,在没有按键按下的时候,单片机则按照原来的程序循环下去,如果检测到有按键按下,便立即转到按键锁按下的子程序,处理结束的时候就返回去。
(4)显示子程序
显示子程序包括五种状态分别为;开锁状态显示子程序、关闭状态显示子程序、密码输入错误后的提示子程序、密码输入及修改状态显示子程序。密码在规定的时间范围内连续三次输入错误后的锁定状态显示子程序.
3.2  程序流程图的设计
3.2.1  主流程图
因设计主要是作用汇编语言来开发的51单片机项目程序,所以首先必须有一个可以在Windows XP或Windows vista操作系统下执行的汇编语言编译器,本设计采用Keil编译器进行编程,因为它可以支持一系列的51单片机。设计主程序见附录1。
图16为主流程图流程:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif
图16 主流程图
3.2.2  键盘扫描子程序
键盘扫描开始前给键盘设置一个初始值,然后送入扫描初始值。设C=1左边移动,然后检测C的值是否等于0,如果等于0就调用消除抖动子程序并且读取P1的值,如果A=0则调用显示子程序,如果A不等于0则继续读取P1的值。
在C不于0时则检查R5是否等于0,如果R5也不等于0则返回继续C左移,如果R5等于0设C=1右移扫描。然后检测C是否等于O,如果C等于0则返回到设置初始值,如果C不等于0则送入扫描初始值。程序详见附录1。
键盘扫描流程图如图17所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image026.gif
图17 键盘扫描流程图
3.2.3  LED显示子程序
LED显示模块在按键值的输入后,然后加上74LS138的扫描值送到P0口输出到LED的显示屏上就完成了显示模块的功能,程序参见附录1。
LED显示流程图如图18所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif
图18 显示流程图
3.2.4  密码比较和报警程序
开始比较第一位的密码是否正确,如果正确则比较下一位的密码,看是正确,如果正确则继续比较,如果六位密码都比较完了而且正确锁便打开了同时清零,如果其中有一位密码错误则清除显示并且记录错误次数,当错误次数达到三次的时候则报警。程序参见附录1。
密码比较和报警流程图如图19所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image028.gif
                                 图19 密码比较和报警流程图
4  仿真
4.1  系统的总仿真图
本次设计仿真我是在protues下实现的,包括了4*4矩阵键盘,晶振电路,显示电路,开锁电路等模块。
图20为系统的在protues下的总仿真图:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg
图20 系统总仿真图
4.2  部分仿真情况
  当电源刚刚接通的时候LED显示情况,电源刚刚接通时LED则会显示“000000”具体显示情况如图21所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image031.jpg
图21 电源初始接通时显示情况
为了仿真的方便,而且用到的是LED数码管,所以在仿真电路的时候没有将密码隐藏,而是直接显示在数码管上面,在键盘上一次按下“123456”在LED数码管上就会显示出如图22所示的情况。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image033.jpg
图22  LED的显示
考虑到仿真的方便性,在这里直接用一个LED-RED来代替了开锁的的电路,在键盘上输入了以上的六个数字然后再按下确认键的话就会使发光二极管灯亮那么就会出现如图23的情况,在本次设计中表示开锁。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg
图23 开锁显示电路
在修改密码的时候,先输入了正确的密码,然后再修改密码,修改密码候显示以下情况,在这里我们修改的密码为“456789”,如下图24所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image036.jpg
图24 密码修改显示图
当密码输入错误的时候电路会自动清零。如图25所示。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image038.jpg
图25 密码输入错误时显示情况
参考文献
[1]康华光主编.电子技术基础(第四版).高等教育出版社,1998
(Kanghua guang editor. Electronic technology foundation (fourth edition). Highereducation press, 1998)
[2] 梁宗善主编.新型集成块应用.华中理工大出版社,2004
(Liang Zongshaneditor. The new application of manifold blocks. Central China tech universitypress, 2004)
[3]刘国权、韩晓东主编.Protel DXP电路原理图设计指南.中国铁道出版社,2004
(LiuGuoQuan, HanXiaodong editor. Protel DXP schematic circuit diagram design guidelines. Chinarailway publishing house, 2004 )
[4]《最新常用集成块速察速用》编写组编.最新常用集成块速查速用.机械工业出版社,2005
(The latest commonspeed was made in the speed of manifold blocks with code to compile. The latestcommon integrated block with quick speed. Machinery industry press, 2005 )
[5]张庆双主编.电子技术基础技能线路实例.科学出版社,2006
(Line instance ZhangQingshuang editor. Electronic technology basic skills. Science press, 2006 )
[6]刘修文主编.实用电子电路图集.中国电力出版社,2005
(Atlas LiuXiuWeneditor. Practical electronic circuit. China electric power press, 2005 )
[7]李朝青.单片机原理及接口技术(简明修订版)[M].北京:北京航空航天大学出版社,1998
(Li Chaoqing. Singlechip microcomputer principle and interface technology (concise edition) [M].Beijing: Beijing university of aeronautics and astronautics press, 1998 )
[8]王为清,程国刚.单片机KeilCx51应用开发技术.北京:人民邮电出版社,2007:11-70
(WangWeiqing Cheng Guogang. Single chip microcomputer KeilCx51 application developmenttechnology. Beijing: people's posts and telecommunications press, 2007:11-70 )
[9]张齐基于单片机应用系统设计技术-基于C语言编程.北京:电子工业出版社
(Zhang qi technology -based on single chip microcomputer application system design based on Clanguage programming. Beijing: electronic industry press )
[10]李建波.STC89C52单片机的电子密码锁.现代电子技术,2008, Vol.28
(Li jianbo. STC89C52 single-chip electronic combination lock. Themodern electronic technology, 2008, Vol. 28 )
致  谢
经过本次的设计,让我加深了对单片机六位电子密码锁的了解,从一开的无从下手到后来一步一步的设计,其中有着汗水有着乐趣。
在本次设计中,对于AT89S51芯片有了更深程度的理解和掌握,比如I/O口的接线,扩展外部存储器等等。在设计中用到了4*4矩阵式键盘,这种形式的键盘则为键盘占用过多的I/O口而设计的,4*4这个键盘一共16个按键,但其实只用了8个接线口,这样省下了很多的接线口。
在晶振电路中,让我了解到对电容的大小要求,当电容的大小超出规格的时候,则会对振荡频率的高低和振荡工作的稳定性以及起振的难易程度还有温度的稳定性产生轻微的影响,从而对系统的精确性产生影响。
在开锁电路中由于要考虑材料的价钱,所以我就只用了发光二极管来代替这个开锁机构,发光二极管亮则表示锁打开,发光二极管灭的时候就表示锁没有打开。这样的设计让我发现了AT89S51这个芯片的灵活性。
总之经过这次的设计让我有了很大程度的提高。
    因此在这里深深的感谢老师对我的悉心教导。
附录1 程序清单
      ORG 00H
      MOV R5,#00H
      MOV R7,#00H
      DJNZ R7,$
      MOV R7,#10H
      MOV R6,#06H
      MOV R1,#35H
L1:  MOV A,R7
     MOV DPTR, #TABLE
     MOVC A,@A+DPTR
     MOV @R1,A
     DEC R1
     INC R7
      DJNZ R6,L1
START: ORL P2,#0FFH
      MOV R4,#06H
      MOV R0,#40H
CLEAR: MOV @R0,#00H
      INC R0
      DJNZ R4,CLEAR
L2:   MOV R3,#0F7H
      MOV R1,#00H
L3:   MOV A,R3
      MOV P1,A
      MOV A,P1
      MOV R4,A
      SETB C
      MOV R5,#04H
L4:   RLC A
      JNC KEYIN
      INC R1
      DJNZ R5,L4
      CALL DISP
      MOV A,R3
      SETB C
      RRC A
      MOV R3,A
      JC L3
      JMP L2
KEYIN: MOV A,R1
      XRL A,#0BH
      JZ X3
      MOV A,R1
      XRL A,#0FH
      JZ X4
      MOV R7,#10
D1:  MOV R6,#24
      DJNZ R6,$
      DJNZ R7,D1
D2:   MOV A,P1
      XRL A,R4
      JZ  D2
      MOV A,R1
      MOV DPTR,#TABLE
       MOVC A,@A+DPTR
       MOV R7,A
      XRL A,#0AH
      JZ SET0
       MOV A,R7
       XRL A,#0BH
       JZ START
       MOV A,R7
      XRL A,#0CH
      JZ L2
      MOV A,R7
      XRL A,#0DH
      JZ L2
      MOV A,R7
      XCH A,40H
      XCH A,41H
      XCH A,42H
      XCH A,43H
      XCH A,44H
      XCH A,45H
      CALL DISP
      JMP L2
X3:   JMP DISP2
X4:   JMP COMP
DISP: MOV R0,#45H
DISP1: MOV A,@R0
      ADD A,#50H
       MOV P0,A
       CALL DELAY
       DEC R0
      MOV A,@R0
      ADD A,#40H
      MOV P0,A
       CALL DELAY
       DEC R0
       MOV A,@R0
      ADD A,#30H
      MOV P0,A
      CALL DELAY
       DEC R0
       MOV A,@R0
       ADD A,#20H
       MOV P0,A
       CALL DELAY
       DEC R0
      MOV A,@R0
      ADD A,#10H
      MOV P0,A
       CALL DELAY
       DEC R0
       MOV A,@R0
      ADD A,#00H
      MOV P0,A
      CALL DELAY
       RET
SET0:  MOV R2,#06H
       MOV R0,#40H
      MOV R1,#30H
E1:   MOV A,@R0
      XCH A,@R1
      INC R0
      INC R1
      DJNZ R2,E1
      CALL DELAY
E2:   JMP START
COMP: MOV R1,#45H
      MOV R0,#35H
      MOV R2,#06H
C1:   MOV A,@R1
      XRL A,@R0
      JNZ C3
      DEC R1
      DEC R0
      DJNZ R2,C1
      CLR P2.0
      MOV R2,#200
C2:   MOV R6,#248
      DJNZ R6,$
      DJNZ R2,C2
C3:   INC R5
      MOV A,R5
       MOV R5,A
       CJNE R5 ,#03H,C4
       CLR  P2.1
       MOV R5,#00H
C4:   JMPSTART
DISP2: MOV R0,#35H
       CALL DISP
       MOV A,P1
       XRL A,R4
       JZ DISP2
       CALL DELAY
       JMP START
DELAY: MOV R7,#C3
D3:   MOV R6,#248
       DJNZ R7,D3
       RET
       ORG 300H
TABLE: DB 01H ,02H, 03H, 0CH
       DB 04H, 05H, 06H ,0DH
       DB 07H ,08H ,09H ,0EH
       DB 0AH, 00H, 0BH ,0FH
       DB 01H, 02H,03H ,04H, 05H, 06H
       END
附录2 总原理图file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image040.gif  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表