文档库 最新最全的文档下载
当前位置:文档库 › 《微处理器原理与接口》

《微处理器原理与接口》

《微处理器原理与接口》
《微处理器原理与接口》

单片机课程设计密码锁

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

相关文档