微机课程设计-基于AT89S51单片机的酒店客房电子密码保险箱的控制程序设计.doc_第1页
微机课程设计-基于AT89S51单片机的酒店客房电子密码保险箱的控制程序设计.doc_第2页
微机课程设计-基于AT89S51单片机的酒店客房电子密码保险箱的控制程序设计.doc_第3页
微机课程设计-基于AT89S51单片机的酒店客房电子密码保险箱的控制程序设计.doc_第4页
微机课程设计-基于AT89S51单片机的酒店客房电子密码保险箱的控制程序设计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及接口技术课程设计目 录1 设计任务与功能要求- 1 -1.1 设计课题- 1 -1.2 设计目的- 1 -1.3 设计任务- 1 -1.4设计要求- 2 -2 总体设计规划与方案论证- 4 -2.1 系统组成- 4 -2.2 程序总体设计结构- 4 -2.3 方案论证- 5 -2.4方案选取- 6 -3 总流程图及总体软件设计说明- 8 -3.1 总流程图- 8 -3.2 总体软件设计说明- 9 -4 系统资源分配及数据定义说明- 10 -4.1主要芯片端口分配- 10 -4.2单片机内部数据储存单元定义和说明- 12 -5 局部程序设计说明- 16 -5.1自检和总初始化- 16 -5.2主工作流程各模块功能程序设计说明- 16 -6 系统功能与用户操作使用说明- 26 -6.1系统功能- 26 -6.2用户操作说明- 26 -7 课程设计总结- 27 -7.1 课程设计遇到的问题及解决办法- 27 -7.2 课程设计心得体会- 27 -8 附录- 30 - 微机原理及接口技术课程设计基于AT89S51单片机的酒店客房电子密码保险箱的控制程序设计1 设计任务与功能要求1.1 设计课题本次微机课程设计的课题是酒店客房电子密码保险箱的控制程序设计,众所周知,中国的第三产业中的旅游业不断地发展,如今旅游已经成为了一种时尚,而旅客入住酒店最关心的,自然就是人身安全和财产安全问题。故而,酒店保险箱既要安全可靠能够防盗,还要操作简易,这也是设计保险箱控制程序一直以来的主题。随着电子产品向智能化和微型化地不断发展,单片机已经成为电子产品研制和开发中的首选的控制器。本文介绍了一种基于ATC89S51单片机设计的酒店客房电子密码保险箱 ,系统由单片机系统、键盘、LED显示器和报警讯响系统构成。该控制系统可以进行时钟设定、开箱、输错密码超次锁定和修改客户密码等功能,具有软硬件设计简单,易于开发,成本较低,操作方便等特点,有比较好的实用性。1.2 设计目的通过对小型微机应用产品的设计与调试过程,运用微机原理及接口技术课程所学的基本知识,在设计过程中反复回过头复习微机知识,使得所学知识在实践中加以应用,进而得到理解、巩固和提高,学习掌握分析与解决实际问题的手段,提高设计、编程与调试的实际动手能力,作为工程技术工作的一次基本训练,并且通过反馈式学习,将课程学习中自身有理解不透彻和消化不良的知识点理解。1.3 设计任务酒店客房电子密码保险箱是酒店为保证客人随身的贵重物品的安全而提供的一种设施,采用智能电子密码方式,设计一个以51单片机为控制器的酒店客房电子密码保险箱,具有客人自设定密码锁门、客人输入原设定的密码开门、有管理员主密码(首次开箱用主密)应急开箱,并具有时钟调校以及讯响报警等功能,具有操作简易,成本较低等特点。 1.4设计要求1) 开机自检,主要是对数码显示器、指示灯、讯响器(蜂鸣器)的检查,判断其有无正常,如果有损坏,及时替换元器件。2) 八位LED 七段数码管作为时钟、密码的显示界面,设置的格式为XX-XX-XX。3) 基本显示界面为按照24小时制动态显示实时钟的小时、分钟、秒钟的信息。4) 对原有键盘进行改造,使其组成由“0”“9”数字键及“*”(取消键)、“#”(确定键)组成,并且键按下时应回馈短促的键音,键盘扫描采取滚存滤波消抖动处理。5) 时钟设定功能:修改实时钟相关程序,使得数字实时钟的走时仅受晶体振荡器元件的影响。在显示时钟的基本显示界面状态下按下“#”键则进入时钟设定界面,设计为XX XX XX(亦即小时 分钟 秒钟这样的格式),具有动态调取并显示当前实时钟的小时和分钟值(随着走时改变),从小时十位开始可逐位输入新的时、分值,当前数字位以2Hz频率闪烁显示的形式标示;一旦有输入新数字则停止动态调取实时钟的时、分值,即显示的时、分值不再跟随内部实时钟走时的变化。按下取消键则撤销本次修改返回基本显示界面,按下“#”键则确认本次修改,并将秒钟数清零,将新的时、分值更替到实时钟相应单元(时钟设定应当有超值时发出讯响告警声,此时确定键确定不了),返回基本显示界面。6) 采用拨动开关模拟设备的开关量输入信号,应当由开关量输入处理子模块程序统一对开关量输入信号进行输入并进行滚存滤波消抖动处理。利用LED指示灯驱动输出用来模拟设备的开关量输出正反转驱动信号,统一由输出驱动子模块(OUT)输出驱动。蜂鸣器用以模拟设备的讯响告警功能,统一由讯响驱动子模块程序综合各功能程序模块所产生的讯响标志(进程码或者标志位思想)执行蜂鸣器驱动。7) 保险箱的门闩由电动执行器驱动,利用SW1、SW2拨动开关(低电平有效)模拟 “伸出到位”与“收缩到位”两个检测开关信号输入,SW3拨动开关(高电平有效)模拟“箱门关闭”到位检测开关信号输入。8)主密开箱模式:首次开箱或者客人忘记客密时由管理人员运用主密码开箱。在已锁箱状态(30H进程)下,按取消键进入输主密的界面在基本显示界面(设为-)下开始依序输入8位主密,从输入第一位密码起显示器切为同步显示,但当数字键放开后以“-”替代。 输密过程中,如果客人认为输错,可按取消键取消返回基本显示界面,重新输密操作。输入的8位主密不匹配则讯响告警且出错次数加1(与客密判断合计记错次数),返回基本显示界面;回到基本显示界面下发现错误输入密码累计次数达3次,则键盘进入5分钟的被锁定状态并且关掉显示器。9) 客人设置密码(客密)关箱模式:在已开箱状态(进程20H)下,关上箱门,确认箱门已经关紧,客人在基本显示界面下开始依序输入46位数字作为客密。从输入第1位密码起显示屏切为同步显示输入的数字(显示模式为XXXXXX ),期间按下取消键则撤销本次操作回到基本显示界面。当已输入46位的客密情况下按确定键确认锁箱操作,P1口输出正转伸长驱动信号有效令门闩伸长扣住箱门,检测到门闩伸长到位立马撤销驱动信号,切换为已锁箱状态(30H进程),讯响提示锁箱完成,显示客密2秒后返回基本显示界面。10) 客密开箱模式:在已锁箱状态(30H进程)下,客人在基本显示界面下依序输入先前设置好的客密,从输入第1位密码起显示器切为同步显示,期间按下取消键则撤销本次操作回到基本显示界面。输入的46位的密码与先前设置的客密吻合则控制单元输反转收缩驱动信号令门闩收缩,门闩收缩到位立马撤销驱动信号,切换为已开箱状态(进程),讯响提示开箱完成,立马返回基本显示界面。输满6位时发现与客密不吻合在内部计出错次数加1(与主密合计);在(回到)基本显示界面下发现错误输入密码累计次数达3次,则令键盘进入5分钟的被锁定状态,显示屏黑屏,若再按任何键,发出讯响告警,5分钟后恢复基本显示界面,可以重新操作。11)休眠待机模式:30S内没有进行操作时,显示屏暗屏,一旦有按键按下,重新计时30S,30S倒计时完后,恢复基本显示界面,尤其注意两种特殊情况,一是进行主客密开箱时,当收缩到位检测信号有效时,此时不做任何操作,30S倒计时完后返回的是输密界面(分别为-和XXXXXX ),另一种情况则是设置客密时,当伸出到位检测信号有效时,此时不做任何操作,30S后返回的是设置客密的界面(XXXXXX ),其余情况返回基本显示界面。 2 总体设计规划与方案论证2.1 系统组成本次微机课程设计的设计任务是酒店客房电子密码保险箱控制程序的设计,运用所学的微机原理及接口技术基本知识运用到实际应用中去,以AT89S51为控制器,配合键盘系统、L0L7 灯模拟电动执行器输出正反转驱动信号(P1.0输出正转伸长驱动信号和P1.1输出反转收缩驱动信号),讯响系统,数码管显示驱动以及拨动开关模拟电动执行器输出伸出、收缩到位检测和箱门关闭到位检测行程开关(SW0模拟设备输出伸出到位检测信号,低电平有效;SW1模拟设备输出收缩到位检测信号,低电平有效;SW2模拟设备输出箱门关闭到位检测信号,高电平有效)。系统组成结构图如下图2.1所示:图2.1 系统组成结构图利用实验板子上的数码管同步显示进行基本界面的显示模式、设定时钟模式、设置46位客密模式、输入主客密开箱模式以及锁屏模式和休眠节能模式的操作。2.2 程序总体设计结构根据本次课程设计的要求,将各个功能按模块化进行设计以及程序编写。总体的结构框架由总初始化、自检(自检包括数码管显示器、指示灯、蜂鸣器等)以及主流程组成。其中主流程包括以下18个子模块程序:1) 到位检测开关消抖子模块2) 调用显示内容送显缓单元子模块(拆字子模块)3) 键盘扫描子模块4) 主密开箱子模块5) 时钟设定子模块6) 2Hz闪烁子模块7) 设置客密子模块8) 客密开箱子模块9) 显示2s的子模块10) 关闭屏幕子模块11) 休眠节能子模块12) 按键判断子模块13) 按键音就发声子模块14) 讯响驱动子模块15) 三次不吻合再按键告警声产生标志位子模块16) 指示灯查错子模块17) 显示更新子模块18) 输出驱动子模块2.3 方案论证本次课程设计:对于酒店客房电子密码保险箱控制程序的设计进行分析,采用模块化思想、进程码、限定条件、标志位的编程方法,这种设计方法将整体构划分为各个模块,并且在模块中用进程表示一个动作或状态,模块之间用条件式进行连接,用各个模块逐渐完成各个功能,在之后的修改和拓展中可以很容易地进行相应操作,可读性和逻辑性较强,非常容易排查错误并且能够一个个实现功能而后整合在一起实现所有功能,在课程设计中使用这种方法更为简单方便。2.3.1 模块化思想将课程设计中系统各个功能用多个子模块进行实现,并且可调用其他模块进行功能的完善,以实现某种功能,整合起来可以实现所有功能。2.3.2进程码思想将程序以及根据客户对产品的要求设计各个进程,逐个实现各个功能,该次课程设计中主要用了两个进程码,20H表示调时进程和21H表示箱门进程。2.3.3限定条件思想当系统要进行一个动作时,加入满足条件的判断,条件满足时才能执行相应进程,完成相应功能。当不满足条件时,进行其他的功能。2.3.4 标志位思想当实现某些功能时,需要执行其他功能需要进行条件转移,利用该原理可以很好地切换程序所要实现的逻辑以及功能。2.4方案选取 2.4.1 键盘扫描的方案选取方案一:扫描法第1步:识别键盘有无键按下;驱动所有列线为“0”,输入各行线电平如果有“0”,就说明有键按下,如果行线电平全“1”,则全部无键按下。第2步:如有键被按下,识别具体的按键。依序驱动某一列为“0” ,其余列均为“1” ,输入各行线电平,如果某行线电平为“0” ,可确定此行列交叉点处的按键被按下;如果行线电平全为“1”则本列无按键按下。采用扫描法可以解决端口的限制问题,但是其编程比较复杂,要逐个扫描按键,因此程序执行的时间比较长且繁琐。方案二:线反转法线反转法具有简练的特点,无论被按键是处于第一列或者最后一列,均只需经过两步便能获得被按键的行列值,但是采用反转法有限制,就是行线设置为输出,列线要设置为输入,列线设置为输出时,行线要设置为输入,因此同个端口不能高低位分开设置输入输出状态的话,就得使用两个端口。反转法的原理图如图2.4所示: 图2.4 反转法原理图方案选择:由于8255的C口的高低四位的输入输出状态可以分开设置,因此消除了反转法中端口的限制,且利用线反转法的编程简单,因此采用线反转法来扫描按键是否按下。2.4.2数码管的显示方式方案选取方案一:静态显示方式将各位公共端连接在一起(接地或者接+5V),每位的段码有8位的端口来驱动。采用静态显示方式接口编程比较容易,数码管的显示亮度比较高且稳定,但是也存在着占用的端口比较多的缺点。方案二:动态显示方式将多个数码管的段线的相应段并联在一起,由一个8为的I/O口控制,形成段线的多路复用,各位的公共端分别由另外的I/O线控制,形成各位的分时选通。动态显示方式占用的I/O口比较少,驱动程序繁琐,占用CPU时间多,总的驱动电流小。方案选择:此次课程设计所需数码管共有8个,如果选用静态显示的话,没有足够的I/O口供其配置,所以必须选用动态扫描的方式。2.3.5硬件方案的选择拨动开关:输入的电平信号能够保持适合做模式切换开关,行程开关和门内外的检测号。按钮:按下后改变电平信号,释放后电平信号恢复,具有自动回复的特点适合做手动开关门的按钮。方案选择:当进行实验板上的按钮、拨动开关模拟设备的开关量输入信号,保险箱的门闩由电动执行器驱动,利用SW1、SW2拨动开关(低电平有效)模拟 “伸出到位”与“收缩到位”两个检测开关信号输入,SW3拨动开关(高电平有效)模拟“箱门关闭”到位检测开关信号输入,当使用按钮时,放开电平值就恢复了,所以要一直按下,使用起来极为不便,所以本次设计采用SW拨动开关。3 总流程图及总体软件设计说明3.1 总流程图如流程图所示,总体的结构框架由总初始化、自检(自检包括数码管显示器、指示灯、蜂鸣器等)以及主流程组成。3.2 总体软件设计说明根据课程设计任务书的要求,此次设计需要实现的基本功能有设定时钟并具有调校功能、主客密开箱、设置客密、休眠节能、输错密码达三次自动锁屏功能以及操作键盘和基本显示界面等本文选择模块化、进程码、限定条件和标志位思想的设计方案,因此为实现以上基本功能时,将各个功能做成模块化,如时钟设定子模块、主客密开箱子模块、设置客密开箱和休眠待机节能以及唤醒子模块等,模块之间通过进程码进行和限定条件并通过标志位发生控制程序转移进行连接,保持整个系统的稳定进行,以便实现整体要求的所有功能。本文通过设定不同的进程来实现相应的功能,因次需要用到进程码。进程码就是在系统执行过程中通过对进程单元存入不同的数据,在之后的模块程序中判断进程单元中的数据,根据不同的数据做不同的处理,即引领程序的进程,实现各个模块的配合。本次的设计中,在调时子模块中用20H进程单元中,01H进程码为基本时钟显示界面,10H13H进程码分别为时十和时个、分十和分个的修改操作,通过改变进程码可实现左移、右移。示意图如图3.2所示:图3.2 调时示意图而箱门进程是在21H进程单元中,20H表示开箱进程,当箱门关紧时,进入设密界面,21H29H表示输入密码18位的进程,只有设置密码为46位才能按下确定键,2AH进程表示密码设置成功按下确定键的进程,2BH进程表示正转伸长驱动信号到位的进程。30H进程表示箱门关紧的进程,在箱门关闭检测信号到位的情况下也就是箱门关紧的情况下,进行开箱功能,管理员进行主密开箱时,按取消键进入输主密界面,41H49H表示依次输入8位主密的进程,4AH进程表示反转收缩驱动信号的有效的进程。同样在30H箱门关紧进程下,进行客密开箱,31H36H表示依次输入面46位的进程,3AH表示46位密码匹配,反转收缩驱动信号有效的进程。而讯响驱动子模块本次设计中采用标志位的方案,很好地跳转到该讯响的模块,而未采用进程码思想,其实思想是差别不大的。此次程序的设计是大部分由进程码来引领程序的进程,在各个进程中做相应的功能处理子程序,在进程中同时又建立不同的标志位来引领不同的程序段实现不同的功能的切换。在接下来模块介绍时会具体讲进程单元之间如何切换并工作。4 系统资源分配及数据定义说明4.1主要芯片端口分配表1 AT89S51单片机端口分配端口配置说明P0数据总线D0-D7P1L0-L7P2P2.0(U3片选端)、P2.1(U5片选端)P3P3.2蜂鸣器表2 8255(U5)端口分配端口配置说明PAL815PB单按键PB0PB7PC拨动开关SW0SW7表3 8255(U3)端口分配端口配置说明PA数码管八个段,输出0有效PB数码管八个位,输出1有效PC矩形键盘表4 硬件分配名称作用数码管设定时间、调时SW0模拟设备输出伸长到位检测信号SW1模拟设备输出收缩到位检测信号SW2模拟设备输出箱门关闭到位检测信号P1.0模拟设备输出正转伸长驱动信号P1.1模拟设备输出反转收缩驱动信号K12*键(取消键)K14#键(确定键)K13数字键0K0数字键 1K1数字键 2K2数字键 3K4数字键 4K5数字键 5K6数字键 6K8数字键 7K9数字键 8K10 数字键 94.2单片机内部数据储存单元定义和说明表5 各单元定义与说明单元定义与说明 所用到的值20H时钟设置进程码:01H基本显示界面10H是时十,11H是时个位,12H是分十位,13H是分个位,14H是新拆字功能进程、0FFH是黑屏进程 01H、10H、11H、12H、13H、14H0FFH21H箱门进程码:30H是锁箱进程,41H-49H是输入主密的进程,4AH是反转收缩驱动信号有效进程;31H-36H是输入客密的进程,3AH反转收缩驱动信号有效进程。20H是开箱进程码,21H-29H输入8位密码的进程,2AH是密码设置成功的进程20H、21H-29H,2AH、2BH 30H、31H-36H、3AH 41H-49H、4AH23H23H.0:有按键的键音23H.1:超值告警声23H.2: 反转收缩到位声23H.3: 输入密码不吻合声音23H.4: 正转伸长到位声23H.5:三次不吻合再按任意键的声音 00H、01H、02H、03H、04H、05H24H24H.0:设置客密界面标志位24H.1:设置客密界面标志位24H.2:客密开箱界面标志位24H.3 :锁屏标志位24H.4:开箱返回的标志位24H.5:30s内无按键按下标志位24H.6:调时界面标志位24H.7:进入主密开箱界面标志位 00H、01H 、02H 、03H、 04H、 05H 、06H 、07H25H输出驱动存储单元26H26H.1:休眠唤醒标志位27H字段码存储单元28H字位码存储单元29H5次滚存滤波消抖单元2AH5次滚存滤波消抖单元2BH5次滚存滤波消抖单元2CH5次滚存滤波消抖单元2DH5次滚存滤波消抖单元2EH新一次扫描到的电平值存储单元2FH前一次扫描到的电平值存储单元30H37H显示缓存单元 3AH秒钟显示缓存单元 3BH分钟显示缓存单元 3CH小时显示缓存单元 时个位3DH屏幕关闭的时间存储单元3EH屏幕关闭的时间存储单元3FH休眠节能倒计时41H中间缓存单元防止取消键取消回去分钟不合法42H中间缓存单元防止取消键取消回去小时不合法 43H47H、4CH4EH主密存储单元48H分钟个位中间存储单元49H分钟十位中间存储单元4AH小时个位中间缓存单元4BH小时十位中间缓存单元50H57H 设置客密中间缓存单元58H5DH存放客密的单元64H新一次扫描到的键号存放单元65H前一次扫描到的键号存放单元66H休眠节能倒计时存储单元67H按键音响长存储单元68H蜂鸣器延时时间6AH超时延时时间6BH声响多久存储单元 6DH显示2S存储单元6EH屏幕关闭的时间存储单元5 局部程序设计说明5.1自检和总初始化设置单片机复位入口地址为0000H,设置堆栈指针为#6FH。在进行总初始化之前,延时63MS保证各芯片均退出复位状态。延时后,系统首先对8255(U3)接口芯片初始化(A8线选),设定为A口输出(驱动字段)、B口输出(驱动字位)、C口输入。利用动态扫描方法即从右往左扫描而后数码管全灭,延时1S后,数码管显示全亮字段码,即可证明显示器正常。随后检测L8L15指示灯的好坏,先全亮1S,而后熄灭,若指示灯全亮,即可证明,L0L7的方法与之相同。自检后,可以使用户得知该产品是否出现功能障碍,如有损坏,可以及时让管理人员更换元器件确保系统各部分功能正常,以便用户使用。5.2主工作流程各模块功能程序设计说明5.2.1 到位检测开关消抖子模块如方框图里的程序以及原理图所示,拨动开关用到的接口芯片是8255A(U5),(A9线选),总初始化时就已经对U5进行了初始化,B口为输入。故首先DPTR指向B口,接着把SW0SW7对应的电平值存到29H单元,经滚动滤波法(前4次输入电平值推至29H2DH单元,然后比较近5次输入电平值,5次均相同时则把29H单元电平值送给2EH单元)消抖后,其电平值新态存2EH单元,旧态存2FH单元。5次滚存滤波消抖法原理的示意图如图5.2.1所示XDSW:MOV 2FH,2EHMOV 2DH,2CHMOV 2CH,2BH MOV 2BH,2AH MOV 2AH,29H MOV DPTR,#0FDFEH MOVX A,DPTR MOV 29H,A MOV A,2DH CJNE A,2CH,XDR CJNE A,2BH,XDR CJNE A,2AH,XDR CJNE A,29H,XDR MOV 2EH,AXDR: RET 图5.2.1 5次滚存滤波消抖原理示意图5.2.2 拆字子模块在基本显示界面进程下(即01H进程下),调用拆字子程序,而休眠待机、调校时间时不执行拆字,只有在已开箱或者已关箱的状态下才进行拆字,拆字子模块是根据进程码或者标志位将不同的数据单元拆送到显缓单元,先把送显单元的数据与立即数(#0FH)相与,屏蔽高四位,将屏蔽后得到的数据存入相应的显示缓冲单元,接着是将送显单元的数据与立即数(#0F0H)相与,屏蔽低四位,所得的数据高四 位与低四位相对换,再存到相应的显示缓冲单元。即将小时单元3CH、分钟单元3BH和秒钟单元3AH进行拆字,其中3CH低位送到36H,高位送到37H显示,3BH低位送到33H,高位送到34H显示,3AH低位送到30H,高位送到31H,32H和35H单元显示“-”,以便清楚的分隔开小时、分钟、秒钟,时钟基本界面的示意图如图5.2.2所示。图5.2.2 时钟基本界面示意图整个拆字子模块的结构如图5.2.3所示:图5.2.3 拆字子模块流程示意图5.2.3 键盘扫描子模块键盘扫描子模块,利用线反转法将前一次扫描到的键号送给65H单元,将新一次扫描到的键号存64H单元,然后采用三次滚存滤波消抖法对按键进行消抖。而后DPTR指向U3的控制口地址,先将C口初始化为高4位输出驱行线,底4位读入列线。DPTR指向U3的C口,置输出驱动键盘行线(高4位)全:“0”,输出到U3的C口,输入键盘列线电平(低4位)存60H单元,再将DPTR指向U3的C口改将C口初始化为高4位输入读行线、低4位输出驱动列线,DPTR指向U3的C口,置输出驱动键盘列线线(第4位)全“0”U3的C口。输入键盘行线电平(高4位)保留在A中,屏蔽60H单元的高4位保留其低4位,屏蔽A中的低4为保留高4位,60H单元里的内容与A相或后的内容存于60H中。以假定的键号值从00H开始查表,设定最多进行12次的键码查表,DPTR指向键码表首地址将查表读取到键码表中的值,后取当前假定的键号值于A中,查表读取键码表中当前假定的键号值对应位置的键码,与扫描到的8位码进行比较,不同则则转NK查下一个,相同则转KN进行键功能处理(全部查完后即使无按键按下,程序也会继续执行进入KN)。在KN中首先取新键号,次键号与62H和63H中所存键号进行比较若都相同才表明不是按键抖动产生的新键号,这样才能继续执行该模块其余的内容。执行完后结束返回主工作流程。改造键码表如以下程序所示:KEY_N:DB 7DH,0EEH,0EDH,0EBH ;键码表K0,K1,K2,K3键码 DB 0DEH,0DDH,0DBH ;K4,K5,K6键码 DB 0BEH,0BDH,0BBH ;K7,K8,K9键码 DB 7EH,7BH ;K10,K11键码得到键盘示意图如图5.2.3所示:图5.2.3 键盘示意图5.2.4时钟设定子模块及闪烁子模块(1)时钟设定子模块只有在未休眠、未锁屏在基本界面按下确定键进入时钟设定界面,首先必须先判定是否为基本界面,亦即21H进程为01H,进入时钟设定界面后进入时钟设定状态,进入所显示的界面为XX XX XX,如图5.2.4所示:图5.2.4 调时界面此时进入10H进程调小时十位进程,按下0到9数字键,将64H单元里的新键号值送入37H显缓单元,随之将20H进程码变为11H进程。接下来继续按下数字键,可设置小时的个位,变为12H进程,以此类推直至把分钟个位设置完成,如果对之前设置的时钟不满意可继续按下数字键,此时又能够设置小时的十位(运用进程码的变换来实现)。当用户如果认为自己设定的时间功能不对可以取消回到基本显示界面(01H进程),再按确定键则可再次进入到时钟设定界面重新进行调校,按下修改任意位置,都可以按下确定键,并将秒钟数清零。时钟设定子模块的流程图如图5.2.5所示:图5.2.5 调时子模块流程图 (2)闪烁子模块按下确定键后,进入时钟设定界面,应动态调取并显示当前实施中的小时和分钟,即随着走时在变,从高位开始可以逐位输入新的的时分值,并且当前数字位以2Hz的频率闪烁显示的形式出现,但凡有新数字位则停止动态调取实时钟的时分值,显示的时分值不再随内部实时钟走时的变化。部分程序如下图所示:首先,在休眠状态下是不执行闪烁功能的,并且只有在1XH进程下才能进行闪烁功能,其小时十位、小时个位、分钟十位和分钟个位的进程和时间设定子模块的进程必须完全一致,将39H单元的数据除以立即数#25,分割成4小部分,亦即刚好一个周期为0.5S,判断为此时单元里的数据,为1送空格,为0则执行主流程,即显示当前位,一个周期刚好0.5S,刚好达到并且当前数字位以2Hz的频率闪烁显示的形式出现。其中48H、49H、4AH、4BH分别是分钟个位、分钟十位、小时个位、小时十位的中间缓存单元,必须将原先里的37H、36H、34H、33H改为各自所对应的中间单元,如此便能实现闪烁功能。SS: JB 26H.1,SSRMOV A,20H ANL A,#0F0H CJNE A,#10H,SSR MOV A,39H MOV B,#25 DIV AB JB ACC.0,SS1SS0: MOV 33H,48H MOV 34H,49H MOV 36H,4AH MOV 37H,4BHSJMP SSR SJMP SSR 5.2.5 设置客密子模块及显示2s子模块(1) 设置客密子模块当20H单元的进程码为01H时,在基本显示界面,锁屏状态、休眠状态时钟设定界面以及输密模式下不执行设置客密功能 ,确认在已关箱的状态进行设置客密,设置客密的界面如图5.2.6所示:图5.2.6 设置客密界面如上图所示,每输入一位密码,界面显示一位,在21H-26H进程的引领下依次输入4-6位密码,本设计中可以输入第7位、第8位密码,但是按下确定键是不可以确认密码的,取消回去仍然可以继续输密,当输入4-6密码,按下确定键确认本次操作,在2AH进程下,P1.0口模拟电动执行器输出一个正转伸长驱动信号(CLR 25H.0),是电动机驱动门闩伸长,很快地收缩到位检测信号无效,过一会儿,伸长到位检测信号有效,正转伸长驱动信号(SETB 25H.0)立马无效,设密锁箱完成,确认本次操作后应将密码缓存单元清零。部分重要程序和具体流程如图所示: 图5.2.7 设置客密部分程序 图5.2.8 输入客密流程图如图所示,输完4-6位密码按下确定键后每次都跳转到SMM2,也就是说此时P1.0口模拟电动执行器输出一个正转伸长驱动信号。(2)显示2s子模块 在显示2s子模块中,必须在设置客密的界面中才能执行该段程序,分配6个存储单元存放客密,在主流程循环200次,约为2s,亦即显示2s,2s后清除缓存单元里的键号值,回到关箱进程,也就是基本界面。5.2.6主密开箱子模块 客人首次入住酒店或者客人忘记客密时,是由管理员运用主密开箱的,按取消键进入输主密界面,主密开箱是在已锁箱的进程(30H进程)的前提下,在进程41H-48H的引领下依次输入8位主密,显示器同步显示,放开后以“-”代替,其思想是先将前一次扫描到的键号(存放在65H单元)送入显缓单元,再利用上升沿读取键值,送入输密的缓冲单元,松开手将#10H(“-”)代替。期间若管理者认为自己输入的密码有误,可以随时按取消键回到基本界面,重新输入密码。当输对主密,主密匹配后,在4AH进程下,P1.1口模拟电动执行器输出一个反转收缩驱动信号(CLR 25H.1),电动机驱动门闩收缩。注意利用界面标志位(主密界面标志位24H.7)的思想区分开取消键的不同功能,限定条件要加够。很快地伸长到位检测信号无效,过一会儿,伸长到位检测信号有效,反转收缩驱动信号(SETB 25H.1)立马无效,主密开箱成功。主密开箱的流程如图5.2.9所示:图5.2.9 主密开箱流程图5.2.7 客密开箱在已锁箱状态下(30H进程)下,客人依次输入关箱时设定的客密,显示界面与设置客密的界面相同,按下“0-9”的数字键,显示器同步显示,输密期间,若客人认为自己输错密码,可以按取消键返回锁箱进程(30H进程),在进程码31H-36H的引领下,输入4-6位客密,并加以判断,如果输入的4-6位密码和客密匹配后,在3AH进程下,P1.1模拟电动执行器输出一个反转收缩驱动信号(CLR 25H.1),使电机驱动门闩收缩,很快地伸出到位检测信号无效,过一会儿,收缩到位检测信号有效,反转收缩驱动信号(SETB 25H.1)立马无效。客密开箱的流程图如图5.2.10所示:图5.2.10 客密开箱流程图5.2.8关闭屏显子模块当输入主密或者客密连续输错三次,设计一个标志位24H.3,意味着该锁屏了,即建立一个新的新模块(关闭屏显子模块),当标志位为1时,锁屏5分钟,也就是往显缓单元30H37H送空格即可,约5分钟后返回基本进程01H,也就是基本显示界面。程序如图5.2.11所示:GBPX: JNB 24H.3,GBPXR DJNZ 6EH,GBPXR MOV 6EH,#150 DJNZ 3DH,GBPXR MOV 3DH,#100 DJNZ 3EH,GBPXR MOV 3EH,#2 CLR 24H.3 MOV 20H,#01HGBPXR: RET图5.2.11 关闭屏显子模块5.2.9 驱动讯响子模块及有按键就发声子模块(1) 驱动讯响子模块本文中利用标志位判断进行控制程序转移,利用判断标志位,给蜂鸣器响的声音长度不一样即可。该次课程设计较好的使用22H进程码思想,但为了简单方便,选择了与之作用差别不大的标志位思想,也较好地解决了实际问题。表6 驱动讯响子模块所用标志位标志位作用23H.1超值告警23H.2收缩到位检测信号有效23H.3输入密码不匹配23H.4伸出到位检测信号有效23H.5输密三次不匹配,再按键发声如表6所示,只需在该响的地方加标志位,再利用判断标志位为1有效执行讯响功能,声音响多久由设计者决定,本文中在讯响驱动子模块中,只分配68H单元去规定响多久的时间,而后清零即可,其中多加了一个三次不吻合发声产生标志位产生的子模块,亦即有按键按下并且要在锁屏条件下两个条件下产生一个新标志位23H.5,满足条件时,发出讯响告警的声音。(2)有按键就发声子模块在KEY子模块的最后添加一个有按键按下的判断,并加一个标志位23H.0,当标志位为1时,在有按键就发声子模块中,执行讯响功能,并规定按键音响声的大小即可。5.2.10 按键判断子模块及休眠唤醒子模块(1)按键判断子模块按键判断子模块中,判断了按键是否按下,当无按键压下时,计时30s后,进入休眠节能状态,当有按键压下,重新计时30s,需对计时的两个单元再次赋以30s的值。在此模块的末尾处建立一个休眠唤醒标志位26H.1。(2)休眠唤醒子模块休眠唤醒子模块是有按键按下就要唤醒键盘,30S内没有进行操作时,显示屏暗屏,一旦有按键按下,重新计时30S,30S倒计时完后,恢复基本显示界面,尤其注意两种特殊情况,一是进行主客密开箱时,当收缩到位检测信号有效时,此时不做任何操作,30S倒计时完后返回的是输密界面(分别为-和XXXXXX ),另一种情况则是设置客密时,当伸出到位检测信号有效时,此时不做任何操作,30S后返回的是设置客密的界面(XXXXXX ),其余情况返回基本显示界面。通过判断界面标志位以及到位情况分类讨论,让其返回应该返回的界面。本次设计中,返回基本界面的没有较大的问题,返回到位界面的出现了瑕疵,由于设计时间有限,未能妥善解决,将在改进方向中进行说明。5.2.11 显示更新子模块 显示更新子模块将#30H送给R0,显示缓冲单元首地址,将位码初值送#01送给R3,然后DISP1首先送断码全“1”对其关显示为了消除其窜显,然后取当前位码,DPTR指向U3的B口,U3的B口输出当前位码,取当前位对应的显示缓存单元的数据,加上TAB与NEXTPC的差值查表得相应字段码,DPTR指向U3的A口输出输出字段码。此时调用频闪模块(频闪模块具体在下面单独说明),保持显示约1MS,指向下一显示缓存单元。取出原先位码,判断若已显示到最左位则显示结束未完,则字位码左移1位,将新的位码存到R3转向下一位显示。为了使数码管亮度均衡,需要输出全暗的字段码对其关显示后回到主流程。在显示更新子模块中,本文做了休眠处理,当休眠标志位有效时,送30H37H显缓单元8个空格,使其全暗。部分程序处理如图5.2.12所示:图5.2.12 休眠部分程序如上图所示,休眠时不是简单的关掉显示更新子程序,而是送字段码全为空格,巧妙地解决了休眠问题。5.2.11 输出驱动子模块统一输出子模块,根据输出缓存内容执行实质的输出驱动。输出驱动子模块如图5.2.13所示:图5.2.13 输出驱动子模块程序6 系统功能与用户操作使用说明6.1 系统功能(1)时钟设定功能:时钟调校、可以反复修改以及超值告警。(2)客密设置功能:用户可以设置4-6客密。(3)客密开箱功能:输入匹配的4- 6位客密即可开箱。(4)主密开箱功能:首次开箱或者用户忘记密码可用主密开箱。(5)休眠待机功能:30s无按键操作,进入休眠节能状态。(6)黑屏(锁键盘)功能:在输错三次客密或主密后,显示器黑屏,键盘被锁,安全可靠。6.2用户操作说明1)上电 接通电源后,开始自检,检查系统是否存在故障后,进入基本显示界面,时钟显示界面为“时-分-秒”,初值为“08-59-45”。2)时间设定在基本显示界面下,按下确定键可进入时间设定界面,输入不超过阈值的时钟和分钟再按下确定键就可以完成时间设定。3)客密设置在已关箱状态下,可以进行设置4-6位客密,按下确定键就完成了客密的设置。4)主客密开箱在已锁箱的情况下,用户可以输入4-6位客密,若输入正确,即可开箱。在已锁箱的情况下,若客人忘记密码或者需要首次开箱,由管理员输入8位主密码来进行开箱,若错误输入三次就会黑屏锁键盘。输错主密或者客密合计三次即锁屏,此时若再有按键按下,仅发出讯响告警。5)休眠待机当用户无操作一定时间后,就会将显示器黑屏,按下任意键就会唤醒界面。7 课程设计总结7.1 课程设计遇到的问题及解决办法1)多个确定键、取消键如何解决冲突,在每个界面建立标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论