电子密码门锁设计Word文件下载.docx
《电子密码门锁设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《电子密码门锁设计Word文件下载.docx(34页珍藏版)》请在冰豆网上搜索。
5.扬声器完成报警。
2、功能实现
2.1硬件连线
根据前面的分析以及器件功能分配,进行硬件连线
地址:
可编程并行I/O口接口芯片8255A接300H
可编程定时/计数器8254接320H
中断控制器8259A接340H
接线:
1.可编程定时/计数器8254计数器0CLK接频率信号47KHZ,GATE接+5V,OUT接计数器
1的CLK
2.可编程定时/计数器8254计数器1CLK接计数器0的OUT口,GATE接+5V,OUT接8259IRQ0
3.可编程定时/计数器8254计数器2CLK接频率信号3MHZ,GATE接+5V,OUT接扬声器信号输入端
4.扩展可编程并行I/O口接口芯片8255AA口接LED段选,B口接LED位选,C口高四位接键盘列信号,低四位接键盘行信号
5.中断控制器8259(A)INT1接INTR,SP/1接+5V,IRQ0接8254计数器1OUT
6.扬声器器电源接+5V,地接GND,信号接8254计数器2OUT
硬件连线图如图2.1.1:
图2.1.1硬件连接图
2.2软件设计
经过分析,电子密码门锁设计程序分两大部分。
其一,开门功能程序,流程图如图2.2.1;
其二,修改密码程序,流程图如图2.2.2。
使用可编程并行I/O口接口芯片8255A控制8段共阴极LED显示提示信息和输入的密码并且控制键盘扫描;
使用可编程定时/计数器8254完成计时5S和扬声器信号生成;
使用中断控制器8259A控制计时5S后完成自动关门功能,使用三色LED提示错误。
图2.2.1开门程序流程图图2.2.2设置程序流程图
3使用说明
3.1功能及显示说明
1.系统初始密码为000000(密码只能是6位)
2.密码可以由0~9abc组成
3.开门5S后,自动返回关门状态
4.关门状态开门功能显示为:
CL----E.O
5.开门状态开门功能显示为:
OP----E.O
6.关门状态设置功能显示为:
CL----E.S
7.提醒输入密码显示为:
PS----rd
8.提醒修改密码显示为:
CH-----E
9.提示密码错误显示为:
Err---Or
10.密码错误三色LED显示为:
EFEFEFEF(红色)
11.错误三次三色LED显示为:
EFEFEFEF(红绿交替)
3.2操作说明
1.A键---待机界面时进入开门功能
2.B键---待机界面时进入设置功能
3.D键---清除键,输入密码时,按下可消除当前数字
4.E键---返回键,输入密码时,按下可返回重新输入;
输入新密码后,按下返回键可取消输入返回关门状态;
提示密码错误,需按返回键重新输入;
报警后,需按返回键返回关门状态;
开门后,按下返回键返回关门状态
5.F键---确定键,显示提醒时,需按确定键继续;
输入密码后,按确认键确认
4结果显示
在实验板上结果显示
根据题目的要求,通过调试运行程序,得到了各种情况如下:
(1)关门状态如下图4.1.1
图4.1.1关门状态显示情况
(2)输入密码状态显示,结果如图4.1.2
图4.1.2输入密码状态显示情况
(3)开门状态显示,结果如图4.1.3
图4.1.3开门状态显示
(4)改密码界面显示,结果如图4.1.4
图4.1.4改密码界面显示
(5)扬声器,结果如图4.1.5
图4.1.5扬声器
(6)总体结构显示,结果如图4.1.6
图4.1.6总体结构的显示
5组员分工
何维:
流程图的绘制、主程序的编写、程序的调试和报告的修改
陈宇:
密码检测子程序的编写、扬声器电路设计与焊接和电路图绘制
徐裕钦:
显示嵌套键盘扫描子程序的编写、程序调试和报告的撰写
余守印:
键特征值转化为段代码和延时程序的编写、程序调试和扬声器电路焊接
6心得体会
6.1何维(20114948)的心得体会:
这次课程设计的任务好几个都是关于音乐的,作为一个音乐盲很担心抽到关于音乐的任务。
我最想抽到的是无声电子琴,因为觉得无声电子琴比较好做。
还好,我们小组拿到的设计题目是电子密码门锁设计。
该设计的主要内容是以扬声器作为发声装置,以4*4键盘作为功能按键,根据预设密码对门锁实现安全控制。
只有密码完全符合时才能开门,密码不符合时控制扬声器发声报警。
拿到题目后,我和组员们讨论,明确了每位组员的详细分工。
而我主要负责流程图的绘制和主要程序的编写。
第二天一早,我就到自习室研究题目并理解题目要求,并绘制了较为详细的流程图。
根据题意,该设计需要有两个大分支。
其一是要进入开门功能,按下开门键(A键),通过LED提示输入密码,密码正确则开门,按下返回键(E键)返回或者5S后自动返回,密码错误则提示错误,并要求重新输入,连续错误三次后提示错误并扬声器报警。
分支二是要进入设置功能,按下设置键(B键),通过LED提示输入密码,密码正确则提示输入新的密码,密码错误则同开门时密码错误处理相同,输入新密码时可以按下返回键(E键)取消修改。
理清楚了流程,便开始程序撰写。
在这其中我遇到了一些问题,最困难的就是扩展8255给LED送段选的时候,如何又去扫描键盘。
经过思考,我选择用拨动开关作为中断信号,在中断程序中改变显示程序标志符,跳出显示后让LED显示横杆,然后CPU开始扫描键盘。
我认为这样做很简单,程序也可以很稳定的运行。
整个程序就按着这个思路编写完成了。
后来想到,正规的密码锁不会再外加一个可拨动开关,而且设计题目要求是用键盘完成功能键。
于是我又删除掉原来的不符合程序重新编写。
经过思考,我发现我忽略了CPU的运行速度。
按照人的思维,X86不能多线程运行只能做一件事,所以就不能同时完成显示和扫描。
但是,当CPU运行速度很快时,把键盘扫描程序嵌入显示程序一样可以完成,只需要每次段选的时候都扫描全键盘一次。
经过修改,最终的程序完全符合设计要求。
通过这次课程设计,我更加深刻的理解了X86指令集,能更加熟练的使用8255计时、计数和产生频率方波,使用8259控制中断和使用8255进行功能扩展。
在对CISC更加熟悉的同时,我对RISC指令集也产生了更加浓厚的兴趣。
6.2陈宇(20104978)心得体会:
本次课程设计为期两周,中间再排除中秋放假的话,其实也只有差不多九天的时间,通过本次课程设计,我感觉不仅提高了我的专业技能,同时也提高了自己的团队协作能力。
此次的课程设计我们小组共有四个人,我们的题目是电子密码门锁的设计。
在我们组组长的带领下,我们成功的完成了课程设计,实现了要求的功能。
现将本次课程设计的大概过程和心得体会总结如下:
首先,我们小组成员就课程设计的流程做了一下讨论。
由于这个课题的内容相对来说比较简单,所以我们的基本思路也差不多,只是在某些很小的地方有不同的见解。
在讨论完后,我们就迅速的分好工,然后各自努力搞好自己那部分的同时也有互相协助,这样使得课程设计的进度比较迅速。
我所分到的部分是密码门锁在输错三次密码时会报警的报警装置的硬件设计,我们所用到的报警装置比较简单,就是一个扬声器,在连续输错三次密码时,就会由内部程序产生报警指令,通过硬件产生电信号,该电信号再使扬声器发生报警。
这就是我们所要设计的简易报警装置。
在领到扬声器后,考虑到实验箱硬件所产生的电信号比较微弱,该电信号不足以驱动扬声器发声,所以我想到了利用三极管将该电信号进行放大,刚开始只使用了一只三极管,但是放大效果不太理想,放大的倍数不够,于是想到了利用2个三极管级联做成一个2级放大电路,适当提高对电信号的放大倍数,使之足以能够驱动扬声器发声,达到报警效果。
但在设计电路时,对2级放大电路的放大倍数已经比较模糊了,于是回顾了一下曾经学过的模电知识,确定了一下上拉电阻的阻值如何设置能达到所需放大倍数。
在确定好要注意的地方之后,开始用领来的器材进行外扩硬件电路的焊接,在焊接过程中也使得自己的焊接技术又有了一些提升。
但是,焊好的报警装置拿去测试时却不能发出声音,经检查发现,有两个地方没有连接,再次焊接好之后测试能够发声,外扩硬件电路设计成功,但是同时也提醒了我工作还需更加细心。
我的另一部分工作就是全局电路图的绘制,在程序编写好并测试无问题后,我根据实物连线利用Proteus对全局电路进行了绘制,虽然绘制全局电路时由于对软件的不够熟悉,使得绘制过程很是辛苦,但是,通过这次绘制全局电路,让我对Proteus的熟悉程度有所增加。
总的来说,这次课程设计使我们熟悉了以前学过的知识,也是我们逐渐的掌握了一些思考方法以及提升了部分技能,同时,团队协作能力也得到了提升,收获不小,也让自己对未来增加了一些自信心。
6.3徐裕钦(20114944)的心得体会:
这次课程设计开始,黄勤老师给我们详细的讲了许多,包括8个课题的详细设计要求和一些具体的指导,我真的非常喜欢并且欣赏这些老师们对于学生认真负责的态度,我也很感谢老师对于我们整个课设的指导。
在这次课程设计的开始,我们组就进行了分工,我主要负责,键盘密码输入这块的子程序编写和报告的撰写。
由于对于编程有了一些生疏,我看了队友的流程图和电子硬件电路图,受到了很大的启发。
在键盘的先送段选,再送位选后找到键特征值,输出数字这方面,一开始遇到了很多困难,因为逻辑比较复杂。
但是后来我经常问虚心的求教别人,终于完成了这一部分的设计。
由于是一个小组的课题,这考验了我们每个人的分工合作能力和团队合作的能力,其实说到这常常带着一些伤感,因为这些事情我们以后不会再做了,可能,和不同的人做,但是同学的之间的友谊却是长久存在的。
我并不在乎这个课题有多难或是多简单,而是大家一起相办法努力完成任务的过程,因为我们以后永远不会再一起做这样的课题了,大四就是这样子,让人充满伤感,但是大家却又心有灵犀的保持沉默,因为我们又有各自人生的路要走。
这次的课程设计我对为指令的设计和流程都有了更深的理解,进一步熟悉了计算机硬件技术原理的基本知识,同时也加深了解了模块化程序设计的基本过程,掌握了一些基本的软硬件设计知识并对其进行了基本的运用,在模块化程序设计中运用了很多知识,以及几块芯片8255、8254、8259来实现计数器、定时器、查询的功能等,即实现了对以往所学内容的复习,也让自己更加对他们的实际运用能力得到了增强,使自己比以前的动手能力与对课题的思考能力得到了增强。
通过实践,提高了我的实际操作能力,从以前所学理论上升到实践,真正做到了学有所用,同时也认识到了自己的不足之处,对转移指令、芯片工作方式等都不是很熟悉,但是自己受益匪浅。
课程设计可以体现出团队合作程度,紧密合作加上明确分工,,能够大大地提高设计速度,在动手设计之前,最好将设计所需要的数据,程序准备好,为了判断设计结果是否正确,有必要在准备阶段计算理论值。
仔细分析指令的每一位,以及理清思路,在设计时做到胸有成竹。
6.4余守印(20114942)的心得体会:
为期两周的实习,终于结束了,收尾之际,感慨良多。
似乎任何过程痛苦的事,在认真完成之后再回头看,反而变得十分美好。
人生有时显得这样荒诞不经,痛苦的东西,成为回忆之后,反而显得难得可贵。
以至于,人会怀恋枯燥,怀恋焦头烂额,怀恋疲惫不堪,却依然努力的时光。
具体的说来,当初学硬件,因为初学,没有方法,没有方向,经常摸不着头脑。
那会儿没有体系的学习,实在走了不少弯路,也没打好扎实的基础。
经过这次的计算机硬件实习,好好地回忆了具体的内容,不尽整体把握了一番,还应用到了实际上。
说实话,硬件学了一半的时候,我都不知道,硬件到底是什么,用来做什么,怎样实现。
当理论和实际发生隔阂,不知道怎样讲学的枯燥无味了理论知识融入实际中,这种学习当然会十分苦恼,以至于学习激情大打折扣。
反而这次实习,一个简单的密码锁的设计和编程,恰恰让我对这门课有了新的认识。
密码锁这个东西,生活里常有,手机啊,防盗门啊等等。
以前接触一个防盗门,无疑会好奇怎样实现。
初中的高中的知识,对于实际都是很少能直接应用的。
大学学了那么多,而我才知道,学了一年的东西,能解决什么,应用于什么,即使是一个很小的东西,至少会让我明白,我学得是有用的。
我想这些再次想来,既是幸运的,也是可悲的吧。
接过这个课程设计的主题后,我们小组经过协商合作分工,良好的实现了预期要求,并扩展了部分功能。
我完成了延时子程序和按键的段代码表示功能的实现,以及参与了硬件线路的设计和焊接。
我很高兴,因为这些工作让我受益良多,提升了我的理论联系实际的分析能力和动手能力,也让我在工作中获得成就感。
和同学的合作,拉近了彼此的距离,也深化了我们的友谊。
所以,很感谢老师的指导,很感谢同组的成员,我为这个team感到骄傲!
谢谢。
7参考文献
[1]仰天怡,邓亚平,黄勤《计算机硬件技术基础》重庆大学出版社,2002
[2]黄勤,高富强,杨天怡《计算机硬件技术基础实验教程》重庆大学出版社,2002
8程序清单
8.1主函数
.486
CODESEGMENTUSE16
ASSUMECS:
CODE
ORG1000H
BEGIN:
JMPSTART
SHOWOPEN1DB3FH,73H,40H,40H,40H,40H,0F9H,3FH;
开门状态,开门功能
SHOWCLOSE1DB39H,38H,40H,40H,40H,40H,0F9H,3FH;
关门状态,开门功能
SHOWCLOSE2DB39H,38H,40H,40H,40H,40H,0F9H,6DH;
关门状态,设置功能
SHOWINPUTDB73H,6DH,40H,40H,40H,40H,31H,5EH;
显示输入密码
SHOWCHANGEDB39H,76H,40H,40H,40H,40H,40H,79H;
显示修改密码
SHOWERRORDB79H,31H,31H,40H,40H,40H,3FH,31H;
显示错误
SHOWSTOPDB40H,40H,40H,40H,40H,40H,40H,40H;
显示横杠
INPUTWATDB40H,40H,40H,40H,40H,40H,40H,40H;
输入密码暂存
PASSWORDDB3FH,3FH,3FH,3FH,3FH,3FH,40H,40H;
密码储存
PASSWORD1DB3FH,3FH,3FH,3FH,3FH,3FH,40H,40H;
密码备份
PASSNUMDB6;
输入密码计数标志
CHECKFDB0;
密码检测标志
ERRORNUMDB3;
错误计数
OTCOUTDB0;
开门后关门程序跳出标志
KEYZHIDB0
;
**********************************************************主程序开始
START:
LEASI,INPUTWAT
CALLCLR;
清除输入密码存储单元
MOVDX,20CH;
四片8255初始化
MOVEAX,80808080H
OUTDX,EAX
MOVDX,30CH;
扩展8255控制字,AB输出,C高出低入
MOVAL,81H
OUTDX,AL
MOVDX,32CH;
8254计数器0初始化工作在方式2下
MOVAL,34H
8254计数器1初始化工作在方式0下与计数器0级联计时5S
MOVAL,50H
8245计数器2初始化
MOVAL,10110110B
OUTDX,AL
MOVDX,340H;
初始化8259写ICW1
MOVAL,000010011B
MOVDX,348H;
写ICW2中断类型号为40H~47H
MOVAL,40H
写ICW4
MOVAL,01H
写OCW1,开放所有IR
MOVAL,00H
CLI
MOVAX,0;
填开门后关门跳出中断向量
MOVDS,AX
MOVBX,4*40H
MOVAX,OFFSETINTOTCOUT
MOV[BX],AX
MOVAX,SEGINTOTCOUT
MOV[BX+2],AX
SHOWSTATE:
LEABX,SHOWCLOSE1;
显示当前状态,按下A键为进入开门功能,按下B键为进入设置功能
CALLSHOWANDKEY
CMPCL,0BBH
JZOPENDOOR
CMPCL,0B7H
JZSETTING
JMPSHOWSTATE
8.2开门功能程序段
;
**********************************************************开门功能程序
OPENDOOR:
;
SHOWINP:
LEABX,SHOWINPUT;
显示输入密码提示,按下F确认
CALLSHOWANDKEY
CMPCL,77H
JNZSHOWINP
PAA:
CALLCLR
CALLSHOWHENG
PA0:
MOVPASSNUM,06H;
输入密码,按下D键可以消除上一次输入,按下E键可以重新输入,输入完成后按下F键确认
LEASI,INPUTWAT
PAL:
LEABX,INPUTWAT
CMPCL,7BH
JZPAA
JZPAL
CMPCL,7DH
JMPPA
PASSN:
LEABX,INPUTWAT
JZPASSN
JNZPA
PA4:
DECSI
INCPASSNUM
CMPSI,BX
MOVBYTEPTR[SI],40H
JZPA0
JMPPASSN
PA:
CALLKEYTOSHOW
INCSI
DECPASSNUM
JNZPASSN
PA3:
JZPA4
JZPA2
JMPPA3
PA2:
MOVPASSNUM,06H
CALLCHECK;
调用密码匹配
CMPCHECKF,01H
JNZPASSER
PASSRI:
LEABX,SHOWOPEN1;
密码正确开门,按下E键或者5秒后关门
STI
CALLOPENTOCLOSE
JNZPASSRI
MOVERRORNUM,3
JMPSTART
PASSER:
LEABX,SHOWERROR;
密码错误,显示报错
MOVDX,200H;
5片8255给段选(每片前一个)
MOVEAX,86868686H
MOVDX,204H;
5片8255给段选(每片后一个)
MOVEAX,8E8E8E8EH
OUTDX,EAX
MOVDX,208H;
三色LED底色为红色
MOVEAX,05050505H
DECERRORNUM
JNZPASSL
WAR:
MOVDX,328H;
错误三次,计数器2报警计数初值
MOVAX,10000
MOVAL,AH
MO