|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
实际工作中常常需要自动测量两点间的距离,如液面的高度、机动车倒车时与障碍物间的距离等等。在这类距离的测量中,一点是可达到的,另一点则是不可到达的。因此,测量时,从可到达的一点发射一定频率的信号波,经不可到达的一点反射回来,由接收电路接收回波信号。单片机准确计算信号在两点间传播所用的时间,再根据发射波的传播速度,计算出两点间的距离。4 ]% P% l9 }7 V- C/ d. W; r
设计电路时,首先分析测量的对象,选择合适的信号波发射器(如发射声波、红外线、超声波等)。若所选信号波传播速度较慢,可通过单片机对发射波与回波的查询或由发射波与回波触发中断,开关定时器完成计时功能。当波的传播速度很快时(如超声波),测出的误差很大。原因在于:其一,不管是查询发射波与回波,还是由之触发单片机中断再通过软件启停定时器均需要一定的时间(中断的方式误差相对要小);其二,相对而言,单片机的时间分辨率不是太高,如晶振频率为12MHz,则时间分辨率为1μs。) f# i% ?: z% S4 N9 U' L* v G
引入专用的定时/计数器8254进行计时,可大大提高测距系统的精确性。8254的每个定时器都有一个GATE门控信号,可用发射波与回波直接启停8254,而不必把发射波与回波接至单片机,通过中断或查询再发出定时器启停信号。同时,8254具有更高的工作频率,时间的分辨率更高,如输入4MHz的工作频率,时间分辨率为0.25μs。, D6 D: Y% L; ~
一、硬件结构8 B1 O" O8 K2 m7 v& {' t
电路如附图。图中8254的地址为7CH(0#定时器)、7DH(1#定时器)、7EH(2#定时器))、7FH(控制口),其工作频率CLK0由外部电路提供4MHz的脉冲信号(该信号为计时的基准信号,频率要求精确,可用4060等分频器实现)。受发射波与回波控制的JK触发器的输出作为8254 0#定时器的门控信号GATE0,回波信号同时作为单片机INT0的中断响应信号。初始化时,由单片机的P1.0口控制JK触发器的初态为0,8254的T0不计时;发射波产生后,JK触发器翻转,T0开始工作,计数初值不断减1;收到回波信号后,JK触发器再次翻转,8253的T0停止工作,同时触发单片机中断,在中断服务程序中读出时标(计数初值中所剩余的值),然后由数据处理子程序计算出距离。若增加LED显示电路,则可将测出的距离显示出来。
5 b5 x: b& z/ O4 x/ L r 如果波的来回传播时间超过了8254一次计时的最大范围,可将其定时器的OUT引脚接至单片机的INT1,由中断累加计时。, o4 S# z9 S) u4 |" K) l1 O
二、软件编程
. U& R7 P& i4 t& f% ~ 主要程序清单如下:
, S4 y" D h3 O: s& d ORG 0000H% y q. M& A* |3 F& s; I/ C
AJMP START
: A: }# |. ~& j: {+ p7 G$ t ORG 0003H
& ^; g8 D L1 T AJMP WBZD
. P. z" @" [" kSTART:CLR P1.0;JK触发器初态置09 d7 G! z4 S/ e+ \0 `) |# x& w
MOV R0,#7FH;8254工作方式:T0方式0,16位& K% f6 Y8 A7 ?* M% {+ s
MOV A,#00110000
" O2 V2 J1 l2 u MOV @R0,A" ^) P H) p7 `( U9 `0 F
MOV R0,#7CH8 ^# G& j, s/ z. u2 T# w* f) |
MOV A,#0FFH& q4 h, D1 A2 C/ t/ @8 z, G
MOV @R0,A;置T0计数初值低8位/ h! L+ x$ p' D) F* `
MOV @R0,A;置T0计数初值高8位(最大范围)
: P/ @# D) J+ {* E7 p2 \ SETB IT0;/INTO下跳沿触发
. w: ~7 F. f1 @% G2 Y1 Q SETB EA
& ]1 ^7 k% C- v) u8 D5 e7 m SETB EX0;开/INT0中断0 k1 q1 t8 o+ {- M
TAB: ACALL ;数据处理子程序, H/ Y# E. i/ {/ [5 _
ACALL ;键盘处理子程序
/ A: q4 _) R1 e AJMP TAB
. Q7 `' C& S( G KWBZD: MOV R0,#7CH;中断服务子程序7 V: d4 O# p+ p9 X! F; k" C& k1 M
MOV A,@R0& T4 u7 U& m! ?( b& y6 `5 c
MOV 20H,A;读出低8位时标送20H/ r! Q' C& W) m0 a$ ]; y
MOV A,@R0
- C5 ^% o# y9 |2 H. Y5 u MOV 21H,A;读出高8位时标送21H; C& B* B$ j* j8 @$ a3 v, i5 ~) f
MOV A,#0FFH
8 \7 Z% q3 p+ a( u* x0 } MOV @R0,A" J& J' G* y+ D. B" t
MOV @R0,A;重装计数初值! t4 w& H+ E+ B/ A& K
CLR P1.0;JK触发器初态置0
: h5 t6 W" E9 a$ J# ~ RETI# F1 c1 K, h7 W, s* `5 }; F- w! _9 Y
END |
|