第三章 数据采集常用程序设计.docx

上传人:b****8 文档编号:10296929 上传时间:2023-02-09 格式:DOCX 页数:23 大小:208.98KB
下载 相关 举报
第三章 数据采集常用程序设计.docx_第1页
第1页 / 共23页
第三章 数据采集常用程序设计.docx_第2页
第2页 / 共23页
第三章 数据采集常用程序设计.docx_第3页
第3页 / 共23页
第三章 数据采集常用程序设计.docx_第4页
第4页 / 共23页
第三章 数据采集常用程序设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

第三章 数据采集常用程序设计.docx

《第三章 数据采集常用程序设计.docx》由会员分享,可在线阅读,更多相关《第三章 数据采集常用程序设计.docx(23页珍藏版)》请在冰豆网上搜索。

第三章 数据采集常用程序设计.docx

第三章数据采集常用程序设计

第三章数据采集常用程序设计

数据采集和处理是计算机在生产过程中应用的基础,任何计算机检测及控制系统都离不开信息的采集、处理及存储。

两种典型的系统:

生产过程控制系统——工况数据采集、数据处理、决策输出、驱动执行机构;

检测监控系统——工况数据采集、数据处理、显示或描绘成曲线;

我们已经介绍过数据采集的硬件结构,本章主要介绍数据采集中一些常用的程序设计。

第一节计算机数据采集系统

一、计算机数据采集系统的任务

在现代冶金、化工、石油、电力等工业生产过程中,往往需要对大量的过程参数进行监视和测量。

计算机数据采集系统的任务,就是要对生产现场的过程参数定时进行检测、记录、存储、处理、打印报表、显示及超限报警。

其结构如图3-1所示。

图3-1计算机采集系统结构图

二、计算机数据采集系统的优点

计算机数据采集系统的优点:

灵活、方便、速度快、判断能力强、图形功能强。

如在化工生产中,

(1)用不同的色彩,代表不同的管线中的流质;

(2)在测量点上,显示温度和压力的设定值、测量值、误差值;

(3)超限时用红灯闪烁表示,并发出报警声;

(4)可以由历史数据,生成历史趋势图、各种报表。

——注:

虚拟仪器LabView和LabWindows中,有各种典型的按钮、开关、测量仪器,可以刻度、曲线、表格、棒状图等多种显示数据。

该开发平台是图形化编程,适合工程人员使用。

三、计算机数据采集常用程序

计算机数据采集中的常用程序,包括中断、定时器、采样、看门狗、判断、上下限报警、LED数码管显示、小型行列式键盘控制等。

以数字信号处理器TMS320C24X为例,介绍常用的中断、定时、采样、看门狗的程序设计知识;以单片机MCS-51系列为例,介绍判断程序设计。

第二节中断程序设计

一、中断分类

图3-2中断分类图

从中断的来源看,分为硬件中断和软件中断;从中断是否可屏蔽来看,分为可屏蔽中断和不可屏蔽中断。

1、硬件中断和软件中断

硬件中断是由DSP的硬件所产生的中断,可由DSP的外部中断引脚(6个)产生,也可由DSP自身的外围设备产生(如定时器、A/D转换器、串行通信接口)。

软件中断是由DSP的指令产生的,如INTR、TRAP、RESET等。

2、可屏蔽中断和不可屏蔽中断

(1)可屏蔽中断:

可以用软件来屏蔽或者使能的硬件和软件中断。

(2)不可屏蔽中断:

中断不能够被屏蔽,DSP总是响应的中断。

二、中断优先级和向量地址

1、优先级

DSP的所有中断被赋予1~10的优先级(1为最高级)。

当有多于1个的中断被挂起等待响应时,中断按照优先级别从高到低依次被响应。

所有的软件中断和硬件中断,都对应于某一个优先级。

2、向量地址

在DSP中有专门的I/0空间,存在着一系列中断向量地址,每一个优先级都对应相应的中断向量地址。

中断向量地址为两个字长,可存储跳转指令。

当中断到来时,中断向量地址被加载到程序计数器,从而获取跳转指令,跳转到相应的中断处理子程序。

三、相关的寄存器

1、中断屏蔽寄存器(IMR)

IMR包含所有可屏蔽中断的屏蔽位,用于设置和读取中断的屏蔽状态。

(1)读IMR寄存器可以识别出已被屏蔽或未被屏蔽的中断。

(2)为了能够响应中断,把IMR相应位设置为1;屏蔽中断时,把IMR相应位设置为0。

