数据采集技术课后答案及程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1000/(1.9x8)=61Hz
{
#pragma vector = WDT_VECTOR
// 下面六行程序关闭所有的IO口
__interrupt void Watchdog_Timer_ISR(void)
P1DIR = 0xFF; P1OUT = 0xFF;
{
P2DIR = 0xFF; P2OUT = 0xFF;
ADC12CTL1 = SHP + CONSEQ_2; // 使用采样定时器,设置成单通道多次转换模式,使用
ADC12MEM0寄存器(CSTARADD=0)
ADC12IE = 0x01; // 使能ADC中断(ADC12MCTL0所设定的转换通道允许中断)
// ADC12MCTL0 = SREF_0 + INCH_0;
}
void main(void) { // 下面六行程序关闭所有的IO口
P1DIR = 0xFF; P1OUT = 0xFF; P2DIR = 0xFF; P2OUT = 0xFF; P3DIR = 0xFF; P3OUT = 0xFF; P4DIR = 0xFF; P4OUT = 0xFF; P5DIR = 0xFF; P5OUT = 0xFF; P6DIR = 0xFF; P6OUT = 0xFF;
// 参考电压:V+=AVcc,V-=AVss,ADC通道:A0
// ADC12MCTL0 = SREF_0 + INCH_1;
// 参考电压:V+=AVcc,V-=AVss,ADC通道:A1
ADC12CTL0 |= ENC;
// 允许ADC12转换
ADC12CTL0 |= ADC12SC;
// 开始转换
WDTCTL = WDT_ADLY_1_9; // 设置内部看门
狗工作在定时器模式,以ACLK进行1.9ms的延迟
IE1 |= WDTIE;
// 开WDT中断
Init_ADC(); P4OUT = 0x00; _EINT();
// 设置P4的输出初值 // 开总中断
while(1) {
Display_Wind_Direction_Value(AverageValue); } }
// 保存ADC转
// 共阴数码管段数据,0~F间的十六进制数
unsigned char SegTab[16] = {0x3F, 0x06, 0x5B, 0x4F, 0x66,
0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79,
0x71};
IE1 |= WDTIE;
// 开WDT中断
Segment_Low;
Init_ADC(); P4OUT = 0x00; _EINT();
// 设置P4的输出初值 // 开总中断
Digit_High; P4OUT = ~DigTab[i]; Digit_Low;
// 输出位选信号
while(1) { Tran_Value(A0Average,A1Average); }
static unsigned char index = 0;
Results[index++] = ADC12MEM0; if(index == Num_of_Results) {
AverageValue = 0;
// 将转换结果存入数组
unsigned char j;
for(j = 0; j < Num_of_Results; j++) {
1.7数据处理的主要任务是什么?
答:数据处理的主要任务有以下几点: (1)对采集到的电信号做物理量解释 (2)消除数据中的干扰信号 (3)分析计算数据的内在特征(P22)
程序 单路信号采集程序
#include <msp430x14x.h>
#define Segment_High P6OUT |= 0x40
// 看门狗中断服务子程序,数码管刷新频率约为 1000/(1.9x4)=122Hz #pragma vector = WDT_VECTOR __interrupt void Watchdog_Timer_ISR(void) {
static unsigned char i;
// 74HC573的11脚为高电平时,数据是透明输出;当 为低电平时,数据被锁存
(1)模拟信号采集与处理程序。其主要功能是对模拟输入信号进行采集、标度变换、滤波处理以及二次 数据计算,并将数据存入磁盘。 (2)数字信号采集与处理程序。其功能是对数字输入信号进行采集及码制之间的转换。 (3)脉冲信号处理程序。其功能是对输入的脉冲信号进行电平高低判断和计数。
(4)开关信号处理程序。其功能是判断开关信号输入状态变化情况,若发生变化,则执行相应的处 理程序。 (5)运行参数设置程序。其功能是对数据采集系统的运行参数进行设置。 (6)系统管理(主控)程序。其功能是将各个模块程序组织成一个程序系统,并管理和调用各个功 能模块程序,其次是用来管理数据文件的存储和输出。 (7)通信程序。其功能是设置数据传送的波特率(速率),上位机向数据采集站群发送机号,上位 机接收和判断数据采集站发挥的机号,命令相应的数据采集站传送数据,上位机接受数据采集站传 送来的数据。(P20)
// P6SEL |= 0x02; // 设置P6.1为12位ADC模拟输入A1
ADC12CTL0 = ADC12ON + SHT0_15 + MSC; // 打开ADC模块,设置ADC12MEM0-ADC12MEM7对应8个
AD通道的采样保持时间(1024个ADC12CLK周期)
// 关闭(不使用)内部基准电压发生器(REFON位=0)
ADC12CTL0 = ADC12ON + SHT0_15 + MSC;
// 打开ADC模块,设置ADC12MEM0-ADC12MEM7对应8个
AD通道的采样保持时间(1024个ADC12CLK周期)
// 关闭源自文库不使用)内部基准电压发生器(REFON位=0)
ADC12CTL1 = SHP + CONSEQ_3;
第一章 绪论
1.1 数据采集系统的任务: 答:数据采集的任务就是采集传感器输出的模拟信号并转换成计算机能识别的数字信号,然后送入 计算机进行相应的计算和处理,得出所需数据。同时,将计算得到的数据进行显示或打印,以便实 现对某些物理量的监视,其总一部分数据还将被生产过程中的计算机控制系统用来控制某些物理量。(P15) 1.2数据采集系统主要实现哪些基本功能? .答:数据采集系统主要实现以下9个方面的基本功能:数据采集;模拟信号处理;数字信号处理; 开关信号处理;二次数据计算;屏幕显示;数据存储;打印输出;人机联系。(P15) 1.3简述数据采集系统的基本结构形式,并比较其特点。 答:数据采集系统的基本结构形式主要有两种:一种是微型计算机数据采集系统,另一种是集散型数据采集系统。 微型计算机数据采集系统的特点是:系统结构简单,技术容易实现,满足中小规模数据采集要求;对环境要求 不高;价格低廉,系统成本低;可座位集散型数据采集系统的一个基本组成部分;其相关模板和软件都比较 齐全,容易构成西欧它能够,便于使用与维修。 集散型数据采集系统的主要特点是:系统适应能力强;系统可靠性高;系统实时响应性好;对系统硬件要求 不高;特别适合在恶劣环境下工作。(P16) 1.4数据采集系统的软件功能模块是如何划分的?各部分都完成哪些功能? 答:数据采集系统软件功能模块一般由以下部分组成:
// P6.6管脚
#define Segment_Low P6OUT &= ~0x40
#define Digit_High P5OUT |= 0x20
// P5.5管脚
#define Digit_Low P5OUT &= ~0x20
#define Num_of_Results 16 unsigned int Results[Num_of_Results]; 换结果的数组 unsigned int AverageValue;
// 使用采样定时器,设置成多通道多次转换模式,首地址为
ADC12MEM0寄存器(CSTARADD=0)
ADC12MCTL0 = INCH_0;
// 参考电压:V+=AVcc,V-=AVss,ADC通道:A0
ADC12MCTL1 = INCH_1 + EOS;
// 参考电压:V+=AVcc,V-=AVss,ADC通道:A1,序列结束
Digit_High; P4OUT = ~DigTab[i]; Digit_Low;
// 输出位选信号
i++; if(i == 8) i = 0; }
// ADC12中断服务函数,在这里用多次平均计算P6.0口的模拟电压数值 #pragma vector = ADC_VECTOR __interrupt void ADC12ISR(void) {
Segment_High; P4OUT = SegTab[DispBuf[i]]; // 输出段选信号 if(i==1)P4OUT = SegTab[DispBuf[i]] + 0x80; // if(i==2)P4OUT = SegTab[DispBuf[i]] + 0x80; Segment_Low;
unsigned char DigTab[8] = {0x01, 0x02, 0x04, 0x08, 0x10,
0x20, 0x40, 0x80};
// 位数据,从高位到低位
// 初始化ADC12函数
void Init_ADC(void)
{
P6SEL |= 0x01; // 设置P6.0为12位ADC模拟输入A0
Segment_High;
P4OUT = SegTab[DispBuf[i]];
// 输出段选信号
WDTCTL = WDT_ADLY_1_9; // 设置内部看门狗工 if((i==0)||(i==4))
作在定时器模式,以ACLK进行1.9ms的延迟
P4OUT = SegTab[DispBuf[i]] + 0x80; // 加上小数点
AverageValue += Results[j];
}
AverageValue >>= 4;
// 除以16
index = 0;
}
}
程序 多路信号采集程序
// 初始化ADC12函数
void Init_ADC(void)
{
P6SEL |= BIT0 + BIT1;
// 设置12位ADC模拟输入A0和A1
}
i = (i+1) % 8; // i++; // if(i == 8) i = 0; }
// ADC12中断服务函数,在这里用多次平均计算P6.0口的模 拟电压数值 #pragma vector = ADC_VECTOR __interrupt void ADC12ISR(void) {
static unsigned char index = 0; A0Results[index] = ADC12MEM0; // 第一次调试错误的 原因是括号里是index++ A1Results[index] = ADC12MEM1; index++; if(index == Num_of_Results) {
static unsigned char i;
P3DIR = 0xFF; P3OUT = 0xFF;
P4DIR = 0xFF; P4OUT = 0xFF;
// 74HC573的11脚为高电平时,数据是透明输出;当为低电平
P5DIR = 0xFF; P5OUT = 0xFF;
时,数据被锁存
P6DIR = 0xFF; P6OUT = 0xFF;
1.5模拟信号处理程序的主要任务是什么?
答:模拟信号处理程序的主要任务是对模拟输入信号进行采集、标度变换、滤波处理以及二次数据计 算,并将数据存入磁盘。(P20)
1.6数据处理的类型有哪些?
答:数据处理的类型一般按一下方式分类: 按处理方式划分,数据处理可分为实时(在线)处理和事后(脱机)处理。 按处理的性质划分,数据处理可分为预处理和二次处理两种。(P21)
ADC12IE = BIT1;
// 使能ADC中断ADC12IFG1(ADC12MCTL1所设定的转换通道允许中断)
ADC12CTL0 |= ENC; ADC12CTL0 |= ADC12SC; }
// 允许ADC12转换 // 开始转换
// 看门狗中断服务子程序,数码管刷新频率约为
void main(void)