单片机课程设计智能密码锁.docx
《单片机课程设计智能密码锁.docx》由会员分享,可在线阅读,更多相关《单片机课程设计智能密码锁.docx(26页珍藏版)》请在冰豆网上搜索。
![单片机课程设计智能密码锁.docx](https://file1.bdocx.com/fileroot1/2023-1/3/1f1ea135-cf09-43a7-a37a-cde8a5a5b3e7/1f1ea135-cf09-43a7-a37a-cde8a5a5b3e71.gif)
单片机课程设计智能密码锁
湖南工程学院
课程设计
课程名称单片机原理与应用
课题名称智能密码锁设计
专业电子信息工程
班级0981班
学号200913020109
姓名刘维新
指导教师汪超、李晓秀、李世军等
2012年5月18日
湖南工程学院
课程设计任务书
课程名称单片机原理与应用
课题智能密码锁设计
专业班级电子信息0981班
学生姓名刘维新
学号200913020109
指导老师汪超、李晓秀、李世军等
审批
任务书下达日期2012年5月7日
任务完成日期2012年5月18日
设计内容与设计要求
设计内容:
1、密码的设定,此密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。
2、密码的输入:
采用两个按键来完成密码的输入,其中一个按键为功能键,另一个按键为数字键。
在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。
然后进入密码的判断比较处理状态并给出相应的处理过程。
3、按键禁止功能:
初始化时,允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态是在3次密码输入不正确的情况下发生的。
设计要求:
1、设计方案要合理、正确;
2、系统硬件设计及焊接制作;
3、系统软件设计及调试;
4、系统联调;
5、写出设计报告。
主要设计条件
1、MCS-51单片机实验操作台1台;
2、PC机及单片机调试软件;
3、单片机应用系统板1套;
4、制作工具1套;
5、系统设计所需的元器件。
说明书格式
1.封面
2.课程设计任务书
3.目录
4.系统总体方案设计
5.系统硬件设计
6.软件设计(包括流程图)
7.系统的安装调试说明
8、总结
9、参考文献
10、附录(源程序清单及硬件原理图等);
11、课程设计成绩评分表。
进度安排
设计时间为两周
第一周
星期一、上午:
布置课题任务,讲课及课题介绍
下午:
借阅有关资料,总体方案讨论
星期二、确定总体设计方案
星期三、硬件模块方案设计
星期四、软件模块方案设计
星期五、设计及调试
第二周
星期一、设计及调试
星期二、设计及调试
星期三、总调
星期四、写说明书
星期五、上午:
写说明书,整理资料
下午:
交设计资料,答辩
参考文献
[1]、《微型计算机原理及应用》许立梓编机械工业出版社2002
[2]、《微型计算机接口技术及应用》刘乐善编华中理工大学出版社2000
[3]、《计算机硬件技术基础试验教程》邹逢兴编高等教育出版社2000
[4]、《16位微型计算机原理接口及其应用》周佩玲编中国科学技术大学出版社
2000
[5]、《微型计算机原理与接口技术》吴秀清编中国科学技术出版社2001
[6]、《微型计算机接口技术》邓亚平编清华大学出版社2001
[7]、《单片机原理及及应用》王迎旭编机械工业出版社2001
[8]、《单片机应用程序设计技术》周航慈著北京航空航天大学出版社2002
[9]、《单片机实用技术问答》谢宜仁主编人民邮电出版社2002
第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