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

上传人:b****5 文档编号:3566132 上传时间:2022-11-23 格式:DOCX 页数:22 大小:367.90KB
下载 相关 举报
单片机课程设计智能密码锁.docx_第1页
第1页 / 共22页
单片机课程设计智能密码锁.docx_第2页
第2页 / 共22页
单片机课程设计智能密码锁.docx_第3页
第3页 / 共22页
单片机课程设计智能密码锁.docx_第4页
第4页 / 共22页
单片机课程设计智能密码锁.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

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

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

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

单片机课程设计智能密码锁

第1章单片机系统概述

1.1单片机的介绍

随着科技的飞速发展,单片机随之诞生,它被人么运用到生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。

因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。

 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。

Intel公司推出了MCS-51系列单片机:

集成8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。

寻址范围64K,并有控制功能较强的布尔处理器。

1.2设计内容及要求

对于此次课程设计我们使用80C51为作为主控芯片与数据存储器单元,结合外围的矩阵键盘输入、LCD显示、报警、开锁等控制方案来实现的电子密码锁的设计,其主要具有如下功能:

(1)密码的设定:

此密码是固定在程序存储器ROM中,假设预设的密为“12345”共5位密码。

(2)密码的输入:

采用一组数字键盘来完成密码的输入及一个确认功能键来确认密码的正确性。

在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。

然后进入密码的判断比较处理状态并给出相应的处理过程。

(3)密码的删除功能:

当在密码输入时,不小心将密码输错,此时只要按下删除键,便能重新输入密码。

(4)按键禁止功能:

初始化时,允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。

(5)报警功能:

当连续输入的三次密码全都错误的情况下,自动启用报警功能,有警报声响起及红灯闪烁。

(6)复位功能:

在输入密码确认后最终出现两种情况:

一是密码输入正确,此时密码锁自动打开,一段时间后便自动复位,进入下一次密码的输入。

二是密码输入错误,此时启动警报,只有当人为的按下复位功能键才能解除警报状态。

第2章系统总体方案设计

2.1总体方案

此次智能密码锁控制器的设计主要是通过程序来控制键盘和报警器等,在一般状态下输入原始密码,则可以开锁。

如果在锁住时输入密码,且连续三次密码错误,报警器报警,手动按下复位按钮,解除警报。

此次设计我们将密码固化在ROM中,放入表中,在得到按键后,查表比较密码,如果正确,显示”GOOD”提示,如果三次密码错误,就禁止读取按键函数,只打开报警电路发出报警声及红灯闪烁!

系统总框图如下所示:

80C51

单片机

输入错误返回

矩阵

键盘

控制

连续输错三次启动报警

LCD六位显示器

2.1系统总框图

2.2系统组成

本系统主要包括两个部分:

硬件部分和软件部分。

硬件部分:

矩阵键盘接口电路、密码锁的控制电路、复位控制电路和输出显示电路等三部分。

键盘部分包括键盘扫描时序产生电路、键盘扫描、弹跳消除、键盘译码、按键存储。

程序控制包括数字按键的数字输入、存储及清除、功能按键的功能设计、激活开锁电路、密码核对。

复位电路包括复位控制按钮。

输出显示电路的设计包括数据选择、BCD对显示译码、七段LED显示扫描。

软件部分:

汇编程序的主函数和子函数。

其中子函数又包括:

按键读取函数、延时函数、定时中断函数、按键处理函数、删除函数、密码比较函数、显示函数、报警函数、复位函数。

第3章系统硬件设计

3.1主控芯片80C51

此次智能密码的锁设计主要是围绕80C51芯片而做的,80C51是INTEL公司MCS-51系列单片机中最基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。

它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它继承和扩展了MCS-48单片机的体系结构和指令系统。

80C51内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。

图3.180C51芯片引脚图

80C51各管脚的功能如下:

●VCC和GND:

分别为外接电源和接地 

●P0~P3:

为输入/输出口线,其各有的功能,其中P3口每一位还有特殊功能。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

●ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

 

●/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

●/EA/VPP:

当/EA保持低电平时,在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

  

●XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

  

●XTAL2:

来自反向振荡器的输出。

3.2单片机振荡电路

8051内置频率可达12MHz的时钟电路,用来产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容,晶振采用12M外接30pF电容构成单片机时钟电路。

图3.2单片机振荡电路

