口上。在P1口上我们连接了独立式非编码键盘,P2口上我们连接了LED显示屏,P3口上我们连接了MAX232为接口的SB2000M型指纹识别模块,基本上完成了电路的设计。只要我们将以上的电路连接组合到一起我们也就将完成总电路的设计,详情及电路图请参看附件。
第五章 软件程序的设计
第五章 软件程序的设计
5.1程序设计语言的选择及步骤
一个应用系统要完成各项功能,首先必须有较完善的硬件作保证。同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程而代替。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。因此充分利用其内部丰富的硬件资源和软件资源,采用与C51系列单片机相对应的51汇编语言和结构化程序设计方法进行软件编程。[19]
程序设计语言有三种:机器语言、汇编语言和高级语言。机器语言是机器唯一能“懂”的语言,用汇编语言或高级语言编写的程序(称为源程序)最终都必须翻译成机器语言的程序(成为目标程序),计算机才能“看懂”,然后逐一执行。
高级语言是面向问题和计算过程的语言,它可通过于各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强,常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,但是本系统却选用了汇编语言。汇编语言有如下特点:助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序;使用汇编语言编程比使用高级语言困难。因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解;汇编语言能直接访问存储器及接口电路也能处理中断,因此汇编语言程序能直接管理和控制硬件设备;汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用。
我们选择汇编语言的原因在于,本系统是编制程序工作量不大、规模较小的单片机微控制系统,使用汇编语言可以不用像高级语言那样占用较多的存储空间,适合于存储容量较小的系统。
要想使计算机完成某一具体的工作任务,必须按序执行一条条的指令。这种按工作的要求编排指令序列的过程称为程序设计。
使用汇编语言作为程序设计语言,其程序设计步骤大致可分为以下几步: (1) 分析问题,熟悉和明确问题的要求,明确已知条件及对运算与控制的要求,准确地规定程序将要完成的任务,建立数学模型。
(2) 确定算法,根据实际问题的要求及指令系统的特点,选择解决问题的方法。算法是进行程序设计的依据,它决定了程序的正确性和程序质量。
(3) 设计程序流程图,所谓程序流程图就是用各种规定的图形,流向线及必要的文字符号来表达解题步骤,算法及程序结构。它直观,清晰地体现了程序设计思路,是程序设计的一种常用工具。画流程图的过程就是进行程序逻辑设计的过程。正确的画法是先粗后细,一步一个脚印,只考虑逻辑结构和算法,不考虑或较少的考虑具体指令。这样,画流程图时就可以集中精力考虑程序的结构和算法,从根本上保证程序的合理性和可靠性。然后,剩下的任务就是进行指令代换,这时只要消除语法错误,一般就能顺利编出源程序,并很少进行返工。
(4) 分配内存单元,分配内存工作单元,确定程序和数据区的起始地址。 因为在本文的前几章中我们已经完成的设备的选择与电路的连接,因此在下面的工作我们将直接进行设计程序流程图的步骤。[20]
- 25 -
5.2开锁程序的设计及流程图
如图5-1为开锁流程图,开始时按开锁键,输入指纹或密码信息,如果输入正确,则开锁成功,然后返回初始。如果输入密码错误累计达到三次,则执行报警程序。
第五章 软件程序的设计
开始 按下密码开锁键 开锁方式 密码开锁 无操作 输入密码指纹开锁 YES 输入指纹密码是否正确? NO 次数加一 NO 指纹是否正确? NO YES 次数为三? 开锁报YES 警NO 返回 指纹开锁 YES
图5-1指纹防盗锁工作流程图
如上图所示,在指纹防盗锁的开启时,我们首先要选择我们的开锁方式,因为我们设计的是指纹防盗锁,所以我们默认的开锁方式就是指纹开锁,若我们不
- 27 -
做操作就可以直接进行录入指纹的操作,如果我们录入的指纹信息是错误的,我则不能开启锁具,要再次进行指纹的录入或改为密码开锁的方式。但是如果我们录入的指纹信息是正确的我们则可以直接开启门锁,门锁开启后自动进入初始状态。已上是指纹开锁的过程。若我们想进行密码开锁,我们则要在开锁方式选择时按下指纹开锁键,选择我们需要的开锁方式。选择密码开锁后,我们就要依次输入密码,这时LED显示屏上将显示你输入的是第几位密码。如果我们输入的密码是错误的,我们显然不能开启锁具,而且我们将记录你输入错误密码的次数,当我们的错误次数达到三次时我们将只能通过指纹开锁,而且报警器发出声音,直到用指纹成功开启后才能消除声音。同样我们的密码如果能正常开启的话,也就不会出现以上情况,直接回到初始状态。以上功能,我们将以硬件为基础,通过程序的设计完成设计的要求。具体的程序请参见附录。
5.3修改开锁密码的设计及操作
我们所设计的指纹锁,为了更加广泛的适用性,我们必须加入修改密码的功能,因此我们在软件设计的部分也必须进行相应的设计。在上文中我们将密码的修改设置为可插拔式的接线修改方式,我们将可以对密码按键的连接进行修改,完成对密码的修改,同样在上文中我们已经将密码修改锁与门锁相连,我们只能在门锁开启的状态下对密码接线进行修改。在上一节的程序中我们设计的开锁时间为10秒,这显然不够我们完成接线的修改,因此我们将设置一个按键,当按键被按下后,锁具将保持开启的状态,可以让我们有充足的时间进行修改密码。在密码修改完成后按下启动按钮,自动进入初始状态适用新的密码。以上过程将都在程序中有所体现,具体程序请参见附录。