1、目录1 设计任务32 设计方案32.1任务分析32.2方案设计43系统硬件设计43.1键盘电路设计43.2 LCD电路设计63.3 开锁电路设计73.4 报警电路设计84 系统软件设计84.1键盘扫描程序设计94.2 LCD程序设计104.3 密码比较和报警程序设计125 调试155.1 调试效果图136 总 结15参考文献16附录1:系统原理图18附录2:程序清单20 1 设计任务 根据所学课程单片机微型计算机原理,应用及接口技术设计一个基于89C51的电子密码锁,程序语言自行选择。在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解
2、决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替了传统的机械式密码锁,电子密码锁具有安全性高、成本低、功耗低、易操作等优点。本次基于89c51设计的电子密码锁,应具有以下基本功能:1,该电子密码锁能实现开锁功能2,该电子密码锁能实现超时报警功能3,该电子密码锁能实现修改用户密码功能2 设计方案2.1任务分析根据设计要求,电子密码锁可以有数字电路控制完成,还可以由采用一种是用以AT89S51为核心的单片机控制方案。相比之下,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的
3、程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。2.2方案设计采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。具体方案如图2.1。89S51单片机键盘控制输入错误锁定键盘延时报警控制电路存储电路开锁控制电路指示电路显示电路图2.1单片机控制方案本方案采用一种是用以89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。3系统硬件设计3.1键盘电路设计使用矩阵键盘,所以本设
4、计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3.1 图3.1键盘电路原理图每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然
5、后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。具体的功能设计如表3.1所示:表3.1 按键功能按 键键 名功 能 说 明19键数 字 键输 入 密 码* 键重 设 密 码 键设 定 新 密 码D键确 定 键比 较 密 码# 键清
6、除 键使 显 示 器 清 零3.2 LCD显示电路设计本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采用串行显示的方式,只使用单片机的一个串行口,显示电路的电路原理图如图3.2所示。 用P0.0P0.3接74LS247的A,B,C,D四端口,74LS247的输出口接LED的七段显示;而P0.4P0.6接74LS138的A,B,C三个输入口,74LS138的输出口接LCD的位显示。通过软件实现数字和位控制。用74LS247可以控制输出什么字型。74LS247的逻辑功能表如表3.2:表3.2 74LS247的逻辑功能表用74LS138控制位循环显示,其逻辑功能表如表3.3所示: 表
7、3.3 74LS138逻辑功能表CBAY1Y2Y0Y3Y4Y5Y6Y70000111111 001101111110 1011011111011111011111 00111101111011111101 11101111110111111111110LCD显示电路原理图如图3.2所示: 图3.2 LCD显示电路3.3 开锁电路设计在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光管亮,表示开锁;灭,表示没有开锁。电路图如3.3所示。当P2.0口输出低电平时,二极管发光,表示开锁。图3.3 开锁电路3.4 报警电路设计报警模块由蜂鸣器和单片机组成。选择一只压电式蜂鸣器,压电式蜂
8、鸣器工作时约需要100mA驱动电流。蜂鸣器电路如图3.4所示。当89C51的P2.1口输出为低电平时,蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不发声。图3.4 报警电路4 系统软件设计按照设计任务设计要求,软件部分设计主要分为三部分,键盘扫描程序设计,LED显示子程序,密码比较和报警程序。 4.1 键盘扫描子程序键盘扫描子程序流程图如图4.1:图4.1键盘扫描流程图键盘扫描子程序如下:L2: MOV R3,#0F7H MOV R1,#00HL3: MOV A,R3 MOV P1,A MOV A,P1 MOV R4,A SETB C MOV R5,#04HL4: RLC A JNC K
9、EYIN INC R1 DJNZ R5,L4 CALL DISP MOV A,R3 SETB C RRC A MOV R3,A JC L3 JMP L24.2 LCD显示子程序LCD显示子程序流程图如图4.2:图4.2 LED显示流程图LCD显示子程序如下:DISP:MOV R0,#45HDISP1: MOV A,R0 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,R
10、0 ADD A,#20H MOV P0,A 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 RET4.3密码比较和报警程序密码比较和报警流程图如图4.3所示:图4.3 密码比较和报警流程图密码比较和报警程序:COMP: MOV R1,#45H MOV R0,#35H MOV R2,#06HC1: MOV A,R1 XRL A,R0 JNZ C3 DEC R1 DEC R0 DJNZ R2,C1 CLR P2.0 MOV R2,#200
11、C2: MOV R6,#248 DJNZ R6,$ DJNZ R2,C2C3: INC R5 MOV A,R5 MOV R5,A CJNE R5 ,#03H,C4 CLR P2.1 MOV R5,#00H C4: JMP START5 调试 经过上面硬件和软件各方面的设计,下面进行上机调试验证设计效果。 实验板调试效果如图5.1、5.2、5.3、5.4所示: 图5.1 初始界面图5.2 密码输入界面图5.3 输入密码图5.4 密码输入正确6 总 结 为期两周的单片机课程设计结束了,课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的
12、具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立
13、思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好,通过这次课程设计之后,一定把以前所学过的知识重新温故。雄关漫道真如铁,而今迈步从头越!在这个课程设计过程中,王老师教给我的知识,已经远远超过了单片机的范畴,他对我的指导将影响我一生的生活和工作!参考文献【1】:宋彩利,单片机原理与C51接口编程,西安交通大学出版社,2008.6【2】:夏继强,沈德金等.单片机实验与实践教程,北京航天大学出版社,2004年1月出版【3】:王新颖.
14、单片机原理及应用,北京大学出版社,2008年1月出版【4】:喻萍,郭文川.单片机原理与接口技术,化学工业出版社,2005年12月附录1:系统原理图附录2:程序清单: ORG 00H MOV R5,#00H MOV R7,#00H DJNZ R7,$ MOV R7,#10H MOV R6,#06H MOV R1,#35HL1: MOV A,R7 MOV DPTR,#TABLE MOVC A,A+DPTR MOV R1,A DEC R1 INC R7 DJNZ R6,L1START: ORL P2,#0FFH MOV R4,#06H MOV R0,#40HCLEAR: MOV R0,#00H IN
15、C R0 DJNZ R4,CLEARL2: MOV R3,#0F7H MOV R1,#00HL3: MOV A,R3 MOV P1,A MOV A,P1 MOV R4,A SETB C MOV R5,#04HL4: RLC A JNC KEYIN INC R1 DJNZ R5,L4 CALL DISP MOV A,R3 SETB C RRC A MOV R3,A JC L3 JMP L2KEYIN: MOV A,R1 XRL A,#0BH JZ X3 MOV A,R1 XRL A,#0FH JZ X4 MOV R7,#10D1: MOV R6,#24 DJNZ R6,$ DJNZ R7,D1D
16、2: 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 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 L2X3: JMP DISP2X4: JMP COMPDISP:MOV R0,#45
17、HDISP1: MOV A,R0 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 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 RETSET0: MOV R2,#
18、06H MOV R0,#40H MOV R1,#30HE1: MOV A,R0 XCH A,R1 INC R0 INC R1 DJNZ R2,E1 CALL DELAYE2: JMP STARTCOMP: MOV R1,#45H MOV R0,#35H MOV R2,#06HC1: MOV A,R1 XRL A,R0 JNZ C3 DEC R1 DEC R0 DJNZ R2,C1 CLR P2.0 MOV R2,#200C2: MOV R6,#248 DJNZ R6,$ DJNZ R2,C2C3: 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 STARTDELAY: MOV R7,#C3D3: MOV R6,#248 DJNZ R7,D3 RET ORG 300HTABLE: 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