用c语言开发测控软件的方法与实践

用c语言开发测控软件的方法与实践

ID:18262479

大小:175.93 KB

页数:6页

时间:2018-09-16

上传者:xinshengwencai
用c语言开发测控软件的方法与实践_第1页
用c语言开发测控软件的方法与实践_第2页
用c语言开发测控软件的方法与实践_第3页
用c语言开发测控软件的方法与实践_第4页
用c语言开发测控软件的方法与实践_第5页
资源描述:

《用c语言开发测控软件的方法与实践》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

用C语言开发测控软件的方法与实践摘要:本文简单介绍了测控软件,并且深入详细的分析了C语言在测控系统软件开发中应用的方法及其相应技术。重点分析了输入/输出端口的控制、位运算、硬件中断程序设计以及曲线的绘制等方面C语言的应用。关键词:C语言现代测控技术测控软件硬件中断程序设计曲线的绘制1.引言C语言是目前程序设计语言中使用比较广泛的一种。C语言功能丰富、表达能力强、使用灵活方便、程序执行效率高并且可移植性好。C语言不仅具有高级语言的特点,还具备了汇编语言的特点,其系统处理能力非常强大。并且它支持自顶向下逐步求精的程序设计技术。C语言的函数式结构更为实现程序的模块化设计提供了强有力的保障。因此C语言被广泛应用于系统软件和应用软件的开发,例如测控软件。2.测控软件随着计算机技术、检测技术和控制技术的发展,衍生而来的现代测控技术与系统也迅猛发展起来。现代测控技术与系统是一门综合性技术。在传统的测控技术基础之上,我们融入了现代传感技术、通信技术和计算机技术,并且将现代最新科学研究方法与成果应用于其中。例如,基于网络的测控技术、基于计算机视觉的测控技术、基于雷达与无线通信的测控技术以及基于虚拟仪器(VI)的测控技术等等。其中,基于虚拟仪器(VI)的测控技术的软件开发工具可用C++、Java以及C语言编写。现代测控系统基本结构分别建立在3种基础模型基础之上,一种是基于DAQ数据采集体系的测控系统模型,其硬件结构如图1所示;一种是基于网络的测控系统模型,另一种是企业的测控管系统模型。计算机控制器执行机构传感器件通信单元功率放大数模转换信号处理模数转换测控对象图1基于DAQ体系的测控系统硬件结构而现在的测控系统通常尤测控软件组成,测控软件主要用于数据采集和测量,测控过程中的控制决策和控制输出,数据的处理、分析和管理。测控组态软件应是一个通用的测控软件平台,它能根据不同的应用目的和环境,方便地构造出各自不同的测控软件。初期的测控组态软件主要是针对数据采集 与控制的,是面向任务实现的,主要是给用户提供了一个友好的人机界面。其功能十分有限,没有对实时数据和历史数据进行有效处理和分析的手段,系统的二次开发能力也较差。如今的组态软件在面向数据采集与控制的功能方面有了很大的提高,例如在数据采集方面,它不仅支持各种传统模拟量、数字量的输入输出,而且支持符合现场总线规约的各种智能传感器和仪表的输入输出,有的还支持各种虚拟仪器。另外,在数据处理方面增加了许多功能,例如对过程数据的统计分析,对测试数据进行各种谱分析、相关分析等等。如今的组态软件已由过去的以应用为中心,转为以数据为中心。组态软件可以提供各种数据接口,可以借助其他软件工具更为灵活地存储、分析和处理测控过程的数据。2.用C语言开发测控软件的方法与实践C语言是目前使用最广泛的一种程序设计语言,语言表达能力强、模块化能力强、数据类型丰富、运算符丰富、可移植性好、提供丰富的库函数、执行速度快、控制硬件处理中断的能力强、绘图能力强、可与其它语言混合编程等等不可代替的优点,使得C语言被广泛运用于测量﹑控制﹑通讯领域中。在测控领域,C语言主要被应用于实时测量系统程序设计,实时通讯系统程序设计以及实时控制系统程序设计。如图2所示,是实时测控系统的实例。图2实时测控系统实例在测控软件中,C语言主要涉及到输入/输出端口的控制,硬件中断程序设计,软件中断程序设计,精确定时程序设计,串口通信程序设计,曲线的绘制,并行接口的使用与步进电动机的控制,数据采集与处理程序设计,闭环控制系统程序设计等内容。由于内容较复杂,本文将主要针对用C语言开发测控软件时,输入/输出端口的控制、位运算、硬件中断程序设计以及曲线的绘制的不同使用C语言的方法以及实践进行深入分析。2.1C语言中端口输入/输出函数计算机的CPU要与外设间传递信息,必须通过硬件的接口电路来进行。接口电路通常包含一些寄存器,如数据寄存器、状态寄存器、控制寄存器等。一般称这些寄存器为I/O(输入/输出)端口。PC系列微机用10条地址线对端口寻址, 寻址范围为0x00--0x3ff。C语言为了控制端口的输入/输出扩展了一些非标准的系统函数。2.1.18位端口输入函数inportb()函数原型为:unsignedcharinportb(intportid);它的主要功能是从地址为portid的8位端口输入一个字节(8位),所读的值是该函数的返回值,由头文件dos.h说明。其用法为#includeunsignedcharb;…b=inportb(端口地址);2.1.28位端口输出函数outportb()函数原型为:voidoutportb(intportid,unsignedcharvalue);其主要功能为:向地址为portid的8位端口输出一个字节(8位),其值为value,由头文件dos.h说明。它的用法是#include…outportb(端口地址,无符号字符型数据或变量);2.1.316位端口输入函数inport()函数原型为:intinport(intportid);它的功能是:从地址为portid的16位端口输入一个字(16位),所读的值是该函数的返回值,由头文件dos.h说明。主要用法是:#includeintw;…w=inport(端口地址);2.2C语言中的位运算位运算是直接对操作数的二进制位(bit)进行操作,按二进制位的逻辑运算对控制计算机硬件非常有用。C语言的位运算符有:按位与&,按位或|,按位异或^,按位取反~,左移<<,右移>>。位运算符只能用于有符号或无符号的字符型、整型、长整型数据的运算,不能用于浮点数和双精度数据的运算。就按位与运算符&为例,我们进行详细解释。它的运算规则为:0&0=0,0&1=0,1&0=0,1&1=1若a=0x55,b=0xf0a&b=?01010101(a=0x55)&)11110000(b=0xf0)01010000(c=0x50)它的规律是;跟1相与不变,跟0相与清零.在位运算中,按位的与运算可使某些位清0,其它位不变。例如,欲使地址为0x61的8位端口D4位清零,其他位不变。D7D6D5D4D3D2D1D0#includecharb;…… b=inportb(0x61);b=b&0xef;outpotb(0x61,b);2.3硬件中断程序设计实模式下的中断系统中断(interrupt)是指计算机“暂停”了正在执行的程序,转去处理一个突发的紧急事件的过程。处理这个紧急事件,计算机要执行一个相应的中断服务子程序。处理完毕之后,计算机又要接着执行刚才被中断了的程序。引起中断的事件称为中断源。例如86系列CPU可处理256个型号的中断,中断类型号为0x00--0xff。如图3是具体的中断分类。图3中断分类其中外部中断通过CPU的管脚NMI和INTR申请中断,也称硬件中断。中断允许标志IF可屏蔽INTR中断。硬件中断程序设计包括两个部分:1)写一个中断服务子程序,要写成中断函数的形式。2)设置中断向量,即把中断服务子程序的地址放到中断向量表中去。2.3.1中断服务函数中断服务子程序要写成函数形式,用关键词interrupt说明。其格式为:voidinterruptmyint(void){函数体}自定义函数在使用前要说明,格式为:voidinterruptmyint(void);设置中断向量函数setvect()函数格式如下,由dos.h说明:voidsetvect(intnum,voidinterrupt(*isr)());其中num---中断类型号,isr---指向中断服务函数的函数指针若中断类型号为0x08,中断服务函数名为myint,程序如下:#include…setvect(0x08,myint);2.3.2获取中断向量函数getvect()该函数从中断向量表中取出指定中断类型号的中断服务函数的地址,赋给一个函数指针。函数用法举例: #includevoidinterrupt(*oldint)();…Oldint=getvect(中断类型号);2.3.3屏蔽中断函数disable()将IF清0,禁止CPU响应INTR中断,由dos.h说明。函数原形:voiddisable(void);用法如下所示:#include…disable();2.3.4开放中断函数enable()将IF置1,允许CPU响应INTR中断,由dos.h说明。函数原形:voiddisable(void);用法如下:#include…enable();2.4曲线的绘制TurboC提供了功能较强的绘图功能,包括图形库文件graphics.lib,图形头文件graphics.h,显示器驱动程序,字符集字体驱动程序等。2.4.1图形系统的初始化函数图形系统的初始化函数initgraph(&driver,&mode,”path”)。其中,dirver图形驱动程序代码,图形驱动程序在系统提供的.BGI文件中;mode图形模式代码,选择分辨率和色调;path图形驱动程序的路径,要用双引号括起,若在当前目录下可用空串“”代替。2.4.2设置背景颜色函数设置背景颜色函数为setbkcolor(intc);其中,参数c的取值与所对应的颜色:0:黑,1:兰,2:绿,3:青,4:红,5:紫红,6:棕,7:浅灰,8:深灰,9:浅蓝,10:淡绿,11:淡灰,12:淡红,13:淡紫红,14:黄,15:白。2.4.3关闭图形模式函数closegraph()该函数关闭图形系统,返回文本方式。closegraph();2.4.3自动检测图形显示卡该程序将图形驱动器代码设为DETECT,即自动检测图形显示卡,装入相应的驱动程序,且选用最高分辨率的图形模式。#includemain(){intdriver=DETECT,mode;initgraph(&driver,&mode,"");setbkcolor(1);circle(320,240,100);getch();closegraph();}2.结语 本文主要介绍了用C语言开发测控软件的方法与实践,由浅入深地分析了C语言在测控领域应用的方法和特点。在现代测控系统中,输入/输出端口的控制,硬件中断程序设计,软件中断程序设计,精确定时程序设计,串口通信程序设计,曲线的绘制,并行接口的使用与步进电动机的控制,数据采集与处理程序设计,闭环控制系统程序设计等软件设计都运用到了C语言,但由于其整个程序设计较复杂,本文主要针对输入/输出端口的控制、位运算、硬件中断程序设计以及曲线的绘制进行了详细解释。参考文献[1]韩九强张新曼刘瑞玲现代测控技术与系统清华大学出版社2007.10[2]黄维通刘晓静王瑞C语言程序设计清华大学出版社2011.1[3]杨树兴李擎苏中侯会文计算机控制系统--理论、技术与应用机械工业出版社2006.5

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