1、 HEFEI UNIVERSITY 自动化系统综合实训I 设计报告 题 目: 基于AT89C51电子密码锁的设计 系 别: 电子信息与电气工程系 专业(班级): 12自动化1班 姓名(学号):闻扬洋1205031033 孔令远1205031034 唐 龙 1205031036
2、 指导教师: 储 忠 完成时间: 2015-1-1 基于AT89C51电子密码锁的设计 中文摘要 摘要:在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其
3、安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。 在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。 随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效
4、卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。 基于以上思路,本次设计使用 ATMEL公司的 AT89C51 实现一基于单片机的电子密码锁的设计,其主要具有如下功能: (1)密码通过键盘输入,若密码正确,则显示密码正确。 (2)可无限次修改密码,先输入上次密码,如密码正确可再修改密码。 电子密码锁的设计主要由三部分组成:4×4 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另
5、外系统还有 LED 提示灯,电源部分。 密码锁设计的关键问题是实现密码的输入、清除、更改等功能: (1)密码输入功能:按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。 (2)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。 (3)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。 主要的设计实施过程:首先,选用 ATMEL公司的单片机 AT89C51,以及选购其他电子元器件。第二步,使用 DXP 2004设计硬件电路原理图,并设计 PCB图完成人工布线(后因 PCB 板损坏决定采用
6、万能板焊接的方法)。第三步,使用 Keil uVision3 软件编写单片机的 C 语言程序、仿真、软件调试。第四部,使用 PROTEUS 软件进行模拟软、硬件调试。最后,联合软、硬件调试电路板,完成本次毕业设计。 关键词:4×4矩阵键盘;AT89C51;密码锁;密码二次确认 21 目录 第一部分 概 述 1 第二部分 系统总体方案设计 2 第三部分 硬件电路设计 4 3.1 键盘电路设计 4 3.2LED显示电路 5 3.3 开锁电路 7 第四部分 软件设计 8 4.1软件设计思路 8 4.2 各子程序设计 8 第五部分 系统调试 13 第
7、六部分 心得体会 14 第七部分 参考文献 15 附 录 16 源程序清单 16 第一部分 概 述 随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。 本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都
8、生产51兼容的芯片。到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。 本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。 第二部分 系统总体方案设计 方案一:采用数字电路控制。其原理方框图如图1-1所示。 图2-1 数字密码锁电路方案 采用数字密码锁电路的好处就是设计简单。用以74LS1
9、12双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中还有4个按键,分别是输入、返回、重输、确定键。 电路由两大部分组成:密码锁电路和电源部分,其中设置电源部分是为了给电路提供5V电压。 密码锁电路包含:键盘输入、密码修改锁定电路。 方案二:采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图1-2所示。 AT89C51 单片机 矩阵 键盘 控制 输入错误锁定键盘
10、 延时报警控制电路 AT24C02掉电存储 开锁控制电路 指示电路 串口显示电路 图2-2单片机控制方案 通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。 本方案采用一种是用以89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。 初步设计思路如下: 输入密码用矩形键盘,包括数字键和功能键。 LED数码管显示输入密码,用74JS247驱动数码管发光显示数码
11、用74LS138控制各位显示器分时进行显示。 用发光二极管代替开锁的电路,发光表示开锁。 输入密码错误次数超过3次,系统报警。 打开电源后,显示器显示“Press the key”,设原始密码为“000000”,只要输入此密码便了开门。这样可预防停电后再来电时无密码可用。 按“重输”键,显示器显示为“input six num”。 先需要输入核对上次密码,如“000000”,核对成功后便可输入新密码,然后程序自动进入开始的状态。 软件的设计主要包括键盘键值的读取,LED显示程序,和密码比较程序。 第三部分 硬件电路设计 3.1 键盘电路设计 使用矩阵键盘,
12、所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3.1 。 图3.1 矩阵键盘 每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。 在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。 当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。 对照图3.1所示的4×4键盘,说
13、明线反转个工作原理。 首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。 判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。 具体的功能设计如表3.1: 表3.1 按键功能 按 键 键 名 功 能 说 明
14、1-9键 数 字 键 输 入 密 码 * 键 重 设 密 码 键 设 定 新 密 码 D键 确 定 键 比 较 密 码 # 键 清 除 键 使 显 示 器 清 零 3.2LED显示电路 本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采用串行显示的方式,只使用单片机的一个串行口,利用74LS247驱动数码管发光显示数码和74LS138控制位选信号,就可以完成单片机的显示功能,显示电路的电路原理图如图3.2所示。 用P0.0—P0.3接74LS247的A,B,C,D四端口,74LS247的输出口接LED的七段显示;而P0.4—P0.6接74LS138的A
15、B,C三个输入口,74LS138的输出口接LED的位显示。通过软件实现数字和位控制。 图3.2 LED显示电路 用74LS247可以控制输出什么字型。74LS247的逻辑功能表如表3.2: 表3.2 74LS247的逻辑功能表 用74LS138控制位循环显示,其逻辑功能表如表3.3: 表3.3 74LS138逻辑功能表 C B A Y1 Y2 Y0 Y3 Y4 Y5 Y6 Y7 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0
16、1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 3.3 开锁电路 在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。电路图如3.3所示。当P2.0口输出低电平时,二极管发光,表示开锁。 图3.3 开锁电路
17、 第四部分 软件设计 4.1软件设计思路 电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁处理。当输入密码输入错误时,系统锁死。 密码的设定,在此程序中密码是固定40H—45H 中,假设预设的密码为"123456"共6位密码。 由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。
18、4.2 各子程序设计 1 键盘扫描子程序 键盘扫描流程图如图4.2.1 图4.2.1 键盘扫描流程图 键盘扫描子程序如下: 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
19、 MOV A,R3 SETB C RRC A MOV R3,A JC L3 JMP L2 2 LED显示子程序 LED显示流程图如图4.2.2 图4.2.2 LED显示流程图 LED显示子程序如下: DISP:MOV R0,#45H DISP1: MOV A,@R0 ADD A,#50H MOV P0,A CALL DELAY DEC R0 MOV A,@R0 ADD A,#40H
20、 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
21、 DEC R0 MOV A,@R0 ADD A,#00H MOV P0,A CALL DELAY RET 3 密码比较和报警程序 密码比较和报警流程图如4.2.3 图4.2.3 密码比较和报警流程 密码比较和报警程序: COMP: MOV R1,#45H MOV R0,#35H MOV R2,#06H C1: MOV A,@R1 XRL A,@R0 JNZ C3 DEC R1 DEC R0
22、 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: JMP START 第五部分 系统调试 本次调试采用Protues软件仿真。首先设计电子密码锁
23、的源程序,源程序经过汇编后,生成的目标文件经过仿真调试。 依次按下1,2,3,4,5,6后,LED显示如图5.1 图5.1 LED显示 按下确定键后,二极管亮,表示密码正确开门。如图5.2 图5.2 密码正确开门 第六部分 心得体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术
24、是十分重要的。 回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得
25、不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,在同学的帮助下,终于游逆而解。非常感谢! 第七部分 参考文献 [1]《单片机原理及及应用》王迎旭编 机械工业出版社 2001 [2]《单片机应用程序设计技术》 周航慈 著 北京航空航天大学出版社 [3] 黄志君,高峰,王建.轮胎压力监测系统[J].广西工学院学报.2006(4):9~12. [4] 单春贤,韩钧等. 一种集成度较高的轮胎压力监测系统设计[J]. 拖拉机与农用运输车,200
26、6(6):33~38. [5]张洪润 单片机应用技术教程 北京:清华大学出版社,1997 [6]沙占友 A Study of the Control System with Intelligent Temperature Sensors.ICEMI第四届国际电子测量学术会议论文集,电子测量与一起学报.第13卷,1998(8),ISTP收录 [7] The Intel Microprocessors Architecture,Programming,and Interfacing .高等教育出版社(影印版),2001 20-081201-05-01 [8] JONATHAN D. N
27、ASH, DOUGLAS R. CALDWELL, MICHAEL J. ZELMAN, AND JAMES N. MOUM A Thermocouple Probe for High-Speed Temperature Measurement in the Ocean. Manuscript received 18 August 1997, in final form 9 November 1998:1447-1449. [9]OMEGA Engineering Technical Reference.Thermocouple Home Page [10] Using Therm
28、ocouple Sensors Cryogenic Control Systems, Inc. 附 录 源程序清单 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
29、 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:
30、 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
31、 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
32、 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
33、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
34、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
35、 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
36、 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: JMP START 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






