酒店电子保险箱.doc

上传人:赵** 文档编号:52454535 上传时间:2022-10-23 格式:DOC 页数:38 大小:1.06MB
返回 下载 相关 举报
酒店电子保险箱.doc_第1页
第1页 / 共38页
酒店电子保险箱.doc_第2页
第2页 / 共38页
点击查看更多>>
资源描述

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

1、2022年-2023年建筑工程管理行业文档 齐鲁斌创作微机应用设计与实践课程设计设计课题 酒店电子保险箱 系 别 信息科学与工程学院 专 业 班 级 姓 名 学 号 指导教师 许雪林 2012年 01月 07日目录一、设计任务与实现目标31.4基本设计要求:31.5功能扩展提示:(选做)4设计说明书内容纲要:4二、总体设计方案与方案论52.1系统总体框架52.2设计方案与方案论证62.3方案选择62.4方案论证6三、总框图及总体软件设计说明73.1总流程图73.2总体软件设计说明8四、系统资源分配说明94.1硬件资源分配94.2微处理器内部存储单元分配及数据定义说明9五、局部程序设计说明105

2、.1拆字模块105.2错误提示:显示“E”115.3显示模块115.4键盘扫描模块125.5并字模块描述:135.6开门以及门闩模块描述:165.7密码修改描述:165.8功能键流程图:165.9 12S无动作描述:185.10 15分钟锁键描述:195.11精确时钟流程图:19六、系统功能与操作说明21七、调试记录及调试结果211.拆字模块212.错误显示模块213.显示刷新224.键盘获取225.并字调试226.匹配调试与开门调试227.门闩开关调试228.管理员控制码输入229.密码修改2210.时间调校22八、设计总结22附件1: 程序24附件2:原理图37一、 设计任务1.1设计课题

3、:酒店电子保险箱1.2设计目的:通过小型微机应用产品的设计与调试过程,运用微机原理及接口技术课程所学的基本知识,在设计中加以应用,进而得到理解、巩固和提高发展,通过实践的过程学习掌握分析与解决实际问题的方法与手段,提高设计、编程与调试的实际动手能力,作为工程技术工作的一次基本训练。1.3设计任务:设计一个以单片机为核心的酒店电子保险箱,能在酒店客房中提供给客户使用。具有密码开锁,密码修改、密码输入安全设置、保险箱使用时间等功能。编程并在单片机实验板上模拟调试实现。1.4基本设计要求:1、开机进行接口部件及数码显示器、指示灯、讯响器等自检。2、密码分为管理员密码和用户密码:管理员密码为8位09的

4、数字,而用户密码为6位09的数字。3、设置“0”“9”的数字键及“OP”、“LO”、和“CL”等功能键。对按键输入的信号须进行软件消抖处理。4、保险箱的门有两种状态:打开状态和闭合状态。5、工作模式:(1)常态:数码管显示时钟。(2)开锁模式:需输入6位数字为09的用户密码或输入8位数字为09的管理原密码进行开锁。然后按“OP”键开门。(3)用户修改密码模式:在保险箱开门状态下,由用户自行输入6位数字为09的密码作为新密码,用户初始密码为000000。(4)管理员操作模式:保险柜开门状态下输入8位09的管理员密码,可以进行调校实时钟、恢复用户初始密码和修改管理员密码、设置保险箱使用日期等功能。

5、6、常态下,八位LED 7段数码管显示时钟信息可包括小时、分钟、秒钟。7、常态下,当保险箱关门状态下,只要按下09的数字键则进入密码输入状态,每按一个数字键使数码管从左到右逐次显示“”。8、如果输入密码6位后按“OP”键则与用户密码进行匹配,匹配一致则开锁;如果输入密码8位后按“OP”键则与管理员密码进行匹配,匹配一致则进入管理员操作模式。9、在密码输入状态下,输入未满6位或8位数字密码,按“OP”键则不作响应。10、输入的用户密码如果匹配一致则驱动电动开门电磁铁线圈通电1S,用户拉门把可以打开保险箱;如果输入不正确,则提示“E”,3S后返回常态,等待下一轮的密码输入。11、密码输入过程可以按