3.3单片机复位电路

单片机系统的复位电路在可以采用的是按钮式上电复位电路形式,其中电阻R采用10KΩ的阻值,电容采用10μF的电容值。

图3.3复位电路

3.4键盘按键电路

此次设计使用的是矩阵键盘,这种形式的键盘能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。

图3.4(a)矩阵键盘

这种键盘内部结构为每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。

我们这次设计的电子密码锁的按键部分采用4X4矩阵键盘,键盘行列各有四条线键盘排列在行与列线的交点上如图3.4(a)所示。

图3.4(b)矩阵键盘内部结构图

如上图所示键盘,确定矩阵式键盘上何键被按下常使用的为“行扫描法”。

行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。

判断键盘中有无键按下:

(1)先将行线p1.7-p1.4置0111,然后检测列线的状态。

如果p1.3-p1.0为0111,则k0被按下;如果p1.3-p1.0为1011,则k1被按下;如果p1.3-p1.0为1101,则k2被按下;如果p1.3-p1.0为1110,则k3被按下;

(2)将行线p1.7-p1.4置1011,然后检测列线的状态,方法同

(1);

(3)将行线p1.7-p1.4置1101,然后检测列线的状态,方法同

(1);

(4)将行线p1.7-p1.4置1110,然后检测列线的状态,方法同

(1)。

3.5显示电路

八段共阳显示器的结构是八个二极管连接一个阳极的结构,只要另一段为低电平,二极管就会发光,从而形成一段。

将八段顺序排列后就成为具有一定编码的共阳显示器了。

本设计显示电路采用共阳显示器显示输入的五位密码,和一个密码输入次数提示位。

其显示状态有三种:

当密码锁处于开始状态时,LED不做任何显示,当密码锁输入正确的密码是即显示GOOD,当密码连续输入三次错误时LED显示“——————”并且不停闪烁。

此三种状态图如下所示。

图3.5(a)无任何输入时显示状态

图3.5(b)输入密码正确的显示状态

图3.5(c)连续三次输错密码的显示状态

3.6报警电路

输入密码与设定密码做比较,当输入密码与设定密码不同,返回再输入,当输入密码次数超过3次时,通过软件从80C51的P3.6输出脉冲,是红色报警二极管闪烁,并且从P3.7输出脉冲使三极管导通扬声器鸣笛报警。

图3.6报警电路原理图

第4章软件设计

4.1软件总体设计本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、密码比较程序、密码对开锁、错报警和延时程序等组成。

软件设计总流程图如下:

手动复位

图4.1软件设计总流程图

4.2键盘扫描及识别子程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。

4.3比较密码子程序

当按下确定按键后程序执行密码比较,判断密码是否正确,从而决定是否禁止键盘,是否报警,还是继续等待按键输入,图4.2是密码比较函数流程图:

图4.2比较密码子程序流程图

 

4.4显示程序设计

由于是分屏显示数据,所以就要用到5个显示子程序,分别是:

关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序。

密码在规定的时间内输入错误次数超过3次后的锁定状态显示子程序。

为了显示数字,要为LED显示器提供字型代码。

我用的是共阳极的显示器。

4.5按键功能流程图

如图4.3为按键功能流程图,在按键当中,有与输入、开锁、清除、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时进行清除,最后确认程序。

图4.3按键功能流程图

4.6开锁流程图

如图4.4为开锁流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。

如果输入错误累计达到三次,则执行报警程序。

开锁流程图如下所示:

图4.4开锁流程图

第5章安装调试说明

对于智能密码锁的设计,我们可以使用proteus软件来仿真,Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

仿真之前我们得先做一些准备工作。

首先,根据密码锁设计所需,使用编程软件写一个程序,这里既可以用C语言来编写也可用伟福软件来编写汇编语言。

现在我们用所熟悉的单片机汇编语言来编写,程序编写完了,进行程序的编译,正确后软件部分完成。

然后进行原理图的制作,先打开protues软件,将所需要的元件找到放置好,调整合理,然后依次连上线。

将各个线进行网络编号。

完毕后,进行电气规则检查,检查正确后就可以加载汇编程序了。

打开工具栏中源代码项的添加源文件,选择编好的汇编程序。

这些都做好之后我们就可以进行软硬件的模拟仿真了,单击调试中的执行,进入仿真状态。

