|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
红外避障模块(红外对管)51单片机驱动源程序 ~% Y7 g: Z( O5 B, \/ u
& j: ]( @: \3 i( n' n$ b, `9 J5 u) H5 ?4 W! D' e+ y& D
避障传感器模块电路图1 E3 \3 x" C! B; q: F* O
& d+ E8 ~4 J2 F, f51单片机源程序:4 i9 e9 P$ p, q; s8 j: s/ Z3 K
/******************************************
. A( ^& s( Y$ b* E1 Y传感器触发测试6 V$ ], [: ]7 R/ T5 O# G
单片机:STC89C52
; I. y' O( H* y9 G0 T% \# J波特率:96008 h" k- O8 h4 U( C
*****************************************/
) h e3 ]) w: D1 w#include <reg52.h> D; ?, w# [0 d5 E
unsigned char date;
" R5 C9 Z! s- l( Q#define uchar unsigned char( S/ Z# M4 z& c, I5 g& n& p
#define uint unsigned int( {# r8 I$ e, c/ t
sbit key1=P0^1;2 p- Q. L9 G) U7 ^
/ c0 B D, Z" g/ K! q$ {. \
& o1 Z1 \2 Y( a' c3 r. o# x* r6 P
* F4 E, A/ F7 P7 X$ v
/* 函数申明 -----------------------------------------------*/4 {! U8 p; v4 o: N- n! [
void delay(uint z);/ o. g+ o0 P' [
void Initial_com(void);
/ P% V& p. ^2 O2 M
1 M9 I7 h' c+ s! u+ R
6 R- s( m* o& h3 d3 f4 J//***********************************************************3 ~. m6 O$ l2 b% ^# a, {
& W0 o7 d: ~, [+ j0 \, _8 _+ ]( \. R+ @- g) h
/*7 E- l0 k: M# K5 m, B
********************************************************************************7 j9 I: m6 f, e( E1 ` {& ]
** 函数名称 : delay(uint z)
, h2 \ p6 W5 i7 p2 a$ d** 函数功能 : 延时函数( |$ O$ \$ U# ^" M& }
********************************************************************************& f) L, K, I! S' G& \# N+ A9 O
*/+ l4 p! {8 R" M5 S; i( d! _5 z) x
void delay(uint z)2 Y: W/ i) [, p8 }
{
5 O* I' a% { [& Q% f# T9 ?- ^ uint i,j;
. \1 e/ M* b& v+ A; u for(i=z;i>0;i--)
& o/ f; e z- A2 z6 S4 v+ B1 L; m for(j=110;j>0;j--);
! f, @& Y9 F0 d+ R( i8 u% f6 g) i k}
( f0 I; ]$ T' V' [ D- Q+ A* l- ^3 P8 o0 q( U% g6 S X. [
0 {4 d* r# y' b6 [4 q" Z
9 ?3 k9 m2 m5 G, ?! i
* U; U0 G+ x7 f& Q$ R3 E8 o//******************************9 v l9 ^; r6 m6 Q/ e' T* z; a
9 C$ x$ G; J! \
+ _3 G1 h1 T; u7 F$ J/ r4 u
//*****串口初始化函数***********
* j# |& S9 N5 _1 g: D# t: D" a, Z! j1 {6 s7 f9 r8 n" p5 Z% N
" z1 S. H% |/ S: X; n5 f//******************************; d0 g" U$ o: L) V7 I* v3 E* }! T3 ]
void Initial_com(void)7 p: F$ D7 ^) F6 Q' H4 b" e
{
, e; F$ ?5 N! w( Y, ^0 [) l8 H4 f EA=1; //开总中断
/ N9 ?& s& P: y; N/ z- z ES=1; //允许串口中断
P! c0 E: Y( E6 t3 \ ET1=1; //允许定时器T1的中断 `1 Y4 E+ v/ R
TMOD=0x20; //定时器T1,在方式2中断产生波特率
+ e, t+ g" P( a9 U; |5 A PCON=0x00; //SMOD=0
; W& X* Q5 W7 s& m SCON=0x50; // 方式1 由定时器控制4 E; b4 S+ s# O
TH1=0xfd; //波特率设置为9600; C' w- d& }% m# P
TL1=0xfd;$ f; Z' x* L5 E& a* _& g
TR1=1; //开定时器T1运行控制位
9 u% g# h, @8 V0 K
, z. w6 x" U4 `$ f0 ^0 _9 i
6 M5 |4 Y k! J6 d- @; {- _0 V}/ F0 Y0 O6 G+ f5 o7 Q/ h
- T3 R! [/ S' i# J8 ?$ v0 M' ^1 ], Y8 \( C* y$ ^+ Y; m+ s
; i6 y# _ t* ]/ r) M( {3 r5 g" m
- q/ V: A. }0 \( C; H7 l* [) h V- C6 j
4 W4 D. \9 q% _; D( b
& L0 I. L: |6 s0 T2 g7 n
' a. ^4 n# y& e% C2 j& j, Y5 @//*************************
7 h2 M' q F! ]. |" Y2 [! O8 T" E//**********主函数*********& s) Q% Q1 M2 w" p6 X7 i
//*************************( t2 c8 c4 b6 E2 g, K
main(). S: ~- ^; Q+ ?8 m9 ]9 q. H8 D
{
6 ] X9 w* W. \, [0 g2 \ Initial_com();
# {8 u& n; V/ X: C9 z$ X while(1)9 b/ n2 |' r( M# Z% R6 t$ P
{) Q" }* Z4 }1 q+ ]1 {
8 ~/ W8 P+ w' m3 G4 X! a3 m if(key1==0)
% J# I& O/ A+ S5 L7 {; N) ^" b& e {
; Y( P3 N; i2 d: q4 a delay(); //消抖动& ] ^/ e3 w# w: d$ l0 U: ~
if(key1==0) //确认触发
) @$ x' X8 m `. h6 e$ ^ {0 H. l( e; Y/ G$ d% n* ^+ E$ {4 p2 R
SBUF=0X01;* {- o# G$ I& e4 d2 E, i+ e5 x9 q
delay(200);$ l( h/ Q8 b2 C! h
: j& l) g# o0 `1 Q8 b: p+ C , p, S$ g4 p8 ^
}$ u. Y; G/ K3 q5 V( D* ^0 A1 l
+ k" l3 d- Z! ~9 f1 u }9 Z) R( ]) o4 L7 ~. z+ y
6 h. O( H( z0 {! n
if(RI)
/ v. p7 q* a% S b# p; q& I, f {
2 X* r5 h7 a f3 n+ f! ~* W date=SBUF; //单片机接受: P* w1 @# m2 n* S
SBUF=date; //单片机发送 z! X; j. a' `, Q) A
RI=0;, D% D2 m* V: ?4 q
& Q, l$ e0 y+ h+ o- Z
, S0 X$ s! `- u8 _. _% b n3 B) J8 ]5 j, H4 U, N
…………余下代码请下载附件…………. }* u! a+ B7 z' V; s G }6 y
( G. R& t( s& I C. K- Y
下载:1 q* n' v; J$ I0 ]* v) R# n- k1 X
' y( y, L! Z3 _, W. j; h% Z
- D* \; u* p) X+ z. U1 i |
|