单片机课程设计密码锁
1.设计内容及意义.........................................................................2. 2.整体设计原理及方案 (2)
3.硬件电路图 (3)
4.程序设计流程图 (6)
5.实验结果及数据 (7)
6.问题及心得 (7)
7.完整程序 (8)
1.设计内容及意义
1.1设计内容
①密码通过键盘输入,若密码正确,则将锁打开。②报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次锁定键盘。电子密码锁的设计主要由三部分组成:4×4 矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED 提示灯。密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:①密码输入功能:按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。②密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。③开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。
1.2 设计意义
随着经济的发展,人们对日常生活质量的要求也越来越高,从工作、学习、出行、购物等的各个方面,人们也对现代安全设施提出来更高的要求。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。密码锁具有安全性高、成本低、功耗低、易操作等优点,同时还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
2.整体设计原理及方案
2.1 整体设计原理
本设计主要由单片机、4*4矩阵键盘、LED和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行比较,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警。
2.2 整体设计方案
在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LED数码管用于显示作用,连线时LED1接P1.1,LED2接P1.2,LED3接P1.3。当用户需要开锁时,先按键盘的数字键任意输入密码,密码输完后按下确认键,若输入正确则开门;不正确
则重新输入密码,再按下确认键;当输入三次密码错误则以灯亮显示,延时一秒后进入密码锁定状态,即不能进行任何键盘输入;当用户需要撤销密码时,按下MEM/SBRK 键撤销输入的密码后可再重新输入密码。
3.硬件电路图;
在本设计中选用ATMEL 公司的AT89S51单片机作为主控芯片。它是一款低功耗,AT89S51就是一款广泛应用的,高性能CMOS 8位单片机,由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用ATMEL 公司的AT89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于AT89S51芯片内含有8 B的E2PROM ,无需外扩存储器,电路简单可靠,其时钟频率为0~24 MHz,并且价格低廉,批量价在10元以内。AT89S51是一款功能强大的微型计算机,它可为许多嵌入式控制应用系统提供高性价比。
单片机的最小系统是由复位电路、时钟电路和电源组成。复位操作有上电自动复位、按键复位和外部脉冲复位3种方法。本文采用的是上电复位它是通过系统外部的复位电路来实现的。根据电路原理可知电容两极板间的电压不能突变当单片机电源接通电源的瞬间单片机的9管脚会产生一个阶跃信号,所以RTS端维持高电平由于这个充电时间远远大于1ms,一般就可以实现对单片机的上电自动复位,即接通电源就完成了系统的初始化。
8279显示电路由6位共阴极数码管显示,74LS244为段驱动器,75451为位驱动器,可编程键盘电路由1片74LS138组成,8279的数据口,地址,读写线,复位,时钟,片选都已经接好,键盘行列扫描线均有插孔输出。键盘行扫描线插孔号为KA0~KA3;列扫描线插孔号为RL0~RL7;8279还引出CTRL、SHIFT插孔。六位数码管的位选、段选信号可以从8279引入,也可以有外部的其他电路引入。(2)、电路测试见整机测试六位数码管电路的测试:除去电路板上数码管右侧的跳线,系统加点,用导线将插孔LED1接低电平(GND),再将插孔LED-A,LED-B,LED-C,LED-D,LED-E,LED-F,LED-G,LED-DP依次接高电平(VCC),则数码管SLED1的相应段应点亮,如果所有的段都不亮,则检查相应的芯片75451,如果个别段不亮,则检查该段的连线、及数码
管是否损坏。用同样的方法依次检查其它数码管。
3.1电路图
(1)8279内部结构:
3.2 8279电路图
3.3 8279和8051的一般接口框图:
3.4 4*4键盘电路原理图:
4. 程序设计流程图
选择模式
密码输入
新密码输入
存入缓存
密码输入
比较密码 重新输入
返回
Y N 是否大于3次
锁定 N
Y
5.实验结果及数据;
初始设定密码为023320,输入密码时,只显示“8”,任意输入六位密码,错误一次LED2灯亮一秒;错误三次LED3亮一秒,为报警显示;输入正确LED1亮,此时表示门开。6.问题及心得;
作为一名自动化专业的大学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。
在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:protel99制图、汇编语言等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
另外,这次课程设计让我感到了团队合作的重要性。在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响。还有要感谢指导老师在我们遇到困难时,给予我们的建议与鼓励。
几周的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
7.实验程序
CON8279 EQU 0CFE9H ;8279命令口地址DATA8279 EQU 0CFE8H ;8279数据口地址LED_1 EQU 32H
LED_2 EQU 33H
LED_3 EQU 34H
LED_4 EQU 35H
LED_5 EQU 36H
LED_6 EQU 37H ;
Word_1 EQU 38H
Word_2 EQU 39H
Word_3 EQU 40H
Word_4 EQU 41H
Word_5 EQU 42H
Word_6 EQU 43H ;
Key_1 EQU 44H
Key_2 EQU 45H
Key_3 EQU 46H
Key_4 EQU 47H
Key_5 EQU 48H
Key_6 EQU 49H ;
KN EQU 50H
KC EQU 51H
V AL EQU 52H
MOV KC,#03H
ORG 0000H
LJMP STAR
/*ORG 000BH
LJMP IPT0*/
ORG 4100H
STAR: MOV KC,#03H START: MOV LED_1,#40H
MOV LED_2,#40H
MOV LED_3,#40H
MOV LED_4,#40H
MOV LED_5,#40H
MOV LED_6,#40H
MOV Key_1,#00H MOV Key_2,#00H
MOV Key_3,#00H
MOV Key_4,#00H
MOV Key_5,#00H
MOV Key_6,#00H
MOV Word_1,#00H
MOV Word_2,#02H
MOV Word_3,#03H
MOV Word_4,#03H
MOV Word_5,#02H
MOV Word_6,#00H
MOV KN,#00H
MOV SP,#60H
MOV B,#6AH
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV IE,#82H
MOV DPTR,#CON8279;QINGPING
MOV A,#0D1H
MOVX @DPTR,A
A0: LCALL DISP
L1: MOVX A,@DPTR
ANL A,#0FH
JZ L1;DUZHI
MOV A,#0A0H
MOVX @DPTR,A
MOV A,#40H
MOVX @DPTR,A
MOV DPTR,#DATA8279
MOVX A,@DPTR;读键值保存
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV V AL,A ;............................................
CJNE A,#6DH,J1
MOV R1,KN
CJNE R1,#00H,J2;CHEXIAO
LCALL AL1
LJMP START
J2:LCALL SR
DEC KN
/*Z0:LCALL DISP
MOV DPTR,#CON8279
MOVX A,@DPTR
ANL A,#0FH
JNZ Z0*/
LJMP A0
J1:MOV A,V AL ;比较密码CJNE A,#7DH,J3
MOV R1,KN
CJNE R1,#06H,J4;BU GOU 6
MOV A,Word_1
CJNE A,44H,J5
MOV A,Word_2
CJNE A,45H,J5
MOV A,Word_3
CJNE A,46H,J5
MOV A,Word_4
CJNE A,47H,J5
MOV A,Word_5
CJNE A,48H,J5
MOV A,Word_6
CJNE A,49H,J5
CLR P1.0
LCALL DLY1S
LJMP FINI
J5:LCALL AL2;CUOWU
LJMP START
J4:LCALL AL1
LJMP START
J3:INC KN
CJNE A,#07H,KK
LCALL AL1
/*Z00:LCALL DISP
MOV DPTR,#CON8279
MOVX A,@DPTR
ANL A,#0FH
JNZ Z00*/
LJMP START
KK: LCALL SL
/* LCALL Z0*/
LJMP A0
AL1:CLR P1.1
LCALL DLY3S
SETB P1.1
CLR P1.1
LCALL DLY3S
SETB P1.1
RET
AL2:
CLR P1.1
LCALL DLY3S
SETB P1.1
DEC KC
MOV A,KC
JNZ LL
CLR P1.2
LCALL DLY3S
SETB P1.2
LJMP FINI
LL: RET
/*IPT0:MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ B,LX
CLR TR0
LX:RETI*/
SL: MOV LED_6,LED_5 ;密码左移MOV LED_5,LED_4
MOV LED_4,LED_3
MOV LED_3,LED_2
MOV LED_2,LED_1
MOV LED_1,#0FFH
MOV Key_6,Key_5
MOV Key_5,Key_4
MOV Key_4,Key_3
MOV Key_3,Key_2
MOV Key_2,Key_1
MOV Key_1,V AL
RET
SR: MOV LED_1,LED_2
MOV LED_2,LED_3
MOV LED_3,LED_4
MOV LED_4,LED_5
MOV LED_5,LED_6
MOV LED_6,#40H
MOV Key_1,Key_2
MOV Key_2,Key_3 MOV Key_3,Key_4
MOV Key_4,Key_5
MOV Key_5,Key_6
MOV Key_6,#00H
RET
DISP:MOV DPTR,#CON8279 ;
MOV A,#85H
MOVX @DPTR, A
MOV A,LED_1
MOV DPTR,#DATA8279
MOVX @DPTR,A
/*LCALL DLY2S*/
MOV DPTR,#CON8279
MOV A,#84H
MOVX @DPTR, A
MOV A,LED_2
MOV DPTR,#DATA8279
MOVX @DPTR,A
/*LCALL DLY2S*/
MOV DPTR,#CON8279
MOV A,#83H
MOVX @DPTR, A
MOV A,LED_3
MOV DPTR,#DATA8279
MOVX @DPTR,A
/*LCALL DLY2S*/
MOV DPTR,#CON8279
MOV A,#82H
MOVX @DPTR, A
MOV A,LED_4
MOV DPTR,#DATA8279
MOVX @DPTR,A
/*LCALL DLY2S*/
MOV DPTR,#CON8279
MOV A,#81H
MOVX @DPTR, A
MOV A,LED_5
MOV DPTR,#DATA8279
MOVX @DPTR,A
/*LCALL DLY2S*/
MOV DPTR,#CON8279
MOV A,#80H
MOVX @DPTR, A
MOV A,LED_6
MOV DPTR,#DATA8279
MOVX @DPTR,A
/*LCALL DLY2S*/
MOV DPTR,#CON8279
RET
DLY1S:MOV R5,#10 ;1秒D4: MOV R6,#100
D5: MOV R7,#248
DJNZ R7,$
DJNZ R6,D5
DJNZ R5,D4
RET
DLY3S:MOV R5,#10 ;1秒
D2: MOV R6,#100
D3: MOV R7,#248
DJNZ R7,$
DJNZ R6,D3
DJNZ R5,D2
RET
/*DL Y2S:MOV R6,#10
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET*/
TAB: DB 00H,01H,02H,03H,6DH,7DH,04H,05H DB 06H,07H,39H,5EH,08H,09H,79H,71H,40H FINI:NOP
END