单片机课程设计密码锁.docx

上传人:b****7 文档编号:16557551 上传时间:2023-07-14 格式:DOCX 页数:17 大小:63.29KB
下载 相关 举报
单片机课程设计密码锁.docx_第1页
第1页 / 共17页
单片机课程设计密码锁.docx_第2页
第2页 / 共17页
单片机课程设计密码锁.docx_第3页
第3页 / 共17页
单片机课程设计密码锁.docx_第4页
第4页 / 共17页
单片机课程设计密码锁.docx_第5页
第5页 / 共17页
单片机课程设计密码锁.docx_第6页
第6页 / 共17页
单片机课程设计密码锁.docx_第7页
第7页 / 共17页
单片机课程设计密码锁.docx_第8页
第8页 / 共17页
单片机课程设计密码锁.docx_第9页
第9页 / 共17页
单片机课程设计密码锁.docx_第10页
第10页 / 共17页
单片机课程设计密码锁.docx_第11页
第11页 / 共17页
单片机课程设计密码锁.docx_第12页
第12页 / 共17页
单片机课程设计密码锁.docx_第13页
第13页 / 共17页
单片机课程设计密码锁.docx_第14页
第14页 / 共17页
单片机课程设计密码锁.docx_第15页
第15页 / 共17页
单片机课程设计密码锁.docx_第16页
第16页 / 共17页
单片机课程设计密码锁.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计密码锁.docx

《单片机课程设计密码锁.docx》由会员分享,可在线阅读,更多相关《单片机课程设计密码锁.docx(17页珍藏版)》请在冰点文库上搜索。

单片机课程设计密码锁.docx

单片机课程设计密码锁

单片机原理及系统课程设计

专业:

自动化

班级:

姓名:

学号:

指导教师:

评语:

 

平时(40)

修改(30)

报告(30)

总成绩

 

2012年7月1日

1引言

电子密码锁是现代生活中常用的加密工具,它克服了机械式密码锁密码量少、安全性能差的缺点,尤其是微控制器的智能电子密码锁,不仅具有电子密码锁的功能,还可引入智能化管理功能,从而使密码锁具有更高的安全性和可靠性。

由于电子密码锁的保密性高、使用灵活性好、安全系数高等特点,受到了广大用户的亲睐,具有报警功能的电子密码锁代替弹子锁和密码量少的机械锁是必然趋势。

  本课程设计是基于AT89C51为核心的单片机控制的电子密码锁设计,能完成开锁、修改密码、密码错误报警并亮灯显示、LED显示密码等基本的密码锁功能,并通过Protues软件成功地进行了仿真。

2设计方案及原理

本文先通过仿真调试器keiluVision4软件将编写的汇编程序调试生成一个.hex文件,然后在仿真软件proteus上进行仿真。

输入密码用一个四行三列的矩阵键盘,共有12个按键,包括数字键0到9和两个功能键,即密码输入键“ENTER”和清除键“CLC”。

系统复位键也用一个按键控制,但不在4*3矩阵键盘中。

七段LED数码管显示输入密码,用74LS245驱动数码管发光显示数码,用一个黄色发光二极管代替开锁的电路,发光表示开锁。

打开电源后,显示器显示“HELLO”,设置初始密码为“123456”,只要输入的密码和它匹配,便开锁。

按“CLC”键,清除当前输入的密码。

输入6位密码后,按“ENTER”键,单片机会扫描矩阵键盘,计算出键值,与初始密码作比较,若输入正确,黄色LED灯亮,开锁;若输入密码错误,显示器显示闪烁字样“ERROR”、蜂鸣器鸣响、红色LED灯闪烁。

在keiluVision4环境下,输入程序源代码,按照系统初始化程序模块、键盘键值的读取模块、LED显示程序模块,密码比较程序和报警程序模块检查输入正确与否,调试,生成一个.hex文件,然后打开仿真软件proteus,将需要的元器件布置在合适的位置,连接各元件,载入.hex文件,点击仿真开始按键,模拟密码锁的工作过程。

3硬件设计

本设计基于AT89C51为核心的单片机控制的电子密码锁设计,本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。

设计的电路框图如图1:

图1硬件设计模块框图

3.1电路设计

(1)主程序模块:

