该软件的设计基于硬件,并且要由该软件实现的功能基于常规硬件。如果硬件不能正常工作,则意味着没有好的软件可以实现任何功能。如果没有软件,那用再好的硬件也是毫无作用的。将需要实现的功能确定之后,如果调试正确,就会可以开始设计本次项目需要的软件模块了。本次项目使用51单片机作为开发的基础,软件格式采用Keil C51来进行汇编语言的编译。
3.1 编程工具软件Keil C51
Keil C51集成开发环境是基于80C51内核的微处理器软件开发平台。他可以独立完成整个项目的建立,也就是完成整个开发过程。用于单片机应用系统的常用软件编写语言是汇编、C、BASIC、C ++等。对于51单片机而言,使用最广泛的是汇编语言和C语言。
使用Keil C需要以下五个步骤来开发单片机程序:
(1)选择创建一个全新的项目,然后选择本次项目中使用的单片机机型。
(2)μVision3中的文件编辑器功能,可以用来编写源程序文件,并且需要将此文件添加到新建的这个项目中去。
(3)通过μVision3的各种选项,配置Cx51编译器、Ax51宏汇编器、BL51/Lx51连接定位器以及Debug调试器的功能。
(4)使用μVision3软件,将编写后的源程序将编写后的源程序代码进行编译,然后生成HEX格式的可执行文件,如果在编译过程中出现错误,那么就返回到第2步对源程序代码进行修改。
(5)如果编译没有错误,那么就证明源程序代码没有错误,这时就可以将源程序代码导入仿真软件中进行仿真操作。
本次项目中选用的汇编语言可以直接与计算机的底层软件进行交互,它可以直接访问硬件的存储器或者端口,并且没有局限性,能够对二进制代码进行完美的操控,很好的发挥出硬件的优势,运行速度也会大大提高,所以本次项目我选用了汇编语言对这个项目进行调试。
3.2 程序设计原理
对软件的设计可以和硬件的设计相结合,因为不管哪个功能是由硬件完成的,哪个任务是由软件完成的,基本都可以在硬件设计完成后确定。
软件的总体设计思路可以分为两类:其中一类是执行软件,这一类软件可以完成计算测量、显示、打印、输出等非常实质性操作,另一类是起到执行协调作用的监视软件,这是用来起到协调作用的,在整个软件系统中充当调度员的角色。所以软件的设计有两类,他们各具特色,并且软件的设计很偏重算法,还与硬件之间有很大的联系。
在进行软件的设计时,应该将所有的模块列举出来,然后通过数据结构规划好,所有的模块规划好之后,就可以进行监控了,编程比较容易,但是监控就比较难了,这就像是当一名员工容易,但是当一名领导就比较困难。
3.3 系统主程序设计
主程序的设计思路,是考虑到4个按键的接口,通过单片机循环扫描来检测是否有按键被按下去,当任何一个按键被按下后,都会去执行该按键的这个子程序。例如当单片机扫描识别到按键被按下时,这个时候单片机就会去执行录音的程序,当单片机扫描识别到放音按键被按下时,单片机就会停止录音程序,去运行放音的子程序,每个状态在执行时切换下一个状态时都需要按下停止按键清除状态标志。流程图如图3-1所示。
图3-1 按键检测流程图
单片机依次判断用户按下的按键,因为不同按键在不同的界面有不同的功能,因此系统采用了一个Function Count来记录当前属于哪个界面,根据不同的界面下用户按下的不同按键执行对应的操作。语音播放流程图如图3-2所示。
图3-2 语音播放流程图
当系统处于播放模式下,单片机会根据当前语音的序号播放对应地址的语音。