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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机红外通信控制继电器源程序. w  q; F: B' d* ~. h  d7 m
* o: q' _+ E' X$ q
( q2 I4 K  g, z: `& r
/***************************************************************************" p! Q9 {3 @! D2 G' j1 Q# q
    本实验例程是用NEC红外线接收解码程序(红外线接收部分为板子配的林洋电子程序)2 F* A9 l8 }8 `4 P1 o* }
    程序功能:/ H/ ?9 x/ W: h9 Y6 x
        1、运行程序,按遥控器按键,在数码管上显示相应的控制码(以16进制显示);  D$ ]( J; n7 z: i( g
        2、对特别的几个键,有相应的现象出现:
# [- @& s1 r* O, K        (1)电源键,使继电器工作或断开;/ I9 B1 s/ K; x- p2 B$ F+ X8 o: E
        (2)静音键,使蜂鸣器响或不响;5 g, ?  z5 P$ L5 n
        (3)快进键让LED灯向右出现一次走马灯现象;
! P+ j4 o$ x- S$ ?1 [. ^- o        (4)快退键让LED灯向左出现一次走马灯现象;
/ C; O; m, F, J# \4 w  W0 Z        (5)按0~9,数码管显示所按的键号;9 c# n) ]( O4 K% ]
        (6)按其它键,不会改变已经按的数字键的显示,表示看电视台开关电源或静音、快进快退,都不会  F5 T8 E. c9 c1 x! ~6 j
改变台号。7 u0 p4 a; p& T/ }
    (7)其它键没想好怎么以现有板产生相应功能,所以按下后,没有特别现象,只有显示其控制码。
) g* x4 A* H" n$ P1 u, w  b******************************************************************************/
. k! b9 r/ k! Z' _#include "reg51.h"//头文件:
1 ?  B  {6 n5 Q2 }& [+ }1 f3 K0 r+ N& R6 u1 H% U
#define LED8 P2//红外遥控功能之一是让LED灯亮,所以要将P2口改名, x* x6 z5 C( g
! ?; a% y! B  T  R
sbit hwx=P3^3;                //红外接收数据引脚,也是外部中断1的I/O口% q+ A2 ~; q, W/ G8 z$ u. T
sbit SMG_q = P1^0;        //定义数码管阳级控制脚(千位)
+ }/ w8 c5 L  P2 {sbit SMG_b = P1^1;        //定义数码管阳级控制脚(百位)- ]  v* ^& E3 C' i% T1 B3 K
sbit SMG_s = P1^2;        //定义数码管阳级控制脚(十位)$ Z, n/ S& m3 l
sbit SMG_g = P1^3;        //定义数码管阳级控制脚(个位)) \  q3 u! y/ X4 v- F( r
sbit JDQ=P1^4;                //继电器5 B/ `# B5 n, s$ P+ k; g
sbit Beep =  P1^5 ;        //蜂鸣器
# ?. H2 s  x, }( W  U8 I$ r, D- W8 N$ {1 c) x+ f8 f
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,3 L- Z1 `7 Y) O: A3 i6 C" |- c- W
                                                        0x88,0x8c,0xc6,0xa1,0x86,0x8e};        //共阳数码管段值表 0-9 a-f
5 r) i: E  L7 G" p8 t5 Z4 ^5 A" F' F( [* L
unsigned char ly_disdate[4]={0,0,0,0};; b! ~# ^1 e" G8 B
unsigned char ly_lhj[4],i;$ n& h- v2 e$ B, s7 |
bit ly_flag=1;
; j+ |6 b* O& s# e* q5 F# ~' ?void display();
/ ~5 W, Q: o/ f0 \& e& n
6 A% Y+ z0 N1 e' a* q* r# Zvoid delay(void);
$ h+ O5 e& \; \+ P6 f# G
3 G6 [4 Q1 g8 ~7 b  f1 a+ }2 ]6 ivoid Delay10ms(unsigned int c)
$ P; q. [5 f0 o3 |: ]{
3 B% b: z  N5 [2 P1 i    unsigned char a,b;
5 u0 X2 t) M5 s* c    for(c;c>0;c--); g: k& v1 x1 O" ]8 S9 z" R
        for(b=38;b>0;b--)
8 l, x3 ]: e# q; e0 _: C4 Y            for(a=130;a>0;a--);, h1 l+ g7 g1 z3 e7 M  j7 Y, X
}
' a( V  ?3 _1 T$ G. I
, N# P3 G% i1 ?/ R. Y$ Q4 svoid main(void)//主函数! B* w9 o/ S. n+ y
{. c6 ^7 W- I5 y4 I
        EA=1;0 o0 A0 Y, s6 F8 _  W. a2 `/ T1 c
        EX1=1;
6 E9 N: X: b7 }! S- M        IT1=1;
' p: e8 C0 k9 l( R  D1 `7 b6 S        TMOD=0X10;
+ ~, t+ w' z" @0 R' C$ T        JDQ=1;
- G' Z8 w7 G' c7 r        ly_flag=0;
3 n: N$ O! E2 n% z        while(1){        6 Q3 Y' q0 F2 j; d# n2 X' d
                if(ly_flag){( O1 D0 Q1 b0 X5 k0 [4 A  |
                        ly_flag=0;
" P" [* o) ~* H" x, Z8 I                        if ((ly_lhj[2]==0x45))
* \& O# N1 ~7 C: G                        {, w% Y, @( O1 e7 k3 R
                                JDQ=~JDQ;
( g3 |1 v* ]& D6 c+ e                        }- e* U% d8 Q* Z/ d
                        if ((ly_lhj[2]==0x47))- o7 r5 a3 d+ k+ K. E; F2 c
                        {
. [4 O( ^; u# T& H2 B, }. k                                Beep=~Beep;
$ b% U2 I, r9 p  d9 ~- G4 j) K/ U                        }
. B* h6 @9 p; y, |: l% M, ?                        if ((ly_lhj[2]==0x40))
/ O( {; j5 M+ b. N+ E( e                        {+ |$ n# m7 ~2 o* R1 C
                                LED8=0xfe;, ^2 {0 H5 b# W3 e5 [* k3 z
                                for(i=0;i<8;i++)9 h, F1 K9 u; b' a
                                {                                         * J5 M5 Y/ W9 O0 x$ @9 K
                                        Delay10ms(10);
  V0 T3 t' A- e% [                                        LED8=LED8<<1;
1 J+ g3 N$ z! i                                }! `1 a9 h+ ]5 R5 M2 G
                                LED8=0xff;
  U& _# v  l% ]. S                        }
7 P& ?  j, K# Q. X                        if ((ly_lhj[2]==0x43))
# E6 N& _4 S1 ^' N+ {) A                        {
! D4 W# L7 b, r) }                                LED8=0x7f;9 x8 }. ?' E8 c8 N
                                for(i=0;i<8;i++)2 ?  u+ y' _1 ?' h9 ~
                                {                                         , H5 W) M) `/ A- G4 h. n" R
                                        Delay10ms(10);
9 P2 E8 f. \7 `$ Q8 d: O. J                                        LED8=LED8>>1;3 T, x( {0 H4 y/ y. `' m
                                }* K7 O- S8 I  @
                                LED8=0xff;# Y) l! \2 T6 F$ l
                        }0 X7 }/ C# i4 T7 P* {7 x
                        if ((ly_lhj[2]==0x16))
: t0 @( @: ]$ h3 ~& D! n                        {
' `! f- m3 j9 T  m' S                                ly_disdate[0]=0;                        # c- D' t* t- f: h" n8 t
                        }
) a& V) {1 r% O% W6 ]$ Y" l                        if ((ly_lhj[2]==0x0c))
" }2 P$ k0 ^0 N& f7 S  n8 b                        {1 w2 t4 L% ^0 f" O
                                ly_disdate[0]=1;                        
7 ^# g; n9 y4 X" N                        }                        
5 g) s$ ~( x1 R" ~9 _                        if ((ly_lhj[2]==0x18))
! {: P8 U. ?, [. I4 F3 c1 m                        {. A: v! m. }/ c+ _1 e; j* h7 _
                                ly_disdate[0]=2;                        
. b8 r, e# @, a) |0 W                        }                        
6 O9 K" a! [& s+ L, Y& r                        if ((ly_lhj[2]==0x5e))
& g; W0 x" M/ P. o% ^% P                        {8 S# v' B# N$ J
                                ly_disdate[0]=3;                        ; A7 S0 v2 F0 N! E3 \- i
                        }                        
3 ~; y+ a/ f( @2 w5 z$ o) w' {                        if ((ly_lhj[2]==0x08))
# V- y9 }/ [- C: A! b# c6 A                        {
  T" @: I. l/ I& M6 f) v                                ly_disdate[0]=4;                        
9 F" o4 ~, g7 g# {% u                        }                        
. B; C( Y2 `6 T- N4 g: ^, e; ~                        if ((ly_lhj[2]==0x1c))
7 M# R4 V$ d; R  g, f                        {
( q' d7 f. n8 m* x# d; W                                ly_disdate[0]=5;                        
. K7 u( {$ M( w- C9 Y                        }                        
6 U  b# I; f; ^                        if ((ly_lhj[2]==0x5a)); S% Y0 p9 p* J+ T# s0 w1 V+ Y( A3 S
                        {
0 z! R7 q# W9 g% V                                ly_disdate[0]=6;                        
2 k# o7 ^. ]6 Z" o+ j2 `* t                        }                        1 _- m: @& ?1 I) Q
                        if ((ly_lhj[2]==0x42))
' _! a* p- K1 X, r* w                        {
4 g# \4 L3 F# ^                                ly_disdate[0]=7;                        8 Q7 a9 V% z/ k, @3 r9 ?2 W, o/ Z
                        }                        
' _& t9 q. g7 \7 ^                        if ((ly_lhj[2]==0x52))
8 E( k! H, T, t5 r1 c' X% I                        {
4 j/ V8 ]8 C$ L/ a6 J4 u4 h- d$ i                                ly_disdate[0]=8;                        
/ r4 k, a7 A: {8 a" {! Y% f' @                        }                        ) x" K, M/ j1 s
                        if ((ly_lhj[2]==0x4a))
/ ]% Y7 k9 D- }; {                        {$ A( o3 Z' P) `8 H& t
                                ly_disdate[0]=9;                        2 A: |+ h* C+ I: p7 R5 F0 Z
                        }                        % v  [( M  G& z5 T. D% c+ w
                        ly_disdate[2]=ly_lhj[2]/16;* l3 b0 Y7 @* h7 P) L/ S+ Q
                        ly_disdate[3]=ly_lhj[2]%16;
: W- b9 h* K3 }/ R* }9 T* [0 S# V( ]                }& {7 X8 }0 J: ]! Y7 U' X
                display();( |5 f; @% I6 L
        }                1 X( @4 z( `4 {8 B; Z
}( G4 M4 i- g/ g9 q9 }( ~1 t
7 w# D7 {  O/ v8 T& N5 o# K' l
void hongwai(void)   interrupt 2
1 @% D* m: N1 d# ^& B% g{
7 A1 Q1 W  L( }" t        unsigned char i,ia;) l/ e( `4 p" P. {/ V, R/ V; u
        TL1=0;
  V* ~, U/ c7 k3 _        TH1=0;$ J& G4 ^2 i4 X- W+ i( J% Z5 f, ?1 a" t
        TR1=1;* }" B4 A: x/ ^5 A, K
        while(!hwx);0 G+ A- D$ Y3 R
        TR1=0;
( f3 ~9 `. m( _' D1 ^  F: ]        if(TH1<30||TH1>40)
! B, r8 O' T! @9 K' G{
+ B# R4 P" ~* {2 B                return;6 q5 h5 h! }4 S
}
# q) m5 @3 _5 ^* L5 M" z        TH1=0;
% D  q) N+ ~/ B" ?) |        TR1=1;
  O+ E, L  ^: `# E/ y& k' M: k5 x! |        while(hwx)                        //
7 k8 v0 z( y4 O) E4 [$ `        {
1 D* a5 N: W2 v                delay();
+ S# ]8 E$ @$ Y! q                if(TH1>22)+ U( Z$ Q- v& A8 N- {8 t
                        return;               
6 u+ A6 O+ T# C2 r5 k2 {! s5 K        }
4 F" n5 J9 m) L* e        TR1=0;2 Z8 M; ^+ J4 I+ {$ n! E. x
        if(TH1<12)
/ m4 |+ R" r3 y) e) G6 i                return;2 \, Z6 B! l' L& t, Z2 o3 l
9 a9 X, c; q0 L( ]+ w
        for(i=0;i<4;i++), u8 z, b: A4 i% S' w
        {2 K( t6 a1 |2 L# S  X
                for(ia=0;ia<8;ia++)
. d0 |# p" Q' }. d' m                {                                
: F5 Y* n+ f# U; P8 i                        while(!hwx);
1 e2 m& U" p& w' L  j
) I( W( c0 i; C                        TH1=0;
) S% ?! b' k8 J+ {                        TR1=1;
" f# m9 ^! E- p! p0 e. o                        while(hwx)$ ~. V4 ^0 t; c" O/ y
                        {5 P0 o; o/ }: h
                                delay();
6 z# H6 ]5 c% A                                if(TH1>15)               
! h6 z  g% y/ S4 Q0 G& C                                        return;                0 J8 n6 e- z- r2 h
                        }
$ N% K! d, x3 e# \3 ^                        TR1=0;# C9 u! _3 J4 A3 |8 q8 R- u2 W
                        ly_lhj>>=1;
4 M. p8 |- a- ^! o; J- e. ?                        if(TH1>4)
# o8 F% S9 I4 l9 j# e9 o& w                                ly_lhj|=0x80;
! ~' u% V* @; g1 c! \0 V, m, k                }, I! y6 O5 j0 c9 z
        }( j! [) N' b4 @, S2 B
        ly_flag=1;' I) ?0 R) `9 i2 g$ N9 z, f. [
        TF1=0;6 B3 S, U1 q) a6 {
}
7 \, q% P/ a0 O  J5 {# G& g# i. X8 r: u( o
void display()
# [  G* a6 B1 j$ m5 s* f0 ?9 W: K% ]
; X. m: a5 C8 F1 W( m, o. P- p/ T5 B{) Z- c5 C' R' C. Q9 S2 }
        SMG_q=0;                        //选择千位数码管(亮)
3 y& G4 a) l. b2 ^        P0=table[ly_disdate[0]];        //3 S1 f+ U9 Y1 T! u/ u- k
        delay();                        //
( x$ H. p* i& Y" [) ]  @) w4 }$ Y        P0=0XFF;                        //
2 l* `) |$ x$ \# t; h        SMG_q=1;                        //(灭)- E3 S: P# d( }9 q
- C7 b" f( K0 I2 ]' X. z, _0 F
        SMG_s=0;                        //选择十位数码管6 {1 b: W0 M" o, T0 f+ i
        P0=table[ly_disdate[2]];        //
9 i: L6 u2 w! N, Y+ X' ~        delay();                        //6 H$ _' F5 d7 m# g
        P0=0XFF;                        //" z1 C7 Q" r, M! \: w. H* A
        SMG_s=1;                        //2 _- D; E% R8 m* ~) A4 B
2 Y) H" W* f$ v1 O
( k7 r7 E' d" ?' |6 ~0 w. ]
…………限于本文篇幅 余下代码请从论坛下载附件…………: j( j! d$ A3 b6 g; ^6 J8 [
游客,如果您要查看本帖隐藏内容请回复
, A2 V9 P3 [$ D/ }9 n5 j+ g# [0 ^

( V/ e" M0 i! }3 `- N4 j; a+ c

该用户从未签到

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

该用户从未签到

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

“来自电巢APP”

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-9 01:21 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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