多路信号采集器的研究与开发
收稿日期 :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