开封市中仪流量仪表有限公司
阅读:92发布时间:2021-12-26
智能电磁流量计系统智能化软件设计
在本项目的设计中,我们采用C196作为单片机系统的开发语言149,52,s3】。使用c语言进行流量计单片机系统的开发,有着汇编语言编程所不可比拟的优势,介绍如下:
1.编程调试灵活方便
C语言编程灵活,同时,当前几乎所有嵌入式系统都有相应的C语言级别的仿真调试系统,调试十分方便。
2.生成的代码编译效率高
当前较好的c语言编译系统编译出来的代码效率只比直接使用汇编低20% 左右,如果使用优化编译选项甚至可以更低。
3.模块化开发
目前的软硬件开发都向模块化、可复用性的目标集中。不管是硬件还是软件, 都希望其有比较通用的接口,在以后的开发中如果需要实现相同或者相近的功能, 就可以直接使用以前开发过的模块,尽量不做或者少做改动,以减少重复劳动。如果使用C语言开发,数据交换可方便地通过约定实现,有利于多人协同进行人项目的合作开发。同时,C语言的模块化开发方式使开发出来的程序模块可不经修改.直接被其他项目所用,这样就可以很好地利用已有的大量C程序资源与丰富的库函数,从而地实现资源共享。
4.可移植性好
由于不同系列的嵌入式系统的c语言编译工具都是以ANSI-C作为基础进行开发的,因此,一种C语言环境下所编写的C语言程序,只需将部分与硬件相关的地方和编译连接的参数进行适当修改,就可方便移植到另外一种系列上.
5.便于项目维护管理
用c语言开发的代码便于开发小组计划项目、灵活管理、分工合作以及后期维护,基本上可以杜绝因开发人员变化而给项目进度、后期维护或升级所带来的影响。从而保证整个系统的品质、可靠性以及可升级性。
4.1智能电磁流量计功能模块的划分
智能电磁流量计转换器的工作过程,不仅要求CPU对来自传感器的流量信号进行采集、处理、运算、显示,完成流量、流速的检测,同时还要控制产生低频矩形波励磁电流、输出流量的积算总量值和输出模拟电流、频率以及数字通讯信等等,所以本系统智能电磁流量计的软件部分设计是比较复杂的,根据上面提到的各个功能,主要功能可以划分为:
1、单片机看门狗保护:
3、键盘管理:
5、寄存器管理;
7、输入信号数字预处理;
9、网络通信。
11、报警;
2、数据采集部分控制;
4、LCD显示控制;
6、励磁控制;
8、流量计算;
10、正反向流量检测;
在这里要说明的是,这些任务的操作并不总是顺序执行的,在很多时候需要并行地操作。如通信、键盘管理等在任何时候都有可能发生,流量计算可能消耗比较多的时间,数据采集需要定时进行等等。当然从指令层来看其程序仍是一条指令接一条指令顺序执行,但从宏观上来说,这些任务的处理是并行的。
4.2系统主程序
系统的主程序主要由主循环和初试化程序构成,其流程见图4.1所示。装置图4.1主程序流程图上电复位或手动、硬件复位后,微处理器80C196Kc就要响应复位信号,然后程序从地址0x2080开始执行。程序入口的个模块是程序初始化模块,包括对相关硬件的初始化和相应参数的初始化。硬件初始化主要是完成开关量输出初始化, 显示芯片初始化,微控制器的中断,串行口、定时器等硬件资源的初始化,主要是对特殊寄存器的复制赋值;相应参数的初始化包括对程序中各个变量的初始赋值,比如对键值的初始赋值等;而主程序框图中的各个子程序的执行,指的是对一些功能模块的初始设置,这里主要指LCD显示模块的初始工作设置,在系统开始上电或复位工作以后,应在LCD上显示一些特殊意义的信息,如仪表型号、生产厂家名称、商标等文字图案信息。还有其他的子程序初始化包括数据采集初始化子程序在系统开始工作之前,应对采集所存储的地址指针清零等工作。在程序的主循环中,我们采用了检测标志位的方法,运用中断服务程序产生各执行的标志位,通过对其标志为的判定,来执行相应的子程序。
4.3看门狗程序
WATCHDOG(俗称“看门狗”)是单片机抗干扰的软件措施p”43,48】,它具有的特点是本身能独立工作,基本不依赖于CPU,CPU只在一个固定的时间间隔内与其打一次交道,表明整个系统“目前尚属正常”;另一个一个特点是当CPU 落入死循环后,能及时发现并使整个系统复位。我们这里采用的是WATCHDOG 硬件电路配合的措施,并不是纯软件的WATCHDOG系统。一般的。WATCHDOG 硬件电路为一独立于CPU之外的单稳部件,可用单稳电路构成,也可用自带脉冲源的计数器构成。CPU正常工作时每隔一段时间就输出一个脉冲,将单稳系统触发到暂稳态。当CPU陷入死循环后,再也不去触发单稳系统了,单稳系统就可顺利返回稳态。利用它返回稳态时输出的信号作为复位信号,就可以使CPU退出死循环。这其中对于“喂狗”时机的考虑,也就是指复位“看门狗”,一般安排在等待查询的循环体内部、耗时很大的函数体内部或主程序任务队列中,下面就是一个“喂狗”的程序: void ClrRst(void) { unsigned char temp; if(RelyConFlag一0x劬{ tcmp 2iaportl; tcmp---temp&Oxef ioportl=temp; } }
仪表网 设计制作,未经允许翻录必究 .
请输入账号
请输入密码
请输验证码
请输入你感兴趣的产品
请简单描述您的需求
请选择省份