主要完成程序初始化、置中间向量、扫描有无键按下、判断密码输入是否正确,检查复位按键是否按下等,主程序的流程图如图2。

(2)密码比较及报警子程序模块:

该模块的主要功能是将输入的密码与初始密码做比较,若输入的密码正确,则模拟开锁的黄色LED灯亮,若操作错误或密码输入错误,红色LED灯闪烁并且蜂鸣器鸣响,其流程图如图3。

图2主程序流程图

图3密码比较及报警子程序流程图

3.2AT89C51功能及引脚介绍

AT89C51单片机是把中央处理器CPU、随即存储器RAM、只读存储器ROM、定时/计数器、I/O接口电路等主要计算机部件集成在一块电路芯片上的单片微型计算机,本设计中单片机应用的主要功能就是控制LED显示器的显示、报警电路以及开锁电路,还用作键盘的扫描等。

P0:

本设计中的P0口主要是控制LED数码管的段选,从P0.0到P0.7依次控制abcdefgh段,当P0口给出不同的高低电平时数码管相应的段被点亮,由于P0口作输出口时,需接上拉电阻,所以在仿真时接有8位的上拉电阻,以使LED显示器有足够的亮度。

P1:

P1口是一个内部提供上拉电阻的8位双向I/O口,在本设计中用P1.0控制开锁电路,用P1.7控制报警电路。

当P1.0输出低电平时,开锁电路被接通;当P1.7输出低电平时报警电路被接通。

P2:

本设计中的P2口控制LED数码管的位选,在仿真时显示器是一个8位的LED数码管,从右至左依次是第一位到第八位,当P2口给出不同的高低电平时,八位的LED数码管将被选择性的点亮。

由于P2口内部提供上拉电阻,因此它作为输出口使用时,无需再外接上拉电阻,直接接在显示器的位选线上。

P3:

P3口用于键盘的扫描,P3.0至P3.3口分别接键盘的行线,P3.4至P3.6接键盘的列线,当没有键按下时,六个口皆为高电平,若行线状态中有低电平,表明有键按下。

VCC:

+5V电源

VSS:

接地

RST:

复位信号。

当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。

XTAL1和XTAL2:

外接晶体引线端。

当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

4软件设计

在proteus环境下,根据硬件电路中的各个模块,把需要的器件放置在合适的位置,并修改参数,连线,点击仿真按键进行仿真。

若输入的密码正确时则黄色LED灯亮,持续亮一段时间后返回初始界面,显示器显示“HELLO”,仿真结果如图4。

图4密码输入正确仿真图

若输入的密码错误,或者操作错误时红色LED闪烁,同时蜂鸣器鸣响报警,显示界面闪烁显示“ERROR”,仿真结果如图5

图5密码输入错误仿真图

5总结

这次课程设计提高了我综合运用所学知识的能力,通过发现、提出、分析问题最终解决实际问题。

随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,作为当代大学生,学好单片机对我们以后的生活有很大的帮助。

从选题到决定,从理论到实践,在这期间内,可以说得是苦多于甜,但是从中学到很多很多的的东西。

首先是提升了我严谨的治学态度,同时巩固了以前所学的知识,而且在模拟仿真以及程序的调试过程中,学到了很多在书本上所没有学到的东西;其次,这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的融会贯通,同时提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到很多问题,比如在汇编语言调试时困难重重,在解读程序方面也费了很多功夫,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,使我认识到了温故而知新的道理。

 

参考文献

[1]李华,王思明等.单片机原理及及应用[M].兰州:

兰州大学出版社,2001.

[2]张洪润.单片机应用技术教程[M].北京:

清华大学出版社,1997.

[3]黄志伟.全国大学生电子设计竞赛实训[M].北京:

北京航空航天大学出版社,2005.

[4]周润景,丁莉等.单片机分析设计与制作[M].南京:

机械工业出版社,2008.

 

附录

LED_BIT_1EQU30H

LED_BIT_2EQU31H

LED_BIT_3EQU32H

LED_BIT_4EQU33H

LED_BIT_5EQU34H

LED_BIT_6EQU35H

LED_BIT_7EQU36H

LED_BIT_8EQU37H

;以下6个字节存放初始密码

WORD_1EQU38H

WORD_2EQU39H

WORD_3EQU3AH

WORD_4EQU3BH

WORD_5EQU3CH

