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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机红外通信控制继电器源程序
2 y+ s' P4 R. q6 S' U- Q. d6 K; B" C% J2 y

2 P8 r6 [& s0 x; b6 \- W/***************************************************************************2 O, o/ N1 ^' s" r1 V
    本实验例程是用NEC红外线接收解码程序(红外线接收部分为板子配的林洋电子程序): w: T/ s; z. F/ I
    程序功能:
: B( m' ^( @/ B! f" D3 Y4 q        1、运行程序,按遥控器按键,在数码管上显示相应的控制码(以16进制显示);1 P5 g9 M7 O0 E$ Z$ C
        2、对特别的几个键,有相应的现象出现:- {$ C- x1 T9 `
        (1)电源键,使继电器工作或断开;9 o& a0 h' }4 I/ S
        (2)静音键,使蜂鸣器响或不响;& b7 p* u+ h5 p+ t' g. m
        (3)快进键让LED灯向右出现一次走马灯现象;( y3 b$ J  r" e
        (4)快退键让LED灯向左出现一次走马灯现象;5 e8 ~  b# K* }# X. k/ H9 h) E
        (5)按0~9,数码管显示所按的键号;3 y- x5 d: B$ f  H2 Q
        (6)按其它键,不会改变已经按的数字键的显示,表示看电视台开关电源或静音、快进快退,都不会) j' S1 U& M: i8 ~
改变台号。
" q6 s3 O( B% K' g' P/ l! l    (7)其它键没想好怎么以现有板产生相应功能,所以按下后,没有特别现象,只有显示其控制码。
$ o: w) ~* Y3 N2 F6 X) W******************************************************************************/
$ u( L( K+ U# n9 {#include "reg51.h"//头文件:
5 |9 x; ^- V, Z7 j, J- h
4 X: r' c7 R0 E) B6 f& Y#define LED8 P2//红外遥控功能之一是让LED灯亮,所以要将P2口改名, n" f3 V  R  J7 m! ?. Y6 E9 k. K
2 B/ e( ]4 N) M) b2 j! g
sbit hwx=P3^3;                //红外接收数据引脚,也是外部中断1的I/O口
4 n( n  v8 P9 F0 zsbit SMG_q = P1^0;        //定义数码管阳级控制脚(千位)
" r7 d2 T% ~: isbit SMG_b = P1^1;        //定义数码管阳级控制脚(百位). ^2 B! f" D- b& D
sbit SMG_s = P1^2;        //定义数码管阳级控制脚(十位)
4 C$ e: A* G5 K6 `- A) [& S2 asbit SMG_g = P1^3;        //定义数码管阳级控制脚(个位)
) \5 N2 l4 s" \sbit JDQ=P1^4;                //继电器
: b0 ]: U/ s. h$ q* Jsbit Beep =  P1^5 ;        //蜂鸣器0 N# ?3 G  ?3 l7 J) [5 k% O+ u
8 |" a  ]2 G0 l! o' P' I0 ?
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
: g* Z. u0 [, }! u9 Y6 e                                                        0x88,0x8c,0xc6,0xa1,0x86,0x8e};        //共阳数码管段值表 0-9 a-f
$ e7 Y! \- N3 ]+ Y9 A
* w1 w0 l4 {' s& `$ m6 T: kunsigned char ly_disdate[4]={0,0,0,0};
5 @' \8 n- s! munsigned char ly_lhj[4],i;! ]3 W8 d. T2 f( d9 C( x0 o
bit ly_flag=1;! T# C' X% ~4 c# W
void display();
  \( T" m  ?$ [# W2 C1 j  w6 ?: D# p
& G! J# U: u! v' Rvoid delay(void);
" M1 P( _5 `) c" X3 b' k& X6 d- W4 ^* L# s6 S* f3 L+ {
void Delay10ms(unsigned int c)
: L) G" T. A9 k9 P  G: {{
/ U" {  F9 O' [7 F: C' U- \    unsigned char a,b;
9 m6 g% d: F7 ?3 k8 \5 B9 I    for(c;c>0;c--)
) ^6 z* n3 T1 J! @        for(b=38;b>0;b--)
: `4 D( ?+ g: `6 a& a4 I            for(a=130;a>0;a--);
4 b& {# f% F+ X# a}
9 q6 y$ ^4 |3 G* H: O
; U: \. s+ D+ g: i) q- kvoid main(void)//主函数
: H3 F; y% y" E/ x% K{
3 }: f' K' a, W' E1 E1 v( `        EA=1;
7 d# g7 W1 B+ w5 Y4 D! @        EX1=1;
3 J. Q- q8 N/ ?; w' E  i( U0 Q0 Z        IT1=1;% R7 Q7 C# w" p! I( @' e7 M! f
        TMOD=0X10;