6、“CL”键取消输入返回常态。12、用户可以在保险箱开门状态下,通过输入6位09的数字后按“LO”键进行设置新的用户密码。13、当保险箱处于开门状态下,输入管理员密码后按OP键进入管理员操作模式下,输入01功能码代表修改管理员密码;输入02功能码代表恢复用户初始密码;输入03功能码代表实时钟的调校设置,利用数字3和数字4按键实现对时和分钟的增量式调校,持续按键超0.5S时实现快调功能;按“CL”键退出管理员操作模式。1.5功能扩展提示:(选做)1、非常态下12S内无按键操作则自动返回常态;2、管理员操作模式下,03代表设置保险箱使用日期功能,如果开始日期和结束日期均为0:0:0,表示日期不受限制

7、;04代表查询本次开箱前5次的日期和时间。3、如果连续五次输入用户密码错误则报警且锁键15分钟;4、其他功能扩展。1.6设计环节及进程安排: 1、布置课题,明确任务、总体方案设计 2天2、基本功能控制程序设计及调试 3天4、程序功能完善、改进、扩展 3天5、答辩及编写设计说明书 2天 设计说明书内容纲要:1、.设计任务2、总体方案设计与方案论证3、总框图及总体软件设计说明4、系统资源分配说明5、局部程序设计说明6、系统功能与操作说明7、调试记录及调试结果8、课程设计总结9、附录:源程序清单(详细注释) 计算机系统结构教研室 2012年12月二、总体设计方案与方案论2.1系统总体框架更新显示按键

8、扫描拆字送显缓输入送缓存取消退格共用部分密码匹配密码修改开门动作锁键酒店电子密码箱门闩动作无操作错误动作修改用户密码进入用户部分操作模式管理员部分时钟部分无操作模式进入修改管理员密码时间调校用户密码初始管理员操作52.2设计方案与方案论证整个程序采用标志位引导方式实现程序功能,并且将程序模块化,循环扫描各服务子程序。 更新模块-数码管动态扫描子程序 取显示缓冲单元的内容,找到其在段码表中的段码值及位置即键号,分别对应传送到82C55的A、B口,使所得值显示在数码管上。 时钟显示模块 当常态标志位为0时,数码管上显示时钟,格式为时-分-秒,将双字节时钟单元拆字并传送到显缓30H-37H对应的各个

9、单元。 键盘扫描模块 采用线反转法获得行列码,在键码表中找到对应的行列码的位置即键号,并采用滚动滤波法对按键进行消除抖动。新键号存在2EH,旧态放在2FH单元中。 密码匹配模块 在密码匹配允许下进行密码比对。 密码修改模块 在密码修改允许下进行密码修改。 开门及门闩模块 根据开门标志位决定对电磁铁线圈通电1S与否。门闩是一个输入器件。 用户部分 有键按下,转为非常态,等待下一位密码输入,为6位密码则进入用户模块操作。 管理员部分输入密码为8位则进入管理员模块操作。 12S无操作返回及其他拓展部分 在常态下,若没有按键按下,开始计时,时间到12S左右,程序返回常态。若有则重置定时初值。密码输入出

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

11、一:代码编写简单。方案二:代码编写较之前复杂。在密码类型简单情况以及RAM单元够用情况下,没有太大优势。但是在密码类型较多以及RAM单元紧张情况下,优势非常明显。并且为后期的拓展提供了方便。综上所述,选择方案二。三、总框图及总体软件设计说明3.1总流程图3.2总体软件设计说明本设计采用汇编语言编程。 系统在上电复位后,程序开始运行,经过初始化,在无任何操作的情况下,八位数码管显示实时钟。程序循环时对键盘进行扫描。常态有键按下时,当键号为0到9这十个数码键时则输入密码锁的密码。非常态时,不同的功能键对应不同处理,同时,12秒无按键按下,返回常态显示实时钟。当密码输入满六位或者八位后,按下OP键,

