您现在正在浏览:首页 > 职教文章 > 职教论文 > 多路信号采集器的研究与开发

多路信号采集器的研究与开发

日期: 2011/6/6 浏览: 4 来源: 学海网收集整理 作者: 佚名

收稿日期 :2008 - 06 - 23

基金项目 :安徽省自然科学资助计划项目 (2006 KJ013A) ;安徽大学

人才建设项目

作者简介 :陶保壮(1972 - ) ,男 ,硕士研究生 ,研究方向为嵌入式系

统设计与应用 ;李  炜 ,副教授 ,硕导 ,研究方向为嵌入式系统、智能

EDA ;吴建国 ,教授 ,博导 , 研究方向为中文信息处理与智能 EDA。

多路信号采集器的研究与开发

陶保壮 ,张义超 ,李  炜 ,吴建国

(安徽大学 计算机学院 ,安徽 合肥 230039)

摘  要 :针对目前市场上的低成本、高效率多路信号采集器空缺的特点 ,从硬件和应用软件设计两个方面着手阐述了一个

以 AT89S51 微控制器为核心器件 ,通过利用 Intel 8255A 扩展外围 I/ O 接口芯片 ,采用软件方式实现对外围多路信号的采

集 ,数据处理的最终结果由串口发送出 ;算法上利用 51 系列单片机位操作的特点和数理统计分析方法 ,从而可以快速方

便地对采集的信号进行处理操作。最终研制出具有成本低廉、经济实用、结构简单、算法高效、功能可靠等特点的多路信

号采集设备。

关键词 :AT89S51 ;多路信号采集 ;统计采样 ;位操作

中图分类号 : TP302        文献标识码 :A        文章编号 :1673 - 629X(2008) 11 - 0200 - 04

Research and Development of Multi - Channel Signal Collector

TAO Bao2zhuang ,ZHAN G Yi2chao ,L I Wei ,WU Jian2guo

(Computer School , Anhui University , Hefei 230039 ,China)

Abstract :Takes AT89C51 microcontroller as the core ,the collector gathers multi - channel signal by expanding peripheral I/ O interface ,

and the processing result is sent out through serial. Having developed a low - cost , simple - structure , reliable ,and efficient multi - chan2

nel signal acquisition devices by using 51 - microcontroller’s operating characteristics analysis and mathematical statistics.

Key words :AT89C51 ;multi - channel signal acquisition ; statistical sampling ;bit - operation

0  引  言

目前 ,多输入多输出 ( MIMO) 结构已经普遍应用

于嵌入式产品中 ,尤其在信号处理和采集方面 ,本产品

针对目前市场上的低成本高效率的多路信号采集器的

空缺 ,核心器件采用低成本的 51 系列单片机 ,通过扩

展 I/ O 口 ,用软件实现对外围信号的采集 ,可同时采集

128 路信号 ,最多可采集 256 路信号 (需要考虑 128B

的可位操作 RAM 存储空间的分配) [1] 。多路信号采

集器主要完成的功能有 5 点 :

(1) 通过扩展 I/ O 口实现对多路数字信号的数据

采集 ;

(2) 引入外部看门狗 ,保证采集器可靠的工作 ;

(3) 使用串口进行数据的发送和接收 ;

(4) 利用 51 单片机位寻址的特点 ,快速对多路信

号进行处理 ;

(5) 根据业务需要自定义内部数据处理协议。

1  采集器整体结构

1. 1  利用 8255A 扩展 I/ O 口

8255A 是为 Intel 公司的微处理器配套的通用可

编程并行 I/ O 接口芯片。8255A 有三种基本工作方

式[2] :

3 方式 0 :基本的输入/ 输出 ;

3 方式 1 :有联络信号的输入/ 输出 ;

3 方式 2 :双向传送。

8255A 复位时 ,所有端口 (A、B、C) 均被置为基本

输入模式 ,如果和应用系统要求不符时就必须进行编

程。向 8255A 控制寄存器写入一个控制字 ,以确定各

端口的工作模式、I/ O 方向等。在本采集器中 ,主要的

目的是扩展 I/ O 口 ,所以采用方式 0 。如图 1 所示。

8255A 为一可编程的通用接口芯片。它有三个数

据端口 A、B、C ,每个端口为 8 位 ,并均可设成输入和输

出方式 ,但各个端口仍有差异[2] :

端口 A( PA0~PA7) :8 位数据输出锁存/ 缓冲器 ,

8 位数据输入锁存器 ;

端口 B( PB0~PB7) :8 位数据 I/ O 锁存/ 缓冲器 ,8

