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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机红外通信控制继电器源程序
, A1 H1 R6 Q7 s8 }* [9 L  z
: Y; w. W2 w6 [0 \3 I

% R& j" {: `; S7 n; ]/***************************************************************************
3 J. P' o/ l- }    本实验例程是用NEC红外线接收解码程序(红外线接收部分为板子配的林洋电子程序), H1 _% T, ?; l- s5 ]
    程序功能:, {+ x* b$ y. S/ H  ~% _
        1、运行程序,按遥控器按键,在数码管上显示相应的控制码(以16进制显示);
, b2 k  K" |7 \        2、对特别的几个键,有相应的现象出现:8 D* M& M+ M; p" Q1 A4 p4 y
        (1)电源键,使继电器工作或断开;
4 a6 k1 x; K( k6 b; ^        (2)静音键,使蜂鸣器响或不响;
2 j5 |* a6 ?0 l) Z) Q* |        (3)快进键让LED灯向右出现一次走马灯现象;+ b9 b2 w) W8 _% S" v2 }0 V
        (4)快退键让LED灯向左出现一次走马灯现象;* A& W  g: V( y$ J& f6 N- ?4 I
        (5)按0~9,数码管显示所按的键号;, b3 p) R/ ?' o( `; t2 I
        (6)按其它键,不会改变已经按的数字键的显示,表示看电视台开关电源或静音、快进快退,都不会- r' B6 t- v! \" r- u2 x
改变台号。
# T7 Q& a7 t, B    (7)其它键没想好怎么以现有板产生相应功能,所以按下后,没有特别现象,只有显示其控制码。5 w3 l, r5 e9 ^/ b$ c& M
******************************************************************************/
. t8 u7 {4 M" e#include "reg51.h"//头文件:  H. z% W* ~) c3 j

$ J7 M5 L* D* Z, ?( p#define LED8 P2//红外遥控功能之一是让LED灯亮,所以要将P2口改名/ S2 [& h4 ^% Y; D' \
* D5 |4 ?; e( ~0 R
sbit hwx=P3^3;                //红外接收数据引脚,也是外部中断1的I/O口
" R4 I& s* d; y+ B- Tsbit SMG_q = P1^0;        //定义数码管阳级控制脚(千位)
( f3 D3 f9 h% O% e, }% lsbit SMG_b = P1^1;        //定义数码管阳级控制脚(百位)" b' p3 o( @- P( t( Q% H! i$ I
sbit SMG_s = P1^2;        //定义数码管阳级控制脚(十位)) r/ u6 `3 P6 J7 i7 n, y# X
sbit SMG_g = P1^3;        //定义数码管阳级控制脚(个位)5 J! L: X( m4 i& ^8 g
sbit JDQ=P1^4;                //继电器
* P% W) b5 Z8 l; H$ M2 dsbit Beep =  P1^5 ;        //蜂鸣器- {; P6 Z& X  Z  B! |! \
( W0 y3 W+ T# W9 t  F
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,7 i, Z0 M+ ]0 _9 m, o) E! j7 \4 N
                                                        0x88,0x8c,0xc6,0xa1,0x86,0x8e};        //共阳数码管段值表 0-9 a-f  }' B7 l4 q. z  V' ]7 b! E" n

* u+ h' B  c  n4 Q$ uunsigned char ly_disdate[4]={0,0,0,0};
2 b# ^/ C  L8 ~7 H( ?unsigned char ly_lhj[4],i;: C9 \0 D, V5 W; p
bit ly_flag=1;# b3 B, g% @" m& k  R+ E
void display();
2 S7 e- R3 @: _3 I
3 w5 H1 }! \4 b  n5 {: Q, Hvoid delay(void);
  a$ Q" X; ~* ^# ^6 {$ c& i- W( _- E: T0 S6 |
void Delay10ms(unsigned int c)% w' l1 g$ Y; v6 S% [: q9 V2 h
{
$ U5 j5 K/ i% Q7 O    unsigned char a,b;
7 o& b7 E/ g/ y4 s# n4 f3 {    for(c;c>0;c--)
6 p) T' q1 h  e        for(b=38;b>0;b--)* W" r4 f, K4 a' a4 h
            for(a=130;a>0;a--);; }5 J2 |* v0 d' c  [
}# d# f9 _2 ~' {! ?8 L' b

