|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
红外避障模块(红外对管)51单片机驱动源程序) E2 m. o: b8 U2 I
# H+ L% F* A. P5 U
2 i8 J: _$ C) S% w1 A避障传感器模块电路图+ @. I: ?3 L% S# s) n9 u4 [
9 e5 ]; [& z9 T- Q6 d
51单片机源程序:/ E3 y( ?. P/ D3 L" a
/******************************************4 h; f9 y$ {9 I2 e6 |: I/ I q
传感器触发测试7 T V9 H: t5 [: c/ F
单片机:STC89C525 N( k1 z( j' Q
波特率:9600
3 W: n; \& y0 i1 ~" e*****************************************/2 O! H& ^4 Y0 T4 @& ? M- {
#include <reg52.h>
2 D1 E, i1 C5 c7 z9 K. }unsigned char date;1 K$ p7 O/ a$ J* ^! f
#define uchar unsigned char1 T; C" U4 Q8 z: B
#define uint unsigned int, U( v* I J# u# p
sbit key1=P0^1;0 }( v; P( f$ A' y
: t; r/ x& p+ z, h0 U) f' V
; o- T- e* X8 ?2 x- l; c3 _" k0 [+ L( W5 B' N/ U
1 K8 v w) y ]6 ~
/* 函数申明 -----------------------------------------------*/
9 l: X, X. E* \$ \, evoid delay(uint z);$ H! ^9 |4 v$ Z
void Initial_com(void);& S& G l7 N; i1 E& |" r t
6 V `, `1 [0 U5 J6 W& n' ]
& s4 v6 D% @9 I3 D' }//***********************************************************
" b% {5 ~( i1 }5 H
3 ?8 J: u) \8 w+ N$ k n. s/ {3 E+ u/ [
/*& h2 I) s. d2 C
********************************************************************************. y8 ?( d. p/ ]( e7 Z6 n
** 函数名称 : delay(uint z)
& @4 j) ^# n* f- O; F/ H** 函数功能 : 延时函数
, L7 h% m! L/ J) I9 j0 e- E# X1 X********************************************************************************$ V5 h3 @. l) w; s5 l/ z+ x2 }
*/
! t: ]( q! d3 A$ tvoid delay(uint z)
& l$ X' D5 }5 v% |2 P3 ]' F{ / N7 l u3 C4 K: b+ C) o
uint i,j;5 E' `) v) {3 z. s
for(i=z;i>0;i--)
: C! r: j( I+ U ^ for(j=110;j>0;j--);
: t9 F8 A6 p) K: M7 v4 ?6 W4 l! T; A- J5 |} & C8 S: | G7 H& t
3 u: \& s. h5 r+ _/ A) g+ k7 [( S8 a0 U+ O2 W6 N5 {
8 _" }$ e+ [: q. c4 m: Y
: ?& D: N3 I* b$ _+ j//******************************+ y9 |/ M9 ~3 V% e
# q! g1 H8 z7 I5 I7 T; I& M! h* A8 V
//*****串口初始化函数***********
5 G3 R* Y. i# R8 {* Z6 K! W" b. |7 U2 M# K, i. n, k5 V; c3 u
8 Y, d/ X u1 W% ?6 D
//******************************
' r- \6 p* p% E- p$ p) ^" ?! L G, U0 Rvoid Initial_com(void)
4 q* ]( a+ M. D$ s: x{7 U, E7 y$ k0 N! Q
EA=1; //开总中断& {5 ~+ ~: |( ^" A' Z Y
ES=1; //允许串口中断 u0 O- _: |2 b! D2 h* ~# k( G$ @
ET1=1; //允许定时器T1的中断9 j' l% u! K7 g1 a P! A
TMOD=0x20; //定时器T1,在方式2中断产生波特率
3 h8 D1 m- I' }" F& p+ h0 P3 ^0 v PCON=0x00; //SMOD=0
* c( F3 S) Y0 _' s0 Y SCON=0x50; // 方式1 由定时器控制
7 b' F- k; X- S+ R; k, I, ?; Y TH1=0xfd; //波特率设置为9600
& K M# Z0 f1 ] TL1=0xfd;
+ q# }4 W3 w$ \0 u TR1=1; //开定时器T1运行控制位
3 E6 [! z7 g+ T
! {( h: ^4 }) m0 t8 z* \9 n/ k% W
. {9 b! _$ v2 h. V}4 T7 C2 T7 W2 P
: d$ F' G2 Q$ r; L) b; g' U, f
. v" t2 d# L3 J' p( b" C
* u" s- Y. k/ y! k9 _! s" c4 U# P+ A
1 W+ F1 K) H! T5 }* W) |
% Z+ I! d8 M9 [! K$ I0 O3 D+ e" [ q# B+ v$ d0 N
& ]* _+ D: [1 r/ o" S
3 E7 p6 Z4 M2 {0 q y//*************************& d# x; G! K5 i l* A0 A
//**********主函数*********9 Q. a' D8 `- T5 C
//*************************
H5 h# a; g' F% P0 e7 amain()
# p, t" O$ a5 F2 D' Z+ K8 F( F' W1 b{$ z0 t7 F7 ~" l
Initial_com();" p6 i+ h8 H9 ^0 D
while(1)8 k9 [" P* l" @7 ~1 l
{4 h( Y9 b {7 j- M! u
* P0 u% G) X; X3 x9 y4 e! `1 N4 [ if(key1==0)
- @ I% p- b9 J {) v- n0 {1 |5 R& H% i+ ~1 Z8 G) l
delay(); //消抖动
$ z) h( a7 ]0 g6 {3 t4 j6 L if(key1==0) //确认触发* v6 V" ?) X- c# L) a' a2 h
{% ~$ D3 k! A5 l$ s4 m7 K8 P' E0 h
SBUF=0X01;9 W5 A! f2 U! w7 m6 J d2 ]9 ^: L
delay(200);
- }/ k- h2 Y9 H, p1 v0 q) Q9 _
4 A. s( i5 V$ k3 q0 A" f) ^% u/ i$ i$ W ' f& O' Y$ ^! M
}
/ S: W0 d4 ~ \: ~4 h7 F4 A+ t6 y : M! G o! |" Z% e6 O# C9 M
}
( \: ]1 U0 l* t6 b
' c, S% W2 z' x# e if(RI)
6 ^+ g& z' s) ^$ R" g, j+ C0 b {3 h: Y; x; \& ]/ a) c+ Y" J
date=SBUF; //单片机接受
! S# x" p! g5 a& E, e ~" ~ SBUF=date; //单片机发送
; d6 _+ [/ G5 i RI=0;
- k/ n# z+ ^7 b2 x4 o4 f, k% U4 B & x* h" A7 H2 M# N. W% r
5 q) F1 _" t* A3 n( {1 m V8 F8 f' y/ L
…………余下代码请下载附件…………8 z0 v+ K/ r/ n" S8 ^0 e9 J
( i* N8 i+ B# k7 a$ Q1 @. S) v下载:
9 V y/ C) c; P5 u# a* V# `( R9 `' U ]
* `- D1 x2 X9 m: _- }$ M |
|