EDA365电子论坛网

标题: 提取单片机遥控器的控制码,但无论按那个键,控制码始终是0x00. [打印本页]

作者: uerriup    时间: 2020-12-7 13:42
标题: 提取单片机遥控器的控制码,但无论按那个键,控制码始终是0x00.
提取单片机遥控器的控制码,但无论按那个键,控制码始终是0x00
8 j# D" E. j2 \# o" w4 R' J: X" _3 S5 p5 L- {2 s5 o
#include "reg52.h"
- T; w7 A% {1 B8 E# T: @typedef unsigned char u8;+ p! t5 o  l7 l& v' `5 A4 Z
typedef unsigned int u16;
# R. e' n$ j8 Z0 w; k  o# O. l  [2 u1 J
$ K! \8 V( W! ^; [8 Lsbit LSA=P2^2;8 Q/ F9 I1 |, m) L
sbit LSB=P2^3;
6 I  q0 p' Z; b4 ~sbit LSC=P2^4;
  D4 F% d5 q5 o9 B  {sbit IRIN=P3^2;        //这是红外线接收口
- K6 H* ]- D, c& Q& g+ j3 g
( \, v( u! t# u- _6 a& Ou8 IrValue[6];        //这里存储的是遥控器发过来的数码
* M* Y# ^# e% c. I& o4 M( ru8 time;
5 e; o) L* I: `; m; }u8 displayData[8];
' h( O5 W# V, y, d' @u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};
9 d9 C! R0 C! `5 O) W: D3 p9 }0 X7 n" _: j; J/ s4 u
delay(u16 i)! _1 F# E& @' c* n7 j/ a
{5 H2 b& C) l0 `* y' M
        while(i--);4 ^: D1 a, W. X" Q, O
}% c. [7 ~* N3 w; U" T! P4 b. C. w

* E; N3 t/ O* w1 u3 kvoid DigDisplay()
( d0 T! H. O$ [$ Y4 G8 a$ @; Y{
1 e, g& N/ k( r/ K. t: Z8 }        u8 i;
' V3 y( \  \( |% ~        for(i=0;i<3;i++)
) C! U+ U( M' t3 c" @( K        {. A+ ?; V0 {; E6 L4 ^% I" c( p6 m
                switch(i)
2 g9 j% B$ O; f9 J" u3 o' p8 K                {/ {2 p' ~* U% j% E
                        case(0): LSA=1;LSB=1;LSC=1;break;" \  f2 n- ?) n
                        case(1): LSA=0;LSB=1;LSC=1;break;
. j3 z% q" ^2 m9 Q# L) B& M* M3 v                        case(2): LSA=1;LSB=0;LSC=1;break;
$ @9 a( e1 r: H$ F                }
3 b: f4 V( f% k5 O" p                P0=DisplayData;
8 {3 K! Q+ G  x1 c: q                delay(100);0 F8 T3 o- B9 b6 \7 s
                P0=0x00;  v+ m# y6 ]  B; F' {5 S: E) _
        }4 I* b) z* D6 S7 W
}
& a# [: _- L1 D: U! n! F
! n9 y- g/ V4 Y: zvoid IrInit()  q! u: }' o+ T2 j% S
{
' t" y3 J5 v! a6 ]        IT0=1;
4 t' \( L( }: Y- D        EX0=1;4 w% R# N, {/ P
        EA=1;
4 b4 W. k1 F/ F% u( t) \7 M7 m        IRIN=1;
5 q) p! w+ u* Q}
/ N* M' x* W- k: B( |
* f" g. E- _% {/ p0 evoid main()) h4 s6 T2 F" S3 ]1 ?- i: I7 A
{        
+ S; p  i/ w# _2 e/ ?9 H" W$ R4 k        IrInit();
. `& ^  q9 N2 [  a9 @5 Z, `" h        while(1)  h* Q4 t! l/ b% g9 D: Z; q+ s
        {        
% k9 z* d: y5 k/ Z: j                DisplayData[0]=smgduan[IrValue[2]/16] ;2 y# n; `0 D! y. e& n$ r
                DisplayData[1]=smgduan[IrValue[2]%16] ;- [( a+ L) c6 O+ w; z
                DisplayData[2]=smgduan[16] ;4 A% y5 \0 W: f3 P, H6 m
                DigDisplay();
& R, a7 I0 O8 ?( J7 \5 k        }% K# `; @+ S# q4 w3 F' ]
}, G: e( m$ J/ W9 f$ L) ?

* {& u$ W; z6 j; u& ?9 tvoid ReadIr() interrupt 0. X! @) s$ ~" U
{
6 Q9 e& X! A2 |6 x! {$ Q        u8 j,k;
" Y! a; E, @# t8 Y& B0 t. D& K        u16 err;
7 H! n( C% G9 w. ]7 o4 q/ C! `        Time=0;; a' j" f0 u& J/ K% r' H) `3 ?& \' B
        delay(700);8 I; f% o! p0 t! i% |9 T7 F( Y! k
        if(IRIN==0)
8 w& D: C) P3 L3 u6 j: ^  g, c) M        {
* O" {. L5 E! q                err=1000;3 J! i0 h  j/ Q' v0 a3 h
                while((IRIN==0)&&(err>0))! P; w+ F1 }. g7 V  q( V
                {6 C* s! q5 S2 m+ X+ [" N2 F+ Y
                        delay(1);
& |' X- A- A: g' I+ J1 e8 n: F                        err--;4 ]* p% x) r/ W+ {
                }, p6 X, }+ w9 p) {8 k+ X  Y
                if(IRIN==1)8 x) f7 v5 g' }2 y
                {
8 U% Y; b4 w  T- H+ ?- I! c$ B                        err=500;& g# w  o* y  v
                        while((IRIN==1)&&(err>0)); u" i2 v) ~% z  R& L
                        {
/ @: f. b3 z, |' D8 J7 n                                delay(1);
+ j+ F5 c* Q( s                                err--;7 `% u6 J5 W9 z
                        }
4 J3 e: R: M+ F% r$ B: Q' ^3 o  l                        for(k=0;k<4;k++)) m( ]1 I  ^; @( K4 h+ e
                        {2 B9 [: _; H$ d  U- R7 a% s
                                for(j=0;j<8;j++)$ e. J& \! K1 J# N1 a
                                {7 u4 g4 J* ~8 f, ~9 l: X: j
                                        err=60;
" {% Q6 n9 w: Y4 L                                        while((IRIN==0)&&(err>0))0 c- `$ ]+ [9 R( K9 ^; y/ T6 {
                                        {+ f" U; n- G6 ]& |# a
                                                delay(1);1 d) ^6 t0 n  K, W% v: R, d
                                                err--;
$ v8 m. Z: N% S! |, S                                        }8 @, P* q( v! g+ m3 X2 p
                                        err=500;" O2 J6 l- \. p
                                        while((IRIN==0)&&(err>0))3 e- G& X( u7 _5 J# W
                                        {# \8 w( T! _2 Q) L) O8 [) P3 w3 B: z
                                                delay(10);: o, B: u9 {" M+ b/ a% z. Z
                                                Time++;1 l4 t  w0 e- i: I; j2 E
                                                err--;
! `3 F/ f2 K, \                                                if(Time>30)
! h9 A. _6 M- Z0 H: x& }# }9 d                                                {
! u6 D4 o2 @2 t; b- a                                                        return;! `% Q. F0 ^' R& e
                                                }
2 C& [8 I2 }; b0 X" ^$ @                                        }5 J; S! y* U( E3 J5 r
                                        IrValue[k]>>=1;
' o8 g  o: }# \' ~9 i) x5 u                                        if(Time>=8)
7 q! j7 ?& ~" B; e. x6 C- c" x                                        {
! B5 m" ?; i/ {- Q                                                IrValue[k]|=0x80;0 P) y$ k: g5 V  k7 {, [
                                        }; i: q% J& N# h
                                        Time=0;! W( y# A+ e6 \  y* l
                                }. D3 f& f5 U+ z6 K3 @& Y- `! `
                        }
! g. l8 A) T$ c/ L/ q/ W                }
0 S/ I$ q. _. ^8 @4 _                if(IrValue[2]!=~IrValue[3])
3 D$ q7 T- q1 i( y, E                {1 _( L9 o3 w- w8 P, Q3 [- c
                        return;* O; Y: O7 I8 f7 U" K
                }          2 b: B7 g+ G) e2 ?) ?0 ^
        }( x5 e! c" ~* S+ n: F+ A! o
}        
  d: q4 H( n* @3 c, a, q1 z; s' `/ r

作者: yin123    时间: 2020-12-7 14:48
顶一下
作者: younicp    时间: 2020-12-7 15:30
大路千万条,安全第一条,祝你好运




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2