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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机红外通信控制继电器源程序4 |. o5 [8 d& b% o  z

0 n  W) }  e* ^; Y% \4 d! k
6 \, O) l7 Y2 L
/***************************************************************************; Z) b, e: W$ F5 k1 d; c
    本实验例程是用NEC红外线接收解码程序(红外线接收部分为板子配的林洋电子程序); t; K) w' Q, R+ {. @
    程序功能:
) m% v( Z% H" n  t/ a) g- I2 o        1、运行程序,按遥控器按键,在数码管上显示相应的控制码(以16进制显示);
5 e3 [' Y+ M7 W5 O0 R* [( U        2、对特别的几个键,有相应的现象出现:1 h/ H) [3 D& _8 k% @- t
        (1)电源键,使继电器工作或断开;/ U% S/ m& }! d' J* q. n6 ?+ F, ^
        (2)静音键,使蜂鸣器响或不响;
) E1 f9 ]# O3 l  c1 `' G3 Z- \        (3)快进键让LED灯向右出现一次走马灯现象;
* N0 N3 v& z/ a) U! k5 h        (4)快退键让LED灯向左出现一次走马灯现象;
3 c$ X( H# o9 G( u' i- N        (5)按0~9,数码管显示所按的键号;
$ M8 t0 g% i. ]1 `( g# |2 b        (6)按其它键,不会改变已经按的数字键的显示,表示看电视台开关电源或静音、快进快退,都不会
1 z6 ?+ D9 Z# e4 ^  a5 u6 u改变台号。
) Q9 s$ e9 _# {& j/ Z' f4 B: o    (7)其它键没想好怎么以现有板产生相应功能,所以按下后,没有特别现象,只有显示其控制码。# R) u3 q& k  {
******************************************************************************/
3 b; H: T# G* N2 x& O  v#include "reg51.h"//头文件:
- ?% l9 Z* F1 S" ?6 |: I. A0 T! W) S4 C7 M* |! }
#define LED8 P2//红外遥控功能之一是让LED灯亮,所以要将P2口改名
* E6 E1 O* f& p$ L  V
' l! l. w7 E2 ]5 r  _sbit hwx=P3^3;                //红外接收数据引脚,也是外部中断1的I/O口0 c' D* N1 ~' Q( {5 l
sbit SMG_q = P1^0;        //定义数码管阳级控制脚(千位): c0 c2 C( J3 X4 S, X  E, f
sbit SMG_b = P1^1;        //定义数码管阳级控制脚(百位), k& r* U( s7 q
sbit SMG_s = P1^2;        //定义数码管阳级控制脚(十位)- m) a3 S' `8 W! h" i
sbit SMG_g = P1^3;        //定义数码管阳级控制脚(个位)
) ~" N' |- z' I- M4 d; dsbit JDQ=P1^4;                //继电器; E) p3 G3 I  b+ M
sbit Beep =  P1^5 ;        //蜂鸣器* A! X! p( E* W' i/ K- U
+ N2 j4 ^6 U. h7 }4 K
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,9 I( N) _& T4 C5 R7 F
                                                        0x88,0x8c,0xc6,0xa1,0x86,0x8e};        //共阳数码管段值表 0-9 a-f. _; I# x: w3 C6 i. ^" h: O: }  l
, u: i/ Y7 d! b4 F- f& l. H$ d
unsigned char ly_disdate[4]={0,0,0,0};7 i7 j) F5 @  S: W, o
unsigned char ly_lhj[4],i;
/ j1 f( L0 R8 y; dbit ly_flag=1;
8 l) ?* r. H8 z, X; J: pvoid display();; \5 o1 U+ B4 n' m1 p

