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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
基于51单片机的红外遥控灯 原理图及程序7 ^! W6 D' L2 w( c4 j$ D2 `8 u' ^

3 L- D4 {5 y' Z. A0 r

% @' @1 V% X2 s3 M. L红外遥控灯单片机原理图:
# D" D0 a( h1 t ! A0 d$ L+ ?2 h5 N# y
//头函数
7 @" e) H1 y" k5 x- b#include <reg52.h>
) g9 @5 K2 g) r//宏定义
1 a% f. C, I; W9 ?  Q#define uint unsigned int2 j4 k" Z' {( z. Q; A( ]! ^
#define uchar unsigned char
. u8 ~1 V, z4 c. u
) a$ w+ D$ D0 S) K
4 w; F0 J* u/ p4 \# K2 ]
//时间计算
- F9 q  N4 T6 W7 W#define Imax 14000    //此处为晶振为11.0592时的取值, * u9 S4 h  P1 J  |* M6 e
#define Imin 8000    //如用其它频率的晶振时,! V/ ~2 j4 q0 n- t
#define Inum1 1450    //要改变相应的取值。# g0 J/ S% {6 j" {) M5 J7 R
#define Inum2 700 . ^( @' B9 a' y* K; A
#define Inum3 3000 8 q3 N7 o7 ~8 W: W0 k0 t. `
sbit led1=P2^3;
7 M5 g1 B5 v$ N3 U6 M. G. |sbit led2=P2^0;' I, u. ~  D5 ?3 e# m8 i; z
//解码变量2 E  x# \# {- f8 z" h+ l
unsigned char Im[4]={0x00,0x00,0x00,0x00};+ ?) t* W' }4 x8 ?7 N

