|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 L8 W$ n7 _2 M: A( j) }摘要:本文介绍了一种利用软件定时器在AT87C51单片机上实现多路信号异步采集的实用技术。详细描述了采集系统的硬2 A, ^" H3 F# x% O
件结构、软件流程和通讯机制。- t" a4 s) k" S2 a( w4 D
关键字:单片机;软件定时器;异步信号采集
. @( \; W, t$ c! b! r$ I4 C% H6 ~引言
, }* r; d7 @ R/ M: Y3 T在单片机上实现多路信号异步采集的方法通常: l& F' z7 @! T2 ?" t
有两种:一种是通过外加硬件定时器来实现,即,每个
( V* b: i( F4 q7 W5 O4 g异步信号通道对应- -个定时器,当定时时间到达时,引
* G( J- g/ d" @1 }1 R0 ]发外部中断,CPU对相应的信号进行-一次采样。这种2 s7 d& V" P( F( O
方法虽然可以保证信号采集的高速性和实时性,但开
, ?: a h( \; e! O# e$ ~! q发难度大,硬件成本高,而且信号通道的数目受定时
5 Z+ a' O" W. ~1 K$ U器个数的限制无法随意扩展。另一种方法是软件实现) a% u- C+ l; Y6 N9 k: d
法,这类方法开发周期短、系统成本低、灵活性强,因$ x% w2 T" h$ p! }' T+ E9 t- @" R$ f
此受到设计者们的青睐。在多路信号异步采集系统的) `0 S* t% b/ s1 D/ r1 n2 e
设计过程中,设计者们不断探索、实践,努力寻求简单
% g2 m7 I `& D/ f有效,灵活实用的技术途径。本文笔者在多年的实践% | _7 x3 l/ L7 P! f+ G( L
过程中,提出了一种利用软件定时器实现多路信号异9 N' H/ D0 g. ?( g- x6 f& W n* o4 l
步采集的有效方法。
1 v+ M' [/ i# O P1硬件结构及工作原理8 N% {( |1 Z' f; t' h6 Y, e
多路信号异步采集系统的硬件平台(即,采集器)
7 j; M/ j/ a, i6 D- o8 V1 @主要由模拟选择开关、采样保持电路、A/D转换器、通
* v9 ]0 a' f: m U q% x- l讯电路和微控制器五部分构成。模拟选择开关由单片 `8 p9 p, R9 M5 M- k' f
机控制,负责选通需要采样的信号通道。采样保持电
1 x* `$ u& F. K路负责对所选信号的模拟量电压值进行采样,采样的
6 { w) Q/ y( m* P触发信号由控制器通过P3.0引脚给出。A/D转换器负% f0 ?5 \! _4 p6 B0 C g( c
责对采样到的信号进行数字转换,转换后的值通过数& u# m% V, u/ R4 q5 u8 {
据总线P0被控制器读入,先存放在该信号通道对应
- z9 ^( h0 v) u+ |9 S- w的缓冲区内,随后由微控制器通过485通讯线送往上& w' o: k/ G! ]' Y- M( J
位机。通讯电路由解码芯片和485适配器构成,解码
, v) J+ O7 d- e$ _器用来识别和解析上位机发送的呼叫命令,当接收码* \0 x, f% ]. X+ ]+ b
7 r- ^3 n" o5 A9 K$ {# e
的地址和本地码一致时,将接收到的数据送至P1口,6 u* U. W+ \0 i) ~3 S& a; [
同时向CPU发出接收中断,启动数据传输。具体结构
; b3 t d3 q; L& r6 R) L$ w原理如图1所示。(本文以8路信号异步采集为例)
8 z1 R% _4 [0 E) K( Z解码器UM2758-108 f: d$ Y% F( i' Y
图1硬件原理图* `; R: g4 X K6 O( I/ b7 g4 j1 T
2软件定时器设计5 y% t5 V8 p! a7 s& u
为了实现多路信号的异步采集,系统为每个信号
! [3 T! }' r0 I( b- \( s# A' n通道配备一个特定 的软件定时器。软件定时器靠CPU7 D5 t w8 r& Y
内部定时器T0的周期性中断来驱动。具体操作办法
) ]# {2 E: {2 v) u G) ?如下:
4 u) [( x1 l0 q2 E' U首先在87C51处理器的内存中建立一个固定的. K, i7 X0 `! N7 F/ S
软件定时器参数表,参数表为每个软件定配备3个对
8 A/ ]# Y$ H h) R1 f应的内部参数。参数1用来供用户设置软件定时器的 Y+ O# U$ p) y
定时值,参数2用来保存软件定时器的计时值,该值3 J# ?4 V# {& S- `6 j0 f
在定时中断产生时,由中断程序进行累加。这样软件
) H/ R L* c: v9 v1 o7 B; ?5 T定时器的实际计时时间就等于定时中断周期和参数2: I6 {, \! V2 J) r0 H( j7 N7 M* P
的乘积。主程序不断的循环扫描软件定时器的计时9 f m% P/ O4 X4 W. ^) G& x8 b
值,当该值达到设定值时,就对其对应的信号通道进
0 D9 M& b& _5 Y) I行一次采样,同时对计时值进行清零,使其重新开始
. m9 z" x9 X G+ G* U8 m, l' O& s计时。参数3用来存储软件定时器所对应的信号通道. `. E) I4 C* T: e
的采样地址,以便CPU进行采样操作。- _6 e* b3 J: i s+ ?1 t
软件定时器参数表: ~9 T( Z e% o- Y3 t
" Q5 U) u) ]0 t8 H l8 a# r3 r; d, w; q+ x2 g
0 l& ^% R8 w# _7 W附件下载:
( |6 A# ?! t" ]
& O) I+ t& L, e0 @% L |
|