TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
提取单片机遥控器的控制码,但无论按那个键,控制码始终是0x00
1 z" y1 M# ^4 r4 b8 B: U
7 F3 A, H; u6 r3 D; e#include "reg52.h"
; O7 \8 e2 w6 a7 V0 {# mtypedef unsigned char u8;
5 d2 R! S8 R% G% Ztypedef unsigned int u16;, w- _0 j* F# U. k& g) S# v
) x+ L" ^& O- w! N" I& Dsbit LSA=P2^2;
, E3 } h9 A9 p6 Jsbit LSB=P2^3;
; K2 r+ ]! c: N# o7 e1 b7 \, A) nsbit LSC=P2^4;7 y& W) m. C0 I! U7 ]; W
sbit IRIN=P3^2; //这是红外线接收口$ H' h* p1 p3 ?; b f3 l
) U: E7 n: V0 `u8 IrValue[6]; //这里存储的是遥控器发过来的数码
! G0 M& F0 j, }- k. }u8 time;& ?4 {. x3 u$ g+ b: a1 t
u8 displayData[8];% `; T7 J0 `. s6 T5 [
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};. D4 j% Z" }5 X7 f6 ?1 l) p& Q
; R9 f/ G1 i# e& B4 T9 [# ~ _delay(u16 i)
- S9 \0 R# P6 v/ J6 o: e{ a# _8 l0 n' X5 t0 ]2 d
while(i--);
% u0 X. r8 ^; G}
2 D$ ~7 j0 W0 q% L" C# H$ ?/ b$ u; q9 U8 c6 a
void DigDisplay()
/ S& E a1 S s) U3 U6 N) j0 F{
5 c3 f' ^" j$ s6 Y$ g8 B u8 i;
! [% b) I2 s# P/ _2 s for(i=0;i<3;i++)% F, G# b: @3 y; c8 ^ q* D, o y9 K
{7 e' n% {2 l& v" Y( f2 v- X' J
switch(i)
. k. s# ^0 {$ g! n' S {
a+ ~/ d5 q* A% u& C- C case(0): LSA=1;LSB=1;LSC=1;break;3 m4 [' ?) k8 L0 K
case(1): LSA=0;LSB=1;LSC=1;break;/ J/ i8 G( d2 N# n
case(2): LSA=1;LSB=0;LSC=1;break;
/ L) i ]9 e+ z& \ }
8 o& A' }9 E& ?( r P0=DisplayData; G. e* u# U$ Q3 X% \ F9 n* G
delay(100);) D, b6 {' `* C5 Y. x
P0=0x00;* D. s/ }: q/ y$ Q# A9 c. X. O3 t
}2 u: D8 B6 ]! h. l
}
5 G7 y# A' k3 W1 i" D
" U" N+ E' R3 n- dvoid IrInit()3 [+ M. c" ]4 I
{$ D/ H. N! w' i5 |& L) O
IT0=1;
1 K& p# v5 p. |$ v/ M* N EX0=1;
8 H8 f$ K4 p2 y+ u EA=1;! U2 |5 ?1 ^; @: m" J$ ^) k0 _
IRIN=1;
' r- N* C2 ~& G+ \0 K& B}
5 P. s& B' T; _3 w
2 r% s8 B9 p. h' s' Z3 |void main()
3 t* M" s! t% W* r3 Y n! s* L- B* A{ 3 F& g# s5 c( M5 `0 h( F- N9 @5 j" \
IrInit();3 C; w7 G6 b: N! @" z5 w u# \7 y
while(1) n% }* I+ E5 s
{ % h. ?( x4 N' m" H
DisplayData[0]=smgduan[IrValue[2]/16] ;
+ N# h1 ^5 W1 K' b% t7 A( k0 I' q- V: ? DisplayData[1]=smgduan[IrValue[2]%16] ;
& p. ^1 M a( Z1 x8 a( \ DisplayData[2]=smgduan[16] ; x5 @; a, k I. _- [
DigDisplay();
) G% }. t7 m" `( q9 g. v; _ }) Y0 H8 B9 u2 K/ y( W B5 M/ z
}
3 ~$ I3 m' w. t
; e- u1 m( }' S" t7 m7 uvoid ReadIr() interrupt 0
: z$ X, b. C' [{
4 ?2 I2 w7 Z* c5 X u8 j,k;
- a3 X/ Y3 [7 o) m u16 err;: q( X& H: G- g$ {1 {/ E- `; x
Time=0;
/ B2 j7 @4 l, s+ L# A+ I$ _+ Z delay(700);
$ f+ r- b: O: R* t) f9 s- p if(IRIN==0) H$ g9 m6 A1 }. y1 d' i9 C" C# V
{
. {7 |+ Y( y$ T, z5 R0 l err=1000;
: A: I1 d% u+ L3 Y* i0 c! L' t& h while((IRIN==0)&&(err>0))
* y1 K: G2 o2 n {6 I& c6 L' r& c% c1 I* P
delay(1);: E/ \! x9 c, ^! F9 G; U
err--;) M0 g5 N D' c" Q( [ ]
}
- P7 g) a% E0 b' {0 ? if(IRIN==1)
( a( M- b9 p4 O7 Q7 I W {2 Z; i: f/ A6 L. ?0 z
err=500;3 o: x& C" |% c: }. J, X
while((IRIN==1)&&(err>0))
X6 z/ O1 @$ { {# {+ M E+ H% d% A
delay(1);5 I8 a& J. ]5 K; Z/ u
err--;
; R4 t6 O" l/ R: t! n$ g9 E) H8 C }0 r7 R& Y/ s3 A$ m" |: H' R
for(k=0;k<4;k++)
: f+ d8 Q" H" Y" |" y2 D {
. B4 s6 v! H8 X( g1 h4 M _ for(j=0;j<8;j++)
# c4 S, i/ ~: w3 V& \ {
% k) c& a. p! r; Z err=60;
* j+ ^1 W) A& M4 b/ H% F while((IRIN==0)&&(err>0))5 |, H2 I& ~( Y$ Z
{
p4 o) i! j3 E' B delay(1);4 N- @6 r i% n( s. ~! R
err--;
' T; }& G) Z$ a) J# f. J }+ x9 _8 J7 u$ O4 ^% P7 m
err=500;
( ~, T2 _7 g" j5 z, a9 c) G. y while((IRIN==0)&&(err>0))
- D/ y* a8 M' a' z; Q. C/ [, _ {
4 [4 Q, C" d% D, x! H/ E6 n2 `7 H) F delay(10);& ~* ?; g$ {7 v& T
Time++;
+ y N4 M: ~( V' N% R err--;
8 h6 ?8 N/ g) ~1 W/ T: a if(Time>30)- m5 y U9 u! ], F
{
# x8 F8 g9 j9 k! h) N0 R+ k( f return;
7 ~( W3 d9 O5 e$ D7 r2 f4 d }3 b- h& E! Z0 o& Q. D3 I5 A+ J
}' R. H: I0 I9 r
IrValue[k]>>=1;
0 }' E) d5 E: `5 p4 d if(Time>=8)$ A5 z( }# Y4 M: o& z( c
{% k( F% l# r1 N0 P2 j
IrValue[k]|=0x80;
1 P* W! G5 I5 z3 Q }1 \: x) R$ S$ F2 K$ m4 ~, n( Z
Time=0;3 }# S( \( \1 |. V- }
}
3 m/ [. A8 N' D& ~ }
* Q/ j6 U. ?- I4 @ }
& K2 Z0 |4 t- O* ~ if(IrValue[2]!=~IrValue[3])
6 L) M9 j( g/ E! T {
& C& G0 C% s6 |/ \* u4 l1 Z0 o2 ` return;
9 e& | q+ |5 a' G5 x } 8 C- |& N0 b+ N2 K0 L0 {! J
}
+ m: j0 j: @8 ^4 k$ x}
6 k) v4 m+ R" T* y' O |
|