4 w0 G- Z+ m1 a& b3 |6 q# h- d7 h# l
( ~8 i: U! R& ^: n/ j
//全局变量
( z# M+ F: o/ }uchar f;
) j. N5 A; k; g! Cunsigned long m,Tc;! [' C" M0 G5 d! x7 {
unsigned char IrOK;* K+ h8 l0 [* q0 `( O3 u( b

9 G' ~& @4 ]5 P1 |& w6 `
; f5 ~% C3 I9 C9 h# L% b, _8 W' m
; q) y0 s3 N% F- N: ?1 D

. G: B; v9 `" E//主函数
" U1 k# S4 J) n% y" e" Rvoid main()2 r# E' W! i  x* }4 J) Y
{
% D- G8 C" M; V& g        P2=0xff;3 S1 v1 A4 a- t+ @8 V3 g$ X1 O
        * I( S: w! l  C1 I, y& y3 T
        EA=1;//开启总中断4 D1 O# z& K- z3 y+ W' I4 G
         
  e- o# y0 O' `& o        IT1=1;//下降沿有效
, {' t  {9 w2 C' M( l: w- K        EX1=1;//外部中断1开# U  [. s: @+ q: S
         4 X2 @  l( U; Q) X- j
        TMOD=0x01;//定时器初始化  
$ r/ V3 r1 l! O& t) |4 M) f        TH0=0;//T0赋初值
3 C+ ]4 v. ^* J+ O  l% `" I        TL0=0;* Z  `0 p1 y1 S/ P( k. k
        TR0=0;//t0开始计时
6 P% J; z# Q/ T& Q5 w1 R8 J9 x* O) ^        while(1)0 r  r, r  F$ X: W7 I- G
        {
5 ]; l# p0 u  i- O( y8 {% ]                if(IrOK==1) # {  k- n* k! D4 a
                {
+ @% O/ z4 F6 C9 {$ T                        //1键( c( N) a& U! h! D$ t$ T+ ~
                        if(Im[2]==0x0c)
! I& w/ C2 Q3 D6 v* B- o5 I# @! d( \5 e- E                        {! m6 X  [% M: u1 K. U
                           P2=0x00;5 ]) V- G+ U+ L& Z& o
                 led1=0;
3 b" a! b" y; \: W6 k                        }/ p3 J) J& y9 ^8 {
                        //2键
6 [$ i% e* g& P0 {                        else if(Im[2]==0x18)$ y4 e, W2 ?% m/ d/ n9 k$ ~+ x
                        {0 {  C  C; l3 D) ]3 I
                           //P2=0xa2;# ^$ H$ `# c: F( U
                                    led1=1;3 ?3 v! n9 q, U" [
                        }; _( }& E( E: M4 q! q8 \, G
                        //3键
/ L7 }+ ^& e* u) B                        else if(Im[2]==0x5e); B4 S" q- j" D, U: _( Q2 d0 f/ ?
                        {4 F" b; d' j! _9 ^: g8 k
                           P2=0xb0;* V# p+ l) C0 o5 d3 v- T
                        }* T! m8 k7 y- T: J$ s1 j# E" H7 `
                        //4
1 ~+ N* I- s; j0 Y                        else if(Im[2]==0x08), N- m: G0 R' V+ h. M
                        {/ D. D& M3 Y6 B+ r
                          // P2=0x08;
$ U3 r# f$ a& e8 K* Q" `! X& J                                   led2=0;6 s* A+ ?) E# o. c: p/ T! j
                        }
! h- [% T2 Y' h$ e" [; t! g1 c* L                        //5
* k7 V. l# W. E/ q- f# p                        else if(Im[2]==0x1c)
/ ]2 u. {" ^" c$ t                        {, K  S( d4 L- @$ q6 o
                          // P2=0x91;
  I- p  {' r0 p9 Y                                   led2=1;
1 R7 N( ^9 [1 ]5 i7 \/ R% M# Z                        }! j9 S+ [0 K$ `
                        //6
: L0 i" q& n. p5 m9 s( _                        else if(Im[2]==0x5a)
0 r+ w3 ~$ b0 _- J/ f& f: h                        {
7 o) y! G/ U$ X) t5 I                           P2=0x8c;7 \2 {6 i# V1 Z! @2 J+ q/ D
                        }; e# n! B+ b+ i
                        //7键, Z: R/ e0 J- s
                        else if(Im[2]==0x42)* S1 L4 c& f" q4 z$ `) j, ^
                        {
1 k0 u$ h: o7 |* e! {+ j                           P2=0xf8;; l$ \, G/ Q1 [1 n  U$ \4 C. i8 @
                        }
0 _: E. r. g' ?- e                        //8, N1 \. U- y& M) ~0 M# f8 q: U; P2 x
                        else if(Im[2]==0x52)3 W/ ]1 {$ d* j3 l& m. B
                        {# i# H! i3 W! g4 J
                           P2=0x80;
' o: [7 `2 _( Y" ^4 F* Z- ~( x                        }0 b2 [: \) L* \  }. i: Q- a; b5 [
                        //9
  l8 Z8 F$ `- F  Z! }; R- X                        else if(Im[2]==0x4a)+ m! Z; {9 m4 \
                        {
, T$ g& M! [3 B# }, e                           P2=0x90;, o7 Y* f% Z) O4 f1 H$ a, G, N6 s
                        }* ?$ X7 r, ^. V) @3 N" k
                        //0
3 ]. J2 y- i! q2 v' w2 n2 w9 H                        else if(Im[2]==0x16)
+ _# O0 x1 |6 z6 u0 M0 ^/ g8 V# @                        {
1 N% j: O! V7 J+ V" d                           P2=0xc0;
" V3 `# K# N2 W8 Z                        }1 p7 Q3 j! [9 N8 ~& e
                        //关机8 g; w$ O8 ?; _) G/ \( i; ]9 O
                        else if(Im[2]==0x45)
$ v' \* G# C7 L! Z, b2 E+ c                        {
( l9 }7 W7 A4 `0 s3 k                           P2=0xff;
. r2 r3 [2 M2 N4 |% n6 u                        }9 h8 C. x# z0 x. e, H! C  ?3 q) I
                   IrOK=0;         
" ?: F$ A6 y* D, }# M* Z                }3 W6 |' l: ?6 j; `3 u* a9 P$ G( r
        }  Q* }4 R' k4 E# x2 O  a
}+ l2 a- l6 ]7 d3 g7 a
3 V0 r% v  w. d) k1 o0 e
2 v1 c. Z# r( f
//外部中断解码程序_外部中断1% T; |* m8 L0 k
void intersvr1(void) interrupt 2 using 1
9 I! G" b* m6 v2 A& ]{  v8 S2 `- M  N! @1 Y
TR0=1;
/ q: T3 @; b1 X: ^5 k) \9 ^/ g Tc=TH0*256+TL0;//提取中断时间间隔时长
: W6 K/ c% k$ t0 L2 p TH0=0; ( k3 s, H" z. U4 V- o
TL0=0;         //定时中断重新置零% {7 Y2 p1 N4 ]. u0 s  b+ I: G
if((Tc>Imin)&&(Tc<Imax))7 Y3 \8 t+ f* G& `9 G) P3 _
{
4 R. g4 d/ ~% l& t% m) L# c        m=0;$ a: f8 _  `) {7 b
        f=1;
, d( @3 A$ f- w8 m. P4 Z        return;0 Z4 j- F: U( v1 l. G  w" ]
}       //找到启始码
- [- ~2 J  t. e6 ^* F* w+ R if(f==1)$ p" L. q# _" _& M7 z0 i" _: V
{8 x- Z* Z% u% r% Q9 _* }
    if(Tc>Inum1&&Tc<Inum3)
( }# `3 a+ K' ]/ Z0 \% c0 H    {" ^4 S0 k3 ?* i& V6 ^  l3 P
           Im[m/8]=Im[m/8]>>1|0x80; m++; + l/ S# s" z1 f  S" Y( C( A
    }
. z3 N% z- A- ?6 s. I    if(Tc>Inum2&&Tc<Inum1) : n9 V4 o. z3 j  H' g' x5 S
    {
3 {/ P6 R  `+ J6 ]) |8 b" n      Im[m/8]=Im[m/8]>>1; m++; //取码& e) t" _! X+ Q# V% D0 G8 d9 x
           }* e! X: w" |6 `7 g. M
           if(m==32)
. }) D6 a" ]/ \) N# Q4 L    {$ ]& i/ ?5 E* E6 ~5 u
      m=0;  ' j9 q0 O, W, r4 z) ^
      f=0;# h- Y, R$ Z/ M1 a2 f4 {
      if(Im[2]==~Im[3]) & l, G9 Z. z: S( j
      {
  s- U; k( T1 j! r5 h% G           IrOK=1;, y2 R, J7 |; e
                          TR0=0;
; ^* R! B  u2 ?2 g' h2 T           }5 k6 e7 p$ {9 j4 d3 b! f( e
      else IrOK=0;   //取码完成后判断读码是否正确
2 ~5 z# C, j8 x" S
/ Z1 a7 O1 T* G) ]; R
. F8 K  ^4 ^: p& X: T* p
7 X, T8 ^$ v# X6 l- p

; Q# w# H' Y* m9 p% W" U5 D9 R# Y+ Z…………限于本文篇幅 余下代码请从论坛下载附件…………
/ l2 ~2 ?$ G! B  d8 Q- C% r/ d7 e: S
游客,如果您要查看本帖隐藏内容请回复

5 T0 e& a2 M* d, @2 A) X# u
0 r: ^1 ~7 k  M9 O

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-19 08:59 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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