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

单片机红外通信控制继电器源程序

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机红外通信控制继电器源程序
+ v: y3 g7 g1 f6 j9 P2 n3 h; N# ?! U1 j( K# C, S% y' [

. Z# _1 E2 t2 p: v: p7 E/***************************************************************************
/ i3 E: X2 ?) z+ T    本实验例程是用NEC红外线接收解码程序(红外线接收部分为板子配的林洋电子程序)  q+ D! }2 U1 h2 H
    程序功能:; D  s$ K) k3 o8 h# n6 ?
        1、运行程序,按遥控器按键,在数码管上显示相应的控制码(以16进制显示);9 y$ r; t: r: m' ]! _
        2、对特别的几个键,有相应的现象出现:+ E* ]% m& z  [+ ^0 E, R0 c
        (1)电源键,使继电器工作或断开;2 F1 M7 K0 r$ ]  N) @& P0 y7 d
        (2)静音键,使蜂鸣器响或不响;
7 L# r9 n' ?- p  c1 h! ~3 b; p        (3)快进键让LED灯向右出现一次走马灯现象;1 ?8 i* m# ]1 r+ d/ y0 W) K
        (4)快退键让LED灯向左出现一次走马灯现象;
. m# W- g: p* x- h( U9 }% r9 Z        (5)按0~9,数码管显示所按的键号;
/ o* D7 l; S: D! ?. v% p& p% K2 r+ p        (6)按其它键,不会改变已经按的数字键的显示,表示看电视台开关电源或静音、快进快退,都不会
4 A# B4 b  h  H  K改变台号。7 B! y5 c4 P! n; K; z& Z
    (7)其它键没想好怎么以现有板产生相应功能,所以按下后,没有特别现象,只有显示其控制码。* G# h3 z# c" z& X( Z) e