第 18 卷  第 11 期

2008 年 11 月           计 算 机 技 术 与 发 展

COMPU TER TECHNOLOGY AND DEVELOPMENT         Vol. 18  No. 11

Nov.  2008

? 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

图 1  8255A 方式控制字[2]

位数据输入缓冲器 ;

端口 C( PC0~PC7) :8 位输出锁存/ 缓冲器 ,8 位

输入缓冲器(输入时没有锁存) ;

在 8255A 中 ,除了这三个端口外 ,还有一个控制

寄存器 ,用于控制 8255A 的工作方式[1] 。因此 8255A

共有 4 个端口寄存器 ,分别用 A0 ,A1 指定 :

A1 = 0 , A0 = 0 ,表示访问端口 A ;

A1 = 0 , A0 = 1 ,表示访问端口 B ;

A1 = 1 , A0 = 0 ,表示访问端口 C;

A1 = 1 , A0 = 1 ,表示访问控制寄存器。

如图 2 所示 ,51 单片机通过 P0 口与 8255A 的数

据端口 D0~D7 相连 ,片选信号和方式控制字由 51 单

片机的 P2 口控制[3] ,由于篇幅所限 ,上图只给出了扩

展一片 8255A 原理图 ,在实际使用中 ,根据情况需要 ,

可以通过单片机的 P1 口再扩展一片 8255A。

这里值得注意 3 点 :

(1) 由于 51 单片机 P0 口的特点 ,在实际使用中需

要加上阻值为 1kΩ的外部上拉电阻[1] ;

(2) 在每次对 8255A 的数据进行读写操作后 ,需

要关闭 CS 片选信号 ,对 P0 口置位 ,再 重新打开片选

信号 ,如果不这样做 ,在实际操作中 ,读

出的高电平可能只有 1. 83V 左右 ,导致

逻辑 1 可能会变成逻辑 0 ,C 语言程序如

下[4] :

P2 - 0 = 1 ; / /^CS 为 1 ,禁止 8255A

读写

P0 = 0xFF ; / / 置 P0 口为高电平

P2 - 0 = 0 ; / /^CS 为 0 ,重新选通 825A

(3) 由于外部电路操作的时序和单片机不一致 ,所

以在程序中 ,需要适当地加入延时。延时函数如下[4] :

void delay(uchar x)

{

 uchar i ,j ;

 for(i = 0 ;i < x ;i + + ) for(j = 0 ;j < x ;j + + ) ;

}

1. 2  看门狗

看门狗定时器是一个计数器 ,基本功能单片机内

部程序跑飞后使系统复位。看门狗计数器正常工作时

自动计数 ,程序流程定期将其复位清零 ,如果系统在某

处卡死或跑飞 ,该定时器将溢出 ,并将进入中断[3] 。在

定时器中断中执行一些复位操作 ,使系统恢复正常的

工作状态。

看门狗中断服务程序 C 语言代码 :

void timer0(void) interrupt 1 using 1

{ / / 基准频率校正并喂看门狗

 ET0 = 0 ;

 TR0 = 0 ;

 WDTRST = 0x1E; / / 喂狗

图 2  8051 采用 8255A 扩展 I/ O 口[1]

·102·第 11 期               陶保壮等 :多路信号采集器的研究与开发

? 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

 WDTRST = 0xE1 ;

 TH0 = 0xEA ; / / 重新装载时钟

 TL0 = 0x60 ;

 TR0 = 1 ;

 ET0 = 1 ;

}

使用中断函数需要注意的是中断函数没有参数 ,

中断函数声明不能包含返回值 ,如上 void timer0 (void)

的返回值和参数都为 void ,如果缺省 ,就可能引起默认

参数为整型的编译错误。编译器不允许直接对中断函

数的调用等 ,中断函数在定时器 0 将溢出时自动调用 ,

在其他任何处调用是没有意义的。

1. 3  串口发送

串口的发送和接收原理比较简单 ,这里就不再详

述 ,串口的初始化 C 程序如下 :

void serial - init (void) / / 串行通讯初始化函数 ,在程序开始时调



{

 SCON = 0x50 ; / / 设置串行口控制寄存器工作方式 1 ,并允许

接受

 PCON & = 0x7F ; / / 清除最高位 SMOD ,该位为 baud 增倍位

 TMOD = 0x21 ; / / 设置其工作模式 2

 TH0 = 0x21 ; / / T1 5ms 中断

 TL0 = 0x4c ;

 ET0 = 1 ;

 IE = 0x82 ;

 TH1 = 0xFD ; / / 9600baud、11. 0592 MHz xtal

 TL1 = 0xFD ;

 TR1 = 1 ;

 TR0 = 1 ; / / 开始计数

 TI = 1 ;

}

