酒店电子保险箱设计报告.pdf

上传人:l*** 文档编号:72510446 上传时间:2023-02-11 格式:PDF 页数:39 大小:1.18MB
返回 下载 相关 举报
酒店电子保险箱设计报告.pdf_第1页
第1页 / 共39页
酒店电子保险箱设计报告.pdf_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《酒店电子保险箱设计报告.pdf》由会员分享,可在线阅读,更多相关《酒店电子保险箱设计报告.pdf(39页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、微机应用设计与实践课程设计微机应用设计与实践课程设计设计课题设计课题酒店电子保险箱2012 年 01 月 07 日1/39目录一、设计任务与实现目标.错错误误!未定义书签。未定义书签。1.4 基本设计要求:.错错误误!未定义书签。未定义书签。1.5 功能扩展提示:(选做).错错误误!未定义书签。未定义书签。设计说明书内容纲要:.4二、总体设计方案与方案论.错错误误!未定义书签。未定义书签。2.1 系统总体框架.错错误误!未定义书签。未定义书签。2.2 设计方案与方案论证.错错误误!未定义书签。未定义书签。2.3 方案选择.错错误误!未定义书签。未定义书签。2.4 方案论证.错错误误!未定义书签

2、。未定义书签。三、总框图及总体软件设计说明.错错误误!未定义书签。未定义书签。3.1 总流程图.错错误误!未定义书签。未定义书签。3.2 总体软件设计说明.错错误误!未定义书签。未定义书签。四、系统资源分配说明.错错误误!未定义书签。未定义书签。4.1 硬件资源分配.错错误误!未定义书签。未定义书签。4.2 微处理器内部存储单元分配及数据定义说明.错错误误!未定义书签。未定义书签。五、局部程序设计说明.错错误误!未定义书签。未定义书签。5.1 拆字模块.错错误误!未定义书签。未定义书签。5.2 错误提示:显示“E”错误错误!未定义书签。未定义书签。5.3 显示模块.错错误误!未定义书签。未定义

3、书签。5.4 键盘扫描模块.错错误误!未定义书签。未定义书签。5.5 并字模块描述:.错错误误!未定义书签。未定义书签。5.6 开门以及门闩模块描述:.错错误误!未定义书签。未定义书签。5.7 密码修改描述:.错错误误!未定义书签。未定义书签。5.8 功能键流程图:.错错误误!未定义书签。未定义书签。5.9 12S 无动作描述:.错错误误!未定义书签。未定义书签。5.10 15 分钟锁键描述:.错错误误!未定义书签。未定义书签。5.11 精确时钟流程图:.错错误误!未定义书签。未定义书签。六、系统功能与操作说明.错错误误!未定义书签。未定义书签。七、调试记录及调试结果.错错误误!未定义书签。未

4、定义书签。1.拆字模块.错错误误!未定义书签。未定义书签。2.错误显示模块.错错误误!未定义书签。未定义书签。3.显示刷新.错错误误!未定义书签。未定义书签。4.键盘获取.错错误误!未定义书签。未定义书签。5.并字调试.错错误误!未定义书签。未定义书签。6.匹配调试与开门调试.错错误误!未定义书签。未定义书签。7.门闩开关调试.错错误误!未定义书签。未定义书签。8.管理员控制码输入.错错误误!未定义书签。未定义书签。9.密码修改.错错误误!未定义书签。未定义书签。10.时间调校.错错误误!未定义书签。未定义书签。八、设计总结.错错误误!未定义书签。未定义书签。附件 1:程序.25附件 2:原理

5、图 392/39一、一、设计任务设计任务1.11.1 设计课题:设计课题:酒店电子保险箱1.21.2 设计目的:设计目的:通过小型微机应用产品的设计与调试过程,运用微机原理及接口技术课程所学的基本知识,在设计中加以应用,进而得到理解、巩固和提高发展,通过实践的过程学习掌握分析与解决实际问题的方法与手段,提高设计、编程与调试的实际动手能力,作为工程技术工作的一次基本训练。1.31.3 设计任务:设计任务:设计一个以单片机为核心的酒店电子保险箱,能在酒店客房中提供给客户使用。具有密码开锁,密码修改、密码输入安全设置、保险箱使用时间等功能。编程并在单片机实验板上模拟调试实现。1.41.4 基本设计要

6、求:基本设计要求:1、开机进行接口部件及数码显示器、指示灯、讯响器等自检。2、密码分为管理员密码和用户密码:管理员密码为 8 位 09 的数字,而用户密码为 6 位 09 的数字。3、设置“0”“9”的数字键及“OP”、“LO”、和“CL”等功能键。对按键输入的信号须进行软件消抖处理。4、保险箱的门有两种状态:打开状态和闭合状态。5、工作模式:(1)常态:数码管显示时钟。(2)开锁模式:需输入 6 位数字为 09 的用户密码或输入 8 位数字为 09的管理原密码进行开锁。然后按“OP”键开门。(3)用户修改密码模式:在保险箱开门状态下,由用户自行输入 6 位数字为 09 的密码作为新密码,用户

7、初始密码为 000000。(4)管理员操作模式:保险柜开门状态下输入 8 位 09 的管理员密码,可以进行调校实时钟、恢复用户初始密码和修改管理员密码、设置保险箱使用日期等功能。6、常态下,八位 LED 7 段数码管显示时钟信息可包括小时、分钟、秒钟。7、常态下,当保险箱关门状态下,只要按下 09 的数字键则进入密码输入状态,每按一个数字键使数码管从左到右逐次显示“”。8、如果输入密码 6 位后按“OP”键则与用户密码进行匹配,匹配一致则开锁;如果输入密码 8 位后按“OP”键则与管理员密码进行匹配,匹配一致则进入管理员操作模式。9、在密码输入状态下,输入未满 6 位或 8 位数字密码,按“O

8、P”键则不作响应。10、输入的用户密码如果匹配一致则驱动电动开门电磁铁线圈通电 1S,用户拉门把可以打开保险箱;如果输入不正确,则提示“E”,3S 后返回常态,等待下一轮的密码输入。11、密码输入过程可以按“CL”键取消输入返回常态。12、用户可以在保险箱开门状态下,通过输入 6 位 09 的数字后按“LO”键进行设置新的用户密码。13、当保险箱处于开门状态下,输入管理员密码后按 OP 键进入管理员操作模式下,输入 01 功能码代表修改管理员密码;输入 02 功能码代表恢复用户初始密码;输入 03 功能码代表实时钟的调校设置,利用数字 3 和数字 4 按键实现对时和分钟的增量式调校,持续按键超

9、 0.5S 时实现快调功能;按“CL”键退出3/39管理员操作模式。1.51.5 功能扩展提示:功能扩展提示:(选做)(选做)1、非常态下 12S 内无按键操作则自动返回常态;2、管理员操作模式下,03 代表设置保险箱使用日期功能,如果开始日期和结束日期均为 0:0:0,表示日期不受限制;04 代表查询本次开箱前 5 次的日期和时间。3、如果连续五次输入用户密码错误则报警且锁键 15 分钟;4、其他功能扩展。1.61.6 设计环节及进程安排:设计环节及进程安排:1、布置课题,明确任务、总体方案设计 22、基本功能控制程序设计及调试 34、程序功能完善、改进、扩展 35、答辩及编写设计说明书 2

10、设计说明书内容纲要:设计说明书内容纲要:1、.设计任务2、总体方案设计与方案论证3、总框图及总体软件设计说明4、系统资源分配说明5、局部程序设计说明6、系统功能与操作说明7、调试记录及调试结果8、课程设计总结9、附录:源程序清单(详细注释)计算机系统结构教研室计算机系统结构教研室 2012 20124/39天天天天年年 1212 月月二、总体设计方案与方案论二、总体设计方案与方案论2.1 系统总体框架酒店电子密操作模式更新显示按键扫描拆字送显缓输入送缓存取消退格共用部分密码匹配密码修改开门动作锁键门闩动作无操作错误动作用户部分进入修改用户密码进入管理员部分管理员操作修改管理员密码用户密码初始时

11、间调校无操作模式时钟部分5/392.22.2 设计方案与方案论证设计方案与方案论证整个程序采用标志位引导方式实现程序功能,并且将程序模块化,循环扫描各服务子程序。更新模块更新模块-数码管动态扫描子程序数码管动态扫描子程序取显示缓冲单元的内容,找到其在段码表中的段码值及位置即键号,分别对应传送到 82C55 的 A、B 口,使所得值显示在数码管上。时钟显示模块时钟显示模块当常态标志位为 0 时,数码管上显示时钟,格式为时-分-秒,将双字节时钟单元拆字并传送到显缓 30H-37H 对应的各个单元。键盘扫描模块键盘扫描模块采用线反转法获得行列码,在键码表中找到对应的行列码的位置即键号,并采用滚动滤波

12、法对按键进行消除抖动。新键号存在 2EH,旧态放在 2FH 单元中。密码匹配模块密码匹配模块在密码匹配允许下进行密码比对。密码修改模块密码修改模块在密码修改允许下进行密码修改。开门及门闩模块开门及门闩模块根据开门标志位决定对电磁铁线圈通电 1S 与否。门闩是一个输入器件。用户部分用户部分有键按下,转为非常态,等待下一位密码输入,为6 位密码则进入用户模块操作。管理员部分管理员部分输入密码为 8 位则进入管理员模块操作。01、02、03 为管理员功能模块。12S 12S 无操作返回及其他拓展部分无操作返回及其他拓展部分在常态下,若没有按键按下,开始计时,时间到12S 左右,程序返回常态。若有则重

13、置定时初值。密码输入出错五次,进行锁键。2.32.3 方案选择方案选择拆字部分:拆字部分:方案一:只要检测到按键按下则显示“”,否则显示实时钟。方案二:给定单元作为模式选择、判断。拆字时按照不同模式给以不同程序段处理。常态:实时钟显示;开锁态:显示“”;管理员状态:显示功能或“”、或实时钟。密码存储部分:密码存储部分:方案一:单个存储单元储存单位密码。方案二:由于只用到简单数码键作为密码,所以可以使用并字将两个密码存储在同一个单元。6/392.42.4 方案论证方案论证拆字部分:方案一程序简单,占用存储单元较少。方案二程序较长,所需存储单元单元较多。但是,考虑到用户的需求,尤其是老年用户的记忆

14、需要。所以牺牲一定存储单元是有必要的。综上所述,选择方案二。密码存储部分:密码存储部分:方案一:代码编写简单。方案二:代码编写较之前复杂。在密码类型简单情况以及 RAM 单元够用情况下,没有太大优势。但是在密码类型较多以及 RAM 单元紧 X 情况下,优势非常明显。并且为后期的拓展提供了方便。综上所述,选择方案二。三、总框图及总体软件设计说明三、总框图及总体软件设计说明3.13.1 总流程图总流程图开始初始化设置拆字子程序错误显示子程序显示刷新子程序键盘按键获取子程序键盘消抖子程序密码输入子程序并字子程序密码匹配子程序开门子程序门闩开关程序密码修改子程序时间设置子程序7/393.23.2 总体

15、软件设计说明总体软件设计说明本设计采用汇编语言编程。系统在上电复位后,程序开始运行,经过初始化,在无任何操作的情况下,八位数码管显示实时钟。程序循环时对键盘进行扫描。常态有键按下时,当键号为 0 到 9 这十个数码键时则输入密码锁的密码。非常态时,不同的功能键对应不同处理,同时,12秒无按键按下,返回常态显示实时钟。当密码输入满六位或者八位后,按下 OP 键,进入密码匹配程序进行输入的密码与原存储密码判断是否一致,若一致说明密码正确,循环主程序时启动开门子程序 KMKM 执行开锁动作,点亮二极管 P1.5 一秒,循环主程序时启动子程序SWITCH 拨下 SW0 进行开门,开门指示灯 L8 亮,

16、返回常态显示实时钟。若是六位密码匹配正确后开门,则是用户操作模式,用户可进行密码修改,连续两次输入密码,并按下LO键进行确认修改。程序判断两次密码是否相同,若相同,用户密码修改成功,若不同密码修改失败。当密码输入满八位后,按下 OP 键,进入管理员密码匹配程序进行输入的密码与原存储密码判断是否一致,若一致说明密码正确,进入管理员模式,此时再次输入管理员密码进入管理员模式,按键按下01或02或03进入不同功能模式。01是进行管理员密码修改,管理员可进行密码修改,连续两次输入密码,并按下OP键进行确认修改。程序判断两次密码是否相同,若相同,管理员密码修改成功,若不同密码修改失败。02是进行管理员初

17、始化用户密码初始化,按下02功能号后再按确认键OP进行用户密码初始化。03是实时钟的设置,利用数字 3 和数字 4 按键实现对时和分钟进行调校,连续按下0.5S 后实现时钟与分钟快调。在管理员模式下,按下CL 键,程序将回到常态显示实时钟。若有任何不一致说明密码不正确,循环主程序时启动错误显示子程序 CW,使八位数码管最右位显示E三秒,返回常态显示实时钟。若五次输入密码错误,程序将通过数码管显示时时钟,发出报警,并锁定键盘输入十五分钟。8/39四、系统资源分配说明四、系统资源分配说明4.14.1 硬件资源分配硬件资源分配1、4*4 键盘按键分配K0K9 为 09 的数字键盘01 2KA 为 O

18、P 键KB 为 LO 键456KC 为 CL 键KD 为 TG 键89OP2、指示灯分配CLTGL5 灯为开锁一秒指示灯(图一)L8 灯为开门状态指示灯(图二)37LO(图一)(图一)(图二)(图二)4.24.2 微处理器内部存储单元分配及数据定义说明微处理器内部存储单元分配及数据定义说明27H.0并字允许标志位,可并字置 127H.1普通密码匹配模式标志为,为 0 进行用户密码匹配,为 1 进行管理员密码匹配27H.2开门允许标志位,可开门置 127H.3错误标志位,错误置 127H.4键盘获取方式标志为,0 为密码输入模式,1 为管理员控制方式输入模式27H.5状态标志位,0 为常态,1

19、为非常态28H.0控制码存放标志位,0 存放在 5AH,1 存放在 5BH28H.1密码二次输入标志位,为 1 未进行二次输入28H.2密码修改标志位,为 1 为进行密码修改输入28H.3门状态标志位,为 1 则门开着28H.4修改密码允许位,为 1 进行密码修改9/3928H.5时间调整允许标志位,可修改置 128H.6键盘锁定标志位,为 1 锁定,不允许获取键盘输入29H2FH消抖单元30H37H显示缓冲单元38H3CH时间记录存放单元3DH存放错误次数3EH锁键分钟数设置3FH快调计时 0.5S 存储单元40H42H用户密码存储区43H46H管理员密码存储区48H4BH输入密码存储区4C

20、H4FH二次输入密码存储区50H57H键盘读入存储区58H密码位数存储单元59H密码存放地址存储单元5AH控制方式首位输入存放单元5BH控制方式次位输入存放单元5CH5DH3S 延时存储单元60H键盘扫描读入值存储单元61H键号值62H键盘获取存储单元63H压缩密码位数存放单元64H密码匹配暂存存储单元65H12S 计数存储单元五、局部程序设计说明五、局部程序设计说明5.15.1 拆字模块拆字模块拆字流程图:10/39拆字&错误27H.5=0?N 非常态Y 常态N 控制码输入实时钟27H.4=0?Y 密码输入5AH-37H5BH-36H显示 01.02.03密码输入位数存58H,以密码输入位数

21、显示“-”Y 密码正确27H.3=0?N 密码错误出错,先对30-37H送暗码,然后在30H 上显示“E”,延迟 3s返回拆字模块描述拆字模块描述:进入拆字模块,先把显示缓冲单元 30H-37H 赋值#12H,灭显示。接着判断 27H.5 的值,检测当前状态若为 0 表示当前状态是常态,进入 CZ1 进行常态拆字时分秒,显示缓冲单元存放时分秒。不为 0 则跳转到 FCT 检测键盘输入模式,其标志位为 27H.4,为 0 则为密码输入部分的拆字,根据按键次数把 放入显示缓冲单元中,从 30H 开始放起,最多放到 37H。为 1 则为管理员功能号输入拆字,将 5AH 与 5BH 中的值显示在 37

22、H 与 36H 中,可显示 01、02、03。5.25.2 错误提示:显示“错误提示:显示“E E”错误显示 E 描述:根据标志位 27H.3 判断是否启动 CW 子程序。为 1 则进入子程序,灭显示缓冲单元,然后在 30H 单元存入#0EH,在数码管最右一位显示E,用循环递减的方式显示E三秒后,清标志位 27H.3,清按键密码存储单元,返回常态显示时钟,清按键数。5.35.3 显示模块显示模块显示模块描述:系统使用共阴极数码管显示。实验板采用动态显示方式,每次点亮一个 LED 显示器,延时 1MS 时间再点亮下一个 LED 显示器,周而复始,8 个 LED 显示器轮流动态扫描。利用人视觉暂留

23、效应,看起来好像几个显示器上“同时”显示不同的字符。把显示缓冲单元的值依次从八位数码管从右到左显示。为防止窜显,我们在点亮数码管前先送暗码给数码管,且在数码管显示一秒后也对数码管送暗码。此时数码管就不会出现窜显现象。5.45.4 键盘扫描模块键盘扫描模块键盘扫描流程图:11/39KEYINPUT是否有键按下28H.6=0?键盘锁定Y无键有键按下Y是否按下0-9N多分支跳转按下的键存62HOP?LO?CL?TG?27H.3=0?错误标志位Y正确28H.5=0?时间调校允许标志位YN没有锁定12s无动作?NY置非常态返回常态28H.2=0?密码修改标志位YNCLR28H.6设置为密码输入模式27H

24、.4=0?键盘输入模式NY输入密码输入控制码返回主程序返回键盘扫描模块描述:12/39采用线反转法扫描得到键盘行列码,根据事先编好的键码表(按国际键盘分布排列)对应行列码查表得到键号,之后根据键号做相应操作(结合其他子模块),功能键则处理相应功能,数字键则相应存储、输出数字量。理论上当按键按下或弹起时,可以相应的产生低电平或高电平,但实际并非如此。键盘按键一般都采用触点式按键开关。按键被按下或释放时,按键触点的弹性会产生抖动现象。即当按键按下时,触点不会迅速可靠地接通,当按键释放时,触点也不会立即断开,而是要经过一段时间的抖动才能稳定下来,按键材料不同,抖动时间也各不相同。按键抖动可能导致单片

25、机将一次按键操作识别为多次操作,一般采用硬件电路或软件程序来消除。本次用软件消抖,即滚动滤波的方式消抖。并字流程图:并字27H.0=0?Y 并字允许输入密码首地址给R0,取压缩密码位数N 无并字并字Y 第一次输入28H.1=0?N 二次输入再输入密码存放地址为4BH存放首地址为4FH返回5.55.5 并字模块描述并字模块描述:在并字允许的情况下,确认输入八位或六位情况下,将两个键号压缩放置在一个单元。第一次输入放在以 4BH 为首地址的单元,第二次从 4FH 开始。匹配模块流程图匹配模块流程图:13/39密码匹配并字允许27H.0=0?NY正常匹配28H.2=0?N密码修改匹配Y27H.1=0

26、?6/8N28H.1=0?Y二次密码输入进行 6位密码匹配进行 8位密码匹配进行两次输入密码匹配(分为8,6)YOk?NNOk?YOk?开门标志位27H.2置1,返回常态错误标志位置1(27H.3)返回常态28H.3=0?YNYNNY(3DH)-13DH=0?允许开门返回常态控制码输入SETB27H.4锁键盘报警15minSETB28H.6(3DH)给 5Y允许密码修改标志位置 15A、5B 全亮错误标志位置1清空并字允许(58H)=0(59H)=57H返回14/39匹配模块描述:由于本设计采用二次密码确认新密码,所以匹配除了正常的开锁匹配,还包括了修改密码匹配。匹配采用的是一一比对的方法,只

27、要一次比对失败,就退出改子程序,并带上错误标志位。开门以及门闩流程图:开门开门标志位27H.2=0?NYL5亮1S返回密码修改28H.4=0?N27H.1=0?N改8位SWITCH27H.2=0?N读入 C口的值在A口显示判断是否为#0FEHYSETB 28H.3门闩开Y28H.3=0?N读入 C口的值在A口显示判断是否为#0FFHCLR 28H.3门闩关返回/3915返回5.65.6 开门以及门闩模块描述开门以及门闩模块描述:密码修改在开门允许标志位有效情况下,可以拉开门闩。亮L5 一秒说明有效时间。L8 说明门闩状态。门闩状态需注意,只能是输入器件。密码修改流程图:28H.4=0?N27H

28、.1=0?N改8位返回Y改6位从4BH 开始给 46H值从4BH 开始给 42H值返回5.75.7 密码修改描述密码修改描述:密码修改允许位是该子程序的钥匙,进入后分为管理员密码修改和用户密码修改。修改时,可任选 4BH 或者 4FH 的内容作为最新密码。时间调校描述:利用数字 3 和数字 4 按键实现对时和分钟的增量式调校,持续按键超 0.5S时实现快调功能。5.85.8 功能键流程图功能键流程图:TG58H=0?NY58H-159H-1返回16/39OP27H.4=0?01?6?8?YSETB 28H.2密码修改标志位SETB 27H.1八位N满足8 位或者6 位02Y并字允许密码匹配N用

29、户密码初始化不满6 位或8 位03?NYSETB 28H.5时间调校给 36H、37H送暗码返回17/39LO28H.3=0?N28H.1=0?Y28H.2密码修改标志位1YN判断输入位数是否为6 位?是并字置1SETB 27H.0CL回常态,除门闩标志28H.3其他清零。返回返回功能键描述功能键描述:TG:退格。OP:输入确定。LO:用户修改密码。(门开时有效)CL:返回常态键。5.912S 无动作描述:程序如下:DJNZ65H,ZXC;对非常态返回计数单元减1MOV27H,#0ANL28H,#01001000B;置标志位MOV58H,#0MOV59H,#57HZXC:CJNEA,#60H,

30、DONE;满 1 分钟?MOV3AH,#0;秒单元清零在每次按键时都给 65H 立即数 12,在无按键时,65H 每秒减一,等零时,除门闩其他标志位清零。5.10155.1015分钟锁键描述分钟锁键描述:程序如下:18/39MOVA,3EHCJNEA,#0,ZXC2CLR28H.6SJMPZXC3ZXC2:DEC3EHZXC3:MOVA,3BH;分钟单元(按 BCD 码)加 1当错误 5 次时,3EH 被赋值,此时标志位 28H.6 没执行 CJNE A,#0,ZXC2就不能执行,28H.6一直处于锁键。只有 15 分钟后才能被清零。5.115.11 精确时钟流程图精确时钟流程图:19/39系

31、统内部定时器1产生定时计数满256次INC 38HN38H=36?YMOV 38H=0INC 39HN39H=100?YMOV 39H=03AH 加 1N3AH=60?MOV 3AH=03BH 加 1YN3BH=60?YMOV 3BH=03CH 加 1N3CH=24?YMOV 3CH=0返回精确时钟描述精确时钟描述:利用 51 单片机内部时钟振荡产生的时钟信号,用定时器 0 选用方式 2 定时工作模式每定时计数 256 次对 38H 单元加 1,38H 单元计数 36 次即20/39晶振频率为 11.0592MHZ 的微控制器 9126 个机器周期=10ms,满 10ms 则 10ms计数单元

32、 39H 加 1,不满 10ms 则返回;39H=100 时即为 1s,则 10ms 计数单元清 0、秒计数单元 3AH 加 1,不满 1s 则返回;3AH=60 时即为 1min,则秒计数单元清 0、分计数单元 3BH 加 1,不满 1min 则返回;3BH=60 时即为 1hour,则分计数单元清 0、小时计数单元 3CH 加 1,不满 1hour 则返回;3CH=24 时即为小时完成一个循环,则小时计数单元清 0 返回,不满 24 小时也返回。六、系统功能与操作说明六、系统功能与操作说明常态下八位数码管显示实时钟。非常态下,12S 无操作则返回常态。键盘按键 6 次,输入 6 位正确用户

33、密码,八位数码管右边六个显示-,按下 OP 键,二极管 P1.5 点亮一秒。数码管返回常态显示实时钟。在一秒内拉下SWO 门闩,L8 亮代表门开。在开门状态下,继续输入六位密码并按下 LO 键,此时为修改密码状态,修改密码需输入两次新密码,只有两次输入一致,密码才能修改成功。输入6 位错误密码,按下OP 键时,最右边数码管显示E三秒。三秒后数码管返回常态显示实时钟。密码输入错误次数五次,蜂鸣器报警并且锁定键盘。键盘按键 8 次,输入 8 位正确管理员密码,八位数码管八个显示-,按下 OP 键,门开,此时拉下门闩,继续输入八位正确管理员密码就进入管理员模式选择。如果第一次输入八位密码时门闩的前态

34、是开状态,那么输入一次八位密码就可以进入管理员模式选择。管理员模式下,输入01,按下 OP 键则进行管理员密码修改,输入两次新密码,两次密码一致则密码修改成功,修改成功后,可继续进行管理员模式选择。输入 02,按下 OP 键,对用户密码进行初始恢复,成功后仍可进行管理员模式选择。输入 03 按下 OP 键,数字 3 按键实现对时增量式调校。按数字 4 按键实现对分钟的增量式调校。在输入按键情况下,按下退格键可退格。除锁键状态外,按下CL 恢复常态。在管理员模式选择状态下,关上门闩,系统也恢复常态。七、七、调试记录及调试结果调试记录及调试结果1.1.拆字模块拆字模块当程序初始化后开始运行,我们对

35、键盘无任何操作时为常态,常态正常显示实时钟。设置为非常态且为密码输入状态,给密码位数赋初值,观察显示的“”个数是否正确。显示“”成功后,测试控制码显示,给5AH 和 5BH 初值,观察是否显示正确。该步骤调试顺利。2.2.错误显示模块错误显示模块将错误标志位置一,观察显示。调试时,正常显示“E”3S。在显示E3S 时间设置时本来我以为只要在程序中直接调用延迟 3S 子程序就可以了,但是在调试时却发现程序无法正常运行。但是后来又尝试调用延迟 1S 子程序发现“E”可以正常显示 1S,这个原因可能是因为调用 3S 子程序时间太久,程序已经“跑”出去无法返回主程序。3.3.显示刷新显示刷新只留下拆字

36、与显示刷新两个子程序进行调试,在调试时发现有两处窜显,先在在 DISP 中“LCALL D1MS”指令后加入暗码传送,发现最右位仍有窜显,原因是从 37H,子程序便退出。所以应该在进入显示刷新时也加上一条消除窜显语句。添加后,最终在调试中窜显消失。我们试着将暗码放在其他地方,尝试过后最终决定在 DISP 中加入两断传送暗码的指令,最终调试后窜显消失。21/394.4.键盘获取键盘获取首先将键盘设置为密码输入模式,按键盘,观察数码管显示,多按一次就多一个“”。在最初调试时忘记将消抖子程序加进去发现有抖动,所以在调试键盘时应记得消抖。调试密码输入成功后将键盘设置为控制码输入模式,调试管理员控制码输

37、入模块。该步骤调试顺利。5.5.调试并字调试并字,设置并字成功时,P1.0 亮。在调试过程中,发现等一直不亮。后来发现在满六位或者八位时,遗漏了并字允许。6.6.匹配调试与开门调试匹配调试与开门调试匹配成功与开门是连贯的一个动作。匹配成功时,P1.5 亮 1S,在1S 内门闩拉下 L8 亮。若 1S 内没有将门闩拉下,而是 1S 后拉下门闩则开门失败,无法进入用户或管理员模式进行操作。7.7.门闩开关调试门闩开关调试如果没有给门闩标志位,门开后就不能关了。所以门闩需要分配标志位。系统在循环时,门闩处理子程序必须进行。我们刚开始调试程序时由于忽略了门闩是输入器件,所以在软件清零时也将门闩位清零了

38、,在老师验收时才发现12S后返回常态后,在开门状态下门闩不受控制,不管开门还是关门开门指示灯依旧亮着,才意识到在软件清零是需注意保护门闩位。8.8.管理员控制码输入管理员控制码输入起初输入的数值按前后顺序只能显示在固定的数码管,由于不符合日常习惯,后来改为滚轮显示。输入的数值显示位置不再固定,而是朝左移动。9.9.密码修改密码修改二次输入密码才能修改成功。为了区别用户与管理员密码修改,我们用“LO”键确认用户密码修改,“OP”键确认管理员密码修改。10.10.时间调校时间调校在按键超过 0.5S 实现快调。调试时,长按,按K3 时,只要手没松开,小时一直加一。按K4 时,只要手没松开,分钟数一

39、直加一。K3 和 K4 按下时,秒都清零,更符合日常习惯。八、设计总结八、设计总结通过此次的课程设计,我重新把单片机及相关知识联系在了一起,把平时学到的与平时实验操作知识有了整体的认识,做了很好的总结和整合,并了解到理论与实际相结合的重要性。在课程设计之前,老师就为我们分好了小组,一个小组 3 个人,为的是让我们在团队合作的过程中学会团结协作,互帮互助。第一天老师布置了这两周的设计课题:酒店电子保险箱。交代了设计任务和基本设计要求。并提醒我们应先画好流程图。早上由我们小组间进行讨论,我们讨论了设计的主要思路,画流程图。可是整个程序设计的方面有些多,笼统的想主要思路出不了结果,便决定回去电脑上查

40、相关资料,作为参考帮助我们理清思路。但是这是我们第一次自己写大程序,刚开始时完全没有头绪,后来老师也为我们讲解了主要流程。这使得22/39我们慢慢的有了大概的思路,开始进入状态。开始根据 TEST2012 程序进行整改和完善,在 2012 程序的基础上慢慢摸索我们所要的程序。为期两周的课程设计,不仅是对我们专业技能的一次考核,也是对我们的精神意志的一种磨练,在设计过程当中,我们有时候卡在一个地方纠结,久久无法继续写下去,有时好不容易写出了一点点成就,却因为同学不小心把电脑电源碰掉了而愤懑。或者是忘记保存成果,此时的我们却不能抱怨只能从头再来。同样的再编程当中我们会遇到很多问题,例如程序的稍微变

41、动有时会影响程序的整个结果发生翻天覆地的变化,有时只要忽略一个细节就不能实现我们要的功能。此时的我们也只能一步一步的去寻找问题所在解决问题,又不能忘记前后之间的关系。这是对我们耐心的又一种比较高的考验。而且在调试时原本初始密码是000000 但是我们使用的那块实验板被我们按的 K0 键都快失灵了,我们就修改了初始密码。这让我知道在成功之前我们需要经过无数次实践。此次课程设计与以往的课程设计有很大的不同,此次我们是三个人合作,每个人都有任务分工明确,但又不能自己做自己的完全不顾别人的程序。每次只要做完一点点都要一起讨论方案是否可行。我们的做事与编程一样,需要透过现象看本质。当我们透过现象,按照机

42、器的自然规律理解它的工作机理,那么我们就可以对其进行控制,操作,和修正。本次的课程设计是对以往每一次实验的一种操作总结,也是一次对操作能力的提升,庞大的程序,更多的是需要我们的思考,与以往的课程设计还有实验的不同之处在于,当量达到一定的时候,我们多冷静思考一秒钟,后面的工程就可以事半功倍了。因此我们不应急于一时,看到要求立即动手写程序,往往后面的漏洞是问题的所在,无疑增加了后续编程的工作量。要是在开始做好规划,边做边写边验证,前期的进程比较慢,后续的服务反而更加的得心应手。编程需要规划,也有规律可循。在我们编写程序之前,良好的规划是减小后续编程工作量的保证,要是在前期,在不同的操作模式下找到相

43、同的变成因子,我们可以借其大大缩减我们的工作量,与编程难度,从实用上考虑,可以使我们的程序结构更加优化,对 CPU 的要求可能也大大减低,意味着对硬件的要求也大大的减小,同时省下成本。为期几天的课程设计总结,虽然我只是写了其中的一小部分程序,但也有很23/39大的收获。通过对程序的了解概括,和剖析,可以使我们对程序的理解程度更加深刻,并且可以对程序的一些不足之处可以做部分的修改,使得程序更加精简与实用。此次的课程设计对我们来说是意义非凡的!不仅知识得到了更系统的掌握,而且学会了团结协作,懂得了团队的力量。只有在互相的学习中才能进步,做更好的自己。24/39附件附件 1 1:程序程序ORG000

44、0H;复位入口LJMPMAINORG000BH;定时器 0 服务子程序入口LJMPIT0PORG0030HMAIN:MOVSP,#6FH;总初始化。设定栈底指针LCALL D30MS;稍加延时(30mS),以待各芯片均退出复位状态CLRP3.2;蜂鸣器响LCALL D1S;延时 1SSETBP3.2;关蜂鸣器MOVA,#89H;数码管显示与矩阵键盘接口8255A(U3)初始化MOV DPTR,#0FEFFH;8255A(U3)MOVXDPTR,A;A、B 口输出驱动字段、字位,C 口输入MOVA,#8BH;LED 显示、开关、按键接口8255A(U5)初始化MOV DPTR,#0FDFFH;8

45、255A(U5)MOVXDPTR,A;A 口输出驱 L8-15,B 口输入按键 PB0-7,C 口输入电平开关SW0-7MOVDPTR,#0FDFCH;选中 A 口MOV A,#0FFH;送暗码MOVXDPTR,A;L8-L15 全灭MOVDPTR,#0FEFDH;DPTR 指向 U3-B 口MOV A,#00MOVXDPTR,A;关显示(位驱动全为0无效)MOV30H,#00H;30H-37H 为显示缓冲单元,MOV31H,#01HMOV32H,#00HMOV33H,#02HMOV34H,#10HMOV35H,#01HMOV36H,#05HMOV37H,#10HMOV38H,#00H;38H

46、 单元为实时钟 200uS 计数单元,清 0MOV39H,#00H;39H 单元为 10mS 计数单元,清 0MOV3AH,#45H;秒单元初值MOV3BH,#59H;分单元初值MOV3CH,#08H;时单元初值,时钟初值 08:59:45;.密码初始化.MOV40H,#11H;初始用户密码 111111MOV41H,#11HMOV42H,#11HMOV43H,#11H;初始管理员密码 11111111MOV44H,#11H25/39MOV45H,#11HMOV46H,#11H;-其他内容初始化-MOV27H,#0;清空各标志位MOV28H,#0;清空各标志位MOV3DH,#5;密码错误次数存

47、储单元MOV3FH,#50;快调定时存储单元MOV58H,#00H;密码位数MOV59H,#57H;存密码放置首地址MOV5CH,#100;延时 1S 单元MOV5DH,#3;延时秒数次数;-定时器中断设置-MOVTMOD,#02H;T0 为定时方式 2,8 位的常数自动重新装载定时。MOVTL0,#00H;00H-FFH=256,256TM*36=9216TM=10MSMOVTH0,#00HSETBET0;开 T0 中断允许SETBEA;开中断总允许SETBTR0;启动 T0 定时工作;-主循环-LOOP:LCALLCZ;拆字LCALLCW;错误显示子程序LCALLDISP;显示刷新LCAL

48、L KEY;获取键盘输入LCALL XDPB;消抖LCALL INPUT;密码输入程序LCALL BZ;并字LCALL PP;密码匹配LCALL KM;开门子程序LCALLSWITCH;门闩开关子程序LCALL MMXG;密码修改LCALL SJTJ;时间调校SJMPLOOP;-拆字子程序-CZ:MOVR0,#30H;设置显缓首地址CZLOOP:MOVR0,#12H;对所有显缓单元送暗码INCR0;指向下一位CJNER0,#38H,CZLOOP;是否超过八个数码管容量27H.5,FC;检测当前模式并跳转,为0 常态,为 1 非常态;-常态拆字模块-MOVR0,#3AH;显示内容送显缓子程序(拆

49、字子程序)。置时钟数据单元首地址(秒单元)MOVR1,#30H;置显示缓冲单元首地址(对应于最右显示位)CZ1:MOVA,R0;取当前数据单元 BCD 码ANLA,#0FH;保留低 4 位(个位)26/39MOVR1,A;送显缓当前个位单元INCR1;指向显缓当前十位单元MOVA,R0;再取当前数据单元BCD 码ANLA,#0F0H;保留高 4 位(十位)SWAPA;交换到低 4 位MOVR1,A;送显缓当前十位单元INCR1;指向显缓下一个个位单元INCR0;指向下一个时钟数据单元CJNER0,#3DH,CZ1;未完继续SJMPCZRET;-非常态拆字模块-FC:27H.4,CONTROL;

50、检测键盘输入模式,0 为密码输入,1 为控制码输入;.密码输入拆字模块.SR:MOVA,58H;将密码位数给 ACJNEA,#0,SR2;判断密码位数是否为 0,不为 0 则跳转,为零则直接退出SJMPCZRETSR2:MOVR1,#37H;置显示缓冲单元首地址(对应于最右显示位)MOVR0,58H;将已输入的密码个数送至R0SR1:MOVR1,#10H;送密码个数个-到显缓DECR1;指向下一个缓冲单元DJNZR0,SR1;58H 保存的数不为零则循环SJMPCZRET;.控制码输入拆字模块.CONTROL:MOV 36H,5BH;把 5B 的值送给 36HMOV 37H,5AH;把 5A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com