9 d$ K) e" R2 d4 x) @4 ~        JDQ=1;
4 T5 e. x; Z4 B) J+ D        ly_flag=0;
  `# L/ R4 k9 U        while(1){        1 @+ e9 O3 y0 l. M0 Y/ W
                if(ly_flag){
" q9 r+ c4 T) R  t$ H4 w                        ly_flag=0;
) m& x8 q" v5 X2 b% B/ q8 M7 A                        if ((ly_lhj[2]==0x45))+ L' i# Y! [( J) K, d9 G7 x0 C
                        {! l! s$ I# D' V  c
                                JDQ=~JDQ;
% {! t7 S$ h( N: \0 q" n                        }
: C9 k0 i! D0 r2 }7 m) i: k! ~                        if ((ly_lhj[2]==0x47))
* Y& @5 @' \' D" s! W8 h& n' D                        {% V' V% E- ^6 s% P2 }- S
                                Beep=~Beep;
5 G* ]& D) K" }0 }( G$ y& f                        }
1 Q9 m3 n$ _. R" R! h  S                        if ((ly_lhj[2]==0x40))
8 h( z. s1 u, Q: B/ a1 t* [                        {
" m' u: c, F. y' {                                LED8=0xfe;
4 ^3 a$ |& V3 M! q: i: e9 W# X                                for(i=0;i<8;i++)  O9 }! K! w, _3 l( i, }( F6 C
                                {                                         - K% S8 [( _. d/ }1 p7 y
                                        Delay10ms(10);
5 Q# L5 O; w4 _8 e                                        LED8=LED8<<1;
& c8 I( [, q. a( ~* D* |' h% B8 l                                }6 b; D! \+ X4 I; @
                                LED8=0xff;" t, T9 ~9 U  q' Z  g3 S
                        }
7 v0 H" w" l1 l+ L; C2 @+ t# y                        if ((ly_lhj[2]==0x43))! K6 D6 G  K- t% Z& O: _
                        {% G  M+ E, t- E' |2 n- h
                                LED8=0x7f;
& L3 j9 u+ O6 W& T4 X8 v                                for(i=0;i<8;i++)
8 w! Y$ ~* S+ R0 [                                {                                         
( b) M! \4 Z8 }* C& D5 p                                        Delay10ms(10);6 x4 }. O* l, ?2 U8 @
                                        LED8=LED8>>1;
# U3 A! i* d- [! a& r& N                                }
2 A' p0 O# c( ^( q                                LED8=0xff;$ a* n& a! Q7 a( B5 ~8 l0 Q4 {
                        }# A2 q" R5 Y; M& }9 h4 p) t
                        if ((ly_lhj[2]==0x16))9 p9 \& u8 w% @. p7 k' ~
                        {6 H" w1 H$ R0 X
                                ly_disdate[0]=0;                        3 G5 s: \' `' F, |" Y- e( x% l
                        }