12、进入密码匹配程序进行输入的密码与原存储密码判断是否一致,若一致说明密码正确,循环主程序时启动开门子程序KM执行开锁动作,点亮二极管P1.5一秒,循环主程序时启动子程序SWITCH拨下SW0进行开门,开门指示灯L8亮,返回常态显示实时钟。若是六位密码匹配正确后开门,则是用户操作模式,用户可进行密码修改,连续两次输入密码,并按下LO键进行确认修改。程序判断两次密码是否相同,若相同,用户密码修改成功,若不同密码修改失败。当密码输入满八位后,按下OP键,进入管理员密码匹配程序进行输入的密码与原存储密码判断是否一致,若一致说明密码正确,进入管理员模式,此时再次输入管理员密码进入管理员模式,按键按下01或

13、02或03进入不同功能模式。01是进行管理员密码修改,管理员可进行密码修改,连续两次输入密码,并按下OP键进行确认修改。程序判断两次密码是否相同,若相同,管理员密码修改成功,若不同密码修改失败。02是进行管理员初始化用户密码初始化,按下02功能号后再按确认键OP进行用户密码初始化。03是实时钟的设置,利用数字3和数字4按键实现对时和分钟进行调校,连续按下0.5S后实现时钟与分钟快调。在管理员模式下,按下CL键,程序将回到常态显示实时钟。若有任何不一致说明密码不正确,循环主程序时启动错误显示子程序CW,使八位数码管最右位显示E三秒,返回常态显示实时钟。若五次输入密码错误,程序将通过数码管显示时时

14、钟,发出报警,并锁定键盘输入十五分钟。四、系统资源分配说明4.1硬件资源分配 01 23456789OPLOCLTG1、4*4键盘按键分配 K0K9为09的数字键盘 KA为OP键 KB为LO键 KC为CL键 KD为TG键 2、指示灯分配 L5灯为开锁一秒指示灯(图一)L8灯为开门状态指示灯(图二)(图一)(图二)4.2微处理器内部存储单元分配及数据定义说明27H.0 并字允许标志位,可并字置127H.1普通密码匹配模式标志为,为0进行用户密码匹配,为1进行管理员密码匹配27H.2 开门允许标志位,可开门置127H.3 错误标志位,错误置127H.4 键盘获取方式标志为,0为密码输入模式,1为管

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

16、存储区48H4BH输入密码存储区4CH4FH二次输入密码存储区50H57H键盘读入存储区58H密码位数存储单元59H密码存放地址存储单元5AH控制方式首位输入存放单元5BH控制方式次位输入存放单元5CH5DH 3S延时存储单元60H键盘扫描读入值存储单元61H键号值62H键盘获取存储单元63H压缩密码位数存放单元64H密码匹配暂存存储单元65H12S计数存储单元五、局部程序设计说明5.1拆字模块拆字流程图:拆字模块描述:进入拆字模块,先把显示缓冲单元30H-37H赋值#12H,灭显示。接着判断27H.5的值,检测当前状态若为0表示当前状态是常态,进入CZ1进行常态拆字时分秒,显示缓冲单元存放时

17、分秒。不为0则跳转到FCT检测键盘输入模式,其标志位为27H.4,为0则为密码输入部分的拆字,根据按键次数把放入显示缓冲单元中,从30H开始放起,最多放到37H。为1则为管理员功能号输入拆字,将5AH与5BH中的值显示在37H与36H中,可显示01、02、03。5.2错误提示:显示“E”错误显示E描述: 根据标志位27H.3判断是否启动CW子程序。为1则进入子程序,灭显示缓冲单元,然后在30H单元存入#0EH,在数码管最右一位显示E,用循环递减的方式显示E三秒后,清标志位27H.3,清按键密码存储单元,返回常态显示时钟,清按键数。5.3显示模块显示模块描述:系统使用共阴极数码管显示。实验板采用

