电子密码锁单片机课程设计单片机原理与应用技术课程设计报告电子密码锁设计专业班级:电气 124姓名:时间:2015年1月2日指导教师:***2015年1月2日电子密码锁课程设计任务书1.设计目的与要求设计出一个电子密码锁。
准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:(1)状态显示功能:锁定状态时系统用3位数码管显示OFF,用3位码管显示成功开锁次数;成功开锁时用3位数码管显示888,用3位数码管显示成功开锁次数。
(2)密码设定功能:通过一个4×4的矩阵式键盘可以任意设置用户密码(1-26位长度),同时系统掉电后能自动记忆和存储密码在系统中。
(3)报警和加锁功能:密码的输入时间超过12秒或者连续3次输入失败,声音报警同时锁定系统,不让再次输入密码。
此时只有使用管理员密码方能对系统解锁。
2.设计内容(1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。
4.答辩在规定时间内,完成叙述并回答问题。
1电子密码锁电气124 赵政权摘要:电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
本设计利用51单片机编程控制原理,采用矩阵键盘、数码管显示、数据存储器和报警系统构成电子密码锁的设计成品。
其中数码管使用两组三位一体共阳数码管,数据存储器使用AT24C04芯片通过IIC协议实现数据的传输,矩阵键盘用执行效率极高的代码扫描控制。
使用Keil4.6编写程序代码,用Proteus进行仿真,无误后使用Altium制图,最终做成能使用的成品。
关键词: 51单片机 IIC协议矩阵键盘动态显示 Keil Proteus Altium21 引言电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。
应用较广的电子密码锁是以芯片为核心,通过编程来实现的。
其性能和安全性已大大超过了机械锁,特点如下:1.保密性好,编码量多,远远大于弹子锁。
随机开锁成功率几乎为零。
2.密码可变。
用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
3.误码输入保护。
当输入密码多次错误时,报警系统自动启动。
4. 电子密码锁操作简单易行,一学即3会。
5. 干扰码功能,在输入正确密码前可输入任意码。
6. 管理员功能,能使用管理员密码获得最高权限。
7. 人性化设计,输密码的倒计时、用户输入密码的位数、剩余输入密码的次数等能够在相应的界面显示出来,提醒用户。
2 总体设计方案2.1 设计思路利用单片机编程控制原理,采用矩阵键盘、数码管显示、数据存储器和报警系统构成本电子密码锁的设计成品。
2.1.1方案确定(1)单片机最小系统模块单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可4以工作的系统。
对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。
复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。
典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。
一般推荐C 取10u,R取8.2K。
当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。
晶振电路:11.0592MHz可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合;12MHz可以产生精确的us级时歇,方便定时操作。
所以我们这里5使用12MHz的晶振。
这里没有使用片外程序模块,所以EA 接高电平。
P1口接330欧姆的电阻原因详见数码管显示模块和蜂鸣器模块的讲解,单片机最小系统的模块图如下:图2.1.1-1 单片机最小系统模块(2)数码管显示模块和蜂鸣器模块首先我们需要了解单片机引脚灌电流和拉电流的一些参数。
单片机的引脚,可6以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。
但是程序控制不了单片机的输出电流。
单片机的输出电流,很大程度上是取决于引脚上的外接器件。
单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”,如图2.1.1-2左图所示;单片机输出高电平时,则允许外部器件,从单片机的引脚拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”,如图2.1.1-2右图所示。
这些电流一般的大小,最大限度等这就是常见的单片机输出驱动能力的问题。
每个单个的引脚,输出低电平的时候,允许外部电路,向引脚灌入的最大电流为 10 mA;每个 8 位的接口(P1、P2 以及 P3),允许向引脚灌入的总电流最大为 15 mA,7而 P0 的能力强一些,允许向引脚灌入的最大总电流为 26 mA;全部的四个接口所允许的灌电流之和,最大为 71 mA。
而当这些引脚“输出高电平”的时候,单片机的“拉电流”能力太差,不到 1 mA。
结论就是:单片机输出低电平的时候,驱动能力尚可,而输出高电平的时候,就没有输出电流的能力。
图2.1.1-2 灌电流和拉电流我们分析一下拉电流负载和灌电流负载的区别:图2.1.1-2左图中,是灌电流负载。
单片机输出低电平时,LED亮;输出高电平的时候,那就什么电流都没有,此时就不产生额外的耗电。
图2.1.1-2右图中,是拉电流负载。
单片机输出低电平的时候,LED不亮,此时VCC通过R2把电流全部灌进单片机IO口,并且电流时5ma,单片机输出高电平的时候,VCC通过R2将电流注入到LED中,led亮。
这时应该能注意到LED 不发光的时候,上拉电阻给的电流全部灌入单片机的引脚了,如果在一个8位的接口,安装了8个1K 的上拉电阻,当单片机都输出低电平的时候,就有40mA 的电流灌入这个8位的接口!如果四个8位接口,都加上1K的上拉电阻,最大有可能出现32×5=160mA的电流,都流入到单片机中,这个数值已经超过了单片机手册上给出的上限。
此时单片机就会出现工作不稳定的现象。
而且这些电流,都是在负载处于无效的状态下出现的,它们都是完全没有用处的电流,只是产生发热、耗电大、电池消耗快等后果。
综上所述,灌电流负载,是合理的;而“拉电流负载”和“上拉电阻”会产生很大的无效电流,并且功耗大。
设计单片机的负载电路,应该采用“灌电流负载”的电路形式,以避免无谓的电流消耗。
所以这里的数码管我们选择共阳的。
之所以选择共阳的其实这里还有另一个原因:单片机的P0口是开漏输出,也就是当单片机P0口设置为1时,它相当为浮空状态,并不能提供高电平,如果需要高电平则需要接上拉电阻。
我们发现这里如果使用共阳的数码管就不需要接上拉电阻,因为浮空状态和高电平都是让数码管灭,效果是一样的。
这样可以减少电路的复杂性。
(3)密码掉电存储模块单片机的RAM区在掉电之后会清除,ROM区空间又小,所以一些数据要存储在外部存储器中。
本设计利用24C04来存储用户密码和管理员密码,利用IIC协议来实现24C04芯片和单片机的通信。
I2C总线只有两根双向信号线。
一根是数据线SDA,另一根是时钟线SCL。
I2C总线通过上拉电阻接正电源。
当总线空闲时,两根线均为高电平。
连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
起始和终止信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号。
图2.1.1-3 IIC起始和终止信号数据传送格式:字节传送与应答每一个字节必须保证是8位长度。
数据传送时,先传送最高位,每一个被传送的字节后面都必须跟随一位应答位即一帧共有9位。
如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。
由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。
如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。
当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。
这个信号是由对从机的“非应答”来实现的。
然后,从机释放SDA线,以允许主机产生终止信号。
图2.1.1-4 IIC字节传送与应答数据帧格式:I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。
在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。
每次数据传送总是由主机产生的终止信号结束。
但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。
图2.1.1-5任一地址写入数据格式图2.1.1-6任一地址读取数据格式AT24C04的芯片地址如下图,1010为固定,A0,A1,A2正好与芯片的1,2,3引角对应,为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中,当要与哪个芯片通信时传送相应的地址即可与该芯片建立连接,TX-1B实验板上三根地址线都为0。
最后一位R/W为告诉从机下一字节数据是要读还是写,0为写入,1为读出。
图2.1.1-7 AT24C04的芯片地址(4)用户输入模块用户主要利用按键输入密码等操作。
考虑到用户密码需要1个启动输入密码功能按键、0~9这10位按键、1个确定按键、1个消除密码按键、1个返回按键、1个启动修改密码功能按键共15个按键。
我们这里可以采用4×4扫描式矩阵按键,共16个按键,剩余1个按键预留拓展,以便于产品的升级开发。
2.2设计方框图根据设计思路,可分为人机交换层、控制层、数据交换层,这3层从上到下如下框图图2.2-1 设计方框图3 设计原理分析3.1 数码管电路的设计设计单片机的负载电路,应该采用“灌电流负载”的电路形式,以避免无谓的电流消耗。
这里选择共阳的其实这里还有另一个原因:单片机的P0口是开漏输出,也就是当单片机P0口设置为1时,它相当为浮空状态,并不能提供高电平,如果需要高电平则需要接上拉电阻。