找回密码
 注册
关于网站域名变更的通知
查看: 863|回复: 3
打印 上一主题 下一主题

基于51单片机的红外遥控灯 原理图及程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-11-26 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
基于51单片机的红外遥控灯 原理图及程序# V, h/ A! |: W- s

: K) @& r# y1 d
; [% O! T" N/ I( r3 ?( e  d: F
红外遥控灯单片机原理图:
8 x8 ^7 u+ t' M, ]3 s
; g8 \' ~+ Y) i! E. f7 j# [//头函数) x# ?! |6 z1 Z0 {2 j, W" c2 Y2 o
#include <reg52.h>
6 V4 k/ c, L+ D& c  ?//宏定义" ]1 p# i* h# r, v$ v, k
#define uint unsigned int
! ]! b6 j2 h" o( m& q#define uchar unsigned char
( m. h8 t7 Z+ [1 ~. j3 Q2 c& t' n+ p" m1 `2 S0 b* _8 J

. I# L, ^5 B7 o//时间计算
+ p0 R( m4 Q& ~6 ]2 _#define Imax 14000    //此处为晶振为11.0592时的取值, 5 J) R5 ?  w3 w) ^* i/ }
#define Imin 8000    //如用其它频率的晶振时," z7 }9 }  e4 z5 l6 V$ e
#define Inum1 1450    //要改变相应的取值。8 P. h; u+ o# N, H8 q4 a3 o
#define Inum2 700 7 X5 E7 p$ N, F( I5 h4 ]
#define Inum3 3000
3 `, h) [) ]" N5 \: \3 [+ G$ Osbit led1=P2^3;& x  j- O' p1 t* I
sbit led2=P2^0;
# e- Z' E4 ]# s6 a//解码变量1 c# P1 F  i  c3 r2 G
unsigned char Im[4]={0x00,0x00,0x00,0x00};. j7 w! m9 I5 i; T. a+ r! f, O

" H* d9 l$ T9 x! q( E1 J

5 [7 u. h! j3 K* |6 ?" D//全局变量7 l# L: q* p$ y  Q
uchar f;3 K& J. H0 H6 [; k: J2 A( B( R" v
unsigned long m,Tc;! {: Y2 F4 i& c* _
unsigned char IrOK;# A& v# W- [2 q7 N4 @4 w9 v
7 T7 l" T1 g" t0 \2 n
* _0 m3 L5 x: F, k
+ {; N8 N) A: I4 p2 ~$ ]3 p+ y6 h
1 H$ Z  H# a+ L6 w2 [3 X
//主函数
# m; Z2 U# H  L- X+ Pvoid main()) a4 E& r6 [6 @5 g3 Y& P( f# U
{; s6 G/ ]) D+ n6 G
        P2=0xff;& U0 m& S* q8 [
        * t7 C3 V4 |" L9 j; g; t; i$ g
        EA=1;//开启总中断
- a/ l! b  T( J: v* ~+ L         , U. e, P( ?( e( K2 \* M+ f
        IT1=1;//下降沿有效! q6 h; N( |! m& L  K. R  C1 A" H
        EX1=1;//外部中断1开7 n, a5 ^# N# P6 F. M6 o3 a
         
' A7 X/ x; x, L+ Y, C' ]        TMOD=0x01;//定时器初始化  . M" z/ f9 e3 S* I
        TH0=0;//T0赋初值
+ ~1 P/ g" Y% ]3 }: e3 g2 u( ^        TL0=0;
$ D- l& t! z# i- r* W        TR0=0;//t0开始计时9 X! y: U$ H- [3 s# f) Q3 P7 J: [
        while(1)
2 [: e: \- L6 C* v1 ~# A0 z% `- K) d- N        {
3 f4 r5 G+ S# J2 k, r8 y; \                if(IrOK==1)
( `& A- ^6 z& Y4 ~& [- ~9 R                {
  c1 h& T0 a& W; U& Y0 d1 t                        //1键
2 o3 q7 t2 S* z; Y6 Q3 Y" Q                        if(Im[2]==0x0c)4 l5 u/ G, p& }2 ^* n7 v' \
                        {
0 n% o$ f: f9 J3 q9 O                           P2=0x00;
& N5 S. A& j8 g5 L$ I; @$ s4 _( I3 {                 led1=0;- Z' E6 k& E  T
                        }5 E" @) \7 c& D  V
                        //2键
8 B( E: V% o, e                        else if(Im[2]==0x18)
2 r3 A( h3 x% W1 Y6 b- H                        {
; N, i0 o6 T& D4 }9 y. t                           //P2=0xa2;2 }4 @8 X) }/ ]; E. r
                                    led1=1;
' n% L/ i) N' \$ _( O% A3 c                        }
( W- h$ Y7 g: U" z                        //3键
$ x2 h* u( n) Y- @" R                        else if(Im[2]==0x5e)
7 d; A" ?( }4 [. l& O                        {
: V& ]$ U# }  j1 [  M0 a                           P2=0xb0;5 Y/ j" Q! S1 p3 B7 J: d& T
                        }
% i* C# O: W' \( |* J: O                        //4  s2 k) n9 @2 w5 x( H
                        else if(Im[2]==0x08)3 K/ t7 R2 s7 b- z% o
                        {! n& \+ W0 r" I3 W
                          // P2=0x08;
: M5 B) I2 F8 ~; R                                   led2=0;
( f3 J1 Y% n' `2 e, `                        }
+ N: F4 B5 @5 H) }' E: y                        //5' v0 u* L$ v. f& s* L2 Q- s+ Y
                        else if(Im[2]==0x1c)
* I+ ?0 \% e5 ]0 z$ s                        {
! C$ j3 P% y/ O9 t, {- Q                          // P2=0x91;
5 J8 v) I% V) J  I                                   led2=1;9 Q- r  w0 x( I5 [3 t0 ~
                        }2 u$ \  V* k- a: `% y" F& f$ i
                        //6( i! ?: Z& z  F' x
                        else if(Im[2]==0x5a): R. n; D8 C& b# B7 S1 d: U
                        {
7 u7 q5 |6 t) Y1 V; S                           P2=0x8c;
% j8 q. ~) y$ c6 q- E                        }3 j8 t  [0 }! F! \! R  B
                        //7键$ j6 o& w3 X/ E) r
                        else if(Im[2]==0x42)
  j5 V+ l2 ^) a* R1 `                        {( E, i: b& Q% Y& u- L: [0 D
                           P2=0xf8;
$ t( N2 U+ R- Q9 s' T: y* I                        }
* s' p7 V; N+ _% {                        //8
, I0 F4 d% d6 m1 ~" d  f  {                        else if(Im[2]==0x52)7 k$ M0 T( W! [
                        {
8 u7 m% b4 K6 T; `: o. g3 M                           P2=0x80;# B+ o6 ?; X  n8 c" g
                        }) |9 V% b* A' ]% _9 K- h
                        //9