串口发送程序 :

void sendata(void)

{

 UCHAR8 temp ; / / 定义临时发送数据位

 for (i = 0 ;i < Len - Data ;i + + )

 { / / 根据数据包的长度 ,决定发送次数

  temp = Data < < 8 ;

  SBUF = temp ;

  while( ! TI) ; / / 空语句判断字符是否发完

  TI = 0 ; / / 清 TI

 }

}

2  位操作的实用技巧

多路信号采集器往往要对采集的信号进行位处

理 ,如果采用通用数据寄存器就需要进行定位操作 ,这

不仅加大了宝贵 RAM 资源的开销 ,同时也加大了运

算的复杂度[3] 。本采集器使用 DATA 区可字节、位混

合寻址的 16 字节区 (20H - 2FH) ,可以快速方便地进

行信号处理操作。

在使用 bdata 数据类型的时候 ,需要注意的是 bda2

ta 类型变量必须定义在全局空间 ,用 bdata 定义的 bit

类型变量也必须定义在全局空间 ; bdata 存储类型和

data 存储类型一样处理 ,除了用 bdata 声明的变量位于

内部数据区的位寻址区。注意这个区域的总的大小不

超过 16 个字节。C 语言源程序如下 :

UCAHR8 OneSacnData ; / / 一路检测数据

UINT32 bdata bOneRouteData ; / / 一路可位寻址的 32 位数



sbit bOrd0 = bOneRouteData ^0 ; / / OneRouteData 的 0 位数据

sbit bOrd1 = bOneRouteData ^1 ; / / OneRouteData 的 1 位数据

sbit 数据类型用一个指定的变量作为基地址 ,用

位位置来得到一个实际的位地址。实际的位地址不等

于特定数据类型的逻辑位地址。实际位地址 0 对应第

一个字节的位地址 0 。实际位地址 8 对应第二个字节

的位地址 0 。

3  数据处理协议的制定

弱点信号比较容易收到外界电磁场的干扰 ,需要

考虑其抗干扰能力 ,在电路布局上充分考虑了抑制干

扰源、切断干扰传播路径和提高敏感性元器件的抗干

扰能力。由于多路信号采集器对信号要求比较高 ,除

了在硬件进行优化外 ,在内部数据处理时 ,采用统计分

析策略 ,某段时间内 ,当采集的有效数据达到或超过

70 %以上时 ,才认为信息是有效的 ,最大限度地保证了

数据采集的有效性[5] 。

表 1  协议数据包

版本(8bit) 流水号(32bit) IP 地址(16bit)

数据段 校验段(16bit)

  在制定通信协议时 ,一般需要给出版本号、流水

号、IP 地址、数据段、数据校验段 ,见表 1 。版本号通知

数据接收端需要采取的解析算法 ,版本号定义成 char

型即可 ;流水号加 IP 地址是协议身份的唯一标志 ,在

接收端处理设备中是唯一的 ,接收端根据需要可以进

行高级数据处理 ,如神经网络预测或数据挖掘等等。

流水号一般需要 long int 类型 , IP 地址可以根据需要

自行设定 ,一般 2 个 char 字节就可以 ,数据段根据需

要可以定义成结构体或数组或混合体 ,数据校验段本

采集器采用累加策略 ,让所有的数据按 char 类型进行

累加 ,最后取整型余数[4] 。

typedef struct CommunicationProtocol

·202·                     计算机技术与发展                   第 18 卷

? 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

{

 uchar VersionEnum ; / / 版本号

 uint IdEnum ; / / 流水号

 int IpEnum ; / / IP 地址

 uchar Data[20] ; / / 数据段

 int VerCode ; / / 校验代码

}CP , 3 pCP ; / / 通信协议的定义

4  结束语

多路信号采集器是一个具有多路信号并行采集、

粒度计算和串行传输的信号采集和处理中间设备 ,介

绍了采集器的整体结构、位操作编程技巧和统计采样

算法思想以及协议的制定。

目前 ,该多路采集器广泛应用于交通信号灯信号

采集器、集中控电机房无线监控器和 DCS 网络通信集

中监控器等领域 ,该产品具有经济、实用、高效和可靠

等众多优点。

参考文献 :

[1]  曹巧媛. 单片机原理及应用[ M] . 北京 :电子工业出版社 ,

2001.