; w1 T- \/ V; Yvoid main(void)//主函数
* U' ?0 Z  p0 V8 q; v- X& ]{+ ?- A1 B+ s& Y3 y2 a2 x4 v7 i
        EA=1;4 R( U# h% S: t
        EX1=1;! A4 N9 {$ G3 i  q2 h
        IT1=1;
! I$ A  c/ I& r6 N        TMOD=0X10;$ K3 \& r% Z1 Z4 T
        JDQ=1;
6 Z: T8 I; V! H) {2 o$ {: O8 E        ly_flag=0;
- n0 u6 u1 n' V9 O        while(1){        3 U3 J+ Z7 m9 G4 O3 h
                if(ly_flag){
1 D7 ~; |  [1 w& C) ]/ w                        ly_flag=0;
0 q& P& z0 f# V/ l                        if ((ly_lhj[2]==0x45))
0 @- ]$ r0 |; a                        {1 I! D: M$ `# B
                                JDQ=~JDQ;
1 X2 D0 N4 v8 P& h/ O3 J% n                        }/ i; t" y  n) j
                        if ((ly_lhj[2]==0x47))8 I- J+ [, j6 E, X% q9 z
                        {
- h4 B& H& W7 I5 ?7 H! j                                Beep=~Beep;7 n) `5 Y  o7 j2 c/ T
                        }
$ U/ T0 k3 L& |                        if ((ly_lhj[2]==0x40))
; [. [7 b: e: j8 p, G4 L                        {
) x; I9 `9 ]0 b% @+ J, u0 F                                LED8=0xfe;
  C! G+ ^- X" Z9 e& V                                for(i=0;i<8;i++)' Z9 f8 f6 {# m6 z  h
                                {                                         
+ z& C7 v6 ^7 A: R; Y: |                                        Delay10ms(10);4 |/ }% L& X0 E. ?4 P
                                        LED8=LED8<<1;
6 C4 L9 c: d3 }3 L, E0 J                                }
- Q+ r1 i  c6 I1 _$ c" d                                LED8=0xff;4 m- u* T+ R3 X  ?9 s: V1 L1 E1 D
                        }
) L" A5 W. {6 j+ b1 ^' J                        if ((ly_lhj[2]==0x43))
- F# p& u9 ]4 b0 R& V  w3 c* u                        {
, h  T1 m1 ]+ T9 J                                LED8=0x7f;% T- k1 i8 b6 z
                                for(i=0;i<8;i++)2 T$ j& t  Z; ~8 J- Q( N8 `
                                {                                         1 u# {& D+ |% m  p. d0 J
                                        Delay10ms(10);
* Y# ~; D( s/ w                                        LED8=LED8>>1;
/ C2 I) x5 I9 s1 i                                }' g$ g* N5 H' O6 \
                                LED8=0xff;
+ y: W) [5 t) v                        }
" e1 k# x- v. T6 x                        if ((ly_lhj[2]==0x16))
- y& u, O; T2 L1 D0 A% l& d6 B                        {
( q( w& p! G5 Z& `9 A                                ly_disdate[0]=0;                        
$ n1 _7 \) e( P) R* g* G2 _, E                        }9 |& K0 A) m: u
                        if ((ly_lhj[2]==0x0c))
& d+ o# ~% M' E0 ]/ e" l                        {' o% D) E  ^! c8 S( ?3 L
                                ly_disdate[0]=1;                        
* U/ h' U" h  C4 p* M2 Q$ f7 d& f+ @                        }                        / `+ U) k' Z7 T
                        if ((ly_lhj[2]==0x18))
) j% l5 ^! v, M# r9 O2 k                        {" s2 z, `4 O5 P, D& b. l. s
                                ly_disdate[0]=2;                        
0 z% s% I' R0 Q% e8 U                        }                        ! [7 i( _: [7 u  Y$ T( z
                        if ((ly_lhj[2]==0x5e)): ^7 ~$ L* W; N$ n" }" `# i" I
                        {
# c5 J5 r* Q' H1 Y                                ly_disdate[0]=3;                        
6 {5 p+ x+ e* u- j/ p- p                        }                        % w- o1 l. Z4 S- L1 y/ W! U
                        if ((ly_lhj[2]==0x08)), |# X6 l# o: E, n6 Z" t8 b! P
                        {  q4 ?- m# }' z+ Y; @( R
                                ly_disdate[0]=4;                        / Q3 l- }( e$ v" W; A
                        }                        + f) V, I' B7 \4 C$ y, v
                        if ((ly_lhj[2]==0x1c))$ p9 R$ D& ^! Y) g$ m2 |
                        {
' M, L4 z1 `# L                                ly_disdate[0]=5;                        
! c% e% v0 [* [+ d% i% V                        }                        
% r( X& n# f. x( N5 |) S                        if ((ly_lhj[2]==0x5a))) z: d# Q6 L; R" a5 u; B
                        {$ ~8 a) ^7 D# Y- i/ U% V9 i
                                ly_disdate[0]=6;                        6 ^  }, D3 I$ ~6 [  \$ F/ Z
                        }                        
9 O0 r  f" Z( B" z                        if ((ly_lhj[2]==0x42))
- a! G* D3 j4 |% _                        {* o% K0 H% w3 u; `
                                ly_disdate[0]=7;                        ) i* y2 O2 D0 q1 x  p; m/ k
                        }                        
# k4 H2 b, ^9 z' H( Z2 y# [3 ]* J                        if ((ly_lhj[2]==0x52))* Q" r5 l3 y0 Q. _
                        {  c; |' \) c  q# W2 ~
                                ly_disdate[0]=8;                        
, ^* s6 c7 y1 `: W- Z                        }                        
2 u: D, ?# J6 e                        if ((ly_lhj[2]==0x4a))  O6 o' D9 |/ m2 l
                        {
/ x3 T, |0 P, @: c                                ly_disdate[0]=9;                        0 O. c3 Z4 o# u( \# n* B7 U8 O; Z
                        }                        # G3 o" M8 a# r  o: d& H8 r
                        ly_disdate[2]=ly_lhj[2]/16;. m1 B0 q# ~) h9 a- X( r& G
                        ly_disdate[3]=ly_lhj[2]%16;! F8 T9 y7 s, e8 u/ U) A! n
                }
/ W/ F$ |) G/ [                display();0 {' l' _8 z0 {
        }               
+ I# o; |, T9 j2 J$ i0 a) r: O}
, v$ L# ^$ [2 Q0 |4 l  H; H: j( k5 y" y# m# Q2 f
void hongwai(void)   interrupt 2* w; [0 D% ~+ C: p+ N
{
0 O3 d; l! b: _  [2 v: @) {. A        unsigned char i,ia;5 g! q1 z% _9 a: W2 ~! C5 y
        TL1=0;5 O9 P- q$ P8 f  Y
        TH1=0;
5 a5 A4 H  m& L        TR1=1;, o/ d; ~, q; n( I8 S! u! G
        while(!hwx);
# P, A1 s6 L/ t- B' B' y        TR1=0;. ?" D2 ^; _( u2 K
        if(TH1<30||TH1>40)
# n& k; d8 W# c2 l& m3 W! y( N{
2 _% ]! x1 _- y9 j                return;
- ^9 _! j/ H. s+ Y, u( L6 t1 N}) J4 a% _) ?+ c# O2 ^5 R; N" h: Q
        TH1=0;8 l; e2 F! m! x% f6 S5 c7 |
        TR1=1;
2 O( [" n& E4 D. z5 v( i1 D9 H9 J# F        while(hwx)                        //
$ J# h/ h! D2 B8 [        {
4 A8 x5 r8 ?7 A$ A                delay();
3 [8 Y5 i) z" k$ `! b1 x' `6 G% J+ L                if(TH1>22)
" x) Z$ o5 H! A# y% z) N                        return;               
5 q/ f7 {1 e( m6 N        }
1 M4 V' ~- u+ y7 C7 ~        TR1=0;# P% ~" j9 r. }. s/ Y* B! W; P  M
        if(TH1<12)
, \' i( D- s* I' D                return;/ b8 D, |7 a. j' Q
# V; ~' `# v  s. Y
        for(i=0;i<4;i++); c2 d: d9 |/ Y; s) U9 d
        {; [% [1 e$ T  ^- n
                for(ia=0;ia<8;ia++)9 v, ^$ m7 U' h! ]; i: U/ J# I
                {                                2 K/ x6 O/ e) k! R4 L
                        while(!hwx);9 p$ {  a6 B" w: a

. X& K4 s/ r, i" l8 E- g# R0 t+ l                        TH1=0;
( m! W; w3 i2 N" Y- Z. d                        TR1=1;! g0 Z! C! c6 {8 ~- A
                        while(hwx)/ i. B- s5 y( N9 g6 m
                        {
- I: }1 M# i! A/ i& I; {. V                                delay();, O) W# @, v& L4 x
                                if(TH1>15)               
# w0 L/ B- q# P3 y4 T/ G  g                                        return;               
! H- T7 ]4 T9 a0 R& X" k                        }
3 ?0 F- u5 r( m( W0 ?3 _                        TR1=0;4 t, b  F5 t7 o/ H3 E) q
                        ly_lhj>>=1;$ [  S# F# b* m2 L) B, c( S
                        if(TH1>4)
- k6 J! ?/ ?+ d$ K" l2 G4 s8 W                                ly_lhj|=0x80;
) w; l0 s$ `# b                }: u7 f" W6 N- C" {' o$ s8 k
        }
( r4 Z" b% ^) q9 {4 }5 Z0 [# S        ly_flag=1;
  g& A% H9 h( [3 Z* v        TF1=0;) x6 M" i, K+ P' v/ F# w
}3 H+ H( B9 E( x' r" F

6 ^- P$ K1 T  a1 ovoid display()
. S7 n3 L; s3 U$ N9 R8 J2 }- I6 `8 m
0 z, Z8 N' L9 o" f{
  c  j1 e+ N9 ?# Y  l        SMG_q=0;                        //选择千位数码管(亮)- S. W4 O6 U" b/ B
        P0=table[ly_disdate[0]];        //
; p% u% s: p0 O  |0 z+ G        delay();                        //: ~# q4 e9 S0 u8 f
        P0=0XFF;                        //
4 y. x. I* {1 N# U* a8 n+ j        SMG_q=1;                        //(灭)" `+ A: Q7 A/ c, K, E% A- ^! v2 [/ Y

/ ~' f* T! V3 t        SMG_s=0;                        //选择十位数码管# q/ R( o% w, w* _) ]4 K
        P0=table[ly_disdate[2]];        //: P. q& _$ K9 {1 m
        delay();                        /// N  C) p5 |; A
        P0=0XFF;                        //
5 ~7 B7 V0 Y0 [# f        SMG_s=1;                        //
" l- H( Y- Y" ?1 X
* j) u2 k! I9 @3 v: Z. t
4 ^$ i8 t6 B* E$ o# d…………限于本文篇幅 余下代码请从论坛下载附件…………
% E4 _% \* {5 r+ U6 p- R( B
游客,如果您要查看本帖隐藏内容请回复

3 i! V) k$ z- j7 U) M! E$ H/ t/ ]3 n2 H& W5 \- l2 c

该用户从未签到

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

该用户从未签到

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

“来自电巢APP”

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-6 13:15 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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