智能仪表的应用程序设计

日期: 2018-12-18

1.智能仪表的典型软件结构

智能仪表是一种较完整的单片机应用系统。一般硬件电路除基本扩展部分外,都配置有采集电路、显示器、按键、打印机等。相应的软件有采集、采集控制、数据处理、显示、结果打印等。图一是智能仪表的一种典型软件结构。按其功能,可分为三部分,即准备程序、键功能程序和系统控制序。

1.1 准备程序
准备程序应完成系统键操作之前的准备工作。它包括:

1.1.1 初始化。
将系统中所有的命令、状态以及有关的存储单元置位成初始状态。
1.1.2 系统测试。
利用测试程序检查程序存储器、数据存储器以及硬件功能是否正常。
1.1.3 提示符显示。
当完成初始化设置和系统测试正常以后,应在显示器上显示正常标记,等待健扫描。若测试不正常,可再次初始化,进行系统测试或用手动按钮使系统强行复位。
1.1.4 键扫描等待。
对所有按键进行查询,没有键按下时,继续显示提示符。当有键按下时,便进入键功能软件控制。当系统上电后,在正常情况下,显示正常状态提示符号,并准备接收按键的操作控制。

1.2 键功能程序
这是一组散转指令控制选择的一组键功能程序模块,每个模块完成按键所指定的功能。根据散转指令(JMP @A+DPTR),设置转移入口地址表,实现键功能程序的长转移(LJMP add16)时,可设置的键功能程序模块数量为256/3=85 个。键功能程序应包括能由按键选择控制的所有功能程序。键功能程序大致分为测、控功能程序,外设功能程序和操作控制功能程序。
1.2.1 测、控功能程序。
系统直接完成其主要测量、处理、控制功能的程序,如智能频率计的频率、周期、计数测量、标度换算、存储记忆等。

1.2.2 外设功能程序。
外部设备的控制程序,如显示、打印等。

1.2.3 操作控制程序。
对系统要求实现多种模式操作时所附加的控制程序。典型的有按键复用功能设置、系统状态测试、命令/数据的置入以及功能程序中的多种工作方式选择等。

2.键功能程序结构

要保证键功能程序的模块化,又要实现键功能程序操作方式的多样化,键功能程序中应设有能实现不同操作方式的分支程序。为了能方便灵活地选择不同的操作方式应设置有命令字以及分支运行的状态字,这样,系统控制程序便可根据命令要求,控制功能程序的转移。
键功能程序结构如图2 所示。
◆状态标志置位。将本次键功能程序运行方式、特点、分支选择的特征置入RAM 中的状态标志单元中,以便系统控制程序查询。
◆命令查询。根据片内RAM 中状态命令单元的命令选择不同的功能分支程序。
◆功能分支程序。在一个按键的主要功能中还有不同方式要求时设置的分支程序。例如,频率测量功能程序中,不同的分支程序可以完成单次测量、连续测量、测量显示、测量打印、测量存储等子功能或初始化设置等。
键功能程序结构、命令/状态格式以及分支功能程序出口状态应和片内RAM 中的命令/状态区以及系统控制程序相呼应。

3.系统控制程序与命令/状态设置

系统控制程序与命令/状态设置主要解决应用程序中的循环转移以及功能程序中的分支选择。其转移或选择的条件是命令和状态字。状态字是依靠程序写入。例如复位后状态字为全零,表明系统的全部功能程序处于准备状态。当按下某个按键,或一组按键,系统执行某一路径的程序,如“单次频率测量并打印结果”,随着程序的执行要在命令/状态区设置相应的状态字。
命令字一般由外部输入或由命令键输入,在键功能程序中,根据命令状态选择功能分支程序。系统控制程序是在执行完以后,控制系统程序的流向。它根据命令/状态条件实现条件转移控制。一般有循环转移、置A 转移、等待转移以及复位转移等。
循环转移通常是实现键功能的循环操作,如连续采集、循环显示等。保证功能键的入口地址不变,但可选择分支程序。置A 转移是不通过按键操作的键功能程序转移。当按一次键要完成几个键功能操作内容时使用。例如,频率测量和测量结果打印分属两个按键功能程序,要实现频率测量时可按频率测理按键,并选择置A 转移,将频率测理的出口状态置为打印功能程序的散转A 值。等待转移是使系统返回键等待状态,等待下一次键操作。复位转移是使系统返回到上电复位状态。一般硬件复位按钮其功能也是复位转移。

4.内存规划

与软件结构设计相配合,必须将程序存储器(ROM)和数据存储器(RAM)实现规划。按照上述的软件结构,ROM、RAM 规划内容如图三所示。图中除了个别特定区域外,对于一个具体的智能仪表,每个部分规定的区域范围不同,既要考虑系统的程序构成,还要考虑到二次开发的扩展余地。

4.1 ROM 规划原则

• 4.1.1 按照MCS-51 单片机的复位及中断入口地址的规定,002FH单元地址以前的空间都作为中断、复位入口地址区,在这些地址单元中设置转移指令,转移到相应的中断服务程序或复位启动程序。
• 4.1.2 程序存储器中功能程序及子程序数量较多时, 尽可能设置入口地址表。
• 4.1.3 要留有扩展余地。二次开发扩展区尽可能放在高位地址区。
• 4.1.4 一般的常数、表格集中设置表格区。

4.2 RAM 规划原则

• 4.2.1 数据存储器RAM 按照应用程序所使用的数据类型规划。通常将频繁使用, 而且内存占用数量较固定的数据尽可能放在高位地址。
• 4.2.2 片内RAM 容量较小,尽可能重叠使用。例如,数据暂存区与显示、打印缓冲区重叠。
• 4.2.3 当系统中扩展有外部数据存储器时, 外部数据存储器一般用作存放大块数据。如测量结果数据。

5.系统可靠性的软件设计

为了保证系统可靠运行,应用程序设计应考虑配置有测试程序以及陷阱复位措施。测试程序是用来检查应用系统软、硬件是否处于正常状态。通常有功能测试、初始化状态测试以及ROM、RAM 初始状态测试。具体测试程序视具体情况而定。例如,对于通用频率计可在系统内设置标准信号源,启动功能测试后,对内部标准信号实现系统的全部功能,如测量、处理、显示、打印,以及最后显示是否正常的标记。
在软件运行时为了防止非正常和程序“逃逸”而出现的死循环,可以采取软件陷阱复位措施。即在程序存储器中所有空白区填入特定的数字。当程序“逃逸”后进入程序空白区,在这些特定数字的引导下进入上电复位入口,使系统进入复位状态。例如,在MCS-51 应用系统的程序存储器的空白区中连续放置以下的机器码:20000000020000002000000002000000…并保证不小于两个循环长度时,只要程序进入此区域便会自动转入系统复位状态。