18、动态显示方式,每次点亮一个 LED 显示器,延时1MS时间再点亮下一个 LED 显示器,周而复始,8个 LED 显示器轮流动态扫描。利用人视觉暂留效应,看起来好像几个显示器上“同时”显示不同的字符。把显示缓冲单元的值依次从八位数码管从右到左显示。为防止窜显,我们在点亮数码管前先送暗码给数码管,且在数码管显示一秒后也对数码管送暗码。此时数码管就不会出现窜显现象。5.4键盘扫描模块键盘扫描流程图:键盘扫描模块描述:采用线反转法扫描得到键盘行列码,根据事先编好的键码表(按国际键盘分布排列)对应行列码查表得到键号,之后根据键号做相应操作(结合其他子模块),功能键则处理相应功能,数字键则相应存储、输出数

19、字量。理论上当按键按下或弹起时,可以相应的产生低电平或高电平,但实际并非如此。键盘按键一般都采用触点式按键开关。按键被按下或释放时,按键触点的弹性会产生抖动现象。即当按键按下时,触点不会迅速可靠地接通,当按键释放时,触点也不会立即断开,而是要经过一段时间的抖动才能稳定下来,按键材料不同,抖动时间也各不相同。按键抖动可能导致单片机将一次按键操作识别为多次操作,一般采用硬件电路或软件程序来消除。本次用软件消抖,即滚动滤波的方式消抖。并字流程图:5.5并字模块描述:在并字允许的情况下,确认输入八位或六位情况下,将两个键号压缩放置在一个单元。第一次输入放在以4BH为首地址的单元,第二次从4FH开始。匹

20、配模块流程图:匹配模块描述:由于本设计采用二次密码确认新密码,所以匹配除了正常的开锁匹配,还包括了修改密码匹配。匹配采用的是一一比对的方法,只要一次比对失败,就退出改子程序,并带上错误标志位。开门以及门闩流程图:5.6开门以及门闩模块描述:在开门允许标志位有效情况下,可以拉开门闩。亮L5一秒说明有效时间。L8说明门闩状态。门闩状态需注意,只能是输入器件。密码修改流程图:5.7密码修改描述:密码修改允许位是该子程序的钥匙,进入后分为管理员密码修改和用户密码修改。修改时,可任选4BH或者4FH的内容作为最新密码。时间调校描述:利用数字3和数字4按键实现对时和分钟的增量式调校,持续按键超0.5S时实

21、现快调功能。5.8功能键流程图:功能键描述:TG:退格。OP:输入确定。LO:用户修改密码。(门开时有效)CL:返回常态键。5.912S无动作描述:程序如下:DJNZ65H,ZXC;对非常态返回计数单元减1MOV27H,#0ANL28H,#01001000B;置标志位MOV58H,#0MOV59H,#57HZXC:CJNE A,#60H,DONE ;满1分钟?MOV 3AH,#0 ;秒单元清零在每次按键时都给65H立即数12,在无按键时,65H每秒减一,等零时,除门闩其他标志位清零。5.1015分钟锁键描述:程序如下:MOVA,3EHCJNEA,#0,ZXC2CLR28H.6SJMPZXC3Z

22、XC2:DEC3EHZXC3:MOV A,3BH ;分钟单元(按BCD码)加1当错误5次时,3EH被赋值,此时标志位28H.6没执行CJNE A,#0,ZXC2就不能执行,28H.6一直处于锁键。只有15分钟后才能被清零。5.11精确时钟流程图:系统内部定时器1产生定时计数满256次INC 38HNMOV 38H=0INC 39H38H=36?YN39H=100?YMOV 39H=03AH加1N3AH=60?YMOV 3AH=03BH加1N3BH=60?YMOV 3BH=03CH加1N3CH=24?YMOV 3CH=0返回精确时钟描述:利用51单片机内部时钟振荡产生的时钟信号,用定时器0选用方