. u- S1 X$ J# G4 l+ U6 x6 J: Hvoid delay(void);# E& ?8 |( D3 R% Y# Z& A' J
3 t* d2 J. F# I! b$ ~1 B
void Delay10ms(unsigned int c)8 D" `! \- u3 ^" M" b, `
{
, H' j. b/ M2 W( |0 E8 x    unsigned char a,b;3 a. e7 y; J  q7 \
    for(c;c>0;c--)* u, F& ~0 O4 h7 S7 V
        for(b=38;b>0;b--)
% q2 o, U2 Z$ ~2 P6 q3 g! t            for(a=130;a>0;a--);3 i4 f+ N7 z1 v; Z# O3 E
}
, v9 J# D" F/ Z# K' f
2 B1 {4 o% c- Vvoid main(void)//主函数
% S6 @. C! ^1 t8 T+ R, A{+ ]' y+ M, x& n2 ~
        EA=1;
0 H5 _4 @8 Y! O! L; U- I5 q5 K% U        EX1=1;4 m$ ]2 H- o  ?5 n
        IT1=1;8 P8 ~4 G# [1 O0 R
        TMOD=0X10;
& v# m; y5 ?( a3 Z; w+ ]) C& i- E        JDQ=1;
' H* u$ f0 u  F. G  F+ ]        ly_flag=0;
& v' e6 Y8 C- l8 X        while(1){        - t/ l! e: W$ C& B
                if(ly_flag){
7 S3 n9 e* b% s' y                        ly_flag=0;
4 d1 P; e* W$ ?' l* p                        if ((ly_lhj[2]==0x45))
, e/ C2 E" R* D: Y5 i" I                        {
' N4 n6 V4 C' I# D6 U- D                                JDQ=~JDQ;
  x$ ?& Q) W: Y4 C7 E7 p+ ~                        }
: U6 P' u% t0 d+ v# K, q; {) h* |                        if ((ly_lhj[2]==0x47))4 E/ B. l8 ?% i* j! q4 _3 Y
                        {" J$ m4 Z; \9 ?5 I
                                Beep=~Beep;
  b# x: d1 K! f/ k: S  V                        }
3 g, c2 `2 v$ f- I4 L: m. I/ O                        if ((ly_lhj[2]==0x40))/ ]" P& ^+ V% W1 k. d: a
                        {
+ o' |" h# q3 r- x3 u                                LED8=0xfe;* s% w* s/ s2 a8 J- e
                                for(i=0;i<8;i++)) t; M- T" i) u. T! P- z
                                {                                         
- v* d/ j  k+ @/ N( [; [                                        Delay10ms(10);
+ K3 w+ O6 }$ u  P; k! }" Y                                        LED8=LED8<<1;
9 r0 v. o5 x) K                                }$ v3 B3 l* ?8 \: Y& `; }
                                LED8=0xff;
) o. a2 z& M; j: u9 L+ Y/ F3 o                        }
: e; K: y5 t) V3 l' C                        if ((ly_lhj[2]==0x43))1 G* r8 m1 q0 T. [; H7 g, y
                        {
) `/ X0 }+ K/ T' n                                LED8=0x7f;
% t5 P+ p+ G0 [3 V                                for(i=0;i<8;i++)
" l+ `! [% A- w& Q                                {                                         ) W6 s6 B: J. H0 H; Z
                                        Delay10ms(10);3 G+ v) v3 y# y
                                        LED8=LED8>>1;
, B  `, Z& P1 X                                }4 {. p# U+ D! K) \0 E
                                LED8=0xff;7 x5 K3 B7 O) v" g3 v% ~0 L) _1 @
                        }
  F, c9 r$ m5 m7 f5 D                        if ((ly_lhj[2]==0x16))2 r2 H7 O0 N/ b7 J* \* Y
                        {- U, b+ V/ U9 ]( K- w
                                ly_disdate[0]=0;                        $ h; V/ C/ K$ h' x
                        }# o# a0 e- w! s8 R6 i
                        if ((ly_lhj[2]==0x0c))
. I+ W9 h0 e0 W+ s, t                        {0 [' J3 V/ L+ `4 R1 l/ m4 ]" j3 e
                                ly_disdate[0]=1;                        