WORD_6EQU3DH

;以下6个字节存放用户输入的6位密码

KEY_1EQU3EH

KEY_2EQU3FH

KEY_3EQU40H

KEY_4EQU41H

KEY_5EQU42H

KEY_6EQU43H

;******************************************************

CNT_AEQU44H

CNT_BEQU45H

KEY_CNTEQU46H;已输出的密码位数

LINEEQU47H;按键行号

ROWEQU48H;按键列号

VALEQU49H;键值

;******************************************************

;以下为初始化程序,包括数据存储空间初始化,设置初始密码

ORG00H

SJMPSTART

ORG0BH

LJMPINT_T0

START:

MOVCNT_A,#00H;程序初始化

MOVCNT_B,#00H

MOVKEY_CNT,#00H

MOVLINE,#00H

MOVROW,#00H

MOVVAL,#00H

SETBP1.0

MOVLED_BIT_1,#80H;段码存储区清0

MOVLED_BIT_2,#80H

MOVLED_BIT_3,#80H

MOVLED_BIT_4,#3FH

MOVLED_BIT_5,#38H

MOVLED_BIT_6,#38H

MOVLED_BIT_7,#79H

MOVLED_BIT_8,#76H

MOVKEY_1,#00H;输入密码存储区清0

MOVKEY_2,#00H

MOVKEY_3,#00H

MOVKEY_4,#00H

MOVKEY_5,#00H

MOVKEY_6,#00H

MOVWORD_1,#6;设置初始密码为"123456"

MOVWORD_2,#5

MOVWORD_3,#4

MOVWORD_4,#3

MOVWORD_5,#2

MOVWORD_6,#1

MOVTMOD,#01H

MOVTH0,#(65536-1200)/256

MOVTL0,#(65536-1200)/256

MOVIE,#82H

A0:

LCALLDISP

;***********************************************************

;以下为键盘扫描程序,计算键值并存入VAL

LSCAN:

MOVP3,#0F0H;扫描行码

L1:

JNBP3.0,L2

LCALLDLY_S

JNBP3.0,L2

MOVLINE,#00H

LJMPRSCAN

L2:

JNBP3.1,L3

LCALLDLY_S

JNBP3.1,L3

MOVLINE,#01H

LJMPRSCAN

L3:

JNBP3.2,L4

LCALLDLY_S

JNBP3.2,L4

MOVLINE,#02H

LJMPRSCAN

L4:

JNBP3.3,A0

LCALLDLY_S

JNBP3.3,A0

MOVLINE,#03H

RSCAN:

MOVP3,#0FH;扫描列码

C1:

JNBP3.4,C2

MOVROW,#00H

LJMPCALCU

C2:

JNBP3.5,C3

MOVROW,#01H

LJMPCALCU

C3:

JNBP3.6,C1

MOVROW,#02H

CALCU:

MOVA,LINE;计算键值

MOVB,#03H

MULAB

ADDA,ROW

MOVVAL,A

;**************************************************

;以下为按键处理程序,对不同的按键作出响应

CJNEA,#0AH,J1;是否为"CLR"键

MOVR1,KEY_CNT

CJNER1,#00H,J2

LCALLALARM_1

LJMPSTART

J2:

LCALLSHIFTR

DECKEY_CNT

W00:

LCALLDISP;等待按键抬起

MOVA,P3

CJNEA,#0FH,W01

LJMPA0

W01:

MOVA,P3

CJNEA,#0F0H,W02

LJMPA0

W02:

SJMPW00

J1:

MOVA,VAL

CJNEA,#0BH,J3;判断是否为"ENTER"键

MOVR1,KEY_CNT

CJNER1,#06H,J4

MOVA,WORD_1;比较密码

CJNEA,3EH,J5

MOVA,WORD_2

CJNEA,3FH,J5

MOVA,WORD_3

CJNEA,40H,J5

MOVA,WORD_4

CJNEA,41H,J5

MOVA,WORD_5

CJNEA,42H,J5

MOVA,WORD_6

CJNEA,43H,J5

CLRP1.0

LCALLDLY_L

LJMPFINI

J5:

LCALLALARM_2

LJMPSTART

J4:

LCALLALARM_1

LJMPSTART

J3:

INCKEY_CNT;按下数字键

MOVA,KEY_CNT

