推荐六位数电子锁电路设计 精品.docx
- 文档编号:4372753
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:17
- 大小:629.58KB
推荐六位数电子锁电路设计 精品.docx
《推荐六位数电子锁电路设计 精品.docx》由会员分享,可在线阅读,更多相关《推荐六位数电子锁电路设计 精品.docx(17页珍藏版)》请在冰豆网上搜索。
推荐六位数电子锁电路设计精品
单
片
机
课
程
设
计
论
文
学校:
西安科技大学
学院:
电气与控制工程学院
专业:
微电子学
姓名:
朱善旭1206080205
王敏敏1206080202
王会登1206080216
王磊1206080124
六位数电子锁电路设计
摘要:
电子密码锁在生活中十分常见,广泛运用于各种控制电路中。
电子密码锁应该具有输入功能和比较功能,同时具有控制功能。
在本次设计中,密码锁的输入设备为4*3矩阵键盘,其中包括0——9数字键,确认、清除功能键。
比较功能在单片机内部程序中实现,将输入数字与预设密码比较,相同则触发控制功能,比如设备的开启,不同则清零,用户需要重新输入。
为了用户方便使用,在输入时需要将所输入数字显示出来,所以利用数码管做显示设备。
关键词:
密码锁,矩阵键盘,扫描,数码管
1设计任务分析
1.1原理
电子锁,就是利用一个固定的或人为设定的电子号码来控制锁的开启状态的电路。
我们常见的电子锁,如密码箱、保险柜、密码门等,都是在使用者输入的号码与之前设定的号码顺序及内容均相同时,电路控制的锁或者门等就会开启。
由于电子锁要求的输出数据为数字0-9,同时为了方便使用者的输入、修改和确定,还应该有输入的清除按键和确认按键。
1.1.1键盘控制的一般方法
在单片机的输入设备中,键盘是最为常见的一种。
它有多种形式,有独立按键式、矩阵键盘式等。
矩阵按键式键盘就是用行列矩阵的方式来构成键盘的一种控制方式。
行线与列线分别可由单片机的控制I/O引脚和电源的Vcc(也可是GND)来连接,行线与列线的交汇点上连接有按键。
当按键有动作时,相应点上行与列的电平就导通。
若此时用单片机程序来检测,就可发现相应引脚上的电平发生了变化。
对于键盘的控制是有多种方法的。
(1)独立式按键
这种方式是采用JNB或JB指令来实现检测的目的。
(2)键盘扫描法
这种方式是将行线与列线分别与单片机的引脚相连,然后在初始程序中令其中的行(列)所在的引脚电平为低电平。
之后,再不断地同时检测行与列所对应的引脚状态。
当某个位置有按键动作时,相应行与列的引脚状态就会发生变化,系统从而获知有按键的动作。
这种方式有时也可进行一定的变化,比如,用行(或列)线通过限流电阻与电源正极或负极相连,然后将列(或行)线与单片机的引脚相连,这样,在程序中就只需检测列线上的电平状态即可。
(3)键盘中断法
这种方法是利用中断来使单片机系统响应按键的动作,从而使系统在无按键动作时,可以进行其他的操作。
比如四根列线与电源的正极和单片机I/O引脚相连并通过一个与门连接到单片机INT0中断引脚,行线与单片机I/O引脚相连,在初始程序中使行线连接引脚为低电平。
这样,当某一位置有按键动作时,相应列线上就会出现低电平,从而使的INT0引脚上有低电平输入,这就可以触发INT0中断。
然后系统就可以在中断服务子程序中去具体检测是哪一根行列点上的按键有动作了。
在本次设计中,选用键盘扫描法来控制键盘。
1.1.2键盘扫描的一般设置步骤
当需要的按键数量较多时,通常使用矩阵式键盘来作为输入的按键方式。
同时,在功能比较简单的系统中,用处都是采用键盘扫描的方式来控制键盘。
例如一个3*3矩阵键盘,使用P1.2~P1.0和P1.7~P1.5分别控制键盘的行线和列线。
可以先编写一个键盘码的数据表TABLE,这个表的数据与图中标明的按键所代表的含义应当相同。
比如图中,9个按键分别指代1~9的数字键。
因此,可以令TABLE表中的数据为01H,02H,03H,04H,05H,06H,07H,08H,09H。
然后,在程序的初始化中,可以定义P1端口引脚的状态初值,其中P1.2=0。
之后,令P1数据依次左移,以便检测到列线P1.7-P1.5的状态。
列线状态检测完毕后,再将P1数据依次右移来检测行线上的P1.2-P1.0的状态。
当检测到有按键信息时,就利用计数指针到TABLE表中去取数据码,从而指示程序做相应的操作。
当然,键盘扫描的方法和应用步骤实际上还有很多种,在此不一一例举。
1.2具体任务分析
本次设计实验就是要设计一个6位数的电子号码锁。
要求有0-9数字按键、清除数字的按键“#”和输入完成后的确认按键“*”。
同时正确的6位数电子密码是在程序中就已经指定好了的,在程序执行时,只需去比较即可。
另外,为了简化设计,本设计中的电子密码被固定设置为161225,而且它在程序运行过程中不可被人为修改设定。
各按键的定义为:
①当按数字0-9时,数码管中应当有相应的显示,而且显示的数字应根据按键的先后在具体的位置上显示。
②当清除数字的按键“#”有动作时,当前数码管显示的最右边一位应当被清空不再显示数字;同时,当再有数字被输入时,之前清空的数码管上应当显示这个输入的数字。
③当输入完成后的确认按键“*”有动作时,所有在数码管上被显示的数字应当与系统定义的正确电子密码相比较,若完全相同,则电路控制的锁打开;若不相同,则清空数码管上显示的数字,等待重新输入数字。
2电路设计
根据前面的设计任务要求,电路中应当有12个按键(0—9数字按键、清除数字的按键“#”和输入完成后的确认按键“*”),有六位数显示的数码管、电子锁的模拟应用电路等基本单元模块。
电路中的按键,采用矩阵式键盘来完成设计任务。
用P0.7—P0.5以及P0.3—P0.0分别控制键盘的行线和列线。
数码管显示是运用6个七段数码管,用单片机P0端口的P1.0—P1.3来显示输送的数据,用P1.4—P1.6来输送控制显示位数译码的数据。
电路中,P2.0接一个发光二极管,这是模拟电子号码锁的控制开启装置。
当有正确的按键之后,发光二极管就会被点亮。
从而可以模拟电子锁的开启。
本次设计的实验电路如图2.1所示。
图2.16位数电子锁实验电路
3程序设计
3.1程序流程
在本次设计实验中,由于所要实现的设计功能比较简单,因此可以将主程序用于检测按键的状态以及修改对应数据寄存器值这些操作。
另外,还应设计按键处理子程序,显示子程序和比较子程序。
首先,在按键处理子程序中,应将主程序中检测到的按键信息与数字键以及“#”和“*”两按键值比较,若是数字键,则将数字存入数据寄存单元并显示;若非数字键“#”或者“*”,则转去修改显示数据寄存器的数值或者是启动最终的比较子程序去执行。
其次显示子程序中,系统应将输入到数据寄存器中的数字数据与程序中设定的密码数字逐个相比较,当比较完全一致时,就启动电子锁开启(即使P2.0输出高电平)。
程序设计的流程图如图3.1所示。
图3.16位数电子锁程序设计流程图
3.2源程序清单
见附录Ⅰ。
4实验结果
4.1PROTUES仿真结果
仿真开始,六个数码管显示数字为0,如图4.1所示。
图4.1电路仿真结果1
按键输入密码值“161225”后,数码管上显示的密码值“161225”。
如图4.2所示。
图4.2电路仿真结果2
密码输入完成,按“*”键开始检测。
与程序中预设密码相同,P2.0输出高电平,所连发光二极管点亮。
如图4.3所示。
图4.3电路仿真结果3
4.2实际电路实验结果
开启电源,六个数码管显示为0,如图4.4所示。
图4.4实际电路仿真结果1
输入密码161225,如图4.5所示。
图4.5实际电路仿真结果2
密码输入完成,按“*”键,P2.0所连发光二极管点亮,表示密码输入正确。
如图4.6所示。
图4.6实际电路仿真结果3
参考文献:
[1]肖婧,单片机入门与趣味实验设计[M].北京,北京航空航天大学出版社.20XX年4月
[2]柴钰,单片机原理及应用[M].西安,西安电子科技大学出版社.20XX年2月
设计心得体会
两周的单片机课程设计结束了,这次课程设计让我受益匪浅。
作为一名微电子学专业的大三学生,我觉得做课程设计是十分有意义的,而且是十分必要的。
在已度过的大学时间里,我们大多数接触的是专业课。
我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?
如何把我们所学的专业基础课理论知识运用到实践中去呢?
我想做类似的课程设计就为我们提供了良好的实践平台。
我们做的题目是密码锁,即通过比较键盘按键与设定密码值,来确定密码是否正确,密码正确即通过P2.0点亮二极管,同时将按键值显示在数码管上。
实习中遇到了很多困难,程序就修改了七八次之多。
起始地址要设为0000H,初始值设置的重要性以及流程方面的修正等等都进行了修改。
当程序在软件上仿真正确的时候,自己兴奋的感觉是难以名状的。
理想的仿真环境中程序运行成功了,但是实际中还是出了不少问题。
首先,74LS47只能驱动共阳极数码管,74LS48只能驱动共阴极数码管,74LS138输出为低电平,所以如果选用74lLS138作数码管的位选,只能选用共阴极数码管以及和它配套的74LS48。
然后,有的数码管亮度较低,可以采用增大那个数码管显示延时的方法增大其亮度。
这次实习让我受益匪浅,无论从知识上还是其他的各个方面。
上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。
但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。
在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。
团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。
我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。
单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。
尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。
最后感谢老师对我们的精心指导和帮助,感谢同学们对我的帮助。
——朱善旭
1206080205
时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机综合课程设计也在两周内完成了。
俗话说“好的开始是成功的一半”。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。
其次,对实验要一丝不苟的去想去做,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
最后,要重视程序的模块化,修改方便,也要注重程序的调试,掌握其方法。
硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。
比如,程序首地址一般应为0030H,所用地址、I/O口等初始化时一般置零等。
第二,是在学习态度上,这次课设是对我的学习态度的一次检验。
对于这次单片机课程设计,我的第一大心得体会就是作为一名学生,要求具备的首要素质绝对应该是严谨。
我们这次课程设计所遇到的多半问题多数都是由于我们不够严谨。
比如74LS47芯片只能驱动共阳级数码管,这在准备阶段我就应该去了解。
第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。
通过题目选择和设计电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。
在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。
还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。
并且我们熟练掌握了有关器件的性能及测试方法。
同时
在此感谢老师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。
课程设计时间虽然很短,但我学习了很多的东西,使我眼界打开,感受颇深。
通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
我觉得作为一名自动化专业的学生,单片机的课程设计是很有意义的。
更重要的是如何把自己平时所学的东西应用到实际中。
虽然自己对于这门课学习不够深入,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这两个礼拜的“学习”,在小组同学的帮助和讲解下,渐渐对这门课更深的理解,自己逐步学习复杂的层面。
我认为这个收获应该说是相当大的。
觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。
小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。
——王敏敏
1206080202
经过了2个周的单片机实习,我成功设计完成了所涉及的项目,在这个过程中,我们将学习到的许多知识实践设计中,同时通过在实习中了解到课本上所没有接触涉及的问题,对此我对于本次实习感到无比庆幸。
本次实习我们小组共有4人,而我所负责的内容是硬件的焊接调试,由于是初次设计,我们在这个过程中碰了壁。
在设计起初阶段是键盘的连接问题,按键的导通和关断原理,有无电源接入都是我们开始未考虑到的,在51单片机这块,键盘通过p0口输出,我测得P0口的电压不正常,电压较低无法驱动,最后我们发现问题,在p0接上拉电阻解决了问题。
我们使用的138译码器作为位选74SL48作为数据传送来控制数码管的显示,在这个过程中,我们尝试改变数码管的类型即阳极换成阴极,换阻值较小的电阻,将47芯片换成48芯片,一次一次的调试最终实现了数码管的显示。
当我以为我完全了解了所有关于设计的问题时,老师在验收时又给了我提出了新的问题,我才明白学无止尽,任何东西我们都要仔细的了解它的原理。
让我感到自豪的是在实习过程中,我没有因为困难而放弃,而是虚心听取建议,仔细观察切身体验,并努力的解决这些问题,坚持要做就做到最好的原则,有一种平和的心态和不耻下问的精神。
当然在实习中我也有不足之处,在处理问题方面只求解决这些问题,而并没有深刻的去研究为什么,它的原理是什么,这是我们在学习上的大忌,对此这是我在这次实习中深刻的体会,在接下来的学习工作中改变这种不好的心态,严学严警。
当成功的完成设计,我体会到了收获的乐趣,这是我亲身感受到了所学知识于实际的应用结合,对与我们以后工作学习有着不可与、言语的好处,不仅仅如此,在设计中遇到问题,和小组成员一起交流讨论,也让我懂的做人做事的道理,处理人际交往的方法,培养了自己各方面素质,对此我对实习领导我们的老师,合作的同学表示由衷的感谢,让我在实习中学习到许多东西!
——王会登
1206080216
两周的实习一转眼就过去了!
虽然很,但是我学到的知识却是一个学期的理论学习所不能代替的。
在实习中我完成了4x4键盘以及6位数码管显示构成的电子密码锁的焊接与电路板的排版。
通过两周我们的努力,基本上达到了预期的功能,密码的输入,清零,密码的保存和错误提示。
本次设计我们四位成员一起计划、讨论、实践。
但由于本人基础知识掌握的不够牢固,在设计中发挥有限,但我抱着学习的态度积极参与,从中也学到了很多理论与实践的知识,比如LED数码管如何通过MCS-52单片机实现控制的、焊接时应该注意的常识、元器件的合理布局等等。
当然在设计过程中也难免遇到各种各样的难题,但有老师的耐心讲解与帮助,基本上能得以解决。
在设计中我们遇到了P0口输出的电压不够;数码管的选择,是共阳还是共阴的;还有数码管的亮度不一样等问题。
都在老师的指导下我们得以解决。
经过这次课程设计,让我明白了理论学习与实践之间的巨大差异,要想实现具体的内容就必须以正确的理论知识为指导,只具备纯粹的理论知识也是不够的,因为在实践实现的过程中的不定干扰因素太多,实践起来会出现不少的问题你,在提出问题和解决问题的过程中,给我的学习带来了深刻的印象和影响。
通过这次课程设计,我最大的收获就是:
不懂就问,多问多得。
因为之前没有相应的学习和训练,所以遇到不懂得问题特别多,这时如果单靠自己查资料,效率是极低。
我经常想我的成员提问,他们帮我解决了一些问题,同时我也请教老师,听他的意见,问题大多都能得到有效解决。
同时老师也给我留下一些探讨性的问题,让我独自解决,后来在自己查阅资料中得到解决。
这让我对问题有了更深的认识和学到了更多的知识。
在向他人问的过程中,也是我学习的过程,问的越多,收获越多。
——王磊
1206080124
附录一
程序清单
ORG0000H
START:
MOVP2,#00H;清除P2中的数据
LCALLCLEAR1;调用清除显示寄存器30H~35H单元内容子程序
L1:
MOVR3,#0F7H;扫描初值设定,令P0.3=0
MOVR1,#00H;键盘取吗指针
L2:
MOVA,R3;开始扫描
MOVP0,A;将扫描初值输出的到P0
MOVA,P0;读入P0的值,判断是否有按键
MOVR4,A;将检测的按键状态存入R4,以便后面判断是否已放开
SETBC;令C=1
MOVR5,#03H;设置后面键盘扫描的列线
L3:
RLCA;将检测的按键信息左移一位
JNCKEYIN;判断是否C=0若C=0,则转到按键处理子程序
INCR1;C=1,表示没有按键,取码指针加1
DJNZR5,l3;判断键盘列是否已扫描完,没完就继续
LCALLDISP;调用显示子程序
MOVA,R3;扫描值载入
SETBC;令C=1
RRCA;列扫描完的值右移,扫描行状态
MOVR3,A;检测的按键信息存入R3
JCL2;C=1,是则P0.0没有被扫描到
JMPL1;C=0,4行已扫描完毕,返回重新扫描
KEYIN:
MOVR7,#60;延时30ms,消除抖动
D2:
MOVR6,#248
DJNZR6,$
DJNZR7,D2
D3:
MOVA,P0;读入P0的值
XRLA,R4;与上次读入值比较
JZD3;相同就表示按键没有放开
MOVA,R1;按键已经放开,取码指针载入累加器
MOVDPTR,#TABLE;数据指针指到表TABLE
MOVCA,@A+DPTR;到TABLE取按键码
MOVR7,A;取到的按键码暂存于R7
XRLA,#0AH;看按键码是否为"*"
JZP;是,就去比较密码
MOVA,R7;不是,就再检测判断
XRLA,#0BH;看按键码是否为"#"
JZSTART;是,就返回清除显示
MOVA,R7;不是,按键为数字键
XCHA,30H;将按键数字存入30H单元
XCHA,31H;将原来的30H与31H单元内容互换
XCHA,32H;将原来的31H与32H单元内容互换
XCHA,33H;将原来的32H与33H单元内容互换
XCHA,34H;将原来的33H与34H单元内容互换
XCHA,35H;将原来的34H与35H单元内容互换
LCALLDISP;调用显示子程序
JMPL1
DISP:
MOVA,35H
ADDA,#50H;D6数据值加上扫描显示值
MOVP1,A;D6数码管显示数据
LCALLDELAY;扫描延时5ms
MOVA,34H
ADDA,#40H;D5数据值加上扫描显示值
MOVP1,A;D5数码管显示数据
LCALLDELAY;扫描延时5ms
MOVA,33H
ADDA,#30H;D4数据值加上扫描显示值
MOVP1,A;D4数码管显示数据
LCALLDELAY;扫描延时5ms
MOVA,32H
ADDA,#20H;D3数据值加上扫描显示值
MOVP1,A;D3数码管显示数据
LCALLDELAY;扫描延时5ms
MOVA,31H
ADDA,#10H;D2数据值加上扫描显示值
MOVP1,A;D2数码管显示数据
LCALLDELAY;扫描延时5ms
MOVA,30H
ADDA,#00H;D1数据值加上扫描显示值
MOVP1,A;D1数码管显示数据
LCALLDELAY;扫描延时5ms
RET
P:
MOVR0,#35H
MOVR2,#06H;比较6个码
MOVR7,#12;密码在TABLE的指针值
X4:
MOVA,R7
MOVDPTR,#TABLE;数据指针到表TABLE
MOVCA,@A+DPTR;到TABLE取密码值
XRLA,@R0;与显示的值相比较
JNZX7;不同,就回到开始处清楚显示
DECR0;相同,就比较下一个码
INCR7
DJNZR2,X4;6个码还没有比较完,就继续比较
SETBP2.0;令电子锁开启,即令P2.0=1
MOV30H,#00H;将30H~35H单元清零
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
LCALLDISP;调用显示子程序
MOVR5,#20;延时2s
X:
MOVR2,#200
X6:
MOVR6,#248
DJNZR6,$
DJNZR2,X6
DJNZR5,X
X7:
LJMPSTART
DELAY:
MOVR7,#10;显示器扫描延时5ms
D1:
MOVR6,#248
DJNZR6,$
DJNZR7,D1
RET
CLEAR1:
MOVR4,#06H;清除显示寄存器30H~35H单元内容子程序
MOVR0,#30H
CLEAR:
MOV@R0,#00H
INCR0
DJNZR4,CLEAR
RET
TABLE:
DB01H,02H,03H;键盘码
DB04H,05H,06H
DB07H,08H,09H
DB0AH,00H,0BH
DB01H,06H,01H,02H,02H,05H;密码值
END
附录二器件清单:
元件名称型号
数量
89C52单片机
1
74LS48
1
74LS138
1
共阴极数码管
6
12MHz晶振
1
30pF电容
2
10uF电容
1
电源接口
1
电阻200Ω
4
排阻
1
附录三:
电路原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 推荐六位数电子锁电路设计 精品 推荐 位数 电子锁 电路设计