1 M( k! D5 {. `8 Y2 U# L                        else if(Im[2]==0x4a)
* J! S/ h8 O" Z7 ]                        {
4 r0 N8 x7 T7 t( J                           P2=0x90;  A7 m# |7 D0 }. }; l
                        }: S8 X- P7 B! [; T; a: M
                        //0
) g1 m. Z7 H* J/ ~! l: ^3 I: U                        else if(Im[2]==0x16)8 w  x/ h: V3 v9 S9 |. l4 B
                        {7 b% i  `7 C( M$ a" n
                           P2=0xc0;
" @' C3 g; \# t                        }. `8 i) ~) g: p/ W' }3 c, ]
                        //关机. ~) w1 I7 `# t" B! o2 X  O
                        else if(Im[2]==0x45)
$ @6 j% s1 V3 T+ M1 P. A                        {
1 ~( n* P; L4 R$ [                           P2=0xff;6 Z. x; y1 ^, d9 d# X! f2 w6 O% e
                        }
" f4 W' _5 @; r$ C$ l$ ~) a                   IrOK=0;         
! u7 f" G9 Z/ `9 L! l  @                }
& S! \& r& q4 b# ~& d7 n8 }$ C2 K        }
& H+ B: K9 _* ~% M3 k% T: F. u8 `3 A}( U0 K. x* @' F$ L. J

# C& u% ]' V8 _( c

# X/ A* c+ v1 ~, @7 y0 c1 c( L//外部中断解码程序_外部中断1) P0 c  U9 ]% w1 \+ b
void intersvr1(void) interrupt 2 using 1% A2 i! d- U  b# a$ M
{
  I/ G9 h6 |! y7 Z! U  U TR0=1;
" p" V1 X6 R1 e, f7 n Tc=TH0*256+TL0;//提取中断时间间隔时长
* @% q# Q% b# }$ u6 E1 ^$ V TH0=0;
! e$ V* i( t1 z, a9 F" r9 H TL0=0;         //定时中断重新置零
" t! N2 Z4 }& x0 L if((Tc>Imin)&&(Tc<Imax))
# `  i/ L* [4 t0 d1 d {
9 H$ d7 R" g$ X) ]9 k! a( X# g        m=0;' a: n* I# X3 B7 E  t* m0 O7 P
        f=1;
+ e! _: `- u" M# _: z        return;, a* @: w) n' Q9 C! i9 j$ V
}       //找到启始码
2 e8 O, P: n! n! ^" [3 U if(f==1)
' a4 S. ?, D. N$ }) B, ^ {# f2 S- {) v) \
    if(Tc>Inum1&&Tc<Inum3) , x7 O; c; V4 p; b
    {: a3 d8 ^4 `3 R9 H9 u- Y( F$ R
           Im[m/8]=Im[m/8]>>1|0x80; m++;
4 B; Q) L7 E2 E1 a+ P. A1 g    }
5 t) D+ ~9 s9 u* U  j; z    if(Tc>Inum2&&Tc<Inum1) 7 K/ f2 r7 a' f4 m' i
    {) v! H. V) I$ E7 D9 m& E/ e
      Im[m/8]=Im[m/8]>>1; m++; //取码9 U1 K; A& K( ?# F( m
           }
/ ~+ t' X' ]# W( @! T9 H( {5 f           if(m==32)
+ g& n" n% F2 O    {
4 h. F3 v; x/ X- |# d! G      m=0;  % H! G( J0 j% W9 m. Q/ n+ i# @
      f=0;
3 \& W6 T" C: p$ \      if(Im[2]==~Im[3]) 7 L0 m: D+ a+ P- Q9 ~2 l
      {) A  t, i' u/ \: ?6 }
           IrOK=1;
$ m$ k* V: ^, }+ ]                          TR0=0; 8 t( E; i- o6 t8 G; W: ?' A
           }2 f% ]: ]  K% e0 U
      else IrOK=0;   //取码完成后判断读码是否正确
# y6 t8 p( V' q0 D9 `; S, r% [; D9 E( w  |7 ]& X2 p6 U) Q
! ^# d9 a/ L8 }, }

2 V( @7 }7 Z" U' P

5 V- F0 X, s6 t6 N…………限于本文篇幅 余下代码请从论坛下载附件…………
: {9 [6 X% U3 @  \/ ?
游客,如果您要查看本帖隐藏内容请回复

6 q* J, ?& x; s; O
# B, ~) j; u' U

该用户从未签到

2#
发表于 2018-11-26 10:30 | 只看该作者
感谢楼主的分享啊 谢谢

该用户从未签到

3#
发表于 2018-11-26 10:48 | 只看该作者
感谢楼主分享~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-31 07:14 , Processed in 0.156250 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表