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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
基于51单片机的红外遥控灯 原理图及程序
' E% G/ Z  Q0 y: w* U7 v; b7 E' \) [3 F
7 y! R7 a2 ?" B2 d! @
4 n; p& |% k6 B0 u4 Q4 L6 |7 [
红外遥控灯单片机原理图:7 A' \/ ]9 o& g3 N9 r& d
9 K2 q& D2 n: V) A- ]9 [$ b
//头函数! b3 b8 M% T" P( ]  X$ K
#include <reg52.h>3 g' k) `/ I8 o, m2 c! [; y
//宏定义
" P2 u% x2 y" z4 \#define uint unsigned int
" E+ A% p& a! B; @#define uchar unsigned char
' }1 ]3 L6 F, p) v2 X+ L0 E
& o3 s  E% C7 s" V6 }2 Z# s: x

2 T2 f' `  f  n( ^, g. p//时间计算+ H* ^% ]3 [7 {5 q, ^' p, p, j5 E
#define Imax 14000    //此处为晶振为11.0592时的取值,
. `2 U" \+ O" L! E. H' s+ W* J# j- w#define Imin 8000    //如用其它频率的晶振时,6 x2 S8 h" x9 d; H- e; J
#define Inum1 1450    //要改变相应的取值。, x" F) k% ^4 i$ b0 f$ Y+ f( K
#define Inum2 700
, \/ e6 _! C. X8 v7 F#define Inum3 3000 2 i4 \( V  G" e7 A9 W# d
sbit led1=P2^3;$ o/ {( S6 t0 t% D. K( n
sbit led2=P2^0;8 y! q* E! t6 W. ^
//解码变量
6 y' ~; G# E9 f8 R: t) uunsigned char Im[4]={0x00,0x00,0x00,0x00};/ N3 X  ?/ O2 A( j  R

; C- J7 `& ^1 `
( s! g* x. Y% n4 `3 V+ ^6 o+ ^
//全局变量
) w$ E8 o8 s7 a! g/ buchar f;  c7 v2 s! g" J
unsigned long m,Tc;0 U( ]# i. M, R$ U0 x
unsigned char IrOK;
6 o5 C$ H: C5 |; I- j& Q1 R8 T
% J6 Y7 @( o; F

# r& g8 \& V3 L7 f. Z$ E& e
* @# l, z  H3 \$ ~8 G3 {$ ?

5 @9 \' J# S1 `//主函数" S% G* O+ i" r- D7 m
void main()3 ]$ T' \; r: D
{  f2 z$ H/ ?' v, S- Q, \1 \; F
        P2=0xff;: Y; ~; d" z/ v, l
        
/ k0 h- G- d3 U        EA=1;//开启总中断1 z5 d$ [' g7 v
         ! J" P' m7 y6 O, n, I
        IT1=1;//下降沿有效
- D" y3 ^: o5 W( l- X. e+ L        EX1=1;//外部中断1开
( z1 _2 b/ m8 W& Y6 v9 M         $ w( Y- {/ {8 Y4 v0 x( D
        TMOD=0x01;//定时器初始化  
! i9 Z4 S, a  y( W        TH0=0;//T0赋初值2 v$ W% G* R  E9 s4 L- Q2 `
        TL0=0;0 S2 g9 c' q0 `$ h
        TR0=0;//t0开始计时
& @$ s, }. l1 S! u        while(1)
, o2 Q8 k: @$ o& x: m* S        {
  K! X+ p7 s2 M% ]                if(IrOK==1) 9 V  m8 k; N' R
                {
4 M3 U. a  m( ?( _                        //1键+ m4 L( V4 }% n
                        if(Im[2]==0x0c)
5 O* {- W, O- b$ p  K  B) [                        {4 Q1 y* {1 O4 ~% n
                           P2=0x00;  _2 I! ]; H3 \1 P. \' ?# s% ?
                 led1=0;0 _/ n# K- ?5 P% Z4 t
                        }# [( x( p% s5 B
                        //2键
; B3 o9 B# F! N$ _) D1 \                        else if(Im[2]==0x18)
, [: \" o9 |; {                        {$ o4 {6 m5 `7 e/ ~8 w/ M
                           //P2=0xa2;
5 @% D4 C. R4 X: X. o                                    led1=1;
3 w" x8 A# J2 `  Z                        }
4 g: R* R- a5 M: r* q, U4 {9 U+ v                        //3键. L1 n* i3 v. g$ h0 N% j5 i
                        else if(Im[2]==0x5e): b4 {; t5 m+ D* n! Z! e* b- a$ \
                        {
  A. x; D0 U# J- r/ c: N  T                           P2=0xb0;- H8 d& X+ ]6 `7 M! Q
                        }
# y: Y1 o+ w! u3 K1 T) p6 e                        //4
, h1 f% ]4 V+ |2 |                        else if(Im[2]==0x08)5 k$ G  k3 G  r- f' K0 t. L) k* H
                        {
3 Q% P3 }* Z+ @$ @; |+ r                          // P2=0x08;) K; y$ O& A2 U; e4 Q0 R- y
                                   led2=0;0 ]( @" h" K+ t9 k
                        }2 j) q0 ?/ t6 o4 w, h, }! }
                        //5
2 Y9 _+ i& I5 T2 o, H9 T& ]+ [                        else if(Im[2]==0x1c)
) F' l3 K; l0 Q1 x* a# C                        {$ {0 m4 b7 H% A+ i
                          // P2=0x91;
6 L. {* T4 M2 r- Q: Y" O7 z                                   led2=1;
' t/ w1 {+ W2 K1 A, @+ b                        }, k" p5 L1 a, k
                        //66 Z% |% c9 c; b+ {* Y1 b
                        else if(Im[2]==0x5a)
. b4 o( [+ ]$ s                        {1 U+ o3 B6 k2 u: F# q5 z0 w
                           P2=0x8c;
/ d* p. v& w" m                        }
4 Y8 u! x0 m; f/ \" w; M                        //7键) d/ l8 Z. Z0 H* `( r5 c7 @
                        else if(Im[2]==0x42)) r5 w& b+ y; y
                        {
: G3 V2 h- _' l8 U+ _0 B. z                           P2=0xf8;
; o6 V3 H! Y4 E! D                        }
. H' N% C8 r% k5 V0 b- T                        //8
8 w; b3 m/ k4 P9 E3 r4 O5 G                        else if(Im[2]==0x52)
: {) l3 q& ^9 I" J# f, B                        {; s0 l& N* P8 z; @5 w9 ]
                           P2=0x80;
: |* s" A1 u' u; h3 {) \3 I  s                        }
* W6 x2 Z; {* S/ C                        //9
) n( @. X7 G) }+ C2 X' v. p5 h9 P                        else if(Im[2]==0x4a)
& c/ }  T5 b5 f7 G/ E( i( ~5 k, ~, d                        {) T' M: D# c* B
                           P2=0x90;
3 U' M! w  F" H6 M1 P                        }
" c; I: |+ O7 L$ H                        //0+ i1 m* [& |# A6 T6 U
                        else if(Im[2]==0x16)
2 a$ D7 x! b- U3 \) M6 m+ c; @                        {2 M  h, V! I9 @8 @6 ]' v
                           P2=0xc0;/ S- b5 D/ X' p" X
                        }" P0 l5 o& j" _. K3 E3 y% r
                        //关机
9 l5 w! E4 A+ T8 g$ \2 h                        else if(Im[2]==0x45)6 G# ?! y) I; t! F/ T
                        {
7 I3 a: P5 n7 {+ f- V/ G                           P2=0xff;4 {4 {; c. K- m
                        }" u( f& W! K( U& |
                   IrOK=0;         
! }+ q' a8 R" M. |4 q                }8 w, O( i" {0 O
        }
6 }6 n  u9 H* d}+ o  a* i0 b8 c2 N$ U
0 Q  \* w8 d, c9 p( i; @

* J' I7 P0 z8 `8 Q* o//外部中断解码程序_外部中断1
) N3 q0 Y* t( C( p9 k' Svoid intersvr1(void) interrupt 2 using 1
! O9 e2 D1 o' @2 V% Q7 F5 K, _{, H/ T8 `; l- F8 b7 H# {
TR0=1;
) x4 r- V/ a! D- k+ r1 | Tc=TH0*256+TL0;//提取中断时间间隔时长/ d" x2 }4 ]" c# P' k6 `. r5 E" q6 P8 L+ g
TH0=0;
- C1 i! b& S, q8 x+ y TL0=0;         //定时中断重新置零9 s( ]- Z9 g! N: K6 z* ~0 `
if((Tc>Imin)&&(Tc<Imax))
; e0 g* `6 m( t6 H {
6 u/ a2 j" y. }8 {        m=0;
2 X' H4 K& R- s( B0 U        f=1;
! x2 O4 H% I& K# L        return;7 i1 z  T$ O; m- e( q% u3 U8 y  u
}       //找到启始码
" t  Z9 Q! e( T if(f==1)
( z& l+ N9 i! N {& M/ Q; Q( C  }- H" }0 P4 z
    if(Tc>Inum1&&Tc<Inum3) 4 G$ ]+ m' u1 W4 x$ Y
    {
! H9 w( W4 L; s5 O3 ]           Im[m/8]=Im[m/8]>>1|0x80; m++;
/ O8 v' E  g  Z" ]- O. ]0 v( a    }3 J1 t* W4 n% N/ p
    if(Tc>Inum2&&Tc<Inum1)
! r, H/ M% q' M( T: O5 E! i    {
/ V8 l) a0 n& _      Im[m/8]=Im[m/8]>>1; m++; //取码
9 w3 F1 E- n* N$ e" @           }) e0 e9 n4 L: J0 k! }" V" x
           if(m==32)
, s2 m" j. V% L% h  m0 V    {2 \3 ]" Z& P- @7 r  `
      m=0;  1 t" d  c3 _' [% u/ r
      f=0;
* U5 l+ i  h6 K6 ~; u2 b      if(Im[2]==~Im[3])
7 S5 u) O3 }# a  Q/ Z      {- b. x- _2 c- ^% O3 d
           IrOK=1;
2 P: ?! B3 E, p  p                          TR0=0; 2 ?% `1 q" \- A' @' G
           }
  D1 X$ m" m+ G$ i( h# O      else IrOK=0;   //取码完成后判断读码是否正确
' C. ^+ ^: I: ]1 C8 n1 Z1 v4 y: l" R, v9 O+ w
/ ^' g1 d9 ^  g, S- Q0 h
+ l" f8 d  Y) W( J
* V" U: s. z9 k7 b6 y$ Z$ A% l
…………限于本文篇幅 余下代码请从论坛下载附件…………! R9 C( J9 D" g
游客,如果您要查看本帖隐藏内容请回复

9 i3 H, n# p' r2 r1 r& Q/ y2 K0 R/ t0 J' k* w) `7 g

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-7 11:58 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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