|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
红外避障模块(红外对管)51单片机驱动源程序# m' g- {: H# u& a; y
+ t1 B. i k% u5 I
1 @9 Z* V3 p6 [6 k1 J2 L
避障传感器模块电路图9 d4 c7 `. v. J2 w4 a h. ~
) B5 K) U k: ^' ?
51单片机源程序:( s: \5 K1 j! g7 ]
/******************************************
( j* [8 ?! G+ d4 }3 y- Z S5 v传感器触发测试8 D3 g0 s( F- t9 ?
单片机:STC89C52
2 e- i3 `8 Z$ ?4 c波特率:9600& f. R8 V3 o) O+ j, S3 x1 s0 f6 G
*****************************************/( s; _2 \5 O; s! L3 v( `
#include <reg52.h>
& C. I/ Y6 \# ounsigned char date; v; t1 S+ _- q" }) o$ o
#define uchar unsigned char9 J; X4 j0 f% n$ S
#define uint unsigned int
- J9 F$ Y( a. F9 E8 s% i7 ]sbit key1=P0^1;. k5 g" ^; g2 i+ i
3 Z; a& @7 c9 S, V8 Y9 I3 F3 x
/ o, g9 y' s: W. C9 T0 q
# F5 h. I6 _. k$ X, e5 b2 e D
! z* B0 R' c' o1 G
/* 函数申明 -----------------------------------------------*/
: P: I( p! d3 S9 bvoid delay(uint z);
! p$ j5 ?2 _ P( X* [* m8 xvoid Initial_com(void);
' G: m0 t8 g' {8 x. B
$ \ m( s! A& D+ I( X) O
, i! e' S5 w L//***********************************************************
+ F6 j6 [! c- y6 P; y- @
3 k" o# a( i V& e, w3 \! x
; Z$ q: c2 E4 D+ O7 n$ n s/*
4 K* k0 O0 n8 {- j* o( e$ I6 N+ w********************************************************************************
) o1 X9 A7 {7 ]1 y** 函数名称 : delay(uint z)5 x: ?" a) U# _' ~( p& g, |
** 函数功能 : 延时函数3 W" f0 N; z8 S+ H/ A: d. z
********************************************************************************9 W* u0 Y9 i5 m4 ]/ r- n1 C
*/
6 B. P7 Y% r# b1 rvoid delay(uint z)
% t1 a- }5 Z7 s' ^{
9 i! Y- U+ F+ \- h) U" _! b" P uint i,j;
3 G* Y4 L$ n: d0 M& b/ n; J for(i=z;i>0;i--)
" h! c8 k4 [- ~/ S( F4 Q0 O; ?/ j for(j=110;j>0;j--);
4 O! }; _/ p5 E. e0 K& @}
3 t* H9 [+ C0 G* k$ J3 M) y: ]( v$ z+ `7 ~8 Q
) t2 J+ e! }7 t& w% R2 ^. ~9 Q& O) n) s+ N1 n
7 y; F+ }& z0 J
//******************************
9 _% g/ f, V6 k: X# y: c P: r! G+ f O
; O) e( d7 {" Y$ }
//*****串口初始化函数***********( C; a m( g1 |! u6 Z: [5 W
& D5 T2 v: g1 N+ a! y, I
$ e: l" U) t. v* p1 U//******************************
2 ~. ^( ^+ V2 {1 n8 P; w. |3 w9 xvoid Initial_com(void)
- ~1 n% w' ]3 J# Y3 d+ g, T{
; `3 [$ Y& N0 s% P% w EA=1; //开总中断2 r6 Z* z: b' Q( ~! c$ n- H M7 v( C
ES=1; //允许串口中断, G4 m$ I- \. l
ET1=1; //允许定时器T1的中断
. t6 g9 f' S% V- O x8 C- V2 | TMOD=0x20; //定时器T1,在方式2中断产生波特率& ?& P+ ~9 t8 G p2 Z/ y7 Z Z5 s/ _
PCON=0x00; //SMOD=07 }0 X( w' p5 y( ]& B" v% M/ ~5 P
SCON=0x50; // 方式1 由定时器控制$ h, `% ]) x' r$ P/ @1 B$ X
TH1=0xfd; //波特率设置为9600( \% d) x9 m( [& w F, q$ l
TL1=0xfd;9 b( c5 y8 o4 ^( |5 t0 O
TR1=1; //开定时器T1运行控制位: r" R6 w9 d& H7 h5 ^7 Q- @
: n8 O. w9 l9 Y' A8 Z, G+ _- z% Q* i6 N' w3 L7 ~$ a! N, K
}3 p3 U6 p$ v; p" i& t
; r2 i+ N3 x. Y1 j% h/ `) u
! W7 ?# h4 C! v2 `+ a
0 b4 H/ }* X* ~# e3 t8 ] x1 y5 e, c9 w+ C' S; J2 W
; B2 ^2 h2 E# [. \1 H
; d9 B1 x( y1 o$ H6 v' J: r
9 x0 ^9 w% P* ~, ]
, {* t" r$ {( b( I9 o//*************************9 F9 M' j! G6 I1 z
//**********主函数*********/ O+ u! j$ ^; S
//*************************
[5 u: I C+ m7 c c$ r3 A- @main()8 g1 T5 q$ o i' C; I( E
{: P+ n0 X1 y+ o) \, R% B" M) w
Initial_com();/ {+ R# r/ w r4 ^& \5 w1 e8 m
while(1)2 B+ @' G* d3 p. ?" N- t
{9 e( I2 \8 \0 x$ ^
9 |5 m+ u+ z1 c# J
if(key1==0)
, m3 A P3 \! D# D' P( T {* V% [: U6 C$ V. s
delay(); //消抖动
5 i) Q- s2 L; N8 A* m if(key1==0) //确认触发
7 Y; Z& a o# R+ f7 |& c& ` {% o. _- H% s! J+ _6 A9 K$ M
SBUF=0X01;, P9 R; G* i% U D# T# e! V9 ?+ s
delay(200);
, ?9 m7 n- M# I) B
2 _& i( o; }1 c* \
: b& R$ k/ @2 s7 t/ l }
b( T7 @' g, @$ g5 U5 J 2 v1 n* K Z" l' p- y
}% w2 s0 {. R" {) Z
7 {7 r' K/ |0 c* s' ~
if(RI)6 s( P, r: Z8 D4 c/ T
{, \/ w" U: H; F) N
date=SBUF; //单片机接受/ b" A, ^: A9 ~/ o8 ^
SBUF=date; //单片机发送) k6 ]2 y0 L) M; H& R* _7 f
RI=0;
' s6 ]6 a" j6 q T# s4 n! }. v
0 e8 R, L5 D3 P
# ^. o) h0 ^3 T( c+ h! ]
* y9 S& q/ p' R; R3 ?- M% v t" t" N…………余下代码请下载附件…………. S& W- ]3 e8 z- F! d
Z- s c: C5 K
下载:
5 B5 G5 F k" {. t, l! K
5 w/ K7 x* @" ?' G" x! S- G
. m# B( C$ J/ X( `1 U |
|