( m; V7 d% R6 k, ~% R# y; K                        }                        
. B! M( l! L& x  T                        if ((ly_lhj[2]==0x18))
6 l' b4 l3 S' \5 E  n                        {% z" Q# K1 A) A- Q" k. }0 m
                                ly_disdate[0]=2;                        + ]1 ^5 N1 `6 P- N' u
                        }                        
+ r! U8 c* n/ x& e3 G7 o                        if ((ly_lhj[2]==0x5e))
% f7 Z# I$ j8 P& H' Y                        {" K* d* `1 F' Q8 S9 L) \; O4 S
                                ly_disdate[0]=3;                        ; B, G# H5 a: R
                        }                        3 o: \, J& |9 W& L' g( `
                        if ((ly_lhj[2]==0x08))1 r% D) E' y$ H# _. b" J
                        {% A$ G: a& N$ o  Y3 }
                                ly_disdate[0]=4;                        
7 U6 l9 o$ _5 T) n. J                        }                        + x) z1 x$ U: @0 ~; \
                        if ((ly_lhj[2]==0x1c))
4 P: Q- |# J$ d$ B: P5 J                        {
6 S# o, @7 g7 Y; ^  g8 p# f% C                                ly_disdate[0]=5;                        
7 L1 q* \+ w9 U% A) `                        }                        
7 i3 m' v* u- k- `' @( T                        if ((ly_lhj[2]==0x5a))8 V- {" P! T2 W# l
                        {$ j) w4 s8 P3 o' s
                                ly_disdate[0]=6;                        
