基于单片机的电子密码锁的课程设计样本_第1页
基于单片机的电子密码锁的课程设计样本_第2页
基于单片机的电子密码锁的课程设计样本_第3页
基于单片机的电子密码锁的课程设计样本_第4页
基于单片机的电子密码锁的课程设计样本_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机电子密码锁设计摘要在寻常生活和工作中,住宅与部门安全防范、单位文献档案、财务报表以及某些个人资料保存多以加锁办法来解决。若使用老式机械式钥匙开锁,人们常需携带多把钥匙,使用极不以便,且钥匙丢失后安全性即大打折扣。老式门锁既要备有大量钥匙,又要紧张钥匙丢失后麻烦。随着单片机问世,浮现了带微解决器密码锁,它除具备电子密码锁功能外,还引入了智能化、科技化等功能,从而使密码锁具备很高安全性、可靠性,受到了广大顾客亲睐。本系统由AT89C51单片机系统(重要是AT89C51单片机最小系统)、4×4矩阵键盘、LCD1602显示和报警系统等构成,具备设立、修改六位顾客密码、超次报警、密码错误报警等功能(本设计由P0口控制LCD显示,密码对的显示passwordok!密码错误显示passworderror!超过三次输入错误启动报警功能。经实验证明,该密码锁具备设计办法合理,简朴易行,成本低,安全实用等特点,符合住宅、办公室用锁规定,具备推广价值。核心词:AT89C51,LCD1602,电子密码锁,4×4矩阵键盘

目录2215前言 15539第1章概述 2314281.1电子密码锁简介 291091.2电子密码锁发展趋势 2274501.3本设计所要实现目的 3117651.4电子密码锁设计详细规定 3145801.5总体设计方案选定 432213第2章硬件设计 580122.1单片机AT89C51简介 5178002.1.1重要特性 5251172.1.2引脚功能阐明 643362.2液晶显示LCD1602简介 980492.3硬件电路设计 11268682.3.1硬件设计原理 1170502.3.2最小系统设计 12194182.3.3芯片擦除 15169902.3.4开锁机构 15269842.3.5键盘设计 16127282.3.6显示电路设计 18186662.4电路设计总图 1931134第3章系统软件设计 20288213.1系统软件设计总体流程 20278213.2主程序模块 2084153.3键盘扫描及程序流程图 21267593.4系统密码及开锁程序流程图 233015第4章程序调试 25323954.1系统调试过程 25284494.2系统调试成果 2726477结论 2929269参照文献 3016485附录 32前言随着社会物质财富日益增长和人们生活水平提高,安全成为当代居民最关怀问题之一。此外电子技术飞速发展,给老式机械锁带来了巨大变革,当代电子技术与机械技术相结合,产生了一大批智能锁:指纹锁、IC卡辨识、遥控锁、声控锁等先进锁具。虽然此类产品安全性高,但是此类产品特点是针对特定指纹或有效卡,只能合用于保密规定高且仅供个人使用箱、柜、房间等。并且卡片式IC卡尚有易丢失等特点,加上其生产成本高,安装使用不以便,一定限度上限制了此类产品普及和推广。由于数字、字符、图形图像、人体生物特性和时间等要素均可成为钥匙电子信息,组合使用这些信息可以使电子密码锁获得高度保密性,如防范森严金库,需要使用复合信息密码电子密码锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也可以使电子密码锁获得无穷扩展也许,使产品多样化,对顾客而言是“千挑百选、自得其所”。本文简介是一种基于ST89C51单片机和4*4矩阵键盘硬件设计和软件实现办法,这种电路设计具备防试探按键输入、智能控制上锁、开锁、报警、修改密码等各种功能。保密性强,灵活性高,外接各种执行机构,可广泛用于车辆、大门、保险柜等各种需上锁场合。第1章概述1.1电子密码锁简介电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关闭合,完毕开锁、闭锁任务电子产品。它种类诸多,有简易电路产品,也有基于芯片性价比较高产品。当前应用较广电子密码锁是以芯片为核心,通过编程来实现。其性能和安全性已大大超过了机械锁。其特点如下:(1)保密性好,编码量多,远远不不大于弹子锁。随机开锁成功率几乎为零。(2)密码可变,顾客可以随时更改密码,防止密码被盗,同步也可以避免因人员更替而使锁密级下降。(3)误码输入保护,当输入密码多次错误时,报警系统自动启动。(4)无活动零件,不会磨损,寿命长。(5)使用灵活性好,不像机械锁必要佩带钥匙才干开锁。(6)电子密码锁操作简朴易行,一学即会。1.2电子密码锁发展趋势在寻常生活和工作中,住宅与部门安全防范、单位文献档案、财务报表以及某些个人资料保存多以加锁办法来解决。当前门锁重要用弹子锁,其钥匙容易丢失;保险箱重要用机械密码锁,其构造较为复杂,制造精度规定高,成本高,且易浮现故障,人们常需携带多把钥匙,使用极不以便,且钥匙丢失后安全性即大打折扣。针对这些锁具给人们带来不便若使用机械式钥匙开锁,为满足人们对锁使用规定,增长其安全性,用密码代替钥匙密码锁应运而生。它浮现为人们生活带来了很大以便,有很辽阔市场前景。由于电子器件所限,此前开发电子密码锁,其种类不多,保密性差,最基本就是只依托最简朴模仿电子开关来实现,制作简朴但很不安全,在后为多是基于EDA来实现,其电路构造复杂,电子元件繁多,也有使用早先20引角2051系列单片机来实现,但密码简朴,易破解。随着电子元件进一步发展,电子密码锁也浮现了诸各种类,功能日益强大,使用更加以便,安全保密性更强,由此前单密码输入发展到当前,密码加感应元件,实现了真真电子加密,顾客只有密码或电子钥匙中同样,是打不开锁,随着电子元件发展及人们对保密性需求提高浮现了越来越多电子密码锁。出于安全、以便等方面需要许多电子密码锁已相继问世。但此类产品特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能合用于保密规定高且供个人使用箱、柜、房间等。由于数字、字符、图形图像、人体生物特性和时间等要素均可成为钥匙电子信息,组合使用这些信息可以使电子防盗锁获得高度保密性,如防范森严金库,需要使用复合信息密码电子防盗锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也可以使电子防盗锁获得无穷扩展也许,使产品多样化,对顾客而言是“千挑百选、自得其所”。可以看出组合使用电子信息是电子密码锁后来发展趋势。1.3本设计所要实现目的本设计采用单片机为主控芯片,结合外围电路,构成电子密码锁,顾客想要打开锁,必先通过提供键盘输入对的密码才干将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。密码可以由顾客自己修改设定,锁打开后才干修改密码。修改密码之前必要再次输入密码,在输入新密码时候需要二次确认,以防止误操作。1.4电子密码锁设计详细规定(1)本设计为了防止密码被窃取规定在输入密码时在LCD屏幕上显示*号。(2)设计开锁密码位六位密码电子密码锁。(3)可以LCD显示在密码对的时显示PASSWORDOK,密码错误时显示PASSWORDERROR,输入密码时显示INPUTPASSWORD。(4)实现输入密码错误超过限定三次电子密码锁定。(5)4×4矩阵键盘其中涉及0-9数字键和A-F功能键(6)本产品具备报警功能,当输入密码错误时蜂鸣器响并且LED灯亮。(7)密码可以由顾客自己修改设定(只支持6位密码),修改密码之前必要再次输入密码,在输入新密码时候需要二次确认,以防止误操作。1.5总体设计方案选定采用一种是用以AT89C51为核心单片机控制方案。选用单片机AT89C51作为本设计核心元件,运用单片机灵活编程设计和丰富IO端口,及其控制精确性,实现基本密码锁功能。在单片机外围电路外接输入键盘用于密码输入和某些功能控制,外接LCD1602显示屏用于显示作用。其原理如下图1-1所示:图1-1单片机控制密码锁原理框图第2章硬件设计2.1单片机AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)低电压,高性能CMOS8位微解决器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器单片机。单片机可擦除只读存储器可以重复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,和闪烁存储器组合在单个芯片中,ATMELAT89C51是一种高效微控制器,AT89C20与工业原则MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU51是它一种精简版本。AT89C单片机为诸多嵌入式控制系统提供了一种灵活性高且价廉方案。图2-1AT89C51与AT89C20512.1.1重要特性(1)与MCS-51兼容;(2)4K字节可编程闪烁存储器;(3)寿命:1000写/擦循环;(4)数据保存时间:;(5)全静态工作:0Hz-24Hz;(6)三级程序存储器锁定;(7)128*8位内部RAM;(8)32可编程I/O线;(9)两个16位定期器/计数器;(10)5个中断源;(11)可编程串行通道;(12)低功耗闲置和掉电模式;(13)片内振荡器和时钟电路;2.1.2引脚功能阐明图2-2单片机引脚图Vcc:电源电压GND:接地P0口:P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在F1ash编程时,P0口接受指令字节,而在程序校验时,输出指令字节,校验时,规定外接上拉电阻。P1口:Pl是一种带内部上拉电阻8位双向I/O口,Pl输出缓冲级可驱动(吸取或输出电流)4个TTL逻辑门电路。对端口写“l”,通过内部上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,由于内部存在上拉电阻,某个引脚被外部信号拉低时会输出一种电流(IIL),Flash编程和程序校验期间,Pl接受低8位地址。P2口:P2是一种带有内部上拉电阻8位双向I/O口,P2输出缓冲级可驱动(吸取或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,由于内部存在上拉电阻,某个引脚被外部信号拉低时会输出一种电流(IIL),在访问外部程序存储器或16位地址外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址外部数据存储器(如执行MOVX@Ri指令)时,P2口线上内容(也即特殊功能寄存器(SFR)区中P2寄存器内容),在整个访问期间不变化。Flash编程或校验时,P2亦接受高位地址和其他控制信号。P3口:P3口是一组带有内部上拉电阻8位双向I/0口。P3口输出缓冲级可驱动(吸取或输出电流)4个TTL逻辑门电路。P3口除了作为普通I/0口线外,更重要用途是它第二功能,如下表所示:P3口还接受某些用于Flash闪速存储器编程和程序校验控制信号RST:复位输入。当振荡器工作时,RST引脚浮现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设立SFRAUXRDISRT0位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存容许)输出脉冲用于锁存地址低8位字节。虽然不访问外部存储器,ALE仍以时钟振荡频率1/6输出固定正脉冲信号,因而它可对外输出时钟或用于定期目。PSEN:程序储存容许(PSEN)输出是外部程序存储器读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效PSEN信号。EA/VPP:外部访问容许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必要保持低电平(接地)。需注意是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中指令。F1ash存储器编程时,该引脚加上+12V编程电压Vpp。XTALl:振荡器反相放大器及内部时钟发生器输入端。XTAL2:振荡器反相放大器输出端。89C51相对于89C51增长新功能涉及:(1)ISP在线编程功能,这个功能优势在于改写单片机存储器内程序不需要把芯片从工作环境中剥离,是一种强大易用功能。(2)最高工作频率为33MHz,89C51极限工作频率为24MHz,就是说C51具备更高工作频率,从而具备了更快计算速度。(3)具备双工UART串行通道。(4)内部集成看门狗计时器,不再需要像C51那样外接看门狗计时器单元电路。(5)双数据批示器。(6)电源关闭标记。(7)全新加密算法,这使得对于89C51解密变为不也许,程序保密性大大加强,这样就可以有效地保护知识产权不被侵犯。(8)兼容性方面:向下完全兼容51所有字系列产品。(9)程序存储器写入方式:两者写入程序方式不同,89C51只支持并行写入,同步需要VPP烧写高压。89C51则支持Isp在线编程写入技术。串行写入、速度更快、稳定性更好,烧写电压也仅仅需要4~5V即可。(10)电源范畴:89C51电源范畴宽达4~5.5V,而89C51在低于4.8V和高于5.3V时候则无法正常工作。(11)烧写寿命更长:89C51标称1000次,实际至少是1000~10000次,这样更有助于初学者重复烧写,减少学习成本。综上所述本设计选定AT89C51。2.2液晶显示LCD1602简介1.LM1602字符型模块性能重量轻:<100g;体积小:<11mm厚;功耗低:10—15mW;显示内容:192种字符(5×7点字型);32种字符(5×10点字型);可自编8(5×7)或许(5×10)种字符;指令功能强:可组合成各种输入、显示、移位方式以满足不同规定;接口简朴以便:可与8位微解决器或微控制器相联;工作温度宽:0—50oC可靠性高:寿命为50,000小时(25oC)2.基本原理(1)液晶体液晶板上排列着若干5×7或5×10点阵字符显示位,每个显示位可显示1个字符,从规格上分为每行8、16、20、24、32、40位,有一行、两行及四行三类。(2)工作电路它由KS0066、KS0065及几种电阻电容构成。KS0065是扩展显示字符用(例如:16个字符×1行模块就可不用KS0065,16个字符×2行模块就要用1片KS0065)接口方面,有8条数据,三条控线。可与微解决器或微控制相连,通过送入数据和指令,就可使模块正常工作。(3)LCD驱动器和控制器A.LCD驱动器KS0065KS0065是用低功耗CMOS技术制造大规模LCD驱动IC。它既可当行驱动用,也可以当列驱动用,由20×2Bin二进制移位寄存器、20×2Bin数据锁存器和20×2Bin驱动器构成功能:a.40通道点阵LCD驱动;b.可选取当做行驱动或列驱动;c.输入/输出信号:输出,能产生20×2个LCD驱动波型;输入,接受控制器送出串行数据和控制信号,偏压(V1—V6);特性:a.显示驱动偏压低:静态~1/5;b.电源电压:+5V+10%;c.显示驱动电源:-5V;d.CMOS解决;e.60引脚、塑封;B.LCD控制器KS0066KS0066是用低功耗CMOS技术制造大规模点阵LCD控制器(兼带驱动器),和4Bin/8Bin微解决器相连连,它能使点阵LCD显示大小英文字母、符号。应用KS0066,顾客能有少量元件就可构成一种完整点阵LCD系统。特性:a.容易和Bin/8BinMpu相连;b.可选取5×7或5×10点字符;c.显示数据RAM容量:80×8Bin(80字符);d.字符发生器ROM能提供户所需字符库或原则库;字符容量:192个字符(5×7点字符);32个字符(5×10点字符);e.DDRAM和CGRAM都能从Mpu读取数据;f.输出信号:16个行扫信号(commonsingnal),40个列扫信号(sengmentsingnal)g.电源复位电路;h.显示占空比:1/8duty(1Line,5×7dots+Cursor);1/11duty(1Line,5×10dote+Cuesor);1/16duty(2Line,5×7dots+Cuesir);i.振荡电路;j.指令:11种;k.80引脚、塑封。(4)技术参数表2-1极限参数2.3硬件电路设计2.3.1硬件设计原理本设计重要由单片机、矩阵键盘、液晶显示屏和密码存储等某些构成。其中矩阵键盘用于输入数字密码和进行各种功能实现。由顾客通过连接单片机矩阵键盘输入密码,后通过单片机对顾客输入密码与自己保存密码进行对比,从而判断密码与否对的,然后控制引脚高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机负载由继电器换成电子密码锁电磁铁吸合线圈即可,固然也可以用继电器常开触点去控制电磁铁吸合线圈。本系统共有两某些构成,即硬件某些与软件某些。其中硬件某些由电源输入某些、键盘输入某些、密码存储某些、复位某些、晶振某些、显示某些、报警某些、开锁某些构成,软件某些相应由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设立程序、EEPROM读写程序和延时程序等构成。其原理框图如图2-3所示:图2-3电子密码锁原理框图本设计单片机硬件资源分派:P0.0~P0.7用于LCD液晶显示作用。P3.7和P2.7用于蜂鸣器和报警灯控制。P2.6用于开锁电路控制。P1.0~P1.7用于键盘电路控制。P2.0~P2.2用于LCD显示模块控制端口控制。2.3.2最小系统设计当MCS-5l系列单片机复位引脚RST(全称RESET)浮现2个机器周期以上高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处在循环复位状态。依照应用规定,复位操作普通有两种基本形式:上电复位和开关复位。图2-4即为手动(开关)复位电路:图2-4手动复位电路复位后状态a.复位后PC值为0000H,表白复位后程序从0000H开始执行。b.SP值为07H,表白堆栈底部在07H,普通需要重新设立SP值。c.P0~P3口值为FFH。P0~P3口用作输入口时,必要先写入“1”。单片机在复位后,已使P0~P3口每一端线为“1”,为这些端线用作输入口做好了准备。WDT溢出将使该引脚输出高电平,因此本设计采用图2-5手动复位电路:图2-5本设计手动复位电路AT89C51中有一种用于构成内部振荡器高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器输入端和输出端。这个放大器与作为反馈元件片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图2-3-4。外接石英晶体(或陶瓷谐振器)及电容Cl、C2接在放大器反馈回路中构成并联振荡电路。对外接电容Cl、C2虽然没有十分严格规定,但电容容量大小会轻微影响振荡频率高低、振荡器工作稳定性、起振难易程序及温度稳定性。如果使用石英晶体,咱们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选取40pF±10F。顾客也可以采用外部时钟。采用外部时钟电路如图2-5所示。这种状况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器输入端,XTAL2则悬空。由于外部时钟信号是通过一种2分频触发器后作为内部时钟信号,因此对外部时钟信号占空比没有特殊规定,但最小高电平持续时间和最大低电平持续时间应符合产品技术条件规定。图2-6单片机自激震荡电路由于单片机有内部振荡器,因此本设计采用图2-7晶振电路:图2-7晶振电路2.3.3芯片擦除整个PEROM阵列和三个锁定位电擦除可通过对的控制信号组合,并保持ALE管脚处在低电平10ms来完毕。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程此前,该操作必要被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率条件下静态逻辑,支持两种软件可选掉电模式。在闲置模式下,CPU停止工作。但RAM,定期器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM内容并且冻结振荡器,禁止所用其她芯片功能,直到下一种硬件复位为止。2.3.4开锁机构顾客通过LCD提示信息,用键盘输入对的密码,从而达到开锁目。当顾客输入密码对的并且是在按下拟定键话,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门目。电路驱动和开锁两级构成。由D4、三极管构成驱动电路,其中三极管可以选取普通小功率三极管如9014、9018都可以满足规定;开锁某些由继电器实现,继电器选用要视状况而定,但是吸合力要足够且由一定余量。D1作为开锁提示,当输入密码对的时,D1亮;本设计电子锁控制电路重要由继电器、三极管和发光二极管构成。电子锁控制电路图如图2-3-6所示:图2-8电磁锁控制电路图继电器线圈一种引脚接电源正极,另一端接NPN三极管集电极。三极管基极通过一种电阻接单片机引脚。当LOCKCON输出高电平时,三极管导通,继电器线圈得电,触点闭合,相称于电子锁闭锁;当LOCKCON输出低电平时,三极管截止,继电器线圈失电,触点释放,发光二极管D1亮,相称于电子锁开锁。图中普通二极管是继电器线圈续流二极管,为感应电动势提供回路,以免损坏三极管。2.3.5键盘设计本设计就采用行列式键盘,同步也能减少键盘与单片机接口时所占用I/O线数目,在按键比较多时候,普通采用这样办法。每一条水平(行线)与垂直线(列线)交叉处不相通,而是通过一种按键来连通,运用这种行列式矩阵构造只需要N条行线和M条列线,即可构成具备N×M个按键键盘。在这种行列式矩阵键盘非键盘编码单片机系统中,键盘解决程序一方面执行等待按键并确认有无按键按下程序段。(1)4×4矩阵键盘工作原理在键盘中按键数量较多时,为了减少I/O口占用,普通将按键排列成矩阵形式,如下图所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一种按键加以连接。这样,一种端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多余了一倍,并且线数越多,区别越明显,例如再多加一条线就可以构成20键键盘,而直接用端口线则只能多余一键(9键)。由此可见,在需要键数比较多时,采用矩阵法来做键盘是合理。(2)扫描原理把每个键都提成水平和垂直两端接入,例如说扫描码是从垂直入,那就代表那一行所接受到扫描码是同一种bit,而读入扫描码则是水平,扫描动作是先输入扫描码,再去读取输入值,通过比对之后就可懂得是哪个键被按下。例如说扫描码送入01111111,前面0111是代表此时扫描第一行P1.0列,而背面1111是让读取4行接脚先设为VDD,若此时第一行第三列按键被按下,那读取成果就会变成01111101(注意1111变成1101),其中LSB第三个bit会由1变成0,这是由于这个按键被按下之后,会被垂直扫描码电位short,而把读取LSBbit电位拉到0,此即为扫描原理。由於这种按键是机械式开关,当按键被按下时,键会震动一小段时间才稳定,为了避免让8051误判为多次输入同一按键。咱们必要在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下键,就可以让键盘输入稳定。图2-9为键盘整体模框图:图2-9键盘整体模框图2.3.6显示电路设计显示设计采用字符型液晶屏设计,由单片机P0口控制显示,由P2.0~P2.2控制LCD控制端口。本系统设计显示电路是为了给使用者以提示而设立为达到界面和谐目,显示某些由液晶显示LCD1602取代普通数码管完毕。开锁时,按下键盘上开锁按键后,运用键盘上数字键0-9输入密码,每按下一种数字键后在显示屏上显示一种*,输入多少位就显示多少个*。当密码输入完毕时,按下确认键,如果输入密码对的话,LCD显示“IUPUTRIGHT”,单片机其中P2.6引脚会输出低电平,使三极管导通,电磁铁吸合,继电器开关跳转,电子密码锁被打开,如果密码不对的,LCD显示屏会显示“IUPUTERROR”,P2.6输出是高电平,电子密码锁不能打开。通过LCD显示屏,可以清晰地判断出密码锁所处状态。电路图如图2-10所示:图2-10LCD液晶显示电路图2.4电路设计总图Proteus软件是LabcenterElectronics公司一款电路设计与仿真软件,它涉及ISIS、ARES等软件模块,ARES模块重要用来完毕PCB设计,而ISIS模块用来完毕电路原理图布图与仿真。Proteus软件仿真基于VSM技术,它与其她软件最大不同也是最大优势就在于它能仿真大量单片机芯片,例如MCS-51系列、PIC系列等等,以及单片机外围电路,例如键盘、LED、LCD等等。通过Proteus软件使用咱们可以容易地获得一种功能齐全、实用以便单片机实验室。本密码锁采用proteus进行电路图设计,通过元件选型,用万能实验版进行硬件焊接,以实现硬件某些。图2-11为proteus设计密码锁电路图整体电路图:图2-11设计整体电路图第3章系统软件设计3.1系统软件设计总体流程因设计重要是作用汇编语言来开发51单片机项目程序,因此一方面必要有一种可以在WindowsXP或Windowsvista操作系统下执行汇编语言编译器,本设计采用Keil编译器进行编程,由于它可以支持一系列51单片机。图3-1为主程序流程图:图3-1主程序流程图3.2主程序模块主程序重要是完毕系统初始化、设立中断向量、检查有无键按下、以及调用显示等等。主程序某些如下所示:enbitp2.2 ;将lcden管脚连接到单片机p2.2口rwbitp2.1 ;将lcdrw管脚连接到单片机p2.1口rsbitp2.0 ;将lcdrs管脚连接到单片机p2.0口displayequp0 ;将lcd显示端口连接到p0口上speakerbitp3.7 ;蜂鸣器连接到p3.7口ledbitp2.7 ;开锁信号连到p2.7口openbitp2.6 ;开锁电路控制端连接到p2.6口returnbitbit20h.1;ORG0000h ;程序开始地址LJMPstart;ORG000bh;LJMPintermit_t0;ORG001bh;LJMPintermit_t1;ORG0030h;start:MOVsp,#60h;lcallsys_initialization ;调用子程序sys_initialization3.3键盘扫描及程序流程图键盘采用查询方式,放在主程序中,当没有按键按下时候,单片机循环主程序,一旦有按键按下,便转向相应子程序解决,解决结束再返回。(1)矩阵式键盘按键辨认办法:拟定矩阵式键盘上何键被按下简介一种“行扫描法”。行扫描法:行扫描法又称为逐行(或列)扫描查询法,是一种最惯用按键辨认办法,如上图所示键盘,简介过程如下。a.判断键盘中有无键按下将所有行线Y0-Y3置低电平,然后检测列线状态。只要有一列电平为低,则表达键盘中有键被按下,并且闭合键位于低电平线与4根行线相交叉4个按键之中。若所有列线均为高电平,则键盘中无键按下。b.判断闭合键所在位置在确认有键按下后,即可进入拟定详细闭合键过程。其办法是:依次将行线置为低电平,即在置某根行线为低电平时,其他线为高电平。在拟定某根行线位置为低电平后,再逐行检测各列线电平状态。若某列为低,则该列线与置为低电平行线交叉处按键就是闭合按键。(2)下面给出一种详细例子:单片机P1口用作键盘I/O口,键盘列线接到P1口低4位,键盘行线接到P1口高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设立为输入线,行线P1.4-P.17设立为输出线。4根行线和4根列线形成16个相交点。a.检测当前与否有键被按下。检测办法是P1.4-P1.7输出全“0”,读取P1.0-P1.3状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。b.去除键抖动。当检测到有键按下后,延时一段时间再做下一步检测判断。c.若有键被按下,应辨认出是哪一种键闭合。办法是对键盘行线进行扫描。P1.4-P1.7按下述4种组合依次输出:P1.71110P1.61101P1.51011P1.40111在每组行输出时读取P1.0-P1.3,若全为“1”,则表达为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键行值和列值,然后可采用计算法或查表法将闭合键行值和列值转换成所定义键值其程序流程如图3-2所示:图3-2键盘扫描程序流程图3.4系统密码及开锁程序流程图由于设计是分模块化进行,因此子程序是整体软件系统构成某些,子程序不但可以使程序化整为零,使其复杂简朴化,同步也以便阅读,修改等,每个功能模块均有它自己子程序,在本设计中是用LCD显示数据,因此就要用到显示子程序,设计中用是矩阵键盘,因此就用到键盘扫描子程序,例如尚有显示初始化子程序、LCD忙检测子程序、关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后提示子程序等。如下图3-3为密码修改子程序流程图,图3-4为开锁程序流程图:图3-3设立密码子图3-4输入密码开锁流程图第4章程序调试4.1系统调试过程在硬件支持环境下,用proteus设计好电路,Keil编好程序编译成芯片可辨认C51文献,运用PC机写进proteus程序图芯片内进行仿真测试,并对其浮现错误进行修改,由图4-1~图4-3可看出最后调试成功。图4-1keil编译程序成功图4-2keil生成hex文献图4-3proteus调用keilhex文献进行仿真4.2系统调试成果调试成果共有三种状态,第一种状态为上锁状态,此时若要开锁则需输入对的密码。第二种为输入密码,若密码对的,开锁成功且此时绿灯亮。第三种状态为输入密码错误,需重新输入密码。若输入次数达到三次则报警启动。调试成果如下图所示:图4-4初始上锁状态图4-5密码对的绿灯亮图4-6密码错误启动报警结论本学期课程设计总算完毕了,回顾起本次单片机课程设计,至今我仍感触颇多,确,从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到诸多诸多东西,同步不但可以巩固了此前所学过知识,并且学到了诸多在课本上所没有学到过知识。通过这次毕业设计使我懂得了理论与实际相结合是很重要。刚开始时我不知该从何着手,日后参照了某些文献,我便开始设计自己课程设计。我用是单片机芯片实现主控,LCD显示,矩阵键盘等部件。我对这些知识掌握不太好,因此在作设计时遇到某些问题,但通过不断努力,终于把密码锁思路和模型定了下来,去整顿和修改程序。咱们去了图书馆借某些参照书,上网找某些有关资料,并且在指引教师翁教师指引下,我最后都逐个克服了遇到难题。并且我用是C语言来实现控制,这次应用巩固了我C语言知识。总之我觉得只有理论知识是远远不够,必要把所学理论知识与实践相结合起来,从理论中得出结论,才干真正为社会服务,从而提高自己实际动手能力和独立思考能力。!参照文献[1]杨西明,朱骐主编.单片机编程与应用入门[M].北京:机械工业出版社.(06)