[2]  何立民. MCS - 51 系列单片机应用系统设计系统配置与接

口技术[ M] . 北京 :北京航空航天大学出版社 ,2000.

[3]  陈萌萌 ,邵贝贝. 单片机系统的低功耗设计策略[J ] . 单片

机与嵌入式系统应用 ,2006(3) :1 - 3.

[4]  Zurell K. 嵌入式系统的 C 程序设计[ M] . 艾克武译. 北京 :

机械工业出版社 ,2001.

[5]  尧  鹏 ,谢志江 ,余中云. 一种高精度数据采集无线传输系

统硬件设计[J ] . 重庆大学学报 :自然科学版 ,2006 (4) :9 -

11.

(上接第 196 页)

4  结束语

结合 DM6446 的开发经验 ,成功将 U - Boot 移植

到 DM6446 处理器上 ,实现 DM6446 上电后自启 ,并能

够正确地引导嵌入式 Linux 操作系统。该移植方式具

有一定的通用性 ,可以广泛应用到其它的处理器和应

用系统中 ,对嵌入式开发人员有一定的借鉴意义。

参考文献 :

[1]  孙纪坤 , 张小全. 嵌入式 Linux 系统开发技术详解 ———基

于 ARM[ M] . 北京 :人民邮电出版社 ,2006 :108 - 141.

[2]  TEXAS Instruments. TMS320DM6446 Digital Media System

- on - Chip[ M] . TEXAS: TEXAS INSTRUMENTS ,2007 :

21 - 23.

[3]  TEXAS Instruments. TMS320DM644x DMSoC DDR2 Mem2

ory Controller User‘s Guide[ M] . TEXAS: TEXAS INSTRU2

MENTS ,SPRUE22A ,2005 :23 - 57.

[4]  TEXAS Instruments. TMS320DM644x DMSoC ARM Sub2

system Reference Guide [ M ] . TEXAS: TEXAS INSTRU2

MENTS ,SPRUE14A ,2007 :127 - 138.

[5]  毛德操 , 胡系明. Linux 内核源代码情景分析(下册) [ M] .

杭州 :浙江大学出版社 :120 - 163.

[6]  潘  浩 , 马艳敏 , 白  瑛 , 等.Bootloader 在 AT91RM 9200

系统中的实现[J ] . 微计算机信息 ,2007 ,23 (1 - 2) :168 -

170.

(上接第 199 页)

噪声也明显减小 ,对光谱利用峰值拟合算法进行定量

分析[5] 。以滤除干扰之后的气体透过率光谱为拟合对

象 ,将其与数据库中的气体分子模型光谱进行拟合 ,在

算法中通过迭代使残差的加权平方和最小 ,最终获得

气体浓度等重要的光谱拟合结果[6] 。

4  结束语

文中对 FTIR 实测光谱进行小波分解和软阈值去

噪 ,再通过小波合成还原得到了去噪之后的透过率光

谱信号。保证了气体在不同红外吸收波段分析的准确

性 ,使含量较低的 C2 H4 气体的定量分析得到了保证 ,

提高了检测微弱气体光谱信号的灵敏度。该方法在多

组分痕量气体的定量分析中得到了很好的应用 ,在环

境气体的光学方法监测中具有一定的应用前景。

参考文献 :

[1]  Jaakkola P , Tate J D. Instrumental Resolution Considerations

for Fourier Transform Infrared Gas - phase Spectroscopy[J ] .

Appl. Spectrosc. ,1997 ,51(8) :1159 - 1169.

[2]  Berry R J , Hart B K. A Low Resolution Spectrometer for

Open Path Fourier Transform Infrared Spectrometry[J ] . Field

Anal. Chem. Tech. ,1999 ,3(2) :131 - 138.

[3]  赵红怡 ,张常年. 数字信号处理及其 MATLAB 实现[ M] .

北京 :化学工业出版社 ,2002.

[4]  彭玉华. 小波变换与工程应用[ M ] . 北京 : 科学出版社 ,

1999.

[5]  朱  军 ,刘文清 ,刘建国 ,等. 基于峰值拟合算法的光谱分

析[J ] . 计算机技术与发展 ,2006 ,16(4) :125 - 126.

[6 ]  Zhu J ,Liu W. Research on analyzing atmospheric transmit2

tance based on infrared radiation measurements[J ] . Proceed2

ings of Spie ,2004 ,5832(10) :83 - 90.

·302·第 11 期               陶保壮等 :多路信号采集器的研究与开发

? 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net


多路信号采集器的研究与开发.pdf

返回顶部