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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
基于51单片机的红外遥控灯 原理图及程序
# K' B- U" I; m' L9 V6 J2 ~6 V* c
5 l/ d, r. D: J% ~- V

0 A- r. w; H6 D$ d3 T, P, b红外遥控灯单片机原理图:
- L9 E3 d1 t6 Z; {" c( r# R $ }( F. Z4 G0 g- Z+ S
//头函数9 t. r# x7 G$ _
#include <reg52.h>
9 x2 l  ?3 X9 _1 I//宏定义& O) b' [' L* k: S1 R" X$ z+ l
#define uint unsigned int
+ ?+ v/ X. j* W& R8 @#define uchar unsigned char
& u4 z- r! Y2 \# D! [0 \( |2 A: H) J- X- D. i% Q
: Y, i, U' R1 c
//时间计算6 Q( O+ I: f3 g+ \0 \3 O) W% Z
#define Imax 14000    //此处为晶振为11.0592时的取值,
: t, d0 u6 b: u1 n8 @" ~) V) e#define Imin 8000    //如用其它频率的晶振时,
: ?1 Y9 I  P) g9 b  J* O6 q#define Inum1 1450    //要改变相应的取值。
" D% ]6 i- p7 T' c8 ?3 x#define Inum2 700 , t, |  S! n3 ^  e" C7 {  d) ~
#define Inum3 3000 8 P8 v& q+ F4 T# r, o, e* Z4 s
sbit led1=P2^3;7 F! x: a( M3 i5 c% _3 Q
sbit led2=P2^0;; Y% d7 B! Y  a; ^7 M3 X6 c
//解码变量
  ~" \6 p; V5 d3 Xunsigned char Im[4]={0x00,0x00,0x00,0x00};4 e3 {/ B! Q% f( d$ Y: Y

8 A% {$ G, N, N9 i- b3 V" r. q

7 C2 l; y$ H/ @) }2 s8 Q//全局变量
/ f4 k+ F! ?  U- Luchar f;
" i: K7 z* ^5 `unsigned long m,Tc;
+ j% u; |& w' ^  Xunsigned char IrOK;
, f# o& a; u# }8 E! ]$ t9 e0 ?4 V" e* g# J, {+ B) T/ X: Y. x

) {, L* D. g1 @; H
6 \# ]' O+ l% H
7 ?6 P/ W5 P* I# P+ s
//主函数! I/ ~) O% x. [" _4 n9 n' l
void main()
9 g1 K9 q" C( f4 X1 d  W{1 O+ R2 E/ ]9 H1 p1 U8 H* t# h  F
        P2=0xff;3 }3 s% m2 a# W0 _) o
        ( f! h5 z- D7 c" Y+ E; r
        EA=1;//开启总中断
; m, p! Y: Q5 W1 O         
% U. l# I  G! q! |8 }" _7 o        IT1=1;//下降沿有效+ r; U% c2 g" w3 L! V5 M' `- L1 w
        EX1=1;//外部中断1开
$ z5 k) ]  @4 `$ `         % l- t  ?/ u- J2 Y* n4 X
        TMOD=0x01;//定时器初始化  
0 `+ Z; ~0 R" T3 q- B        TH0=0;//T0赋初值: g  E9 [9 ~# u) N% @; u# |
        TL0=0;
9 i; \1 Y* V- }, o& l        TR0=0;//t0开始计时
  Z, R" n8 \: F3 r" L        while(1)- @' t. w% m" s  m" B
        {- o( l8 r* o3 D3 W9 D8 n* g5 |: R
                if(IrOK==1) 1 ?3 R& H- U5 ]7 w
                {5 d! ?# O1 B6 V3 H
                        //1键
, e4 o2 c5 T( a( p- u, ~2 v3 r& t                        if(Im[2]==0x0c)
+ t9 ~; c6 U9 _# Z5 U9 Y2 }, c3 e* f                        {
5 D) v$ K  ~: H7 R' _                           P2=0x00;0 w+ d% e* P( D0 n! Z
                 led1=0;/ m7 n; V) `1 u& U" B0 `
                        }
' M) _$ e* @3 e' w                        //2键  c1 O9 R7 U, y/ k- w% L4 l
                        else if(Im[2]==0x18)
/ m5 @* K: u' \# s3 q                        {
" s8 x- \2 `6 D3 U                           //P2=0xa2;/ G( B& d5 e- l- ?0 X9 G
                                    led1=1;
! g9 K+ W6 i; S% Y6 ]8 k) J# E& g                        }# R3 t; H, W  i6 c5 R
                        //3键
6 Z" F) [( f2 B- h3 m6 ^                        else if(Im[2]==0x5e)+ m/ d( i+ W! b
                        {
% J* N0 C. n- ~' t) C                           P2=0xb0;+ Z% [3 \/ d( f- d& R
                        }