; }7 t  [7 {( r% N- ~1 Z9 }                        }                        ; Z3 R3 t6 [% f2 k% C
                        if ((ly_lhj[2]==0x42))
/ {+ f" K0 w2 t6 b! B) }                        {
' d0 c  w; f2 ^+ y+ l. q- j% l" c                                ly_disdate[0]=7;                        
, Q! t+ B  j( G9 a) Y" U* N                        }                        ) _; q6 w$ z( I8 I- x" x  n1 q
                        if ((ly_lhj[2]==0x52))
" r) o- c: F3 K) [9 ^7 f                        {
4 [+ i" R! d% \& d4 J                                ly_disdate[0]=8;                        ) |) ^6 M; u' T
                        }                        
$ R$ y9 R3 T  Q7 i% X- s" ?( v# X. b6 G                        if ((ly_lhj[2]==0x4a))
: J) x; e. ~1 C: w) x) Y8 F0 H                        {
6 `6 {6 T; T6 ~6 v# d                                ly_disdate[0]=9;                        + f; w6 h  P# n
                        }                        
$ }, L' D$ B& }3 J                        ly_disdate[2]=ly_lhj[2]/16;& L2 R. \6 V% d
                        ly_disdate[3]=ly_lhj[2]%16;. D3 h9 M( D+ o+ |. a1 T
                }8 e3 X8 p5 q  P; o7 Y
                display();
! u, R0 e0 O9 P( c        }               
" `5 r6 X+ z; k6 [& x) ]}; F( G: N# v9 f
) z4 T  h# {& p, V, k+ o* y
void hongwai(void)   interrupt 27 x# w0 G) d! Q5 G8 Q
{
1 f0 o2 m6 Y7 J  `& m6 Y. F        unsigned char i,ia;
+ w% l4 }/ t+ J# L+ b+ s  {2 @: t        TL1=0;
3 Z; q. v/ M% C/ u( {        TH1=0;
( R4 Q2 s: H) j, j        TR1=1;
2 K5 U8 M/ a$ ^0 F" Q5 y  d        while(!hwx);, m' F+ E2 ~2 N$ Y* x, N
        TR1=0;
# @+ Z! g* P% ?; _        if(TH1<30||TH1>40)6 l6 b0 z& S6 F7 s* I! j! R
{6 y3 g0 B6 z0 A- y  m4 w" a
                return;
& G5 H3 R! A9 M  R5 N3 j' g}. _) g" X* f  u  k, \
        TH1=0;& R5 U+ [0 K$ ^5 m
        TR1=1;
  U( y1 Q* ^- [& m5 H        while(hwx)                        //" M1 Y' m0 ^$ O+ |) o$ k  N; c
        {
% k1 `- r* T, f6 Y1 d+ A$ b                delay();
  L! V' }; h5 ?1 z6 f' N                if(TH1>22)
2 w3 p% o0 w. B                        return;               
, A2 j5 Q; }. U% ]% d- O* {        }
# n1 y' X  w3 L; n        TR1=0;4 ]# d4 q, ^1 B3 x$ P$ g/ ~
        if(TH1<12)9 l* s% [% ?( z" f# D) ]
                return;
+ {7 }" M, V/ y# F4 E+ }4 V- E+ X# r8 m$ g+ o( g4 z' A
        for(i=0;i<4;i++)8 ?" T- |$ ]8 r2 Q, h
        {) l5 q: F- X2 p- Q
                for(ia=0;ia<8;ia++)( l! ?7 {" j( s: M8 F6 X
                {                                
  a9 V' Q( J& h- m                        while(!hwx);$ }: I6 l& G. H5 a# U
  ~, T) |  ^. g& t. M
                        TH1=0;) w5 w% k0 S( h" m
                        TR1=1;! Y6 u" Q: u" G
                        while(hwx)% O, L# ?" E9 R1 |
                        {( i7 M# `& s" K
                                delay();
  t$ K) @0 K3 l/ v( _                                if(TH1>15)                0 ~% _0 q$ u- U% X
                                        return;                % I8 ~* o+ W# q$ M& i
                        }
; D$ b- Q4 c6 x( {1 e4 `                        TR1=0;
0 U8 a1 d# ~8 q8 r% h# W0 ^                        ly_lhj>>=1;
  m9 U" ?( M; b0 S7 S' L, d' A: ^                        if(TH1>4)0 t. v4 i/ C% a- i) M! r/ A& p, ?
                                ly_lhj|=0x80;; G* l+ d$ o! o+ A& [+ \# ?
                }5 [0 r, v1 W; w# p, }
        }
: H  o/ i" r0 w: T4 V+ t        ly_flag=1;6 s5 p) }7 v) d% U' S6 y
        TF1=0;
$ F; I9 _- }8 E+ L}
# V/ R0 g+ ^3 r6 U9 M
. M( M9 H9 R; k" b# p3 Uvoid display(): l9 |2 B- s! e5 N) S/ C
- d' ~/ p8 _7 n# L7 G  O4 X
{
" s/ a3 [' @% }1 ]        SMG_q=0;                        //选择千位数码管(亮)
' M8 d4 |' P0 z  U0 R& k) Y6 k        P0=table[ly_disdate[0]];        //
1 d1 R( S! Q- O6 r" Z: t! G        delay();                        //
; P6 y- ]! o) ^+ `9 G7 [        P0=0XFF;                        //
' n, F; ~9 K. Y' p, \" D        SMG_q=1;                        //(灭)
4 D$ U. [3 a  U+ z  s: S, F- R$ C& T0 E3 U
        SMG_s=0;                        //选择十位数码管+ y) e! d+ G. D* {, N
        P0=table[ly_disdate[2]];        //2 k0 e$ P' f7 f$ _& [
        delay();                        /// q) t7 k  F$ e- v2 K0 d
        P0=0XFF;                        //
1 h9 w! O* e% f( ]6 T! y        SMG_s=1;                        //
# g! ^5 q; @% d4 X" [2 z# X/ a
/ h2 k" |; ^+ A+ t  D6 S7 h+ j1 x1 [* b) }- i3 T
…………限于本文篇幅 余下代码请从论坛下载附件…………
- ]# m/ P1 K& B7 C9 \" Y' U6 A
游客,如果您要查看本帖隐藏内容请回复

' e- U0 r% j4 r! @
2 M( K: V0 K3 J. t

该用户从未签到

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

该用户从未签到

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

“来自电巢APP”

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-22 01:53 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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