(3)复位时,IMR所有位都被设置为0,屏蔽掉所有可屏蔽的中断

2、中断标志寄存器(IFR)

IFR中包含所有可屏蔽中断的标志位,可以识别和清除有效的中断。

当一个可屏蔽中断被请求时,IFR的相应的标志位被置1,指示中断正在被挂起或者等待响应(不论是否被CPU响应);当中断未被屏蔽时,如果IFR的相应位是1,则该中断将被CPU响应。

下列情况中断标志都将被清除:

(1)系统复位

(2)中断得到处理

(3)把1写到IFR的相应位,使其变成0,即可清除尚未处理完的中断

四、中断操作步骤

1、初始化

设置中断屏蔽寄存器IMR,开启需要的中断,屏蔽不需要的中断;

2、接收中断

当硬件或软件指令产生中断请求时,IFR寄存器中相应的中断标志位被置位;

3、响应中断

(1)CPU根据中断屏蔽寄存器的设置,决定是否响应中断;

(2)若允许响应中断,CPU根据中断标志寄存器的标志位,装载中断向量地址;

(3)从中断向量地址存储的跳转指令,跳转到相应的中断服务子程序;

(4)执行中断服务程序(需考虑保存、恢复寄存器的数据)。

注:

蓝色的表示自己需要编写程序

第三节定时器程序设计

可采用软件方式和硬件方式,达到定时的目标。

一、软件定时程序

依据:

1、执行指令需要时间;

2、如果知道CPU的时钟频率,就可以计算出每一条指令的所需时间;

3、通过内循环次数、外循环次数、指令数,可以计算出定时时间

图3-3软件定时程序流程图

二、硬件定时程序

TMS320C24X有三个通用定时器Tx(x=1、2、3),能够独立使用,自动计数。

1、时钟

(1)CPU时钟:

最重要的时钟,决定CPU的指令周期,由专门的时钟源产生;

(2)通用定时器时钟:

可由CPU时钟分频获得;

2、控制寄存器

(1)时钟控制寄存器(CKCR)

通过设置CKCR决定CPU的时钟模式,可以直接使用外部时钟、或者倍频外部时钟。

(2)定时器控制器(TxCON,x=1、2、3)

每个定时器都有一个控制器,可以设置该定时器的时钟频率(对CPU时钟分频)和计数模式。

(3)比较寄存器(CMPRx,x=1、2、3)

存储着设定的计数值,当通用定时器的数值和比较寄存器相等时,将产生中断事件。

3、通用定时器Tx的计数模式(6种)

图3-4计数模式示意图

(1)停止/保持模式

通用定时器的操作停止,保持当前状态。

(2)单增模式

通用定时器按照规定频率的输入时钟计数,直到定时计数器的值与比较寄存器的值匹配为止。

匹配之后的下一个输入时钟的上升沿,通用定时器复位为0并且禁止继续计数。

(3)连续增模式

通用定时器按照规定频率的输入时钟计数,直到定时计数器的值与比较寄存器的值匹配。

匹配之后的下一个输入时钟的上升沿,通用定时器复位为0,重复上述操作。

(4)定向增/减模式

由引脚TMRDIR来确定计数方向。

当TMRDIR保持高时,通用定时器将增计数,直到计数值与比较寄存器的值匹配为止。

当通用定时器的计数值与比较寄存器值相等,并且TMRDIR保持高时,定时器保持该值。

当TMRDIR保持低时,通用定时器将减计数,直到计数值为0。

当通用定时器的计数值为0,且TMRDIR保持低时,定时器保持为0。

(5)单增/减模式

通用定时器按照规定频率的输入时钟计数,直到定时计数器的值与比较寄存器的值匹配。

然后通用定时器改变它的计数方向,直到0为止。

当通用定时器为0时,停止计数并保持它的当前状态。

(6)连续增/减模式

每个周期与单增/减模式相似。

当通用定时器复位为0时,重复单增/减模式下的操作。

3、定时器的使用

(1)初始化:

设置CPU时钟(时钟控制寄存器)、定时器时钟、计数模式(定时器控制器)、比较寄存器的值。

(2)启动定时器。

(3)当定时器计数值和比较寄存器的值相等时,产生中断。

(4)处理中断。

第四节采样程序设计

一、概述

1、TMS320C24X的A/D转换模块,包括两个带有内部“采样—保持”电路的A/D转换器,其字长为10位;

2、每个A/D转换器有8个模拟输入通道,总共可处理16个模拟量输入;

