TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
提取单片机遥控器的控制码,但无论按那个键,控制码始终是0x00
( N( h6 m* y ~6 P
6 `5 J2 q0 e; U7 t0 H+ d#include "reg52.h"0 F8 K! u9 J/ p1 L( `
typedef unsigned char u8;
3 i* o" c6 F4 w0 K% \typedef unsigned int u16;' E7 Z n0 ^0 y* b8 [4 {
! P. F7 E: }6 }' x' {1 p
sbit LSA=P2^2;+ q# y' S- E9 F! K$ e
sbit LSB=P2^3;
! R- S- D0 R6 ~$ G5 |# \sbit LSC=P2^4;
+ h) C# v. ^0 a2 S: Psbit IRIN=P3^2; //这是红外线接收口
& M2 r3 W" T) L D/ h5 U2 ]+ M5 Y. h% T" [/ W0 h0 C
u8 IrValue[6]; //这里存储的是遥控器发过来的数码" }6 Z5 [/ D8 G" o
u8 time;
+ k5 T1 w7 |$ u! ?: Eu8 displayData[8];
* W# V' A X' Lu8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};" B3 q" J+ z; ^ \1 G
; f* ]9 W4 N( B8 ^7 }delay(u16 i)
4 o7 ?( \& N( c, ]{, N, I! y% a5 \7 J8 T( ]+ u( y
while(i--);( h2 b; O9 E% a* m0 @
}
* S% H7 {: b5 D/ G# O' S$ r
' b R( ]* P9 V5 Nvoid DigDisplay() ?$ X: O0 y# F2 i
{1 J- U# b* U: \
u8 i;
. M: s& z( V' U for(i=0;i<3;i++)
* W; W& o: J2 }$ y, z' _) W {+ C; g) \7 @" F) v& S( i' d
switch(i)5 J: U# R @; ?3 x8 w
{) C! v5 J$ z: P j
case(0): LSA=1;LSB=1;LSC=1;break;. v Y6 d3 t6 f) [# }/ S% K
case(1): LSA=0;LSB=1;LSC=1;break;
9 v/ a! g# } ~) \" p% t case(2): LSA=1;LSB=0;LSC=1;break;
2 ~1 q' V! \1 _& ^6 b- S7 k }
' y0 m1 n* ?( Z( w+ ~5 d( A P0=DisplayData;8 t( Z h& k; N# p* S+ G
delay(100);
8 O- `: y: U: A/ E4 W$ n7 e P0=0x00;
/ C! p2 O. a7 d; A( h }' q+ C) m4 n- f
}& U9 z0 ^, X4 H. t
! A: T( _0 S; K* i( d `& zvoid IrInit()
: E" \5 R; g, Z( A5 Y' H{9 B; D: g/ n. G% q
IT0=1;6 q: U& q2 U, m6 f% K3 v* \7 M7 |7 `
EX0=1;
- Z5 N2 j0 k3 w" p! r# }; Z, z9 ^ EA=1;
% H' j/ S% K& M0 g* w9 M2 K IRIN=1;! E5 w; R, S* u6 o3 y2 e
}2 o }& @7 Y0 _. x0 F3 _* | F
2 v! Y1 S% {2 D
void main()( i1 B: @2 {" V0 B0 f- d
{ 7 o$ w. S' t1 Q( L! j1 Q
IrInit();
; t0 c0 R# X0 J5 _7 \1 k4 q while(1)# h. f9 P3 a9 r& ~7 Q
{ % ?& P' ~ k7 y
DisplayData[0]=smgduan[IrValue[2]/16] ;
* j) \" z% o( H# k$ t: _0 ^ DisplayData[1]=smgduan[IrValue[2]%16] ;
$ I' q! w' T0 }9 Q# d, [0 R7 A DisplayData[2]=smgduan[16] ;
" z: I7 T: y& l+ P8 c2 M1 D1 g DigDisplay();& N8 x" d, s& v" t5 [
}8 f7 W. [* n1 C* x9 A
}! b: M1 i1 a- _9 m0 ^
' \0 \3 r% H+ V( ^! b2 ^9 P1 Avoid ReadIr() interrupt 0
* `% ?# {9 R/ c! _- {{, Z+ g( G) I, s6 r. i6 K; i
u8 j,k;
! S: D5 B. x6 x3 S( N0 E& g; c! |$ w u16 err;
5 \) G5 F! N0 _( K) i* b } Time=0;+ V: C0 X* E* o4 d T
delay(700);( ?& c% Z0 x: j
if(IRIN==0)/ b( ^4 r- X* m' E# h
{
4 Q3 F+ f1 [) ]% a0 f err=1000;* N, T. N" r, T
while((IRIN==0)&&(err>0))! w# P3 p+ B4 w6 E
{
0 S7 ~& `( n; m delay(1);
1 ^- V, R9 A% L- t' R. l err--;- ^( T7 X! e" S! h
}
0 f+ E% F: s n, l1 V if(IRIN==1)1 F/ ^! h! U& @9 N+ D( B
{. A2 {4 B c1 N* O3 C, X
err=500;+ @$ _# N- e4 y
while((IRIN==1)&&(err>0))
* P2 ], F5 x2 G5 Y {
2 J Q5 N5 F9 D! I9 v, E5 k delay(1);8 T. I% |1 H( w8 M
err--;
+ Q% h+ e8 R$ U, } q& A }, W# e n/ c3 \6 [7 w, y% t
for(k=0;k<4;k++)
3 Q# }# r0 V& o _( T {* P \5 S$ l1 _) M0 d; r1 ^1 y3 N, y
for(j=0;j<8;j++)# p1 j Y4 W) N# n
{
% d# ], r2 F' p. D+ ?* n$ [ err=60;
) \! l5 X N) {7 t) G2 q while((IRIN==0)&&(err>0))0 Y* u0 O' T& f6 O
{2 `; `; [# H# _' A9 m
delay(1);5 [3 Q8 Y8 j4 i& \
err--;0 l3 Z& p) b! ]1 X. K3 \2 R
}
0 g& l( X3 z' T; b3 o err=500;8 ~! X! L' W6 w7 G
while((IRIN==0)&&(err>0))
5 Q1 ]) `: m p, I9 t# o {
2 M- V3 ^/ p+ P1 C6 f delay(10);
# Q2 w: g6 k: d$ W2 s1 L Time++;6 u& k5 _) O) K: y! L/ u
err--;
# z& p# h0 C8 h' J: I! g6 b. B8 V if(Time>30)
6 Y) k Y2 p) x5 n6 s {; }% x2 W4 {$ e& C- m; F
return;
; M2 m$ S/ [' W/ [6 C# y: {6 @ }
: m' M, t. S8 {3 b; F+ x' i" Z }
0 {( g8 g" U; K/ g" U IrValue[k]>>=1;
2 Z6 I7 n& Z0 j4 L if(Time>=8)5 N0 x g9 _( T: F; f( D
{1 b" V4 f0 x6 k3 D
IrValue[k]|=0x80;
' X$ Q; G3 k) z: F }
0 K3 A& h% B9 ^9 U7 o Time=0;
3 P9 u8 u4 z4 V }
7 L3 L' R1 \$ k }
3 F- H4 f' E9 ~6 v& Q. s }$ ?5 D) S* ^2 t/ o
if(IrValue[2]!=~IrValue[3])
1 Z6 a7 M4 K. z, o' T. q {
& ?9 ~/ \9 S# M return;
: H9 H0 r; ~' q2 ]- a }
4 T3 T: m9 `- }& a& x" S }
$ R; e7 m: A# M# C9 g$ a8 A9 Y} 1 p3 x. y; t, y
|
|