CJNEA,#07H,K1

LCALLALARM_1

W10:

LCALLDISP;等待按键抬起

MOVA,P3

CJNEA,#0FH,W11

LJMPSTART

W11:

MOVA,P3

CJNEA,#0F0H,W12

LJMPSTART

W12:

SJMPW10

LJMPSTART

LJMPSTART

K1:

LCALLSHIFTL

W20:

LCALLDISP;等待按键抬起

MOVA,P3

CJNEA,#0FH,W21

LJMPA0

W21:

MOVA,P3

CJNEA,#0F0H,W22

LJMPA0

W22:

SJMPW20

LJMPA0

ALARM_1:

SETBTR0;操作错误报警

JBTR0,$

RET

ALARM_2:

SETBTR0;密码错误报警

JBTR0,$

LCALLDLY_L

RET

;**************************************************

;定时器中断服务程序,用于声音报警

INT_T0:

CPLP1.7

MOVLED_BIT_1,#00H

MOVLED_BIT_2,#72H

MOVLED_BIT_3,#3FH

MOVLED_BIT_4,#72H

MOVLED_BIT_5,#72H

MOVLED_BIT_6,#79H

MOVLED_BIT_7,#00H

MOVLED_BIT_8,#00H

MOVTH0,#(65536-1200)/256

MOVTL0,#(65536-1200)/256

INCCNT_A

MOVR1,CNT_A

CJNER1,#30,RETUNE

MOVCNT_A,#00H

INCCNT_B

MOVR1,CNT_B

CJNER1,#20,RETUNE

MOVCNT_A,#00H

MOVCNT_B,#00H

CLRTR0

LCALLDISP

SETBTR0

LCALLDISP

CLRTR0

LCALLDISP

SETBTR0

LCALLDISP

RETUNE:

RETI

;**************************************************

;段码,输入密码左移子程序

SHIFTL:

MOVLED_BIT_6,LED_BIT_5

MOVLED_BIT_5,LED_BIT_4

MOVLED_BIT_4,LED_BIT_3

MOVLED_BIT_3,LED_BIT_2

MOVLED_BIT_2,LED_BIT_1

MOVLED_BIT_1,#40H

MOVKEY_6,KEY_5

MOVKEY_5,KEY_4

MOVKEY_4,KEY_3

MOVKEY_3,KEY_2

MOVKEY_2,KEY_1

MOVKEY_1,VAL

RET

;**************************************************

;段码,输入密码右移子程序

SHIFTR:

MOVLED_BIT_1,LED_BIT_2

MOVLED_BIT_2,LED_BIT_3

MOVLED_BIT_3,LED_BIT_4

MOVLED_BIT_4,LED_BIT_5

MOVLED_BIT_5,LED_BIT_6

MOVLED_BIT_6,#00H

MOVKEY_1,KEY_2

MOVKEY_2,KEY_3

MOVKEY_3,KEY_4

MOVKEY_4,KEY_5

MOVKEY_5,KEY_6

MOVKEY_6,#00H

RET

;**************************************************

;以下为数码显示子程序

DISP:

CLRP2.7

MOVP0,LED_BIT_8

LCALLDLY_S

SETBP2.7

CLRP2.6

MOVP0,LED_BIT_7

LCALLDLY_S

SETBP2.6

CLRP2.5

MOVP0,LED_BIT_6

LCALLDLY_S

SETBP2.5

CLRP2.4

MOVP0,LED_BIT_5

LCALLDLY_S

SETBP2.4

CLRP2.3

MOVP0,LED_BIT_4

LCALLDLY_S

SETBP2.3

CLRP2.2

MOVP0,LED_BIT_3

LCALLDLY_S

SETBP2.2

CLRP2.1

MOVP0,LED_BIT_2

LCALLDLY_S

SETBP2.1

CLRP2.0

MOVP0,LED_BIT_1

LCALLDLY_S

SETBP2.0

RET

;**********************************************

DLY_S:

MOVR6,#10

D1:

MOVR7,#250

DJNZR7,$

DJNZR6,D1

RET

DLY_L:

MOVR5,#100

D2:

MOVR6,#100

D3:

MOVR7,#248

DJNZR7,$

DJNZR6,D3

DJNZR5,D2

RET

FINI:

NOP

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2