计算机硬件技术基础课程设计
课题名称:电子密码门锁设计
专 业:自动化专业 班 级:2011级 01班 组 长:何 维 20114948 组 员:陈 宇 20104956 组 员:徐裕钦 20114944 组 员:余守印 20114942
指导老师:李楠
重庆大学自动化学院
2014年9月
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
目 录
1、基本功能设计 ................................................... 3
1.1 基本功能要求 ........................................................ 3 1.2 器件选择 ............................................................ 3 1.3 器件功能分配设计 .................................................... 3
2、功能实现 ....................................................... 4
2.1硬件连线 ............................................................. 4 2.2软件设计 ............................................................. 5
3 、使用说明 ...................................................... 7
3.1功能及显示说明 ....................................................... 7 3.2操作说明 ............................................................. 7
4、结果显示 ....................................................... 8 5、组员分工 ...................................................... 10 6、心得体会 ...................................................... 11 7、参考文献 ...................................................... 15 8、程序清单 ...................................................... 15
2
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
1、基本功能设计
1.1 基本功能要求
主要内容:
设计一个密码门锁系统,以扬声器作为发声装置,以4*4键盘作为功能按键,根据预设的密码对门锁实现安全控制。只有密码完全符合才能开门,密码不符时控制扬声器发声报警。在计算机硬件实验系统基础上,自行完成扬声器模块的设计。
1. 密码为6位,输入密码可以开门或修改密码。 2. 用LED显示门的当前状态,以及当前功能状态。
3. 按下开门键,LED显示“输入密码”提示信息,用户输入密码后,若正确则门打开,按下关门键或打开5秒后关门。若密码错误则三色LED用红色显示“密码错”提示信息后,要求用户重新输入密码,3次错误后三色LED红绿交错显示错误提示信息,并且扬声器同时发声报警,按下返回键返回。 4. 若按下设置键,LED显示“输入密码”提示信息,用户输入密码,若正确则LED显示”修改密码“提示信息,要求用户输入新开门密码,按确认键保存新密码后返回,按返回键则放弃修改直接返回。若错误处理规则与开门相同。
1.2 器件选择
分析要求得知,需要使用实验箱上的5片可编程并行I/O口接口芯片8255A,1片可编程定时/计数器8254,1片中断控制器8259(A),8个8段共阴极LED以及8个三个LED和自行设计的扬声器模块。
1.3 器件功能分配设计
1. 4片固定可编程并行I/O口接口芯片8255A控制三个LED显示错误信息 2. 扩展可编程并行I/O口接口芯片8255A控制8段共阴极LED显示信息,
同时控制扫描键盘。
3. 可编程定时/计数器8254完成关门定时,扬声器报警频率信号。 4. 中断控制器8259(A)控制中断。 5. 扬声器完成报警。
3
1
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
2、功能实现
2.1硬件连线
根据前面的分析以及器件功能分配,进行硬件连线 地址: 可编程并行I/O口接口芯片8255A接300H
接线:1.1的CLK
2.3.4.5.6.
可编程定时/计数器8254接320H
中断控制器8259A接340H
可编程定时/计数器8254计数器0 CLK接频率信号47KHZ ,GATE接
+5V, OUT接计数器
可编程定时/计数器8254计数器1 CLK接计数器0的OUT口,GATE
接+5V, OUT接8259IRQ0
可编程定时/计数器8254计数器2 CLK接频率信号3MHZ, GATE接
+5V,OUT接扬声器信号输入端
扩展可编程并行I/O口接口芯片8255AA口接LED段选,B口接LED
位选,C口高四位接键盘列信号,低四位接键盘行信号
中断控制器8259(A)INT1接INTR,SP/1接+5V,IRQ0接8254计数
器1OUT
扬声器器电源接+5V,地接GND,信号接8254计数器2OUT
4
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
硬件连线图如图2.1.1:
图2.1.1 硬件连接图
2.2软件设计
经过分析,电子密码门锁设计程序分两大部分。其一,开门功能程序,流程图如图2.2.1;其二,修改密码程序,流程图如图2.2.2。使用可编程并行I/O口接口芯片8255A控制8段共阴极LED显示提示信息和输入的密码并且控制键盘扫描;使用可编程定时/计数器8254完成计时5S和扬声器信号生成;使用中断控制器8259A控制计时5S后完成自动关门功能,使用三色LED提示错误。
5
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
图2.2.1 开门程序流程图
图2.2.2设置程序流程图
6
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
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----r d 8. 提醒修改密码显示 为:CH----- E 9. 提示密码错误显示 为:Err---O r 10. 密码错误三色LED显示 为:EFEFEFEF(红色) 11. 错误三次三色LED显示 为:EFEFEFEF (红绿交替 )
3.2操作说明
1. A键---待机界面时进入开门功能 2. B键---待机界面时进入设置功能
3. D键---清除键,输入密码时,按下可消除当前数字 4. E键---返回键,输入密码时,按下可返回重新输入;
输入新密码后,按下返回键可取消输入返回关门状态; 提示密码错误,需按返回键重新输入; 报警后,需按返回键返回关门状态; 开门后,按下返回键返回关门状态
5. F键---确定键,显示提醒时,需按确定键继续;
输入密码后,按确认键确认
7
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
4 结果显示
在实验板上结果显示
根据题目的要求, 通过调试运行程序,得到了各种情况如下: (1) 关门状态如下图4.1.1
图4.1.1 关门状态显示情况
(2)输入密码状态显示,结果如图4.1.2
图4.1.2 输入密码状态显示情况
8
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
(3)开门状态显示,结果如图4.1.3
图4.1.3 开门状态显示
(4)改密码界面显示,结果如图4.1.4
图4.1.4 改密码界面显示
9
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
(5) 扬声器,结果如图4.1.5
图4.1.5 扬声器
(6) 总体结构显示,结果如图4.1.6
图4.1.6 总体结构的显示
5 组员分工
何 维: 流程图的绘制、主程序的编写、程序的调试和报告的修改 陈 宇: 密码检测子程序的编写、扬声器电路设计与焊接和电路图绘制 徐裕钦: 显示嵌套键盘扫描子程序的编写、程序调试和报告的撰写
10
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
余守印: 键特征值转化为段代码和延时程序的编写、程序调试和扬声器电路焊接
6 心得体会
6.1 何维(20114948)的心得体会:这次课程设计的任务好几个都是关于音
乐的,作为一个音乐盲很担心抽到关于音乐的任务。我最想抽到的是无声电子琴,因为觉得无声电子琴比较好做。还好,我们小组拿到的设计题目是电子密码门锁设计。该设计的主要内容是以扬声器作为发声装置,以4*4键盘作为功能按键,根据预设密码对门锁实现安全控制。只有密码完全符合时才能开门,密码不符合时控制扬声器发声报警。
拿到题目后,我和组员们讨论,明确了每位组员的详细分工。而我主要负责
流程图的绘制和主要程序的编写。第二天一早,我就到自习室研究题目并理解题目要求,并绘制了较为详细的流程图。根据题意,该设计需要有两个大分支。其一是要进入开门功能,按下开门键(A键),通过LED提示输入密码,密码正确则开门,按下返回键(E键)返回或者5S后自动返回,密码错误则提示错误,并要求重新输入,连续错误三次后提示错误并扬声器报警。分支二是要进入设置功能,按下设置键(B键),通过LED提示输入密码,密码正确则提示输入新的密码,密码错误则同开门时密码错误处理相同,输入新密码时可以按下返回键(E键)取消修改。
理清楚了流程,便开始程序撰写。在这其中我遇到了一些问题,最困难的就是扩展8255给LED送段选的时候,如何又去扫描键盘。经过思考,我选择用拨动开关作为中断信号,在中断程序中改变显示程序标志符,跳出显示后让LED显示横杆,然后CPU开始扫描键盘。我认为这样做很简单,程序也可以很稳定的运行。整个程序就按着这个思路编写完成了。后来想到,正规的密码锁不会再外加一个可拨动开关,而且设计题目要求是用键盘完成功能键。于是我又删除掉原来的不符合程序重新编写。经过思考,我发现我忽略了CPU的运行速度。按照人的思维,X86不能多线程运行只能做一件事,所以就不能同时完成显示和扫描。但是,当CPU运行速度很快时,把键盘扫描程序嵌入显示程序一样可以完成,只需要每次段选的时候都扫描全键盘一次。经过修改,最终的程序完全符合设计要求。
11
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
通过这次课程设计,我更加深刻的理解了X86指令集,能更加熟练的使用8255计时、计数和产生频率方波,使用8259控制中断和使用8255进行功能扩展。在对CISC更加熟悉的同时,我对RISC指令集也产生了更加浓厚的兴趣。
6.2 陈宇(20104978)心得体会:本次课程设计为期两周,中间再排除中
秋放假的话,其实也只有差不多九天的时间,通过本次课程设计,我感觉不仅提高了我的专业技能,同时也提高了自己的团队协作能力。
此次的课程设计我们小组共有四个人,我们的题目是电子密码门锁的设计。在我们组组长的带领下,我们成功的完成了课程设计,实现了要求的功能。现将本次课程设计的大概过程和心得体会总结如下:
首先,我们小组成员就课程设计的流程做了一下讨论。由于这个课题的内容相对来说比较简单,所以我们的基本思路也差不多,只是在某些很小的地方有不同的见解。在讨论完后,我们就迅速的分好工,然后各自努力搞好自己那部分的同时也有互相协助,这样使得课程设计的进度比较迅速。
我所分到的部分是密码门锁在输错三次密码时会报警的报警装置的硬件设计,我们所用到的报警装置比较简单,就是一个扬声器,在连续输错三次密码时,就会由内部程序产生报警指令,通过硬件产生电信号,该电信号再使扬声器发生报警。这就是我们所要设计的简易报警装置。在领到扬声器后,考虑到实验箱硬件所产生的电信号比较微弱,该电信号不足以驱动扬声器发声,所以我想到了利用三极管将该电信号进行放大,刚开始只使用了一只三极管,但是放大效果不太理想,放大的倍数不够,于是想到了利用2个三极管级联做成一个2级放大电路,适当提高对电信号的放大倍数,使之足以能够驱动扬声器发声,达到报警效果。但在设计电路时,对2级放大电路的放大倍数已经比较模糊了,于是回顾了一下曾经学过的模电知识,确定了一下上拉电阻的阻值如何设置能达到所需放大倍数。在确定好要注意的地方之后,开始用领来的器材进行外扩硬件电路的焊接,在焊接过程中也使得自己的焊接技术又有了一些提升。但是,焊好的报警装置拿去测试时却不能发出声音,经检查发现,有两个地方没有连接,再次焊接好之后测试能够发声,外扩硬件电路设计成功,但是同时也提醒了我工作还需更加细心。 我的另一部分工作就是全局电路图的绘制,在程序编写好并测试无问题后,我根据实物连线利用Proteus对全局电路进行了绘制,虽然绘制全局电路时由于对软
12
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
件的不够熟悉,使得绘制过程很是辛苦,但是,通过这次绘制全局电路,让我对Proteus的熟悉程度有所增加。
总的来说,这次课程设计使我们熟悉了以前学过的知识,也是我们逐渐的掌握了一些思考方法以及提升了部分技能,同时,团队协作能力也得到了提升,收获不小,也让自己对未来增加了一些自信心。
6.3 徐裕钦(20114944)的心得体会: 这次课程设计开始,黄勤老师给我
们详细的讲了许多,包括8个课题的详细设计要求和一些具体的指导,我真的非常喜欢并且欣赏这些老师们对于学生认真负责的态度,我也很感谢老师对于我们整个课设的指导。
在这次课程设计的开始,我们组就进行了分工,我主要负责,键盘密码输入这块的子程序编写和报告的撰写。由于对于编程有了一些生疏,我看了队友的流程图和电子硬件电路图,受到了很大的启发。在键盘的先送段选,再送位选后找到键特征值,输出数字这方面,一开始遇到了很多困难,因为逻辑比较复杂。但是后来我经常问虚心的求教别人,终于完成了这一部分的设计。由于是一个小组的课题,这考验了我们每个人的分工合作能力和团队合作的能力,其实说到这常常带着一些伤感,因为这些事情我们以后不会再做了,可能,和不同的人做,但是同学的之间的友谊却是长久存在的。我并不在乎这个课题有多难或是多简单,而是大家一起相办法努力完成任务的过程,因为我们以后永远不会再一起做这样的课题了,大四就是这样子,让人充满伤感,但是大家却又心有灵犀的保持沉默,因为我们又有各自人生的路要走。
这次的课程设计我对为指令的设计和流程都有了更深的理解,进一步熟悉了计算机硬件技术原理的基本知识,同时也加深了解了模块化程序设计的基本过程,掌握了一些基本的软硬件设计知识并对其进行了基本的运用,在模块化程序设计中运用了很多知识,以及几块芯片8255、8254、8259来实现计数器、定时器、查询的功能等,即实现了对以往所学内容的复习,也让自己更加对他们的实际运用能力得到了增强,使自己比以前的动手能力与对课题的思考能力得到了增强。
通过实践,提高了我的实际操作能力,从以前所学理论上升到实践,真正做到了学有所用,同时也认识到了自己的不足之处,对转移指令、芯片工作方式等
13
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
都不是很熟悉,但是自己受益匪浅。课程设计可以体现出团队合作程度,紧密合作加上明确分工,,能够大大地提高设计速度,在动手设计之前,最好将设计所需要的数据,程序准备好,为了判断设计结果是否正确,有必要在准备阶段计算理论值。仔细分析指令的每一位,以及理清思路,在设计时做到胸有成竹。
6.4余守印(20114942)的心得体会:为期两周的实习,终于结束了,收尾之
际,感慨良多。似乎任何过程痛苦的事,在认真完成之后再回头看,反而变得十分美好。人生有时显得这样荒诞不经,痛苦的东西,成为回忆之后,反而显得难得可贵。以至于,人会怀恋枯燥,怀恋焦头烂额,怀恋疲惫不堪,却依然努力的时光。
具体的说来,当初学硬件,因为初学,没有方法,没有方向,经常摸不着头脑。那会儿没有体系的学习,实在走了不少弯路,也没打好扎实的基础。经过这次的计算机硬件实习,好好地回忆了具体的内容,不尽整体把握了一番,还应用到了实际上。说实话,硬件学了一半的时候,我都不知道,硬件到底是什么,用来做什么,怎样实现。当理论和实际发生隔阂,不知道怎样讲学的枯燥无味了理论知识融入实际中,这种学习当然会十分苦恼,以至于学习激情大打折扣。反而这次实习,一个简单的密码锁的设计和编程,恰恰让我对这门课有了新的认识。密码锁这个东西,生活里常有,手机啊,防盗门啊等等。以前接触一个防盗门,无疑会好奇怎样实现。初中的高中的知识,对于实际都是很少能直接应用的。大学学了那么多,而我才知道,学了一年的东西,能解决什么,应用于什么,即使是一个很小的东西,至少会让我明白,我学得是有用的。我想这些再次想来,既是幸运的,也是可悲的吧。
接过这个课程设计的主题后,我们小组经过协商合作分工,良好的实现了预期要求,并扩展了部分功能。我完成了延时子程序和按键的段代码表示功能的实现,以及参与了硬件线路的设计和焊接。我很高兴,因为这些工作让我受益良多,提升了我的理论联系实际的分析能力和动手能力,也让我在工作中获得成就感。和同学的合作,拉近了彼此的距离,也深化了我们的友谊。所以,很感谢老师的指导,很感谢同组的成员,我为这个team感到骄傲! 谢谢。
14
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
7 参考文献
[1] 仰天怡,邓亚平,黄勤 《计算机硬件技术基础》重庆大学出版社,2002 [2] 黄勤,高富强,杨天怡 《计算机硬件技术基础实验教程》重庆大学出版社,2002
8 程序清单
8.1 主函数
.486
CODE SEGMENT USE16 ASSUME CS:CODE
ORG 1000H
BEGIN: JMP START
SHOWOPEN1 DB 3FH,73H,40H,40H,40H,40H,0F9H,3FH ;开门状态,开门功能
SHOWCLOSE1 DB 39H,38H,40H,40H,40H,40H,0F9H,3FH ;关门状态,开门功能
SHOWCLOSE2 DB 39H,38H,40H,40H,40H,40H,0F9H,6DH ;关门状态,设置功能
SHOWINPUT DB 73H,6DH,40H,40H,40H,40H,31H,5EH ;显示输入密码
SHOWCHANGE DB 39H,76H,40H,40H,40H,40H,40H,79H ;显示修改密码
SHOWERROR DB 79H,31H,31H,40H,40H,40H,3FH,31H ;显示错误
SHOWSTOP DB 40H,40H,40H,40H,40H,40H,40H,40H ;显示横杠
INPUTWAT DB 40H,40H,40H,40H,40H,40H,40H,40H ;输入密码暂存
PASSWORD DB 3FH,3FH,3FH,3FH,3FH,3FH,40H,40H ;密码储存
PASSWORD1 DB 3FH,3FH,3FH,3FH,3FH,3FH,40H,40H ;密码备份
PASSNUM DB 6 ;输入密码计数标志
CHECKF DB 0 ;密码检测标志
15
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
ERRORNUM DB 3 ;错误计数
OTCOUT DB 0 ;开门后关门程序跳出标志
KEYZHI DB 0
;**********************************************************主程序开始 START: LEA SI,INPUTWAT
CALL CLR ;清除输入密码存储单元
MOV DX,20CH ;四片8255初始化 MOV EAX,80808080H OUT DX,EAX
MOV DX,30CH ;扩展8255控制字,AB输出,C高出低入
MOV AL,81H
OUT DX,AL
MOV DX,32CH ;8254计数器0初始化工作在方式2下
MOV AL,34H
OUT DX,AL
MOV DX,32CH ;8254计数器1初始化工作在方式0下与计数器0级联计时5S MOV AL,50H
OUT DX,AL
MOV DX,32CH ;8245计数器2初始化 MOV AL,10110110B OUT DX,AL
MOV DX,340H ;初始化8259 写ICW1 MOV AL,000010011B
OUT DX,AL
MOV DX,348H ;写ICW2中断类型号为40H~47H MOV AL,40H
OUT DX,AL
MOV DX,348H ;写ICW4 MOV AL,01H
OUT DX,AL
16
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
MOV DX,348H MOV AL,00H
OUT DX,AL CLI
MOV AX,0 MOV DS,AX MOV BX,4*40H
MOV AX,OFFSET INTOTCOUT MOV [BX],AX
MOV AX,SEG INTOTCOUT MOV [BX+2],AX
SHOWSTATE: LEA BX,SHOWCLOSE1 入开门功能,按下B键为进入设置功能 CALL SHOWANDKEY CMP CL,0BBH JZ OPENDOOR CMP CL,0B7H JZ SETTING JMP SHOWSTATE 8.2 开门功能程序段
;写OCW1,开放所有IR
;填开门后关门跳出中断向量
;显示当前状态,按下A键为进
;**********************************************************开门功能程序 OPENDOOR: ;清除输入密码存储单元
SHOWINP: LEA BX,SHOWINPUT ;显示输入密码提示,按下F确认
CALL SHOWANDKEY CMP CL,77H JNZ SHOWINP
PAA: LEA SI,INPUTWAT CALL CLR
CALL SHOWHENG
PA0: MOV PASSNUM,06H ;输入密码,按下D键可以消除上一次输入,按下E键可以重新输入,输入完成后按下F键确认 LEA SI,INPUTWAT PAL: LEA BX,INPUTWAT CALL SHOWANDKEY CMP CL,7BH JZ PAA
17
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
CMP CL,77H JZ PAL CMP CL,7DH JZ PAL
JMP PA PASSN: LEA BX,INPUTWAT CALL SHOWANDKEY CMP CL,7BH JZ PAA CMP CL,77H JZ PASSN CMP CL,7DH JNZ PA PA4: DEC SI INC PASSNUM CMP SI,BX
MOV BYTE PTR[SI],40H JZ PA0 JMP PASSN
PA: CALL KEYTOSHOW INC SI
DEC PASSNUM JNZ PASSN
PA3: CALL SHOWANDKEY CMP CL,7DH JZ PA4 CMP CL,77H JZ PA2 CMP CL,7BH JZ PAA JMP PA3
PA2: MOV PASSNUM,06H CALL CHECK CMP CHECKF,01H JNZ PASSER
PASSRI: LEA BX,SHOWOPEN1 秒后关门
STI CALL OPENTOCLOSE CALL SHOWANDKEY
;调用密码匹配
;密码正确开门,按下E键或者5
18
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
CMP CL,7BH JNZ PASSRI CLI
MOV ERRORNUM,3 JMP START
PASSER: LEA BX,SHOWERROR
MOV DX,200H MOV EAX,86868686H OUT DX,EAX
MOV DX,204H MOV EAX,8E8E8E8EH OUT DX,EAX
MOV DX,208H MOV EAX,05050505H OUT DX,EAX
DEC ERRORNUM JNZ PASSL
WAR: MOV DX,328H 初值
MOV AX,10000 OUT DX,AL MOV AL,AH OUT DX,AL
MOV DX,200H MOV EAX,86868686H OUT DX,EAX
MOV DX,204H MOV EAX,8E8E8E8EH OUT DX,EAX
MOV DX,208H MOV EAX,09090909H OUT DX,EAX
RETURN: LEA BX,SHOWERROR CALL SHOWANDKEY CMP CL,7BH
;密码错误,显示报错 ;5片8255给段选(每片前一个) ;5片8255给段选(每片后一个) ;三色LED底色为红色
;错误三次,计数器2报警计数
;5片8255给段选(每片前一个) ;5片8255给段选(每片后一个) ;三色LED红绿交替
;判断是否按下返回
19
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
PASSL: JNZ RETURN
MOV ERRORNUM,03H
MOV DX,328H MOV AX,0 OUT DX,AL MOV AL,AH OUT DX,AL JMP START
CALL SHOWANDKEY
CMP CL,7BH JNZ PASSL JMP OPENDOOR
;计数器2报警解除计数初值
;按下E键返回
8.3 设置功能程序段
;************************************************************设置功能程序
SETTING:
LEA BX,SHOWINPUT ;提示输入密码 CALL SHOWANDKEY CMP CL,77H JNZ SETTING
PBB: LEA SI,INPUTWAT CALL CLR
;输入密码
PB0: MOV PASSNUM,06H ;按下D键可以消除上一次输入,按下E键可以重新输入,输入完成后按下F键确认 LEA SI,INPUTWAT PBL: LEA BX,INPUTWAT CALL SHOWANDKEY CMP CL,7BH JZ PBL CMP CL,77H JZ PBL CMP CL,7DH JZ PBL
JMP PB
PASSN1: LEA BX,INPUTWAT CALL SHOWANDKEY CMP CL,7BH JZ PBB
20
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
CMP CL,77H JZ PASSN1 CMP CL,7DH JNZ PB PB4: DEC SI INC PASSNUM CMP SI,BX
MOV BYTE PTR[SI],40H JZ PB0 JMP PASSN1
PB: CALL KEYTOSHOW INC SI
DEC PASSNUM JNZ PASSN1
PB3: CALL SHOWANDKEY CMP CL,7DH JZ PB4 CMP CL,77H JZ PB2 CMP CL,7BH JZ PBB JMP PB3
PB2: MOV PASSNUM,06H
CALL CHECK CMP CHECKF,01H JNZ PASSERL
LEA SI,PASSWORD1 CALL CLR
PASSRI1: 下F继续
LEA BX,SHOWCHANGE CALL SHOWANDKEY CMP CL,77H JNZ PASSRI1
PCC: LEA SI,PASSWORD1 CALL CLR
PC0: MOV PASSNUM,06H
;调用密码匹配
;密码正确,提示修改密码,按
21
;输入新密码
;按下D键可以消除上一次输
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
入,按下E键可以重新输入,输入完成后按下F键确认
LEA SI,PASSWORD1 PCL: LEA BX,PASSWORD1 CALL SHOWANDKEY CMP CL,7BH JZ PCL CMP CL,77H JZ PCL CMP CL,7DH JZ PCL JMP PC
CHANGE: LEA BX,PASSWORD1 CALL SHOWANDKEY CMP CL,7BH JZ PCC CMP CL,77H JZ CHANGE CMP CL,7DH JNZ PC PC4: DEC SI INC PASSNUM CMP SI,BX
MOV BYTE PTR[SI],40H JZ PC0 JMP CHANGE
PC: CALL KEYTOSHOW INC SI
DEC PASSNUM JNZ CHANGE
PC3: CALL SHOWANDKEY CMP CL,7DH JZ PC4 CMP CL,77H JZ YESNO CMP CL,7BH JZ PCC JMP PC3
YESNO: LEA BX,PASSWORD1 CALL SHOWANDKEY CMP CL,7BH JZ NO
22
;按下E键取消修改并返回
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
YES: CMP CL,77H 回
JNZ YESNO LEA BX,PASSWORD1 LEA SI,PASSWORD MOV AH,0 CLEAR1: MOV AL,AH XLAT
MOV BYTE PTR[SI],AL INC SI INC AH CMP AH,08H JNZ CLEAR1 NO: JMP START
PASSERL: LEA BX,SHOWERROR
MOV DX,200H 一个)
MOV EAX,86868686H OUT DX,EAX
MOV DX,204H 一个)
MOV EAX,8E8E8E8EH OUT DX,EAX
MOV DX,208H MOV EAX,05050505H OUT DX,EAX DEC ERRORNUM JNZ PASSL1
WARL: MOV DX,328H MOV AX,10000 OUT DX,AL MOV AL,AH OUT DX,AL
MOV DX,200H 一个)
MOV EAX,86868686H OUT DX,EAX
;修改成功,按F确定并返
;密码错误
;5片8255给段选(每片前
;5片8255给段选(每片后
;三色LED红绿交替
;计数器2报警计数初值
;5片8255给段选(每片前
23
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
MOV DX,204H 一个)
MOV EAX,8E8E8E8EH OUT DX,EAX
MOV DX,208H MOV EAX,09090909H OUT DX,EAX
RETURNL: LEA BX,SHOWERROR CALL SHOWANDKEY CMP CL,7BH JNZ RETURNL
MOV ERRORNUM,03H
MOV DX,328H 值
MOV AX,0 OUT DX,AL MOV AL,AH OUT DX,AL
LEA SI,INPUTWAT CALL CLR JMP START
PASSL1: CALL SHOWANDKEY
CMP CL,7BH JNZ PASSL1
JMP SETTING
;5片8255给段选(每片后
;三色LED红绿交替
;判断是否按下返回
;计数器2报警解除计数初
;按下E键返回
8.4 延时子程序 ;***********************************************延时子程序 DELY PROC NEAR
PUSH CX MOV CX,0FFFFH DELY_L0:LOOP DELY_L0 POP CX RET DELY ENDP
8.5 开门后关门跳出标识符中断程序
24
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
;*****************************************************开门后关门跳出标识符中断程序
INTOTCOUT PROC NEAR
MOV OTCOUT,1
MOV AL,20H MOV DX,340H OUT DX,AL IRET
INTOTCOUT ENDP
8.6 键特征值到短代码的转换子程序
;***************************************************键特征值到短代码的转换 KEYTOSHOW PROC NEAR
CMP CL,0EEH ;0 JNZ KL1
MOV BYTE PTR[SI],3FH RET
KL1: CMP CL,0EDH ;1 JNZ KL2
MOV BYTE PTR[SI],06H RET
KL2: CMP CL,0EBH ;2 JNZ KL3
MOV BYTE PTR[SI],5BH
RET
KL3: CMP CL,0E7H ;3 JNZ KL4
MOV BYTE PTR[SI],4FH
RET
KL4: CMP CL,0DEH ;4 JNZ KL5
MOV BYTE PTR[SI],66H
RET
KL5: CMP CL,0DDH ;5 JNZ KL6
MOV BYTE PTR[SI],6DH
25
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
RET
KL6: CMP CL,0DBH JNZ KL7
MOV BYTE PTR[SI],7DH
RET
KL7: CMP CL,0D7H JNZ KL8
MOV BYTE PTR[SI],07H
RET
KL8: CMP CL,0BEH JNZ KL9
MOV BYTE PTR[SI],7FH
RET
KL9: CMP CL,0BDH JNZ KLA
MOV BYTE PTR[SI],6FH RET
KLA: CMP CL,0BBH JNZ KLB
MOV BYTE PTR[SI],77H
RET
KLB: CMP CL,0B7H JNZ KLC
MOV BYTE PTR[SI],7CH
RET
KLC: CMP CL,7EH JNZ KL0
MOV BYTE PTR[SI],39H
KL0: RET
KEYTOSHOW ENDP
;6
;7
;8
;9
;A
;B
;C
8.7 键特征值到短代码的转换子程序
26
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
;***************************************************** SHOWHENG PROC NEAR MOV AL,40H ;LED显示为横杠 MOV DX,300H OUT DX,AL MOV DX,304H MOV AL,0FFH OUT DX,AL RET SHOWHENG ENDP 8.8 密码检测程序 ;********************************************************密码检测程序 CHECK PROC NEAR LEA SI,INPUTWAT LEA DI,PASSWORD CHECKL0:MOV AL,BYTE PTR [SI] MOV AH,BYTE PTR [DI] CMP AL,AH JNZ CHECKER INC SI INC DI DEC PASSNUM JZ CHECKRI JMP CHECKL0 CHECKER:MOV CHECKF,0 MOV PASSNUM,06H RET CHECKRI:MOV CHECKF,1 MOV PASSNUM,06H RET CHECK ENDP 8.9 开门后关门在程序 27
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
;*******************************************************开门后关门在程序 OPENTOCLOSE PROC NEAR
MOV DX,320H MOV AX,47000 OUT DX,AL MOV AL,AH OUT DX,AL
MOV DX,324H MOV AL,5
OUT DX,AL RET
OPENTOCLOSE ENDP
8.9 显示同时扫描键盘子程序
;***************************************************************** SHOWANDKEY PROC NEAR SHOWSTATEL: MOV AH,00H
MOV KEYZHI,80H ;位选
SHOWSTATEL1:MOV AL,AH XLAT
MOV DX,300H
OUT DX,AL ;送段
MOV DX,304H MOV AL,KEYZHI
OUT DX,AL ;送位选
ROR KEYZHI,1
INC AH ;位选向右移位
KSCANL: MOV CL,0EFH ;按键扫描 NXTCOLL:MOV AL,CL MOV DX,308H OUT DX,AL
IN AL,DX AND AL,0FH CMP AL,0FH JNZ FNDKEYL ROL CL,1
28
电子密码门锁设计 组长: 何维 组员:陈宇 徐裕钦 余守印
JC NXTCOLL CMP OTCOUT,1 JNZ LL MOV CL,7BH MOV OTCOUT,0 RET
LL: CMP AH,08H JZ SHOWSTATEL JMP SHOWSTATEL1
FNDKEYL:AND CL,0F0H OR CL,AL CALL SHOWHENG CALL DELY
KEYUPL: MOV AL,0 MOV DX,308H OUT DX,AL IN AL,DX AND AL,0FH CMP AL,0FH JNZ KEYUPL RET SHOWANDKEY ENDP 8.10 清除存储单元程序
;键特征值形成
;按键防抖动
;************************************** CLR PROC NEAR MOV AL,8
INPUTWATL: MOV BYTE PTR [SI],40H INC SI DEC AL
JNZ INPUTWATL RET CLR ENDP
;******************************************************* CODE ENDS END START
29
因篇幅问题不能全部显示,请点此查看更多更全内容