《单片机期末课程设计.doc》由会员分享,可在线阅读,更多相关《单片机期末课程设计.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录 第1节 引 言11.1 电子密码锁概述11.2 本设计任务和主要内容2第2节 系统主要硬件电路设计42.1 设计方案的选择42.2 电路总体构成52.3 单片机控制系统原理52.3.1键盘输入电路6 2.3.2复位电路72.3.3密码存储电路72.3.4晶振电路82.3.5电源输入电路92.3.6显示电路92.3.7报警电路102.3.8开锁电路10第3节 系统软件设计123.1 主要程序设计流程图123.1.1主程序流程图123.1.2键功能流程图133.1.3密码设置流程图143.1.4开锁流程图153.2 程序清单15第4节 结束语24参考文献2525 / 26基于单片机的电子密
2、码锁 第1节 引 言 随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜。电子密码锁是由电子电路控制锁体的新型锁具,它采用触摸键盘方式输入开锁密码,操作方便。触摸式电子锁的输入部分采用触摸开关(键盘输入),其优势在于传统的机械开关之出在于其保密性高,使用灵活性好,安全系数高,无活动零件,不会磨损,寿命长等受到了广大用户的亲呢。出于安全、方便等方面的需要许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。而且卡片式IC卡还有易丢失等特点,加
3、上其成本一般较高,一定程度上限制了这类产品的普及和推广。在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用也日趋重要。本设计采用单片机AT89S51作为单片机的核心单元,设计了一款具有本机开锁和报警功能的电子密码锁,既简单又适用。1.1 电子密码锁概述 电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下:1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零
4、。2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。4) 无活动零件,不会磨损,寿命长。5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。6) 电子密码锁操作简单易行,一学即会。在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。针对这些锁具给人们带来
5、的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引角的2051系列单片机来实现的,但密码简单,易破解。随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了真真的电子加密,用户只有密
6、码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码锁 。 出于安全、方便等方面的需要许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。可
7、以看出组合使用电子信息是电子密码锁以后发展的趋势 。1.2本设计任务和主要内容本设计的任务采用单片机AT89S51作为单片机的核心单元,利用单片机串行发射、接收等功能而设计的一款具有本机开锁和报警功能的电子密码锁。主要分为以下几个部分: 1)选择密码将编好的密码程序存储在EPROM中,用户通过密码选择键进行选择。具体操作过程如下:首先按下密码选择键,然后在逐渐输入号码,最后按下确认键即可。2)密码显示为了帮助用户确认是否有键按下,特在电路中设置了模拟显示电路;而为了防止密码外泄;显示时,并不是显示用户按下的数字符号,而是以一个特定的字母符号提醒用户是否有键按下。有键按下,就会显示出字符-“*”
8、,没键按下,则不会显示字符。这样既巧妙的提醒了用户又保护了用户密码,此乃本设计可靠性优点之一。3)本机键开锁当用户键入正确密码后,在按确认键,便会自动开锁。但用户键入密码时应注意:数字与数字之间的间隔时间为2分钟,例如密码为32796,当键入第一个数字3后应在2分钟内键入第二个数字2,否则,就会视为无效。如果键入完密码后不按确认键系统会当做放弃开锁处理4)密码错误报警当用户键入错误密码时,系统就会报警,由扬声器发出5秒报警声。当连续三次出现密码错误时,则系统会长期报警不止。这时必须按复位方可停止。此乃安全可靠性之一。第2节 系统主要硬件电路设计 2.1 设计方案的选择方案一:采用数字电路控制用
9、以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作 。采用数字电路设计的方案好处就是设计简单,但控制的准确性和灵活性差,故不采用。方案二:采用以单片机为核心的控制方案由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价
10、比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素 。基于以上因素本设计选用单片机AT89S51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功
11、能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602显示器用于显示作用。当用户需要开锁时,先按键盘开锁键之后按键盘的数字键09输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。可以看出方案二控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案。2.2 单片机控制系统原理本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键
12、盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。本系统共有两部分构成,即硬件部分与软件部分。其中硬件部分由电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设
13、置程序、EEPROM读写程序和延时程序等组成。其原理框图如图2-1所示:AT89S51键盘输入复位电路密码存储电路晶振电路电源输入显示电路报警电路开锁电路图2-1 电子密码锁原理框图2.3 电路总体构成在确定了选用什么型号的单片机后,就要确定在外围电路,其外围电路包括电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,根据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择字符型液晶显示LCD1602,密码存储部分选用AT24C02芯片来完成。其原理图如图2-2所示:图2-2电路原理图2.3.1键盘输入电路由于本设计所用到的按键数量较多而不适合用独立
14、按键式键盘。采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。键盘的每个按键功能在程序设计中设置。其大体功能(看键盘按键上的标记)及与单片机引脚接法如图2-3所示:图2-3键盘输入原理图2.3.2复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC0000H,使单片机从第个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要
15、复位。在复位期间(即RST为高电平期间),P0口为高组态,P1P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图2-4所示的复位电路。该电路在最简单的复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上的电压很小,复位下拉电阻 上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R5放电。当电容C
16、1放电结束后,RST端的电位由R5与R6分压比决定。由于R53?报警程序NYN返回确认程序再次输新密码两次新密码输入相同?NY图3-3 密码设置流程图3.1.4开锁流程图初始化按开锁键输入密码确认程序所输入密码正确?Y开锁成功开锁程序输入次数加1次数3?报警程序返回NYN图3-4 开锁流程图3.2程序清单;显示缓冲区 LED1 EQU 6FH BUFF EQU 6EH TIMERS1 EQU 6DH ;输入回车的次数 TIMERS2 EQU 6CH ;报警的次数 LED6 EQU 6AH ;密码缓冲区 PS1 EQU 69H PS2 EQU 78H PS3 EQU 67H PS4 EQU 66
17、H PS5 EQU 65H PS6 EQU 64H PS7 EQU 63H PS8 EQU 62H ;AT24C02读取缓冲区 AT1 EQU 61H AT2 EQU 60H AT3 EQU 5FH AT4 EQU 5EH AT5 EQU 5DH AT6 EQU 5CH AT7 EQU 5BH AT8 EQU 5AH ;按键标志位 F_0 BIT 20H F_1 BIT 21H F_2 BIT 22H F_3 BIT 23H F_4 BIT 24H F_5 BIT 25H F_6 BIT 26H F_7 BIT 27H F_8 BIT 28H F_9 BIT 29HCH_STATE BIT 2
18、AH ;系统更改的状态标志位,为1表示busy FLAG1 BIT 2BH ;功能键标志位,为1表示功能按键。 F_F1 BIT 2CH F_F2 BIT 2DH PSW_F BIT 2EH ;密码是否正确的标志位 ;口资源定义 SPK BIT P2.1 WP BIT P3.5 SDA BIT P3.6 ;定义串口数据端 SCL BIT P3.7 ORG 0000H AJMP MAIN ORG 000BH AJMP TIMER0 ORG 001BH AJMP TIMER1 ORG 0030H MAIN:MOV SP, #70H MOV TMOD, #11H MOV TH0, #3CH MOV
19、TL0, #0B0H MOV TH1, #3CH MOV TL1, #0B0H CLR F_0 ;清除标志位 CLR F_1 CLR F_2 CLR F_3 CLR F_4 CLR F_5 CLR F_6 CLR F_7 CLR F_8 CLR F_9 CLR BUF_FULL CLR CH_STATE CLR FLAG1 CLR F_F1 CLR F_F2 CLR PSW_F MOV BUFF, #00H ;调用 LCALL INITPS ;初始化环境 LCALL INITATLCALL XSA ;调用默认显示 MOV TIMERS1, #00H NOP MOV PS1, #11H ;初始化
20、密码830620 MOV PS2, #0AH MOV PS3, #02H MOV PS4, #13H MOV PS5, #0BH MOV PS6, #02H START:NOP ;程序开始 LCALL CH_KEY ;检查键盘 AJMP START ;返回 CH_KEY:LCALL KS ;检查有没有按键按下 JNZ LK1 AJMP CH_KEY LK1:LCALL T12MS ACALL KS JNZ LK2 RET LK2:NOP LCALL SBIE ;按键识别子程序 MOV BUFF, A ;送缓冲区以识别是数字键还是功能键? LCALL CH_KF ;判断按键功能。 JB FLAG
21、1, KEY_FUN ;标志为1,则为功能键 ;* ;* 显示子程序 * ;* ;锁定状态显示。 XSA:PUSH ACC PUSH PSW MOV A, TIMERS1 MOV DPTR, #TAB MOVC A, A+DPTR MOV SBUF, A ;送已经输入密码的次数 JNB TI, $ CLR TI MOV SBUF, #0FEH ;送短线 JNB TI, $ CLR TI MOV SBUF, #0FEH ;送短线 JNB TI, $ CLR TI ;送F MOV SBUF, #78H JNB TI, $ CLR TI MOV SBUF, #78H JNB TI, $ CLR TI
22、 MOV SBUF, #11H JNB TI, $ CLR TI POP PSW POP ACCRET ;成功开锁状态显示 XSB:PUSH ACC PUSH PSW MOV A, TIMERS1 MOV DPTR, #TAB MOVC A, A+DPTR MOV SBUF, A JNB TI, $ CLR TI MOV SBUF, #0FEH JNB TI, $ CLR TI MOV SBUF, #0FEH JNB TI, $ CLR TI MOV SBUF, #10H JNB TI, $ CLR TI MOV SBUF, #10H JNB TI, $ CLR TI MOV SBUF, #1
23、0H JNB TI, $ CLR TI POP PSW POP ACC RET ;密码输入及修改状态 XSC:PUSH ACC PUSH PSW LCALL KILLXS SETB RS1 ;切换到第三组寄存器。防止操作数读取错误。 MOV R6, TIMERS MOV A, R6 SUBB A, #01H JNC SC0 JZ SC1 SC0:MOV SBUF, #0FEH JNB TI, $ CLR TI SC1:MOV A, R6 SUBB A, #02HJNC SC11 JNZ SC2 SC11:MOV SBUF, #0FEH JNB TI, $ CLR TI SC2:MOV A, R
24、6 SUBB A, #03H JNC SC22 JNZ SC3 SC22:MOV SBUF, #0FEH JNB TI, $ CLR TI SC3:MOV A, R6 SUBB A, #04H JNC SC33 JNZ SC4 SC33:MOV SBUF, #0FEH JNB TI, $ CLR TI SC4:MOV A, R6 SUBB A, #05H JNC SC44 JNZ SC5 SC44:MOV SBUF, #0FEH JNB TI, $ CLR TI SC5:MOV A, R6 SUBB A, #06H JNC SC55 JNZ SC6 SC55:MOV SBUF, #0FEH J
25、NB TI, $ CLR TI SC6:MOV A, R6 SUBB A, #07H JNC SC66 JNZ EXIT_C SC66:MOV SBUF, #0FEH JNB TI, $ CLR TI NOP NOP EXIT_C:NOPCLR RS1 POP PSW POP ACC NOP RET ;密码输入错误的提示 XSD:PUSH ACC PUSH PSW MOV SBUF, #98H JNB TI, $ CLR TI MOV SBUF, #79H JNB TI, $ CLR TI MOV SBUF, #11H JNB TI, $ CLR TI MOV SBUF, #79H JNB T
26、I, $ CLR TI MOV SBUF, #79H JNB TI, $ CLR TI MOV SBUF, #38H JNB TI, $ CLR TI POP PSW POP ACC RET ;锁定状态显示 XSE:PUSH ACC PUSH PSW MOV SBUF, #0FEH JNB TI, $ CLR TI MOV SBUF, #54H JNB TI, $ CLR TI MOV SBUF, #39H JNB TI, $ CLR TI MOV SBUF, #11HJNB TI, $ CLR TI MOV SBUF, #3DH JNB TI, $ CLR TI MOV SBUF, #0FEH JNB TI, $ CLR TI POP PSW POP ACC RET XSF:PUSH ACC PUSH PSW MOV SBUF, #98H JNB TI, $ CLR TI MOV SBUF, #38H JNB TI, $ CLR TI MOV SBUF, #39H JNB TI, $ CLR TI MOV SBUF, #39H JNB TI, $ CLR TI MOV SBUF, #3DH JNB TI, $ CLR TI MOV SBUF, #98H JNB TI, $