23、式2定时工作模式每定时计数256次对38H单元加1,38H单元计数36次即晶振频率为11.0592MHZ的微控制器9126个机器周期=10ms,满10ms则10ms计数单元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小时也返回。六、系统功能与操作说明常态下八位数码管显示实时

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

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

26、,常态正常显示实时钟。设置为非常态且为密码输入状态,给密码位数赋初值,观察显示的“”个数是否正确。显示“”成功后,测试控制码显示,给5AH和5BH初值,观察是否显示正确。该步骤调试顺利。2. 错误显示模块将错误标志位置一,观察显示。调试时,正常显示“E”3S。3. 显示刷新只留下拆字与显示刷新两个子程序进行调试,在调试时发现有两处窜显,先在在DISP中“LCALL D1MS”指令后加入暗码传送,发现最右位仍有窜显,原因是从37H,子程序便退出。所以应该在进入显示刷新时也加上一条消除窜显语句。添加后,最终在调试中窜显消失。我们试着将暗码放在其他地方,尝试过后最终决定在DISP中加入两断传送暗码的

27、指令,最终调试后窜显消失。4. 键盘获取首先将键盘设置为密码输入模式,按键盘,观察数码管显示,多按一次就多一个“”。在最初调试时忘记将消抖子程序加进去发现有抖动,所以在调试键盘时应记得消抖。调试密码输入成功后将键盘设置为控制码输入模式,调试管理员控制码输入模块。该步骤调试顺利。5. 调试并字,设置并字成功时,P1.0亮。在调试过程中,发现等一直不亮。后来发现在满六位或者八位时,遗漏了并字允许。6. 匹配调试与开门调试匹配成功与开门是连贯的一个动作。匹配成功时,P1.5亮1S,在1S内门闩拉下L8亮。若1S内没有将门闩拉下,而是1S后拉下门闩则开门失败,无法进入用户或管理员模式进行操作。7. 门

28、闩开关调试如果没有给门闩标志位,门开后就不能关了。所以门闩需要分配标志位。系统在循环时,门闩处理子程序必须进行。我们刚开始调试程序时由于忽略了门闩是输入器件,所以在软件清零时也将门闩位清零了,在老师验收时才发现12S后返回常态后,在开门状态下门闩不受控制,不管开门还是关门开门指示灯依旧亮着,才意识到在软件清零是需注意保护门闩位。8. 管理员控制码输入起初输入的数值按前后顺序只能显示在固定的数码管,由于不符合日常习惯,后来改为滚轮显示。输入的数值显示位置不再固定,而是朝左移动。9. 密码修改二次输入密码才能修改成功。为了区别用户与管理员密码修改,我们用“LO”键确认用户密码修改,“OP”键确认管

29、理员密码修改。10. 时间调校在按键超过0.5S实现快调。调试时,长按,按K3时,只要手没松开,小时一直加一。按K4时,只要手没松开,分钟数一直加一。K3和K4按下时,秒都清零,更符合日常习惯。八、设计总结通过此次的课程设计,我重新把单片机及相关知识联系在了一起,把平时学到的零碎知识有了整体的认识,做了很好的总结和整合。收获颇丰。 在课程设计之前,老师就为我们分好了小组,一个小组3个人,为的是让我们在团队合作的过程中学会团结协作,互帮互助。第一天老师布置了这两周的设计课题:酒店电子保险箱。交代了设计任务和基本设计要求。早上由我们小组间进行讨论,我们讨论了设计的主要思路,画流程图可是整个程序设计

