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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机红外通信控制继电器源程序
4 \* {& m+ |& Q( R! X
+ v& ]/ X) m1 \( I

6 Y  W  T" P" o, b# _/ W* o3 l4 j/***************************************************************************  H5 A: N; E7 [; d* \& ^0 K
    本实验例程是用NEC红外线接收解码程序(红外线接收部分为板子配的林洋电子程序)
/ i: _5 s+ @) q0 w    程序功能:3 k" k& ~* S6 D, m( f0 z7 j  Z
        1、运行程序,按遥控器按键,在数码管上显示相应的控制码(以16进制显示);
( C0 l: r+ V7 `        2、对特别的几个键,有相应的现象出现:
: C& D; g: ]+ D, }        (1)电源键,使继电器工作或断开;
! Q% v/ q$ f. y  V+ H        (2)静音键,使蜂鸣器响或不响;
* g" n& ?3 u* o+ |" d        (3)快进键让LED灯向右出现一次走马灯现象;3 l1 u* V) }) A; v) a/ C0 Z
        (4)快退键让LED灯向左出现一次走马灯现象;' p- s' P1 n4 p6 W- b
        (5)按0~9,数码管显示所按的键号;$ t+ O& V( R4 \5 h/ B
        (6)按其它键,不会改变已经按的数字键的显示,表示看电视台开关电源或静音、快进快退,都不会1 [* p3 u8 ^; s9 R2 I
改变台号。7 x! h  u. q0 l
    (7)其它键没想好怎么以现有板产生相应功能,所以按下后,没有特别现象,只有显示其控制码。
# O$ l! s, Q8 c1 ?( @; W0 ~******************************************************************************/
/ h+ u3 n8 R0 C7 V6 W4 D% @, R#include "reg51.h"//头文件:
$ T2 z4 y* Q  k- Y# K  I, |7 U) |. }4 e7 v" e# d7 {
#define LED8 P2//红外遥控功能之一是让LED灯亮,所以要将P2口改名6 d% y: B6 c  T- ^5 [  u  H5 i

3 I/ o* n1 B& x( osbit hwx=P3^3;                //红外接收数据引脚,也是外部中断1的I/O口' @9 U4 v& [" ^  h2 z: I
sbit SMG_q = P1^0;        //定义数码管阳级控制脚(千位)8 M3 j2 n6 l7 p2 L  v# k
sbit SMG_b = P1^1;        //定义数码管阳级控制脚(百位)- s& b# W8 v5 _! r
sbit SMG_s = P1^2;        //定义数码管阳级控制脚(十位); Z, h5 Y* f. Q2 _( U
sbit SMG_g = P1^3;        //定义数码管阳级控制脚(个位)
  W3 i( s0 o) B% E5 a, `/ hsbit JDQ=P1^4;                //继电器/ n' K( X, u' r; u( R
sbit Beep =  P1^5 ;        //蜂鸣器
# T$ z0 k, I6 V. n4 J0 ]5 X3 }) ]1 c  U& l
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
- f$ F- c7 r7 t1 C) R+ [! i# u0 w                                                        0x88,0x8c,0xc6,0xa1,0x86,0x8e};        //共阳数码管段值表 0-9 a-f1 {+ Z# |# w3 _3 y' f4 S
, t" l2 T% }$ ^6 ^% }0 m& `2 H, b2 [
unsigned char ly_disdate[4]={0,0,0,0};" @& {+ }4 r2 T) A3 }( p8 J! v
unsigned char ly_lhj[4],i;! w1 e% u" _9 R7 r2 J  N
bit ly_flag=1;( T2 ^6 n% l; u: S) ]+ e
void display();
; v5 a, x* X9 K0 b" b. \; Z4 {: Y7 i' W. a. B. n. E  O  t7 f
void delay(void);
8 b9 t! x  x' ]; R0 N
/ V9 {+ y" L  Gvoid Delay10ms(unsigned int c)' U6 [: D$ r7 l4 R& M* _$ \+ B
{5 L' L, m* P+ ]  h4 W6 ~
    unsigned char a,b;
+ y) ]$ j2 J7 }& s    for(c;c>0;c--)
) I5 M/ U6 O, _: [& ]! O4 e        for(b=38;b>0;b--)" f/ x8 ^- ]9 U$ ]
            for(a=130;a>0;a--);! i+ v4 v6 z/ Z& N8 c. q
}& h  F2 F5 N9 X  Y0 j7 p. \
. d7 d% z" r8 l3 q1 e
void main(void)//主函数
- @- |* ~  K- q8 C{- G$ k3 c* x' S2 S
        EA=1;9 G! G2 {/ n6 D: i" O
        EX1=1;6 }! O! r( C7 M8 O6 e
        IT1=1;
; @  ?" I  s" v! v- a        TMOD=0X10;
3 }% G* ^& {3 H5 W! p$ ]2 {        JDQ=1;
; Z) H, @0 V6 F* d5 K7 W+ V        ly_flag=0;
6 R! W& {5 b/ {1 V' ~1 w        while(1){          i) l- x3 w. V0 l& h, n
                if(ly_flag){
  J  C2 l5 T$ x                        ly_flag=0;
  o7 E0 ~7 D. H( l" ~) Z5 I                        if ((ly_lhj[2]==0x45)); p: j$ Z( O1 g' g: S$ B( q
                        {
- N6 t& F3 q' i/ J# l( ]# J9 v                                JDQ=~JDQ;$ P. F' _" v* Q8 q  k/ t
                        }7 d+ d) _: ?1 J2 S4 m* Y9 A0 v3 s
                        if ((ly_lhj[2]==0x47))
8 x. A5 A1 Y1 S: ~                        {5 L3 q& r) n( l+ K
                                Beep=~Beep;& [5 U7 C/ j$ g: c. O. _
                        }) ?. t/ O9 l7 e/ ^* E
                        if ((ly_lhj[2]==0x40))
! I$ V' z+ P( `5 Q3 J* w$ W                        {9 f9 d; M9 M) N1 a
                                LED8=0xfe;: [& j0 B4 i* A; m- L
                                for(i=0;i<8;i++)
, z7 s2 ^7 W$ P- S. ]                                {                                         
( T' j, ~0 q9 U, f( @# p                                        Delay10ms(10);0 c. @+ y  Z3 p' O6 J* M
                                        LED8=LED8<<1;! F" J7 ~0 [+ _4 B0 B9 o+ L
                                }& G/ D! [* z* \9 z8 \1 V* S5 z3 B9 b
                                LED8=0xff;
6 _! ]5 ^1 N, o% a+ e! B                        }
1 N. Q$ ^4 P, ^  M2 w                        if ((ly_lhj[2]==0x43))
6 R6 w7 |" z- v                        {; H+ d5 B# L& m6 I1 s/ `
                                LED8=0x7f;
/ `6 w: y& ~% ^6 \2 s                                for(i=0;i<8;i++). n9 S9 a* B0 c5 _5 P% y! ~% Z
                                {                                         
/ b8 l' x7 ~8 |9 v7 M) V                                        Delay10ms(10);
. X* t' A: o9 Z/ o3 O( `                                        LED8=LED8>>1;1 p' r, G: g: {  f& c
                                }1 M# X. o  z9 h! d, n) I& e
                                LED8=0xff;; Q" c9 f- b, M& x6 I8 t) \2 a; o) m
                        }
, e' k% M8 ?" I2 T- Z$ S                        if ((ly_lhj[2]==0x16))4 a+ \: Q( q& I  ]+ m
                        {! P  |9 i3 w( l6 Q& H# [& G' U
                                ly_disdate[0]=0;                        
2 `+ g4 X' B) w* ^. }                        }" ]6 X" ^+ S+ r. |8 l5 Z8 ?0 k" y
                        if ((ly_lhj[2]==0x0c))' r3 w1 v1 ^# W. t, W, h
                        {& f# x+ k& q, ?0 \4 V/ `
                                ly_disdate[0]=1;                        + f' e# P& i! a" w9 ]
                        }                        
6 g2 u% S6 Y6 q2 P, }$ i                        if ((ly_lhj[2]==0x18))+ L/ n7 F- x# b/ C
                        {
5 E9 q: |1 A9 v                                ly_disdate[0]=2;                        + u7 l$ P5 m0 q6 @1 [1 _
                        }                        0 }, ]* L! o* b: S2 e  s
                        if ((ly_lhj[2]==0x5e)). \* s- l& t" ?5 t2 @# Q: x9 m
                        {
! i3 S9 |9 G/ D2 A# `2 R                                ly_disdate[0]=3;                          \! d) @  T5 ^3 i7 `
                        }                        
( S& Q. u; t: s1 O$ [                        if ((ly_lhj[2]==0x08))* k& a" a9 Z: ]; G# g
                        {
, y2 O% e! G* X5 v8 Z4 C                                ly_disdate[0]=4;                        
1 b+ O: n  }$ z, F+ ]/ \                        }                        
: L/ z1 Y9 A, F) _# r% }4 s  @. c                        if ((ly_lhj[2]==0x1c))" ^/ X& P$ i" P  M0 a% `4 ~
                        {
$ o* Y/ Q! K" C7 o1 g4 b: [4 z                                ly_disdate[0]=5;                        
" o- K) r1 G% a+ M" }: e1 M                        }                        
( |/ }  T& E3 U) B                        if ((ly_lhj[2]==0x5a))  J+ k3 o5 z3 c5 V' S
                        {
) z, y* h) H0 A8 D! J* ~) I1 S                                ly_disdate[0]=6;                        
+ {$ E  ~: d( r4 {0 S% C7 k                        }                        
5 b3 _& s0 K/ u+ P% [' n. X: L                        if ((ly_lhj[2]==0x42))$ L' ?' p  f% [, @: d) F
                        {$ e+ t. m' v9 O, |: F5 L5 }, n
                                ly_disdate[0]=7;                        
% Q' m# g4 n, W3 s; F% V! t8 z                        }                        
( U/ G- p/ M2 R4 {. y& D1 y                        if ((ly_lhj[2]==0x52))
( F$ T6 P& r& v; m2 H                        {* d  d4 A! r  J" |0 V
                                ly_disdate[0]=8;                        
' U0 |" h7 X9 n+ R4 L5 x  p                        }                        / V: r, ~. X( l, Q* ^5 D( H( E
                        if ((ly_lhj[2]==0x4a))
0 Z* [8 i& {: f8 |8 E: P7 x' Z                        {, G3 U) U: p9 Q6 U# S: a2 ~% n
                                ly_disdate[0]=9;                        9 [+ `; Z9 Z" a2 P  ?
                        }                        
- z, Q- C( O' d- T( O. W3 V/ ~' I                        ly_disdate[2]=ly_lhj[2]/16;
& Q1 I/ V/ s7 x& k7 u4 {# E1 \% l                        ly_disdate[3]=ly_lhj[2]%16;/ s, p* {4 j  b8 S8 f
                }& v* Y: s6 k* f: ]1 l  e
                display();
8 o4 c1 r, [7 @( E% _        }               
$ C, b4 I9 {3 s. S}: g* T7 r5 K. @6 @# ~* x
  W, l; R- t8 H1 W7 y
void hongwai(void)   interrupt 2+ K, u: @* G7 M
{) b& @4 W: M/ s: A, p
        unsigned char i,ia;: |) @& f6 N! _) T7 V. I
        TL1=0;, H, h6 |: T& ?5 K) F8 ~
        TH1=0;
( O3 P$ S$ U" Z+ ], `1 R+ Q! W        TR1=1;
/ v0 g  C) u/ j# H        while(!hwx);1 k, x5 ?6 h* V- k6 S/ B+ L
        TR1=0;$ i8 J) Z8 o" D1 I; t. ?" I, F( U; K
        if(TH1<30||TH1>40)
# b  F' v- }6 J{
: M, {" d8 H" K8 l- Q: Q                return;
. y+ a8 C+ {. _* J}% F% S6 f0 s; D
        TH1=0;
4 ^3 R! k0 m1 ~# n/ u( F$ ?6 e        TR1=1;- E& Z8 @& D' e" h- L2 A/ _/ P
        while(hwx)                        //
9 h5 k/ V1 W" d4 l) _        {
8 N' n, ~5 t% O" r                delay();' x. u6 ?% S, \/ t5 E
                if(TH1>22)
# _9 t% x) G. }, V  D, K                        return;                3 q9 j; O" U7 y9 }- J" `
        }: Q3 @, v8 y5 s! l+ I9 C4 A( w# G
        TR1=0;
1 o; Q& ]. e7 d+ T" J. X: R$ k! G        if(TH1<12)
. J$ k0 y/ o+ S# q4 o# n                return;- y6 B' q5 `' F! ^5 r1 I3 p8 u

" A, G1 d" y+ O; g1 W        for(i=0;i<4;i++)
7 W# R+ x  B4 v( z        {
% u* B. ]1 u; E                for(ia=0;ia<8;ia++)+ Z  h+ P3 j* l9 o
                {                                + M( X+ U6 }, ^% v/ g4 o
                        while(!hwx);; G& M7 h6 C1 B7 L
2 W2 P& ^* S9 {* E8 U3 N
                        TH1=0;$ o! g: G/ p$ ~& g9 `/ d9 b. V! j
                        TR1=1;- I4 `- U: P/ [3 [3 t
                        while(hwx)
" H5 R9 T/ G8 o7 R$ O/ z- p                        {
+ b' @0 S* S  ]' \. t4 a                                delay();
# }! L4 C4 J# T* ]                                if(TH1>15)                $ ^! n, W; r2 c
                                        return;               
0 V5 {% r9 B( k2 |, ]' Y                        }
0 l/ U3 t0 c5 E                        TR1=0;
* O$ y! A6 }/ p2 r' d) J                        ly_lhj>>=1;: Y  K0 b$ ^8 V9 M4 j2 a* |2 {
                        if(TH1>4)
, T2 T* E5 W! p1 f, C5 V                                ly_lhj|=0x80;
# M& P. s- |: S% k/ x- L: w                }
% U# K- o9 F* G$ q        }1 f* l  W6 i% ?* G* k- E
        ly_flag=1;$ V. C1 Y! Y7 `. O' Y- C+ {( n* ]; A" Q
        TF1=0;
& J7 P' A8 ^2 R* }1 e}. V+ C. m$ p5 C& k+ F! _7 l8 h

% e- a! {2 b; ~" j3 Evoid display()
0 A+ h/ A. q5 ]& f% |1 p) u5 ]) v% r6 X, V3 i% Q$ ^0 _2 E
{3 W& |. R. D3 m' \' E
        SMG_q=0;                        //选择千位数码管(亮)
, E; x9 h, ^0 j: l; k* G# D! @        P0=table[ly_disdate[0]];        //
1 z8 A( U8 ?0 v: c% J        delay();                        //- q$ w0 s- n9 i+ L% J2 E5 y  ?
        P0=0XFF;                        //% m# F$ F! r2 D5 J
        SMG_q=1;                        //(灭)
$ n1 A1 k1 w  F" L$ S- m
% j3 |7 X# ?% I- k        SMG_s=0;                        //选择十位数码管* W% l+ h6 M" u
        P0=table[ly_disdate[2]];        //
) S" Y# H* i5 I, y- V7 M        delay();                        //
& ]( a9 _, K6 M        P0=0XFF;                        //" |; O8 B# \% k4 G8 p
        SMG_s=1;                        //
" X+ ^; k  B' T- m  j8 n' [6 s+ G* ?, U

0 H- Y; m/ A2 h6 n9 Q. H& ]…………限于本文篇幅 余下代码请从论坛下载附件…………% e7 K/ a0 h2 v
游客,如果您要查看本帖隐藏内容请回复

& P8 C# ^# K9 m6 p" K9 d
7 K; L( f$ {+ j; O6 h

该用户从未签到

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

该用户从未签到

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

“来自电巢APP”

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-18 21:18 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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