初始时,为了节约电能,LED上无任何显示,这时可以从键盘上输入5位数字进去,如不小心输入错误,可以按下删除键进行修改。

输完五位数字之后,按确认键。

如果密码正确,LED显示GOOD此时密码锁打开,若是输入错误,不做任何显示,进行二次重复输入,倘若连续三次输错,便会自动启动报警,以引起主人注意。

只有按下异地解除报警复位按钮方能解除报警。

以上是密码锁所具有的功能,如果满意的话这时我们就能按照原理图以及结合实际需要来进行实物的制作。

 

第6章设计总结

通过连续两周的课程设计,我学到了许多书本上无法学到的知识,也深刻体会到单片机技术应用领域的广泛。

不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。

本设计让我对专业知识有了更深的理解。

在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:

AT89C51单片机及其引脚说明、键盘扫描程序的编写等,为本次课程设计提供了一定的资料。

在做课程设计的初期阶段,难度较大。

在设计基本完成时密码的修改还是不能实现,通过求助于老师、查找了问题的所在。

最后经过指导老师的耐心指点和连续的奋战才基本设计出来。

感谢老师的无私的帮助!

本次设计我能独立完成,算是有了很大的收获。

不但对单片机有了更为深入的了解,对一个课题如何实现模拟仿真及编写汇编程序等,有了一定的认识。

进一步加强了自己的动手能力和运用专业知识的能力,从中学习到如何去思考和解决问题,以及如何灵活地改变方法去实现设计方案;特别是深刻体会到的是软件和硬件结合的重要性,以及两者的联系和配合作用。

同时明白了办事只要有信心,有毅力,找对方法,就会成功!

通过本次课程设计,让我了解到智能化技术对当今人们生活的重要性。

同时这次做课程设计的经历也使我受益匪浅。

让我知道做任何事情都应脚踏实地,刻苦努力地去做。

只有这样,才能做好。

在这次课程设计中,我既巩固了专业知识,又学到了在设计过程中的许多流程和该注意的事项,增强了电子产品开发的意识。

本次经历将是我在大学时期很好的一次实践和锻炼机会。

参考文献

[1]、《微型计算机原理及应用》许立梓编机械工业出版社2002

[2]、《微型计算机接口技术及应用》刘乐善编华中理工大学出版社2000

[3]、《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社2000

[4]、《16位微型计算机原理接口及其应用》周佩玲编中国科学技术大学出版社2000

[5]、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社2001

[6]、《微型计算机接口技术》邓亚平编清华大学出版社2001

[7]、《单片机原理及及应用》王迎旭编机械工业出版社2001

[8]、《单片机应用程序设计技术》周航慈著北京航空航天大学出版社

2002

[9]、《单片机实用技术问答》谢宜仁主编人民邮电出版社2002

附录A硬件原理图

 

附录B源程序清单

KEYOKBIT20H.0

NUM5BIT20H.1

NUM3BIT20H.2

NUM1BIT20H.3

LEDBITP3.6

BEEPBITP3.7

ORG0000H

SJMPMAIN

ORG000BH

;***********初始化**********

INIT:

MOVR6,#5

MOVR1,#40H

IN1:

MOV@R1,#16

INCR1

DJNZR6,IN1

MOVR3,#1

RET

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

;********主函数************

MAIN:

ACALLINIT

MOVR0,30H;R0作为按键值指针

MOVR1,40H;R1作为显示指针

M:

JNBNUM5,M0

ACALLDISP

M0:

JBNUM3,M1;密码是否输错三次了,如果输错三次就屏蔽按键输入

ACALLKEYSCAN

JBKEYOK,M3

SJMPM

M1:

JBKEYOK,M3;如果密码正确就转,错误就报警

MOVR5,#5

MOVR0,#40H

M2:

MOV@R0,#16

INCR0

DJNZR5,M2

MOVR3,#16

M22:

CPLLED

ACALLDISP

ACALLBBP

JNBP3.0,FUWEI;远程控制,报警后手动复位。

SJMPM22

M3:

MOV40H,#16;密码正确了,就显示GOOD

MOV41H,#09

MOV42H,#17

MOV43H,#17

MOV44H,#13

MOVR3,#16

MOVR0,#0FFH;设置GOOD显示时间

M6:

ACALLDISP;显示正确后,采用自动复位

ACALLDELAY

DJNZR0,M6