3、每八个模拟输入通道,通过8到1的多路开关,给A/D转换器提供数据;

4、两个A/D转换器可同时工作,所以能够同时测量两个模拟输入;

5、A/D转换器的转换模式,可以分为单转换和连续转换两种;

6、转换可以由A/D转换器自身启动,也可以由通用定时器的中断事件启动;

二、转换结果

A/D转换模块的基准电压由外部提供,被测信号通过传感器转换成电压信号,作为输入电压。

转换结果=1024×(输入电压/基准电压)

三、转换时间

A/D的“采样-转换”需要6个模数转换周期,最少是6us的时间。

满足下列公式:

系统时钟周期×A/D的倍频系数×6>=6us

四、相关寄存器

1、模数转换控制寄存器1

用于控制转换启动、终止转换、选择模数转换模式、选择转换通道。

2、模数转换控制寄存器2

用于设置A/D转换的倍频系数、标识模数转换结果寄存器是否有内容。

3、模数转换结果寄存器

A/D转换结束时,将产生A/D转换中断。

转换结果寄存器是一个两级的FIFO寄存器,储存对应的A/D转换器的转换结果。

4、通用定时器控制寄存器

用于决定由哪个定时器、采用该定时器的何种中断事件来启动A/D转换。

五、A/D转换器的使用——由定时器启动

1、通过模数转换控制寄存器1,设置A/D转换模式、选择转换通道;

2、通过模数转换控制寄存器2,设置A/D转换的倍频系数;

3、通过通用定时器控制寄存器,设置由哪个定时器的中断事件来启动A/D转换;

4、定时器中断到来时(即采样周期到来时),启动A/D转换;

5、A/D转换结束时,产生A/D转换中断;

6、在A/D转换中断子程序中,从模数转换结果寄存器中取出A/D转换结果,进行处理。

注:

通过对转换通道的循环选择,可以实现巡回检测。

(一节)

第五节看门狗程序设计

看门狗(WatchDog)在CPU异常时、或者软件进入一个不正确的循环时,实现系统复位功能。

一、相关寄存器

1、WD计数寄存器

是一个8位可以复位的增数计数器,当WD定时器溢出时会导致系统复位,从而解除系统的软件错误和CPU崩溃。

2、WD定时器控制寄存器(WDCR)

设置WD计数寄存器的时钟频率。

3、WD复位关键字寄存器(WDKEY)

向WDKEY首先写55H、接着写AAH,将清除WD计数寄存器的值。

除此以外,任何组合都不能复位WD计数寄存器。

二、看门狗的使用

1、设置WD计数寄存器的时钟频率

2、启动WD计数寄存器

3、在适当的主程序或者分支程序中,向WDKEY首先写55H、接着写AAH,清除WD计数寄存器的值。

第六节判断程序设计

判断程序就是分支执行程序。

程序在执行时,首先判定给定的条件是否满足,根据判定的结果(真或假)再执行相应的操作。

例如:

在转速控制系统中,电机的恒速运转一般是通过控制输入电压来实现的。

首先检测出电机的实际转速,再比较电机的实际转速和给定转速。

(1)如果电机的转速低于给定转速,就需要增加输入电压;

(2)如果电机的转速高于给定转速,就需要降低输入电压。

重点介绍三类判断程序的设计思路:

1、算术判断程序:

对两个数值进行比较判断;

2、逻辑判断程序:

对一个字节的某些位,进行1或0的判断;

3、标志判断程序:

对某个标志位进行判断;

我们以单片机MCS-51系列为例,介绍判断程序的设计方法。

一、相关寄存器介绍

1、累加器ACC

是一个八位寄存器,它是CPU中工作最频繁的寄存器。

在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。

范围:

无符号数——0~255;有符号数——-127~128。

2、标志寄存器PSW

也是一个八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。

图3-5PSW的位定义

平常我们最关心的是以下四位。

(1)进位标志CY(PSW7)

它表示了运算是否有进位(或借位)。

如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。

(2)辅助进位标志AC(PSW6)

又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位)。

如有则AC为1状态,否则为0。

(3)溢出标志位OV(PSW2)

反映运算结果是否有溢出。

有溢出时,此位为1,否则为0。

(4)奇偶标志P(PSW0)

反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。

二、算术判断程序

✧两个8位无符号数比较

✧两个8位有符号数的比较

✧两个16位无符号数比较

1、两个8位无符号数比较(M、N)——根据进位标志

CLRCY;进位标志清零

MOVA,M;A←M

SUBBA,N;求M-N

