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 L
sbit 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& O
u8 IrValue[6]; //这里存储的是遥控器发过来的数码
* M* Y# ^# e% c. I& o4 M( r
u8 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 k
void 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: z
void 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 e
void 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 t
void 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