30、的方面有些多,笼统的想主要思路出不了结果,便决定回去电脑上查相关资料,作为参考帮助我们理清思路。但是这是我们第一次自己写大程序,刚开始时完全没有头绪,后来老师也为我们讲解了主要流程。这使得我们慢慢进入了状态。开始根据TEST2012程序进行整改和完善,在2012程序的基础上慢慢摸索我们所要的程序。为期两周的课程设计,不仅是对我们专业技能的一次考核,也是对我们的精神意志的一种磨练,在设计过程当中,我们有过小小成功的喜悦,也有过当电脑突然断电时的那种无奈和愤恨,此时的我们只能吃一堑长一智,总结历史教训,我们变的更加细心了。同样的再编程当中我们会遇到很多问题,例如程序的稍微变动有时会影响程序的整个结

31、果发生翻天覆地的变化,有时只要忽略一个细节就不能实现我们要的功能。此时的我们也只能一步一步的去寻找问题所在解决问题,又不能忘记前后之间的关系。这是对我们耐心的又一种比较高的考验。此次课程设计与以往的课程设计有很大的不同,此次我们是三个人合作,每个人都有任务分工明确,但又不能自己做自己的完全不顾别人的程序。每次只要做完一点点都要一起讨论方案是否可行。我们的做事与编程一样,需要透过现象看本质。当我们透过现象,按照机器的自然规律理解它的工作机理,那么我们就可以对其进行控制,操作,和修正。本次的课程设计是对以往每一次实验的一种操作总结,也是一次对操作能力的提升,庞大的程序,更多的是需要我们的思考,与以

32、往的课程设计还有实验的不同之处在于,当量达到一定的时候,我们多冷静思考一秒钟,后面的工程就可以事半功倍了。因此我们不应急于一时,看到要求立即动手写程序,往往后面的漏洞是问题的所在,无疑增加了后续编程的工作量。要是在开始做好规划,边做边写边验证,前期的进程比较慢,后续的服务反而更加的得心应手。编程需要规划,也有规律可循。在我们编写程序之前,良好的规划是减小后续编程工作量的保证,要是在前期,在不同的操作模式下找到相同的变成因子,我们可以借其大大缩减我们的工作量,与编程难度,从实用上考虑,可以使我们的程序结构更加优化,对CPU的要求可能也大大减低,意味着对硬件的要求也大大的减小,同时省下成本。为期几

33、天的课程设计总结,虽然是纸上谈兵,但也有很大的效果,通过对程序的概括,和剖析,可以使我们对程序的理解程度更加深刻,并且对程序的一些不足之处可以做部分的修改,使得程序更加精简。此次的课程设计对我们来说是意义非凡的!不仅知识得到了更系统的掌握,而且学会了团结协作,懂得了团队的力量。只有在互相的学习中才能进步,做更好的自己。附件1: 程序 ORG0000H;复位入口LJMP MAINORG000BH;定时器0服务子程序入口LJMPIT0PORG0030HMAIN:MOV SP,#6FH;总初始化。设定栈底指针LCALL D30MS;稍加延时(30mS),以待各芯片均退出复位状态CLR P3.2 ;蜂

34、鸣器响 LCALL D1S ;延时1S SETB P3.2 ;关蜂鸣器MOV P1,#00H;P1口驱动的L0-L7指示灯全亮LCALL D1S ;延时1SMOV P1,#0FFH;熄L0-L7指示灯 MOV A,#89H;数码管显示与矩阵键盘接口8255A(U3)初始化MOV DPTR,#0FEFFH ;8255A(U3) MOVX DPTR,A ;A、B口输出驱动字段、字位,C口输入MOV A,#8BH ;LED显示、开关、按键接口8255A(U5)初始化MOV DPTR,#0FDFFH ;8255A(U5) MOVX DPTR,A ; A口输出驱L8-15,B口输入按键PB0-7,C口输