+ T5 u& e, E( e( M                        //41 E8 V6 |9 ~! B
                        else if(Im[2]==0x08)( F: H8 _: ^9 I& |/ p
                        {3 l$ l, `+ h3 U6 j' ~  K
                          // P2=0x08;( \7 ?* G6 ~1 N* c2 x# n% s! ~
                                   led2=0;/ Q' S% q: U8 C0 j" F; F% Y0 l; T, j
                        }, j/ l. {: m4 [/ R  R" b3 H
                        //5$ J9 b: H: |7 M( u% E
                        else if(Im[2]==0x1c)2 \% \$ R4 }" U1 N, H
                        {9 h. q8 ]8 n; T- I
                          // P2=0x91;5 |, E* ?# u! d9 g
                                   led2=1;" y. j- [# s) F% @  j+ d
                        }- N& i* s' x; i9 e9 m' I3 C- y- F
                        //6: |  G4 I: H1 X
                        else if(Im[2]==0x5a)2 P4 M' Y6 d/ w2 d: S
                        {
, Q% g$ o- Q( q$ Z0 g                           P2=0x8c;
% r$ h. W9 T1 d- T8 y0 M8 l4 G) F( f" _                        }
6 [# J4 x# n% D3 _                        //7键
* i% @2 {, M/ J! s                        else if(Im[2]==0x42)
5 {' @+ v/ u$ i  ?7 L, {                        {$ b' E$ P$ k* @$ W  z2 {
                           P2=0xf8;
2 v: m1 @3 P. Z7 x9 e; o                        }% S6 V/ p7 C! w* R! }
                        //8$ S: }7 }' s, U5 G
                        else if(Im[2]==0x52)
. L! F8 u5 }3 t                        {
  d( ]/ i3 i3 \3 r5 n6 {: v                           P2=0x80;
. {" b0 o( ?2 v# R) {' _5 p                        }) U$ u+ v* P7 J; i
                        //98 A! ], [7 [9 M' K2 E* I
                        else if(Im[2]==0x4a)
( @; l& S$ \1 ^/ \$ T" ~, G                        {+ X' e! U6 R$ `, g# r
                           P2=0x90;! @$ \; C% N  ]1 N; L: b- p* a' J# z
                        }
: O7 _5 x) _& }( D9 e* s                        //0# o- c" Z9 P* S# E
                        else if(Im[2]==0x16)
% e) [; p& C, N. x$ l) ?# {                        {
' p$ n# u/ s+ A$ \% W; D0 {                           P2=0xc0;1 `/ b" a, t3 y
                        }8 a$ R: M7 [2 u; i
                        //关机
2 p  q' @2 l9 S% X                        else if(Im[2]==0x45)
: I/ n% a" s" ~$ F9 h; V                        {
7 I9 F1 B3 h3 j" i( W7 }- x                           P2=0xff;
# I8 ^, Z& ]" k+ E                        }7 K' p  a$ l# d+ {9 c1 e0 C2 @% R: y* _
                   IrOK=0;          ; J; k( `) G& {9 i1 a& U, Q4 X+ R
                }( Z* }4 n, v7 }: y5 l* m) `
        }) r/ `% x( I; a
}+ @) ~* I2 v1 U( {

/ C. I& x- g! g  y5 C* [

2 ?; G7 V9 p, _* k//外部中断解码程序_外部中断1/ ^/ x- L" J% d% b" \; w8 e
void intersvr1(void) interrupt 2 using 1) s( Q# g0 D# ?( F3 X) ^
{- [1 }6 A0 v. X4 D* ~( k* W
TR0=1;4 K9 G; ?( S/ f! m5 J
Tc=TH0*256+TL0;//提取中断时间间隔时长
4 E+ J" A  t5 y/ ~+ X+ E9 Z TH0=0; 2 {, h6 `3 N' |6 U
TL0=0;         //定时中断重新置零
' y' g* x4 r  i  b- f; b if((Tc>Imin)&&(Tc<Imax))
7 |# D# Z: U; x {
0 v: s! H, c. M. U; ^% A        m=0;, |9 o" z# K  t0 Y
        f=1;
) |4 U' K* P0 L        return;+ q: }) o4 c1 U3 E
}       //找到启始码
/ e2 k% X* L8 ~! R+ k0 J' M if(f==1)1 w) u2 i8 W; c$ X! I
{
9 _9 T- f1 Z& [: ?    if(Tc>Inum1&&Tc<Inum3) ( v! [: l1 J1 X3 H) q# l
    {
7 v) n9 y3 B! x  q% V$ m8 k           Im[m/8]=Im[m/8]>>1|0x80; m++;
4 K7 W; Q8 ]& A$ c# B. v& C    }3 f0 q  G; g1 Q7 s" h
    if(Tc>Inum2&&Tc<Inum1) % b7 h$ s* _  Y* k% P4 o1 Y
    {, o$ y8 u$ c7 L1 q9 f, ]. W$ @; \
      Im[m/8]=Im[m/8]>>1; m++; //取码, R) K: O2 g5 ?7 G4 f3 \
           }
* J" q) X+ ]$ U4 w           if(m==32)
; V; K$ |2 o. V$ H& ~# C9 k    {
% f% Y' D8 h. p& Q8 y6 R- O( l  S      m=0;  ) v  c8 Z7 C7 ^5 i/ e! r
      f=0;- ]( H5 v& s( }
      if(Im[2]==~Im[3])
% h; H7 y; t" f6 _/ b: O9 S4 f1 |4 [      {
/ {& X3 H0 r5 Y* _  ~9 v           IrOK=1;, [" V. \- R9 E0 g) S$ X
                          TR0=0; 4 U/ j9 T% ~9 F- w* a% s
           }+ E5 d6 B& m3 F! B0 Y  W' I1 G" Q
      else IrOK=0;   //取码完成后判断读码是否正确
$ s. {  C; S9 b3 A8 Q$ U. _
7 R/ E/ t! T6 I2 w$ a5 O

; _; U! K6 f. k  D
) L6 z4 |1 h0 [6 O2 ~
0 H2 g' w! k; E" P. j6 A/ E2 P3 A# U
…………限于本文篇幅 余下代码请从论坛下载附件…………
: W! G% i( x2 p' n- [7 Y
游客,如果您要查看本帖隐藏内容请回复

; W0 v2 `7 V2 Y3 H) ?
9 N! n  T1 |+ ~3 m# Z$ l

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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