




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用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.1 C语言中端口输入/输出函数 计算机的CPU要与外设间传递信息,必须通过硬件的接口电路来进行。接口电路通常包含一些寄存器,如数据寄存器、状态寄存器、控制寄存器等。一般称这些寄存器为I/O(输入/输出)端口。 PC系列微机用10条地址线对端口寻址,寻址范围为 0x00 -0x3ff。 C语言为了控制端口的输入/输出扩展了一些非标准的系统函数。2.1.1 8位端口输入函数 i n p o r t b( )函数原型为:unsigned char i n p o r t b(int p o r t i d);它的主要功能是从地址为 p o r t i d 的8位端口输入一个字节(8位),所读的值是该函数的返回值,由头文件 dos.h 说明。其用法为 #include unsigned char b; b = i n p o r t b(端口地址);2.1.2 8位端口输出函数 o u t p o r t b( )函数原型为:void o u t p o r t b(int p o r t i d ,unsigned char value);其主要功能为:向地址为 p o r t i d 的8位端口输出一个字节(8位),其值为 value,由头文件 dos.h 说明。它的用法是#include o u t p o r t b(端口地址,无符号字符型数据或变量); 2.1.3 16位端口输入函数 i n p o r t( )函数原型为:int i n p o r t(int p o r t i d);它的功能是:从地址为 p o r t i d 的16位端口输入一个字(16位),所读的值是该函数的返回值,由头文件 dos.h 说明。主要用法是: #include int w ; w = i n p o r t(端口地址);2.2 C语言中的位运算 位运算是直接对操作数的二进制位(bit)进行操作,按二进制位的逻辑运算对控制计算机硬件非常有用。C语言的位运算符有: 按位与 &,按位或 | ,按位异或,按位取反 ,左移 。位运算符只能用于有符号或无符号的字符型、整型、长整型数据的运算,不能用于浮点数和双精度数据的运算。就按位与运算符 &为例,我们进行详细解释。它的运算规则为: 0&0=0 , 0&1=0 , 1&0=0 , 1&1=1若 a=0x55 ,b=0xf0 a&b= ? 0 1 0 1 0 1 0 1 (a=0x55)&) 1 1 1 1 0 0 0 0 (b=0xf0) 0 1 0 1 0 0 0 0 (c=0x50)它的规律是;跟1相与不变,跟0相与清零.在位运算中,按位的与运算可使某些位清0,其它位不变。例如,欲使地址为0x61的8位端口D4位清零,其他位不变。 D7 D6 D5 D4 D3 D2 D1 D0#include char b;b=i n p o r t b(0x61);b=b&0xef;o u t p o t b(0x61,b);2.3 硬件中断程序设计实模式下的中断系统中断(interrupt)是指计算机“暂停”了正在执行的程序,转去处理一个突发的紧急事件的过程。处理这个紧急事件,计算机要执行一个相应的中断服务子程序。处理完毕之后,计算机又要接着执行刚才被中断了的程序。引起中断的事件称为中断源。例如86系列CPU可处理256个型号的中断,中断类型号为0x00-0xff 。如图3 是具体的中断分类。 图 3 中断分类其中外部中断通过CPU的管脚NMI和INTR申请中断,也称硬件中断。中断允许标志IF可屏蔽INTR中断。硬件中断程序设计包括两个部分:1)写一个中断服务子程序,要写成中断函数的形式。2)设置中断向量,即把中断服务子程序的地址放到中断向量表中去。 2.3.1 中断服务函数 中断服务子程序要写成函数形式,用关键词interrupt说明。其格式为:void interrupt m y i n t(void)函数体自定义函数在使用前要说明,格式为:void interrupt m y i n t(void);设置中断向量函数s e t v e c t( )函数格式如下,由dos.h说明:void s e t v e c t(int n u m, void interrupt(*i s r) ( ) );其中n u m-中断类型号,i s r-指向中断服务函数的函数指针若中断类型号为0x08,中断服务函数名为m y i n t,程序如下:#include s e t v e c t(0x08, m y i n t); 2.3.2 获取中断向量函数g e t v e c t( ) 该函数从中断向量表中取出指定中断类型号的中断服务函数的地址,赋给一个函数指针。函数用法举例:#include void interrupt(*o l d i n t)();O l d i n t =g e t v e c t(中断类型号); 2.3.3 屏蔽中断函数disable( ) 将IF清0,禁止CPU响应INTR中断,由dos.h说明。函数原形:void disable(void);用法如下所示:#include disable(); 2.3.4 开放中断函数enable( ) 将IF置1,允许CPU响应INTR中断,由dos.h说明。函数原形:void disable(void);用法如下:#include enable();2.4 曲线的绘制Turbo C 提供了功能较强的绘图功能,包括图形库文件graphics.lib,图形头文件 graphics.h,显示器驱动程序,字符集字体驱动程序等。2.4.1 图形系统的初始化函数图形系统的初始化函数i n i t g r a p h(&driver,&mode,”path”)。其中,d i r v e r 图形驱动程序代码,图形驱动程序在系统提供的.BGI文件中;mode 图形模式代码,选择分辨率和色调;path 图形驱动程序的路径,要用双引号括起,若在当前目录下可用空串“ ”代替。2.4.2 设置背景颜色函数设置背景颜色函数为s e t b k c o l o r( int c);其中,参数 c 的取值与所对应的颜色:0:黑,1:兰,2:绿,3:青,4:红,5:紫红,6:棕,7:浅灰,8:深灰,9:浅蓝,10:淡绿,11:淡灰,12:淡红,13:淡紫红,14:黄,15:白。2.4.3 关闭图形模式函数 c l o s e g r a p h()该函数关闭图形系统,返回文本方式。c l o s e g r a p h( );2.4.3 自动检测图形显示卡该程序将图形驱动器代码设为DETECT,即自动检测图形显示卡,装入相应的驱动程序,且选用最高分辨率的图形模式。#include main( ) int driver=DETECT,mode; i n i t g r a p h(&driver,&mode, ); s e t b k c o l o r(1); circle(320,240,100); g etch( ); c l o s e g r a p h( );3. 结语 本文主要介绍了用C语言开发测控软件的方法与实践,由浅入深地分析了C语言在测控领域应用的方法和特点。在现代测控系统中,输入输出端口的控制,硬件中断程序设计,软件中断程序设计,精确定时程序设计,串口通信程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货物和劳务税试题及答案
- 激光应用技术的市场需求分析试题及答案
- 推动乡村教育可持续发展新路径
- 推动教师微课题研究的策略与实践路径
- 防暑物资面试题及答案
- 谈谈系统架构设计中的迭代过程试题及答案
- 生物可降解材料行业发展趋势与市场前景解析
- 辩证思考练习与税务实务结合的意义试题及答案
- 计算机二级考试网络知识试题及答案
- 迎春杯赛小中试题及答案
- 《结膜炎诊断与治疗》课件
- 2025东风汽车校招人才测评题库
- 云南黔滇行2024-2025学年中考道德与法治试题(含答案)
- 吉林2025年03月长春新区面向社会公开选聘8名各产业招商办公室负责人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 微风发电项目可行报告
- 医院防雷电安全应急预案
- 2025年中小学生安全教育日知识竞赛考试题(附答案)
- 2024年初级会计实务考试真题及答案(5套)
- 2025年4月自考00152组织行为学押题及答案
- 2025【英文合同】授权代理合同英文范本
- 2024年东莞市寮步镇招聘特聘材料员笔试真题
评论
0/150
提交评论