JZEQU;累加器A=0,则M=N,转EQU

JCLESS;CY=1,有借位,则M

BIG:

M>N处理程序;无借位,则M>N,执行BIG处理程序

EQU:

M=N处理程序

LESS:

M

2、两个8位有符号数的比较——根据溢出标志和ACC的最高位

由于M和N均为有符号数,M和N两数在比较时,可能出现以下四种情况:

(1)M>0,N>0,即两数均为正数。

(2)M>0,N<0,即M为正数,N为负数。

(3)M<0,N>0,即M为负数,N为正数。

(4)M<0,N<0,即两数均为负数。

有符号数的比较相对复杂。

可利用“溢出标志PSW.2”和“ACC.7最高位”,判断两个8位有符号数的大小。

根据:

(1)正数——最高位为0;负数——最高位为1;

(2)溢出时,ACC最高位为1表示正溢出,ACC最高位为0表示负溢出;

MOVA,M;A←M

SUBBA,N;M和N比较

JZEQU;M和N相等,转相等处理程序

JBPSW.2,FLOW;判断是否溢出,有溢出则跳转FLOW

JBACC.7,LESS;无溢出,且A的最高位为1,则M

;如

(2)-(3)、(-2)-(3)、(-3)-(-2)

AJMPBIG;;无溢出,且A的最高位为0,则M>N,执行BIG程序

;如(3)-

(2)、(3)―(―2)、(-2)-(-3)

FLOW:

JBACC.7,BIG;溢出分为两种情况

(1)有溢出,且A最高位为1,表示正溢出

;则M>N,执行BIG程序

;如(126)-(-10)

(2)有溢出,且A最高位为0,表示负溢出

;则M

;如(-10)-(124)

LESS:

M

BIG:

M>N处理程序

EUQ:

M=N处理程序

3、两个16位无符号数比较——根据进位标志

由于MCS-51系列的累加器只有8位,所以当进行两个16位无符号数比较时,需要把它们分为“高8位”和“低8位”,分别比较。

CLRCY;标志位清零

MOVA,MH;A←MH

MOVR2,NH;R2←NH

SUBBA,R2;高8位比较

JZHEQU;高8位相等,转低8位比较

JCLESS;高8位不相等,有借位,转M

AJMPBIG;无借位,转M>N理程序

HEQU:

CLRCY;标志位清零(高8位相等)

MOVA,ML;A←ML

MOVR2,NL;R2←NL

SUBBA,R2;低8位比较

JZEQU;A=0,则M=N,转EQU

JCLESS;有借位,则M

;无借位,执行M>N理程序

BIG:

M>N处理程序

EUQ:

M=N处理程序

LESS:

M

二、逻辑判断程序

1、逻辑判断程序的设计步骤

(1)读入数据(开关状态或阀门的位置);

(2)屏蔽不需要的状态位;

(3)与所要求的状态比较;

(4)判断比较结果,选择程序入口。

2、例子

图3-6逻辑判断例子图3-7标志判断例子

图3-6中,A、B、C、D表示4个开关,当四个开关均闭合时,顺序执行相应的程序,否则,继续检测。

(注:

闭合后,电平为0)

逻辑判断程序清单:

CHECK:

MOVA,P1;读入开关状态

ANLA,#55H;用01010101,屏蔽无用位

XRLA,#00H;判断开关A、B、C、D是否全部闭合,全部闭合后为0

;异或,相同为0,相异为1

JNZCHECK;若ACC中不是0,结果也非0

;表示开关A、B、C、D没全部闭合,继续检测

PROCESS:

…………;全部闭合时,顺序执行相应的处理程序

 

三、标志判断程序

1、标志判断的设计思想

根据某一设定的标志单元(或标志位)的状态,决定程序的执行方向。

2、例子

电机旋转方向控制程序流程图如图3-7所示。

FLAGBIT00H;设定00H为电机旋转方向控制位,FLAG代表该位

JBFLAG RIGHT;FLAG=1,转RIGHT

LEFT:

…;FLAG=0,顺时针旋转控制程序

RIGHT:

…;逆时针旋转控制程序

第七节上下限报警处理程序设计

报警程序主要有以下几个步骤组成:

(1)采样被测参数;

(2)比较采样值和给定的上下限;

(3)根据比较结果执行相应的处理程序。

 

第八节LED数码管显示程序设计

一、LED显示器件工作原理

图3-8七段LED数码显示器的结构

LED显示器件是通过发光二极管显示字段的器件。