35、入电平开关SW0-7 MOV DPTR,#0FDFCH ;选中A口 MOV A,#0FFH ;送暗码 MOVX DPTR,A ;L8-L15全灭 MOV DPTR,#0FEFDH ;DPTR指向U3-B口MOV A,#00MOVX DPTR,A ;关显示(位驱动全为0无效);-显缓初始化-MOV 30H,#00H;30H-37H为显示缓冲单元,MOV 31H,#01HMOV 32H,#00HMOV 33H,#02HMOV 34H,#10HMOV 35H,#01HMOV 36H,#05HMOV 37H,#10H;-时钟初始化-MOV 38H,#00H ;38H单元为实时钟200uS计数单元,清0

36、 MOV 39H,#00H;39H单元为10mS计数单元,清0MOV 3AH,#45H ;秒单元初值MOV 3BH,#59H ;分单元初值MOV 3CH,#08H ;时单元初值,时钟初值08:59:45;-用户密码初始化-MOV40H,#11HMOV41H,#11HMOV42H,#11H;-管理员密码初始化-MOV 43H,#11HMOV 44H,#11HMOV 45H,#11HMOV 46H,#11H;-其他内容初始化-MOV58H,#00H ;密码位数 MOV59H,#57H;存密码放置首地址MOV6AH,#100;延时初始1SMOV6BH,#3;延时初始2MOV3FH,#50;快调定时存

37、储单元MOV3DH,#5;密码错误次数存储单元MOV27H,#0;清空各标志位MOV28H,#0 ;-定时器中断设置- MOV TMOD,#02H;T0为定时方式2。 MOV TL0,#00H;00H-FFH=256,256TM*36=9216TM=10MS MOV TH0,#00H SETB ET0 ;开T0中断允许SETB EA ;开中断总允许SETB TR0 ;启动T0定时工作;-主循环-LOOP: LCALLCZ;拆字 LCALLCW ;错误显示子程序 LCALLDISP;显示刷新LCALLKEY;获取键盘输入LCALLXDPB;消抖LCALLINPUT;密码输入程序LCALLBZ ;

38、并字LCALLPP ;密码匹配LCALLKM ;开门子程序LCALL SWITCH ;拨码开关开门设置 LCALLMMXG ;密码修改 LCALLSJSZ ;管理员03时间调校SJMP LOOP;-拆字子程序-CZ:MOVR0,#30H ;设置显缓首地址CZLOOP:MOVR0,#12H;对所有显缓单元送暗码INC R0CJNER0,#38H,CZLOOPJB27H.5,FCT ;检测当前模式并跳转,为0常态,为1非常态;-常态拆字模块-MOV R0,#3AH ;显示内容送显缓子程序(拆字子程序)。置时钟数据单元首地址(秒单元)MOV R1,#30H ;置显示缓冲单元首地址(对应于最右显示位)

39、CZ1:MOV A,R0 ;取当前数据单元BCD码ANL A,#0FH ;保留低4位(个位)MOV R1,A ;送显缓当前个位单元INC R1 ;指向显缓当前十位单元MOV A,R0 ;再取当前数据单元BCD码ANL A,#0F0H ;保留高4位(十位)SWAP A ;交换到低4位MOV R1,A ;送显缓当前十位单元INC R1 ;指向显缓下一个个位单元INC R0 ;指向下一个时钟数据单元CJNE R0,#3DH,CZ1;未完继续SJMPCZRET;-非常态拆字模块-FCT:JB27H.4,KZCZ;检测键盘输入模式,0为密码输入,1为控制码输入;.密码输入拆字模块.SRMOD:MOVA,58H;将密码位数给A CJNE A,#0,SRMOD2 ;判断密码位数是否为0,不为0则跳转,为零则直接退出SJMPCZRETSRMOD2:MOV R1,#37H ;置显示缓冲单元首地址(对应于最右显示位

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

当前位置:首页 > 教育专区 > 高考资料

本站为文档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