[2]先锋工作室编著.单片机程序设计实例[J].北京:清华大学出版社.[3]谢宜仁主编.单片机实用技术问答[J].北京:人民邮电出版社.[4]梁丽.电子密码锁计算机仿真设计[J].计算机仿真,[5]房小翠,王金凤编著.单片机实用系统设计技术[M].北京:国防工业出版社.1999(06)[6]王宽仁.可靠安全智能密码锁[J].电子技术应用.[7]李捷,陈典涛,陈建华,等.一种基于单片机电子密码锁设计[J].农机化研究,[8]董继成.能防止多次试探密码单片机密码锁[J].国外电子元器件.[9]赵益丹,徐晓林,周振峰编著.电子密码锁系统原理、设计程序及流程图[J].嘉兴学院学报,[10]张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:清华大学出版社,(12)[11]李朝清.PC机及单片机数据通信技术[M].北京:北京航空航天大学出版社,1999(02)[12]路而红.专用集成电路设计与电子设计自动化[M].北京:清华大学出版社,(08)[13]刘文涛.MCS-51单片机培训教程(C51)版[M].北京:电子工业出版社,(8)[14]王为青程国钢.单片机KeilCx51应用开发技术[M].北京:人民邮电出版社,(03)[15]范风强兰婵丽.单片机语言C51应用实战集锦[M].电子工业出版社,[16]龚运新.单片机C语言开发技术[J].北京:清华大学出版社,[17]贝贝.单片机嵌入式应用在线开发办法[M].北京:清华大学出版社,(07)[18]王宜怀.单片机原理及其嵌入式应用教程[M].北京::北京但愿电子出版社,(12)附录程序代码enbitp2.2;rwbitp2.1;rsbitp2.0;displayequp0;speakerbitp3.7;ledbitp2.7;openbitp2.6;returnbitbit20h.1;ORG0000h;LJMPstart;ORG000bh;LJMPintermit_t0;ORG001bh;LJMPintermit_t1;ORG0030h;start:MOVsp,#60h;lcallsys_initialization;main0:lcallstrat_display;main:clrspeakerclrled;setbtr0;lcallkey;cjnea,#'A',next1;LJMPset_password;next1:cjnea,#'B',next2;LJMPinput_password;next2:ajmpmain;sys_initialization:clrled;setbopen;clrspeaker;MOV34h,#'1';MOV35h,#'2';MOV36h,#'3';MOV37h,#'4';MOV38h,#'5';MOV39h,#'6';;存储初始密码MOVr7,#12;MOVr0,#40h;loop:MOV@r0,#10h;incr0;djnzr7,loop;;密码键值存储区清零完毕lcalldelay0_1s;MOVp0,#03h;callwrite_instruction;;液晶软复位MOVp0,#01h;callwrite_instruction;movp0,#3fh;callwrite_instruction;movp0,#0fh;callwrite_instruction;movp0,#06h;callwrite_instruction;;液晶初始化完毕movr4,#10;movtmod,#11h;movth0,#0b0h;setbea;setbet0;;定期器t0,0.5s定期中断初始化完毕ret;;系统初始化完毕intermit_t0:pushacc;pushpsw;movth0,#3ch;movtl0,#0b0h;djnzr4,return;clrled;movr4,#10;return:poppsw;popacc;reti;intermit_t1:pushacc;pushpsw;movth1,#9eh;movtl1,#58h;djnzr4,return_t1;clrled;cplspeaker;movr4,#10;return_t1:poppsw;popacc;reti;;;;;;;;;;;;;;;;;;键盘扫描key:callks;jnzk1;jmpkey;k1:calldelay;callks;jnzk2;jmpkey;k2:clrtr0;clrled;movr2,#0feh;movr6,#00h;k3:mova,r2;movp1,a;mova,p1;jbacc.4,l1;mova,#0;LJMPlk;l1: jbacc.5,l2;mova,#4;ljmplk;l2:jbacc.6,l3;mova,#8;ljmplk;l3: jbacc.7,next_key;mova,#12;lk: adda,r6;movr6,a;k4: callks;jnzk4;mova,r6;movdptr,#table0;movca,@a+dptr;mov50h,a;;查表取值存入50H,保护键值ret;next_key:incr6;mova,r2;jnbacc.7,key;rla;movr2,a;jmpk3;;;;;;;;;;;;;ks:movp1,#0f0h;mova,p1;xrla,#0f0h;ret;;;;;;;;;;;;;;;;;;设立密码程序set_password:callclear_display;movdptr,#table4;callinput_hint;movr0,#40h;callpassword;jbcreturnbit,set_password;;先输入原密码完毕movr5,#6;movr0,#40h;movr1,#34h;input_compere:mova,@r0;xrla,@r1;jnzinput_error;incr0;incr1;nop;nop;djnzr5,input_compere;;验证输入密码完毕jmpset_password0;input_error:callclear_display;movdptr,#table5;callinput_hint;calldelay1_5s;setbspeaker;calldelay1_5sinc52h;mova,52h;cjnea,#3,set_password;;sjmp$;;输入密码错误次数超过3次,锁死setbSPEAKERlcallwarnninglcallkey;cjnea,#'E',next3;LJMPSTART;next3:nop;;;;;;;;;;;;;;;;set_password0:callclear_display;movdptr,#table2;callinput_hint;movr0,#40h;callpassword;jbcreturnbit,set_password;;第一次输入新密码完毕callclear_display;movdptr,#table3;callinput_hint;calldelay1_5s;;显示再次输入新密码完毕callclear_display;movdptr,#table4;callinput_hint;movr0,#46h;callpassword;jbcreturnbit,set_password;;第二次输入新密码完毕movr5,#6;movr0,#40h;movr1,#46h;set_compere:mova,@r0;xrla,@r1;jnzset_error;incr0;incr1;djnzr5,set_compere;mov34h,40h;mov35h,41h;mov36h,42h;mov37h,43h;mov38h,44h;mov39h,45h;;存入新密码完毕jmpmain0;;设立新密码成功,返回主程序set_error:callclear_display;movdptr,#table5;callinput_hint;calldelay1_5s;setbspeaker;clrled;ljmpset_password0;;先后两次输入新密码不一致,返回重设;;;;;;;;;;;;;;;;;输入密码开锁程序input_password:clrspeakercallclear_display;movdptr,#table4;callinput_hint;movr0,#40h;callpassword;jbcreturnbit,input_password;;输入原密码完毕movr5,#6;movr0,#40h;movr1,#34h;input_compere0:mova,@r0;xrla,@r1;jnzinput_error22;incr0;incr1;nop;nop;djnzr5,input_compere0;;验证输入密码完毕setbledjmpdisplay_right;input_error22:callclear_display;movdptr,#table5;callinput_hint;calldelay1_5s;clrspeaker;clrled;inc52h;mova,52h;cjnea,#3,input_password;setbspeaker;sjmp$;入密码错误超过3次,锁死lcallwarnning;;;;;;;;;;;;;;;BAC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论