ACALLFUWEI

SJMPM6

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

;*********复位函数*********

FUWEI:

CLRKEYOK

SETBLED

CLRNUM3

SJMPMAIN

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

;********读取按键函数******

KEYSCAN:

MOVP2,#0F0H

MOVA,P2

CJNEA,#0F0H,KEYGO

RET

KEYGO:

ACALLDELAY;延时去抖动

MOVA,P2

CJNEA,#0F0H,KEYGO1

RET

KEYGO1:

MOVA,R4;赋地址值

ADDA,#30H

MOVR0,A

ADDA,#16

MOVR1,A

MOVA,P2

MOV@R0,A

MOVP2,#0FFH

MOVp2,#0FH

MOVA,P2

ORLA,@R0

MOV@R0,A

GO0:

MOVP2,0FFH

MOVA,P2

CJNEA,#00H,GO0;等待按键松开

DECR1

MOV@R1,#16

INCR1

INCR4;输入密码个数加1

SETBNUM5

MOVA,@R0;A作为传递参数

ACALLKEYCHU

MOVA,@R0

MOV@R1,A

RET

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

;********按键处理**********

KEYCHU:

MOVA,@R0

CJNEA,#0D7H,K1;0键

MOV@R0,#0

RET

K1:

CJNEA,#0EBH,K2;1键

MOV@R0,#1

RET

K2:

CJNEA,#0DBH,K3;2键

MOV@R0,#2

RET

K3:

CJNEA,#0BBH,K4;3键

MOV@R0,#3

RET

K4:

CJNEA,#0EDH,K5;4键

MOV@R0,#4

RET

K5:

CJNEA,#0DDH,K6;5键

MOV@R0,#5

RET

K6:

CJNEA,#0BDH,K7;6键

MOV@R0,#6

RET

K7:

CJNEA,#0EEH,K8;7键

MOV@R0,#7

RET

K8:

CJNEA,#0DEH,K9;8键

MOV@R0,#8

RET

K9:

CJNEA,#0BEH,K10;9键

MOV@R0,#9

RET

K10:

CJNEA,#0E7H,k11;10键

ACALLBIJIAO

k11:

CJNEA,#0B7H,RENT2;11键

ACALLDEL

RENT2:

RET

RET

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

;********删除************

DEL:

MOVR4,#0

MOVR6,#5

MOVR1,#40H

IN2:

MOV@R1,#16

INCR1

DJNZR6,IN2

MOVR0,30H

MOVR1,40H

LJMPM

RET

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

;********比较**************

BIJIAO:

MOVDPTR,#TAB1

MOVR6,#5

MOVR7,#0

MOVR0,#30H

B0:

MOVA,R7

MOVCA,@A+DPTR

MOV29H,A

MOVA,@R0

CJNEA,29H,RETT

INCR0

INCR7

DJNZR6,B0

SETBKEYOK

RETT:

MOVR5,#5

MOVR0,#30H

BJ2:

MOV@R0,#16

INCR0

DJNZR5,BJ2

CLRNUM5

MOVR4,#00H

INCR3;输入密码次数加1

CJNER3,#4H,RETT1

SETBNUM3;输入三次密码标志位

RETT1:

RET

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

;********报警声************

BBP:

MOVR5,#100

BB0:

CPLBEEP

ACALLDELAY2

DJNZR5,BB0

RET

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

;********显示**************

DISP:

MOVDPTR,#TAB0

MOVR1,#40H

MOVR2,#5

MOVR5,#01H

DI1:

MOVA,@R1

MOVCA,@A+DPTR

MOVP0,A

MOVA,R5

MOVP1,A

RLA

MOVR5,A

ACALLDELAY

MOVP1,#0

INCR1

DJNZR2,DI1

MOVA,R3

MOVCA,@A+DPTR

MOVP0,A

MOVP1,#00100000B

ACALLDELAY

MOVP1,#0

RET

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

;********延时**************

DELAY:

MOVR6,#5

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

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

;*******定时中断***********

DELAY2:

MOVR6,#5

D2:

MOVR7,#100

DJNZR7,$

DJNZR6,D2

RET

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

TAB0:

db0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H,88H,83H,0c6H,0a1H,86H,8eH,0BFH,0A3H,0ffH;A0H是消隐值

TAB1:

db1,2,3,4,5

END

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1