在单片机控制系统中常用的是由7段LED数码管,它的显示块中有8个发光二极管,7个发光二极管组成字符“8”,1个发光二极管构成小数点,因此有人称7段LED数码管为8段显示器。

LED数码管的管脚配置如图3-8(a)所示。

LED数码管有共阴极和共阳极两类。

共阴极LED数码管的发光二极管的阴极共地,如图3-8(b),当某个发光二极管的阳极电压为高电平时,二极管发光;而共阳极LED数码管是发光二极管的阳极共接,如图3-8(c),当某个二极管的阴极电压为低电平时,二极管发光。

二、LED显示方式

图3-9N位LED显示器构成原理图

在微机控制系统中,一般利用N块LED显示器件构成N位LED显示器。

构成原理图如图3-9所示。

通过I/O口位选控制哪个LED管显示,通过I/O口段选控制所显示的数字。

LED所显示的字符,与其段选码是一一对应的。

图3-107段LED段选码

1.LED静态显示方式

图3-11表示的是一个四位静态LED显示电路。

(1)把所有LED的3和8引脚串连起来,根据共阳极或者共阴极,连接到+5V或接地;

(2)段选控制直接由不同I/O口控制。

注:

需要占用多个I/O口。

图3-11LED静态显示电路

2.LED动态显示方式

图3-12LED动态显示电路

动态驱动显示接口特点是:

将多位LED同名的段选择线都并联在一起(即8位中的所有同名段a接在一起,所有b段都接在一起……),用一个8位的锁存器来控制段码;另外用一个锁存器来控制点亮的位。

因此需要2个8位的I/O端口。

I/O端口输出相应字符的段选择码,决定要显示的字符;同时通过位选择码,控制要显示的位。

如此循环下去,使每一位都显示该位应显示的字符,并保持延时一段时间(1~5ms),然后再选中下一位。

利用发光显示器的余辉及人眼的视觉暂留特点,给人一种显示器同时被点亮的效果。

三、LED动态显示程序设计

图3-13LED动态显示流程图

(1)缓冲区:

存放显示的数;

(2)数变成段码:

由专门的译码程序实现。

第九节小型行列式键盘控制程序设计

键盘是一个由开关组成的矩阵,是重要的输入设备,在小型微机系统中,如单板微计算机、带有微处理器的专用设备中,键盘的规模小,可采用简单实用的接口方式,在软件控制下完成键盘的输入功能。

常用键盘的类型包括:

◆编码键盘:

用硬件来识别、检测按了哪一键,并产生相应的代码

◆非编码键盘:

没有独立的硬件,用软件来识别按下的键、并产生代码

一、键盘工作原理

图3-14键盘原理图

将各键连接成一个矩阵,即成n行×m列,各键分别连接于某个行线与某个列结之间。

当某个键按下时,对应的行线和列线均为低电平,因此通过扫描程序,可判明按键位置(位置码、扫描码),再转换为按键编码。

为了方便键处理程序的设计,一般采用依次排列键值的方法,以保证键值和键号一致。

二、编码键盘

图3-15编码键盘电路连接

8279和51系列的单片机的连接非常简单,当有键按下时,8279内部由硬件自动生成一个与之相应的代码。

三、键盘扫描程序设计

较常用的键盘扫描的工作方式有“编程扫描方式”和“中断扫描方式”两种。

1、编程行扫描方式原理及程序流程图

图3-16用锁存器连接的键盘接口(4×4)

将行线接输出口,列线接输入口。

采用行扫描法:

(1)先将某一行输出为低电平,其它行输出为高电平,用输入口来查询列线上的电平。

(2)逐次读入列值

<1>如果行线上的值为0时,列线上的值也为0,则表明有键按下。

<2>由行与列的交连信号,确定某闭合键的坐标,即得到被按键对应的扫描码。

<3>主程序调用译码程序,将扫描码翻译为相应键的编码信息。

<4>否则,接着读入下一列,直到找到该行有按下的键为止。

(3)如该行没有找到有键按下,就按此方法逐行找下去,直到扫描完全部的行和列。

扫描键盘应注意的问题:

消除键的抖动:

在认可键号之前,程序中插入一段延时,让开按键机械抖动的周期,形成正确的键号。

 

2、中断扫描工作方式

图3-17中断扫描的接口电路(4×4)

(1)键按下时,产生中断信号;

(2)通过读P端口的4~7,可以直接确定行;

(3)在INT1中断服务程序中,通过判断P端口的0~3位,可以确定列;

(4)由行列组合成扫描码。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1