******************************************************************************/
, C8 a3 Z# }( }" K+ D- j# ]+ e#include "reg51.h"//头文件:
+ ~+ N+ M5 n3 b( Z% a  ^3 e+ g& a. V9 k# k, Q$ r' u
#define LED8 P2//红外遥控功能之一是让LED灯亮,所以要将P2口改名
" z3 N; u0 I+ u
" Y- @2 L$ t; J: ]# b( x, rsbit hwx=P3^3;                //红外接收数据引脚,也是外部中断1的I/O口" K) A4 [( i* c( _* @; p
sbit SMG_q = P1^0;        //定义数码管阳级控制脚(千位)7 l5 M2 \' W/ H0 n# N  g
sbit SMG_b = P1^1;        //定义数码管阳级控制脚(百位); @- ^# W/ F) b4 J% r& G
sbit SMG_s = P1^2;        //定义数码管阳级控制脚(十位)+ C' k7 k! X6 c4 M* v# x
sbit SMG_g = P1^3;        //定义数码管阳级控制脚(个位)
8 y& N3 Y8 @; w4 V% |  {7 H1 n; ]sbit JDQ=P1^4;                //继电器
  h9 Q4 @4 y6 rsbit Beep =  P1^5 ;        //蜂鸣器
& `, o2 y+ K! T7 {- u/ ], G1 o/ Y, l3 a: X
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,* V/ ~+ n6 T0 J8 }% w
                                                        0x88,0x8c,0xc6,0xa1,0x86,0x8e};        //共阳数码管段值表 0-9 a-f
4 Q' D8 @7 J, e) F( J8 G2 c, [4 i( z9 A) |( I3 R1 M! B8 T( J1 i
unsigned char ly_disdate[4]={0,0,0,0};
+ ?. W) D! n& W2 m% \3 C7 Kunsigned char ly_lhj[4],i;4 m( {3 ^* R' ?5 S! g
bit ly_flag=1;
/ q9 S0 U; }5 l7 Y& P" m3 g! E- tvoid display();: P# ^+ I* M% O- w6 Q7 y/ a  }
% L" I: r! z5 D, }" t$ G
void delay(void);# S5 }; e6 p% A, P

, R! H7 S! t8 A8 Zvoid Delay10ms(unsigned int c)
: j+ F5 T. P# B, G{/ m; H9 k0 ^: Z1 M$ r& r
    unsigned char a,b;" m! W( z( J- J, G  G
    for(c;c>0;c--)' k# J2 b* E0 X. V; U
        for(b=38;b>0;b--)
) ^* M- I* u* q            for(a=130;a>0;a--);
$ {5 [# j, a4 V8 k}
9 ^8 H- `  ]/ F3 G$ {
+ V: y, p) D. a7 u" |void main(void)//主函数: t3 s  u6 |" o4 ]8 Q6 a
{
% M7 a& {2 J* m3 Q% R- D/ x        EA=1;
6 [/ i+ q- ], L; _2 f) _$ ^        EX1=1;
% r6 s% v# s/ i! Z3 ~2 _        IT1=1;9 a- t4 @4 l+ b& f
        TMOD=0X10;* v9 c9 y, Y3 J
        JDQ=1;
6 {! }+ o  D# Q* ?/ A0 R6 }; C' y* o        ly_flag=0;7 R# f2 n$ R# u* N0 y$ @/ ^
        while(1){        + C3 }! U: B% q0 |- {
                if(ly_flag){, o5 E' o! P* n& f
                        ly_flag=0;
% J2 P6 k0 `/ C1 Y& {                        if ((ly_lhj[2]==0x45))
$ d& p# p( _" Z: k; @                        {# u% g1 Q5 M3 G. n+ Z* h$ n8 ?
                                JDQ=~JDQ;, v& z6 `* x3 s, W
                        }
) W, i' V' t3 X% a3 J2 J                        if ((ly_lhj[2]==0x47))) T2 s8 k4 v6 {; }! G, {
                        {5 o/ f# E' l  C' C- P$ N. {% K
                                Beep=~Beep;) q3 L3 I5 v- S' O
                        }. B2 y# x, F+ V
                        if ((ly_lhj[2]==0x40)): c' u; Z% O7 v( C1 \3 w9 G
                        {. ?0 Z6 T2 m( w! }
                                LED8=0xfe;% T+ g# n6 Q0 w/ k6 H9 k
                                for(i=0;i<8;i++)( {1 M4 q1 k5 Q/ b$ C
                                {                                         
- [: E5 _- A8 C" h: E. }8 X6 N& ^% u                                        Delay10ms(10);
4 y; i8 H& s6 e                                        LED8=LED8<<1;
& k2 m. {( _5 i  c: p                                }% J) y+ ]7 L" I4 Z6 |
                                LED8=0xff;
1 T  I7 S3 _/ ~                        }$ |% `4 k: W* D8 H, `! O
                        if ((ly_lhj[2]==0x43))" q$ J/ ~' v7 k5 F1 \& b9 e2 I) B. \4 V
                        {- n5 I5 T( v4 k  M5 X/ E
                                LED8=0x7f;
8 G% c" O% i, g* _                                for(i=0;i<8;i++)
( ~9 f6 ~" e  t) m                                {                                         7 n, `$ {" ?  F, e+ E
                                        Delay10ms(10);
7 o' h6 v; ~* C! Z                                        LED8=LED8>>1;- ^; I+ K  P8 b5 k$ z9 x" n0 D
                                }5 q2 ]% {7 [7 Q. g$ B; C
                                LED8=0xff;- t2 ?: [5 e4 Y0 i/ g: ~# U
                        }6 G2 l/ K' O6 C# N+ v, ^: v
                        if ((ly_lhj[2]==0x16))4 k* ?" P+ J; R. ~# G
                        {2 e" E) u  {9 ~$ C9 d
                                ly_disdate[0]=0;                        5 Q2 Y* N' J1 W2 I
                        }
4 g: k9 o! q" Y& M1 h5 q; J                        if ((ly_lhj[2]==0x0c))6 ^6 L% p8 V( ?* X
                        {# E0 L- h5 S: E: b2 V
                                ly_disdate[0]=1;                        
8 u) a; @3 s: T' P) |  d! o                        }                        
% H  u; p! c' v; w" _, D! s                        if ((ly_lhj[2]==0x18))1 v& w( j$ C3 i$ W' s4 Q& x9 b
                        {
& Y: G6 q8 n7 l2 c8 D                                ly_disdate[0]=2;                        ; O0 N: {0 B7 X" _+ P) R
                        }                        
* i  r7 V" V& g                        if ((ly_lhj[2]==0x5e))3 D: h, V/ c- O! c1 \; D, I
                        {
8 G- d; `- a: H* D3 \$ i6 I% A1 ?8 f. e                                ly_disdate[0]=3;                        
; n/ c4 n% P; f( t                        }                        
: H8 B0 K( l- M                        if ((ly_lhj[2]==0x08))
) y% y  [+ @$ L& B                        {
' n* R- h1 ?1 Y9 p7 ^                                ly_disdate[0]=4;                        # W' ]5 R. m) v. _1 ]* }
                        }                        
# F/ m1 S: ?8 d- _4 e                        if ((ly_lhj[2]==0x1c))
+ @/ l  G' |$ }  u- R7 B( ?! P2 U: S                        {
* C2 h9 N" i/ D& V. Y3 ~& f& j                                ly_disdate[0]=5;                        : @9 ^: q$ N( R& J
                        }                        6 Z- k5 c; B. ~* R1 L- K
                        if ((ly_lhj[2]==0x5a))
+ m. R% ?& l5 H+ ]% o                        {
5 O4 N, T1 s& o- u$ i* K' @                                ly_disdate[0]=6;                        
. C* a8 \1 j/ M, y# I$ U                        }                        
' A0 J; e; s4 R$ d' L                        if ((ly_lhj[2]==0x42))
3 ?5 _* \4 @. A. D) g. D                        {1 o* e3 U$ A6 `5 q# k; n
                                ly_disdate[0]=7;                        
4 B& F8 X$ U: k# L4 C0 ~$ P( o                        }                        
/ R7 p9 G& Y8 C' E, T0 N  O5 q                        if ((ly_lhj[2]==0x52))
8 B1 j! p2 a7 z1 m                        {
$ w# m& C3 s6 X* H8 d, U2 w                                ly_disdate[0]=8;                        ! t8 m8 M2 q/ f1 i3 Z
                        }                        ! R  X5 F/ x3 U) [% l- i
                        if ((ly_lhj[2]==0x4a))
+ s' V; }! N; y' G+ f6 u4 ~                        {
" i7 i: t4 |( d. s. v# |0 b# d( X                                ly_disdate[0]=9;                        3 m2 f  J. N5 @/ L4 v8 b0 m
                        }                        - ~' }5 t% J* D; J+ d# p6 k/ {
                        ly_disdate[2]=ly_lhj[2]/16;
) v( N( D+ }  D* O                        ly_disdate[3]=ly_lhj[2]%16;
# j% V/ N: f  J9 p6 d6 j! _                }! R4 s3 s+ T0 d$ S* K/ b2 J; v
                display();
, W9 I, F/ V9 k5 N) Z        }                1 x- y7 C  d% j- U+ x
}7 B( o/ y+ x% _3 B- L

3 B3 m3 c  m6 l, u5 z' S* y7 v- e4 Gvoid hongwai(void)   interrupt 2
( q- B$ E1 j' x/ D( t! W7 ?{
$ ]0 o+ @: B7 w2 O2 Z1 c( @/ l        unsigned char i,ia;
" b6 f6 n7 E9 @; m- T        TL1=0;% G  h+ J2 b( C) ?7 k. d4 s
        TH1=0;. _- L! Q6 [& ^. b* m0 M
        TR1=1;) z; N( L+ Q: y+ ?, I
        while(!hwx);: z0 T  Y1 s7 r" Z' @3 F7 k
        TR1=0;
0 z9 O" p0 b3 y# T' Z        if(TH1<30||TH1>40)
+ s# Y  [5 |4 r# w1 S- }; d{
7 l/ f0 U0 H$ S8 Q3 [# ]7 S                return;( ~* S: o  T3 q# _1 u3 O; F
}
' T2 P2 T2 D  H& A5 S        TH1=0;. g; o, t  F; V7 ?( Z# z
        TR1=1;
0 V, |4 W) [( j; a2 e        while(hwx)                        //
" _1 F  n6 I/ F+ j        {
/ D! [& E/ x4 z, p& d                delay();: ~7 L- m- n5 _8 a
                if(TH1>22)
' T" U, k/ V& \+ h% `                        return;               
7 ~( _" s6 w8 H/ g        }
& d0 Q5 W; Q8 M/ n5 i6 m" N        TR1=0;
, V0 U# Z9 K0 `9 i; q        if(TH1<12)  l3 T0 u3 w9 O& v' K# \2 Y
                return;0 Z: ?7 ^# W% E

4 ^. ^6 ^8 B9 s2 z9 V" I        for(i=0;i<4;i++)
! r, D8 d& s: K- r1 I) L+ N% C        {# l" w$ F* y- Y: p' e0 h6 O
                for(ia=0;ia<8;ia++)' _7 o" l3 L& W
                {                                ' i: N# ?, i  G
                        while(!hwx);- w! R0 c. @  l. \' y' I' C
, b! n2 T' _, J. J  `/ i
                        TH1=0;: f# Q, e2 h! G( L5 w
                        TR1=1;
- m. i, f* e9 c5 @  P9 I                        while(hwx)8 J4 Z" E- S( z
                        {( u4 o" S  E, e# i" R$ ^) a5 z
                                delay();
. }/ A1 I% o" Z& @                                if(TH1>15)                ! ?: f# k$ X2 d' W
                                        return;                ! u$ C% u0 C! y1 n
                        }1 w1 ?# x! M( k) ^" g
                        TR1=0;( Y+ q& q  Q7 U1 K3 g6 C% }
                        ly_lhj>>=1;8 h! a3 i# m: E$ i: d8 ]3 k
                        if(TH1>4)- a' s% d% [8 C7 l0 ^( f
                                ly_lhj|=0x80;
; c6 o- R! M; x4 x! O                }, T4 i' f3 p# B- e! d  x
        }
* J9 ~, X) b4 Z- u        ly_flag=1;  A/ q: o6 G! K$ U$ {
        TF1=0;% j) [; u! [, t1 s5 X  s& s
}- A+ F- u$ }  @) g4 {7 {

0 ]$ r, K: a( Zvoid display()' {2 f1 h) {6 Q
; \; |  P+ u+ g9 Z$ @
{* m0 D& I# ]# w3 G1 L1 n" a
        SMG_q=0;                        //选择千位数码管(亮)4 F7 ?) F9 E- p# j1 v
        P0=table[ly_disdate[0]];        //; w! h6 F$ H$ J/ h: |
        delay();                        //7 h' R3 l7 Q( @0 N% X1 R$ S  |
        P0=0XFF;                        //
6 c. t- R1 U$ B. W        SMG_q=1;                        //(灭)
5 n* M4 Z* Z* U5 e* l8 D% W7 c2 e3 A4 ]% G4 \
        SMG_s=0;                        //选择十位数码管! h  |# a$ n0 I; \1 n% a6 \& l
        P0=table[ly_disdate[2]];        //% X& M% e+ `$ r2 o# ]* n* |
        delay();                        //
0 \- Y/ G- K* o" h/ f        P0=0XFF;                        //
$ n* s4 }9 i4 `7 h8 r& T        SMG_s=1;                        //
5 U) j1 h# O& R, [
$ D' M: K; H5 k" M. J* |
  ]+ B# h4 R1 h* R…………限于本文篇幅 余下代码请从论坛下载附件…………
/ N5 ~0 ^: B9 m. c  p
游客,如果您要查看本帖隐藏内容请回复
$ m( f2 @6 B9 O

( F1 {2 ?( n. ]/ D

该用户从未签到

2#
发表于 2018-11-28 11:05 | 只看该作者
谢谢楼主,一步步来,学习中……

该用户从未签到

3#
发表于 2020-10-23 15:15 | 只看该作者
谢谢楼主

“来自电巢APP”

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 21:06 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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