湖南工程学院课程设计课程名称单片机原理及应用课题名称智能密码锁设计专业自动化班级1291学号姓名指导教师2014 年12 月15 日湖南工程学院课程设计任务书课程名称单片机原理及应用课题智能密码锁设计专业班级自动化1291学生姓名聂利峰学号************指导老师王迎旭李晓秀审批任务书下达日期2014 年12 月 1 日任务完成日期2014 年12 月15 日目录第1章概述 (1)1.1 设计要求 (1)1.2 目的及意义 (1)第2章系统总体方案选择与说明 (2)2.1系统硬件电路设计框图 (2)2.2 工作原理 (2)第3章硬件电路设计 (4)3.1 时钟电路设计 (4)3.2 开锁电路设计 (4)3.3 复位电路设计.................................. .5 3.4 报警电路设计 (5)3.5 键盘电路设计 (5)3.6 LED数码管显示电路设计 (6)3.7 密码存储电路设计 (7)第4章应用软件设计 (9)4.1软件设计思路 (9)4.2各子程序设计 (9)4.2.1 键盘扫描子程序设计 (9)4.2.2 L E D显示子程序设计 (11)4.2.3开锁子程序设计 (11)4.2.3EEPROM闪存子程序设计 (11)第5章硬件调试与结果分析 (13)第6章小结..................................... 致谢............................................ 参考文献.......................................... 附录.......................................... 附录A:系统硬件电路原理图.................... 附录B:源程序清单.............................. 电气与信息工程系课程设计评分表....................第1章概述1.1设计要求本设计是基于单片机控制的智能电子密码锁,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。
主要功能有:按用户使用要求可设置、修改密码,遥控或按键开锁,错误报警、显示等辅助功能。
列如:(1) 密码可设4位,并可在线修改并存储;(2)密码输错3次应有报警信号提示,并有特殊密码解除;(3)出开锁时外的时候,要求显示的是北京时间;(4)开锁信号可以通过继电器输出。
1.2目的及意义在安全技术防范领域,具有防盗报警功能的电子密码控制系统逐渐代替传统的机械式密码控制系统,克服了机械式密码控制的密码量少、安全性能差的缺点,使电子密码控制系统无论在技术上还是在性能上都大大提高了一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码控制系统,它除具有传统电子密码控制系统的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码控制系统具有很高的安全性、可靠性,应用日益广泛。
第2章系统总体方案选择与说明2.1系统硬件电路设计框图本方案采用一种是用以89C51为核心的单片机控制方案。
利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。
根据设计要求与设计思路,确定系统的设计方案,图2.1为系统组成原理框图。
硬件有以下几部分组成:单片机、时钟电路、复位电路、键输入电路、串行EEPROM扩展电路、L E D数码管显示电路、L E D指示灯电路、蜂鸣器电路、继电器电路等。
图2.1系统硬件电路设计方案框图2.2工作原理(1)系统的原始密码放在RAM区,在运行过程中可以实时更改系统密码。
(2)利用串行EEPROM存储芯片,可以随时读取新密码,且具有掉电保护功能。
(3)人机交互通过键盘输入,系统根据键值做出相应的处理,完成具体的功能。
(4)LED数码管通过驱动电路,显示相应的状态。
位选由P2口高四位产生,段码由P1口输入。
(5)系统还扩展了LED指示灯、蜂鸣器、继电器等一些其本外围电路。
(6)此系统共设计了3个基本功能键:密码设置键、确认键、复位键。
密码设置键:当用户需更改密码时,可通过此功能键方便地修改原先的旧密码。
确认键:当完成密码输入后,可按此功能键即可实现密码的比较和处理。
复位键:当密码三次输入错误时,系统进入死锁状态,可按此功能键跳出此状态。
第3章硬件电路设计3.1 时钟电路设计单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XTAL2两个引脚间,接一只晶振及两只电容就构成了单片机的时钟电路,如图3.1所示。
图3.1 时钟电路电路中器件选择可以通过计算和实验确定,也可以参考一些典型电路参数。
电路中,电容器C1和C2对振荡频率有微调作用,同时帮助晶振起振,通常取值范围在22±0.1PF,一般晶振为12MHZ,电容取2PF。
石英晶体选择12MHZ。
3.2开锁电路设计本次智能电子密码锁设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。
电路图如3.2所示。
当P2.0口输出低电平时,二极管发光,表示开锁。
图3.2开锁电路3.3复位电路设计在接通电源瞬间,电容C3上的电压很小, RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,当复位按键按下后电容C3通过R5放电,当电容C3放电结束后,RST端的电位由R5与R6分压比决定,由于R5《R6,所以RST为高电平,CPU处于复位状态,松手后,电容C3充电,RST 端电位下降,CPU脱离复位状态,R5的作用在于限制按键按下瞬间电容C3的放电电流,避免产生火花以保护按键触电,其电路如图3.3图3.3复位电路3.4报警电路设计图3.4 报警电路报警模块由蜂鸣器和单片机组成。
选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流。
蜂鸣器电路如图3.4所示。
当89C51的P2.1口输出为低电平时,蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不发声。
3.5键盘电路设计此次课程设计采用4*4矩阵键盘,与P2口相连,采用扫描法。
设有0——9十个数字密码,和几个功能键。
开机显示- - - -,等待密码输入,输入4个密码,按确认键后,密码比较。
P0口送示数据,P2口显示扫描,每一个键对应一个键码,以便将键码转到相应的的键处理子程序,进一步实现数据输入和命令处理的功能,根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此第四位显示器显示第四次按的密码,密码对则执行相关动作,不同则显示器清零,等待重新输入。
使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。
其原理如图3.5图3.5矩阵键盘扫描P2.4—P2.7,输出全为0,读P2.0—P2.3,若P2.0—P2.3全为1,则键盘上没有闭合键,若P2.0—P2.3不全为1,则有键处于闭合状态。
再键盘去抖确认有键闭合计算键号,判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。
方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。
键值N=行首键号+列号表3.1 按键功能表按键键名功能说明1-9键数字键输入密码D键确定键密码比较C键清除键使显示清零R键密码重设键设定新密码3.6 LED数码管显示电路设计LED显示器显示控制方法有两种,即动态显示和静态显示。
静态显示亮度一般比动态显示效果好,但本次设计中,采用了动态显示。
为了方便编写程序,通常在内部RAM中设置显示缓冲区,存放显示的数字或字符,显示缓冲区单元个数与LED显示器位数相同。
此次基于单片机的电子密码锁,我选用动态显示,通过与软件配合,每输入一个密码,进行显示一次,扫描,4个密码输入完后,进行比较,密码正确则开锁,密码错误,可重新输入三次,三次后仍然错误,报警!。
用P0.0—P0.7通过上拉电阻接数码管七段显示,P2.4—P2.7接LED 位显示,通过软件实现数字和位控制,显示电路原理图如图3.6所示图3.6 LED数码显示电路3.7 密码存储电路设计电路中单片机的P3.4引脚作为串行时钟线SCL,P3.5引脚作为串行数据线SDA,A0、A1、A2接地,从第0页开始存,单片机I/O口模拟串行总线与AT24C02的接口电路如图3.7所示图3.7 密码存储电路设计第4章应用软件设计4.1软件设计思路电子密码锁工作的主要过程是LED数码管没键按下时显示时间,有键按下,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。
当输入密码连续输入错误3次时,系统报警,一段时间内没键按下返回时间显示。
软件设计总流程图如图4.1图4.1软件设计总流程图4.2各子程序设计4.2.1键盘扫描子程序图4.2 键盘子程序流程图键盘子程序如下KEY: LCALL KS ;调用检测按键子程序JNZ K1 ;有键按下继续LCALL DISPLCALL DELAY2INC 6AHMOV A,6AHCJNE A,#250,KEYRETK1: LCALL DELAY2LCALL DELAY2 ;有键按下继续延时去抖动LCALL KS ;再一次调用检测按键程序JNZ K2 ;确认有按下进行下一步AJMP KEY ;返回继续检测有无按键按下K2: MOV R2,#0EFH ;将扫描值送入R2暂存MOV R4,#00H ;将第一列的列值00H送入R4暂存,R4用于存放列值。
K3: MOV P2,R2 ;将R2的值送入P2口L6: JB P2.0,L1 ;P2.0等于1跳转到L1MOV A,#00H ;将第一行的行值00H送入ACCLJMP LK ;跳转到键值处理程序L1: JB P2.1,L2 ;P2.1等于1跳转到L2MOV A,#04H ;将第二行的行值送入ACCLJMP LK ;跳转到键值理程序进行键值处理L2: JB P2.2,L3 ;P1.2等于1跳转到L3MOV A,#08H ;将第三行的行值送入ACCLJMP LK ;跳转到键值处理程序L3: JB P2.3,NEXT ;P2.3等于1跳转到NEXT处MOV A,#0cH ;将第四行的行值送入ACCLK: ADD A,R4 ;行值与列值相加后的键值送入A PUSH ACC ;将A中的值送入堆栈暂存MOV R2,AMOV 6AH,#00HINC 48H ;按键次数加一CJNE A,#10,K5MOV 48H,#00HLCALL K4LJMP judge ;转判断4.2.2LED显示子程序采用LED动态显示,由单片机P0口进行输出显示,P2口扫描, LED 数码管显示程序流程图如图4.3图4.3LED显示子程序流程图LED显示子程序如下DISP0: MOV 7AH,#11 ;显示清----MOV 7BH,#11MOV 7CH,#11MOV 7DH,#11RET ;子程序返回DISPLAY: MOV R3,48H ;按键次数放R3MOV A,51H ; 修改新密码次数CJNE A,#1,N4 ;新密码输入次数不等转N4 N9: MOV A,R2 ;按键值存AN5: CJNE R3,#1,N6 ;判断按键次数MOV 74H,A ;按键值存缓存单元MOV 7aH,AAJMP DISPN6: CJNE R3,#2,N7MOV 75H,AMOV 7BH,AAJMP DISPN7: CJNE R3,#3,N8MOV 76H,AMOV 7CH,AAJMP DISPN8: CJNE R3,#4,DISPMOV 77H,AMOV 7DH,AAJMP DISPN4: MOV A,R2 ; 重复输入新密码转N4N0: CJNE R3,#1,N1 ;判断按键次数MOV 7aH,A ;存缓存AJMP DISPN1: CJNE R3,#2,N2MOV 7BH,AAJMP DISPN2: CJNE R3,#3,N3MOV 7CH,AAJMP DISPN3: CJNE R3,#4,DISPMOV 7DH,ADISP: MOV R1,#0EFH ;显示的位控MOV R0,#7aH ;从7a开始显示DISPLAY2: MOV A,@R0 ;显示缓存单元放AMOVC A,@A+DPTR ;转换成段码MOV P0,A ;显示MOV A,R1 ;位控MOV P2,A ;位控LCALL DELAY2INC R0RL AMOV R1,ACJNE R1,#0FEH,DISPLAY2RET ;子程序返回4.2.3 开锁子程序设计如图4.4为开锁流程图,输入密码,如果密码正确,则开锁成功,如果输入错误累计达到三次,则执行报警程序。