3 软件设计
3.1 软件总体设计
应用系统中的应用软件是根据系统功能要求而设计的,能可靠地实现系统的各种功能。一个优秀的应用系统的应具有下列特点:
(1)根据软件功能要求,将系统软件分成若干个独立的部分。设计出软件的总体结构,使其结构清晰、流程合理。
(2)要树立结构化程序设计风格,各功能程序模块化、子程序化。既便于调试、链接,又便于移植、修改。
(3)建立正确的数学模型。即根据功能要求,描述各个输入和输出变量之间的数学关系,它是关系到系统好坏的重要因素。
(4)为提高软件设计的总体效率,以简明、直观法对任务进行描述,在编写应用软件之前,应绘制出程序流程图。
(5)要合理分配系统资源,包括ROM、RAM、定时数器、中断资源等。 (6)注意在程序的有关位置处写上功能注释,提高程序的可读性。 (7)加强软件抗干扰设计,它是提高系统应用可靠性的有利措施。
3.2 主程序流程图
为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。列扫描信号进行读入行的信号判断该列是否有列的输出——是则进行按照行列计算键盘的值,查表取得键码并返回——若否则进行再次扫描。其程序框图如图所示:
21
图17 整个程序运行流程图
3.3 键盘扫描及处理程序设计
当按键按下和断开的时候都会出现发电压抖动的情况,本溪设计采用的是软件方式去抖动,在第一次检测到有键按下时,执行一段延时的子程序,之后,再次检测该键的电平状态,再保存键值。当按键释放的时候再次调用延时子程序,再次检测该键的电平状态,再回复键值。从而可消除抖动的影响。键扫程序的流程图如图所示。
22
图18 键扫流程图
3.4 中断子程序设计
AT89S52系列单片机具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
23
图19 中断服务子程序流程图
3.5 液晶显示流程图
本次设计使用了FYD-12864液晶显示屏,用前先要进行初始化,将缓存区,堆栈去进行初始化,然后在对液晶进行基本的设定。例如,让液晶的第19引脚输送高电平“1”,接第20引脚输送低电平“0”使EYD-12864液晶显示屏的背光亮起来,用于在使用计算器是利于观察数据。接着写入地址,再取地址中的数据送入显示区,就可以显示出字符。如果不按清零键或不初始化,数字符会一直显示。
24
图20 液晶显示实现图
3.6功能实现详解
本次设计主要实现科学计算器,进行加、减、乘、除、平方、开方、三角
25