|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如题4 d5 {1 k( s4 r, e) \& X% p
一个超声波测距报警程序,可以设定距离报警阈值。& i+ E; U, b, P, q- i$ _
我把beep = ~beep; 改成beep =0; 后一直报警,但返回报警距离外还是一直报警,数码管显示的距离也停在了报警那里不变化了,请教各位怎样解决,谢谢!- v; Z, M3 i! A4 v! H4 ?* A2 U
程序如下:
( b! d/ C0 ^' y. y3 ^% n0 j- I0 Z8 n* u) N! }
/****************报警函数***************/
& U9 e- r4 { s) x# z, rvoid clock_h_l()
$ i' t# Y9 H2 e1 [0 \* B/ j, `{* R% V9 O- d4 K S
static uchar value;9 J3 K% @3 q6 o ^) `5 X
if(distance <= set_d)
+ K0 V7 f6 U( V" B& r {
[. [" n+ J$ n; O' F+ D" Y value ++; //消除实际距离在设定距离左右变化时的干扰. P+ m- z* M; d" x1 N! R: [6 @
if(value >= 2)
& s9 P# _( U6 O g# v6 o) M6 } {
- n% O c7 {4 `( s c" e
( ?# ]1 d" s5 n# t( U j beep = ~beep; //蜂鸣器报警
, f% J; h( Y2 s) q& e6 O }
9 k' ?2 l4 _+ a0 O }3 C3 {2 Q0 S! ^4 J) P( U5 S
else 0 `0 k' E2 a1 V, U4 _6 O
{
; B, O2 x5 }/ V# `: l value = 0; ) F' g% N% }6 d x) N3 t4 O5 q/ _7 x; L
beep = 1; //取消报警) c- S; e+ X( H
} / |0 n3 p) R- M% y1 N i! s" e
}
i8 }$ u8 d( {+ y( p
m2 v. [3 Q4 v5 y6 R |
! w, w) R5 l* N+ w/ N/ M |
|