5 M( [9 L6 L7 ?* o- ^1 ]6 z                        if ((ly_lhj[2]==0x0c)); \  a  A1 e- Y
                        {
; m' E( {' B7 d- M' U6 u                                ly_disdate[0]=1;                        - |7 s- q* e1 Z. X" P4 Q
                        }                        . G/ t- k8 Y3 H" I; q- j) [0 G) q
                        if ((ly_lhj[2]==0x18))9 T" I3 q( N9 e( g% I" m
                        {
: R3 C% L  q; H) a' H! c6 l: _                                ly_disdate[0]=2;                        
( Y) j! X% @# _& R/ }# L& D                        }                        / D. M/ f( d8 k3 F# q  C- m2 n
                        if ((ly_lhj[2]==0x5e))# h4 y& c- s, _
                        {
1 V8 N1 y' Z; b3 S* R4 x2 M/ Z                                ly_disdate[0]=3;                        3 j# Q4 M* ?, O
                        }                        
- o- d. h( T- L+ g/ ^7 O) C                        if ((ly_lhj[2]==0x08))
0 ^4 I" J/ ^9 l) U) T                        {  E) d- A7 F9 y- w! n0 p) Y0 Y4 l
                                ly_disdate[0]=4;                        
# t* N" s" G0 |2 k! @  ~/ P                        }                        
: q  [4 Q- z* H! P$ y                        if ((ly_lhj[2]==0x1c))6 A- j( Q( b+ h
                        {
7 U( q& u$ s; r6 |8 T' l  Z. z                                ly_disdate[0]=5;                        : S! Z! v! j) [2 s
                        }                        
% S% M' w, l# I/ Y" l; v1 n; f2 M2 g                        if ((ly_lhj[2]==0x5a))5 e9 Y  V; s- ]
                        {
" Q! K; U: P1 s' O% _( s6 C+ l                                ly_disdate[0]=6;                        
( p; U- i# h/ K1 r$ |: f                        }                        
# Z* {% |. H0 f9 ]2 g5 U  {. N. o6 \/ e                        if ((ly_lhj[2]==0x42))! e4 k4 J7 c; Y3 [. Q8 ?
                        {  L& K8 u' R) r) r( {
                                ly_disdate[0]=7;                        " V; W2 B; k6 X0 U" v- y! [
                        }                        
9 o2 b& n% D4 A                        if ((ly_lhj[2]==0x52))
5 O9 ]7 U& Q9 _; t) z. z- ]" ~# ^                        {
( y$ j5 a2 B$ ~" e* }                                ly_disdate[0]=8;                        9 y5 F$ X$ G* W
                        }                        / ]* S- W& E( ]+ @/ H
                        if ((ly_lhj[2]==0x4a))# L" v) l. V! e" ^" @1 W; w; _& \
                        {
; k1 G5 x+ j% k; F/ K! A! F/ _4 s                                ly_disdate[0]=9;                        5 D- X( a6 z, l: K5 K: D  L8 ]
                        }                        * O/ ^0 r" J8 F/ g3 `3 F
                        ly_disdate[2]=ly_lhj[2]/16;5 l0 ]& g" ?$ Y$ e9 @" B# e
                        ly_disdate[3]=ly_lhj[2]%16;# [& o) ]2 h$ }6 r9 ?
                }
0 q4 B1 Y( h% m0 y% a                display();/ R( _0 ~7 W" A6 V$ i4 [- l, O5 g. z
        }               
+ G/ ]4 T! N; G  `, P! N, u}% {8 B! _' m; z
+ i$ A+ W) _' Z" ~. _
void hongwai(void)   interrupt 2
  q( t: J/ s3 Q{* i* b+ V* _& h* e1 J- F
        unsigned char i,ia;
, d4 L- A9 D$ P, d! M# ~        TL1=0;
* v/ p9 c; }" f5 p  o7 j9 T        TH1=0;: m  k, D$ x% R
        TR1=1;
5 K: v1 I( q1 a# u( }5 O* `        while(!hwx);
+ ]# D, u6 ~  c5 Z. _$ q        TR1=0;
7 S8 [: O3 |" T' V3 G* r4 Z        if(TH1<30||TH1>40)
. |! r* w$ R9 \8 Y5 t4 n1 [{' \# h/ x+ \" ?9 S3 A0 G
                return;- x* A9 t: g/ Y/ b: U0 B
}
& y4 F" C$ N- @& K/ B        TH1=0;
( ]7 I! `/ s) y$ H' O2 `2 {6 D! a        TR1=1;
- V7 n8 |5 p* `0 _9 o6 ~; }4 [7 j        while(hwx)                        //" d/ n( n" i; u% H! y( w2 ?
        {/ o% e% f6 b4 }: l, q+ s
                delay();
% O( K) ]" g3 w9 t7 N6 c/ }: `; d                if(TH1>22)( Y, H. p% T8 c0 g' Z) Q
                        return;               
$ W3 {1 M: f# u7 z; ?6 Y0 U( C        }' N) U  d0 a- F4 W: l* z# [0 q4 q
        TR1=0;
: m% H) i- G2 D        if(TH1<12)
, y, n3 |# O4 w. D6 \4 Y6 S% z* r                return;
( L6 O" p2 V, _0 x  T! {& Y
4 u5 q7 \9 K7 o4 a+ J, y0 ]$ `! V; n        for(i=0;i<4;i++)
% {5 M2 r' g. }; E! k! w. P- [4 p        {6 w2 p& W3 V/ w1 A
                for(ia=0;ia<8;ia++)4 u; }  v0 k' W
                {                                
; v4 i* O1 v! `. B+ B  B                        while(!hwx);
- l' i' C$ ^- r) c3 W( Y( h( D- v! u1 L: V1 `2 p
                        TH1=0;/ Y3 \- H2 E  `1 }" D7 @" s
                        TR1=1;# r$ D% I% E* P( z( [
                        while(hwx)
$ J* `# W. V/ h2 r1 O+ G0 L. t* G                        {3 [3 Z: g2 z4 Y# F4 s& U, s
                                delay();& m9 L- y& T. x6 A6 P
                                if(TH1>15)                9 z  f0 g! G  ]
                                        return;               
8 A7 V! }+ r0 A* o                        }
- Y1 u2 [: A0 r, b0 v" S- m& L, m: V                        TR1=0;1 ?& N6 C1 e0 V/ Y% \2 _5 D& \
                        ly_lhj>>=1;3 Y! v' q2 ^3 q* N( H3 s& C" W* m. b
                        if(TH1>4)  }( a+ }) E# Z* O
                                ly_lhj|=0x80;
5 Q4 w4 y& P4 D  Y+ X                }( b, P4 y5 H/ q6 C
        }
% u4 i- g; }) o& t: s        ly_flag=1;
4 O( t0 P5 C  v) {        TF1=0;- y# t3 u! m8 ~
}0 b% N8 X% c8 Z" t

4 ^: t, |( D' X4 |5 ovoid display()8 }8 j/ |; C. `7 R

1 ?+ M$ v" \7 _8 Q& k{  ^7 C7 D# s3 r% _
        SMG_q=0;                        //选择千位数码管(亮)
( v  i6 d8 b7 m* b/ l) m3 F+ b; B1 Y        P0=table[ly_disdate[0]];        //
* t+ `' A9 O8 }" t        delay();                        //
4 a8 I3 V% [. p& ?  c        P0=0XFF;                        //
+ i* L% A1 z- S- P        SMG_q=1;                        //(灭)9 ?. C( C+ A+ d$ H, n6 p5 y
0 G# a% r& Q8 b
        SMG_s=0;                        //选择十位数码管
0 z* v) D6 W  ]6 Q4 q        P0=table[ly_disdate[2]];        //7 a8 c, M( R* S/ P: R( _
        delay();                        //
( L1 H1 u$ x8 Z        P0=0XFF;                        //% A5 b0 q7 D4 O2 ~8 e8 K
        SMG_s=1;                        //
5 A) f: T# r$ I4 p2 b7 j
  K! f7 J& R0 w8 |
4 O9 @' U* J, |5 F3 b, c4 f& X% H8 I…………限于本文篇幅 余下代码请从论坛下载附件…………
+ E. R5 ^# N, o8 d$ R
游客,如果您要查看本帖隐藏内容请回复

% j1 d# r) O5 F5 a$ E  A. Q$ [
+ K. M2 b. k0 y

该用户从未签到

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

该用户从未签到

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

“来自电巢APP”

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 14:47 , Processed in 0.234375 second(s), 26 queries , Gzip On.

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

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

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