TA的每日心情 | 难过 2019-11-20 15:02 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
提取单片机遥控器的控制码,但无论按那个键,控制码始终是0x008 l! o _! K& ?7 S4 X; w8 [. e
+ F1 p4 u$ [ T0 x6 U- H#include "reg52.h" e; ~6 _$ T& g+ M
typedef unsigned char u8;
8 n5 u# }: c" S. z! T. stypedef unsigned int u16;
! @5 E5 C" z9 n/ D# \& k1 ], e* J m' W) L% z
sbit LSA=P2^2;
! T ]" Z( M" Ksbit LSB=P2^3;
7 p" L" b8 o! m0 jsbit LSC=P2^4;
5 q5 }3 K5 X% L* b( X& \, I* U0 Wsbit IRIN=P3^2; //这是红外线接收口
& t- K8 f X4 O! c( {$ ?3 j' W+ y8 c& P$ a7 r
u8 IrValue[6]; //这里存储的是遥控器发过来的数码! I3 T9 Y# J4 P" F k) P- J( l8 n
u8 time;( O9 b- e8 F+ @- H9 ~( c
u8 displayData[8];
/ U) V# {; O% `4 W4 q$ {u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};
! g) ]! H1 }. k+ G Q. ]# x
/ e8 d# W0 v" h3 @# B, @3 t4 sdelay(u16 i)& C' k; w3 e, K, j& d% I% d
{
/ a% Z8 p; L9 L2 J while(i--);
/ |; g3 P6 Q* P: [" B}
& r0 _" b% ~& [% P- e* ]
" ?+ x; D( T6 N6 T) M6 {! l4 nvoid DigDisplay()
2 Z- V" U; |$ t# m/ P9 T3 Q+ y$ ~{
- [% k2 c) t4 j4 w u8 i;; r( o' k# h" f2 S: W& R
for(i=0;i<3;i++)! L8 p6 L& o. e2 q/ X
{
V. \' R) X1 A9 ?8 z' O switch(i)0 f7 G/ [2 W/ ?: @
{9 Y! @6 @0 y" G/ V; t& r
case(0): LSA=1;LSB=1;LSC=1;break;$ d, d+ E' r; h" [* D! q
case(1): LSA=0;LSB=1;LSC=1;break;, v Z6 ~0 q7 W. q7 f6 |
case(2): LSA=1;LSB=0;LSC=1;break;- \% W% U6 Z3 ]9 U7 y
}
, p% d% l, W1 }: j$ j P0=DisplayData;0 H" u8 i6 p3 m
delay(100);# `. U8 q1 |# N: Y" }
P0=0x00;
: H! |4 O8 i/ A m1 ^/ N }% G$ x6 l: |7 I6 r9 J
}
C! {2 E0 c0 W0 j) @$ i
- p! s& S5 ?$ r5 x+ Fvoid IrInit()# }2 f0 I& j8 U/ x! e+ L, g
{
( R1 x8 X) G1 ]+ y% J IT0=1;: ]" H/ ^% `" R( i
EX0=1;& Q6 K" q: Y6 b6 w) N0 }% C
EA=1;
& P5 m$ Q0 O1 M3 x3 a' [: k IRIN=1;
& S1 U8 I3 V' U L' l. a( S4 u}4 L! H5 _! i* e* G# b9 s
l+ {. ?7 r- i7 A7 a: L
void main()9 c& Z% B. e' E
{ - D/ E$ {6 S- f
IrInit();
/ F* I S5 R f& e7 s while(1)
# d, K: g3 Z. Q! `7 \ { 8 i& b% f- f5 Y3 L# ?8 Y! `: q3 R
DisplayData[0]=smgduan[IrValue[2]/16] ;
1 M4 i4 ~# N+ w DisplayData[1]=smgduan[IrValue[2]%16] ;
, U) [# ]1 b: C/ ^+ { DisplayData[2]=smgduan[16] ;
4 O2 c3 D$ s$ l% o DigDisplay();* V! I+ _# `% r5 M% W
}' Q1 C1 J8 G. `8 [& [( C
}4 j8 Y1 v) A Z
1 G: C9 S0 B$ ?! ?void ReadIr() interrupt 0
0 Z9 J% }( T% z1 h{* G/ O" _, o" g
u8 j,k;# @1 | p! h; N" V' T) ^- _
u16 err;5 G) ?7 h0 [/ ~3 t6 B+ j
Time=0;1 ~ r+ p0 |: _: |( g
delay(700);- `7 q/ I' _. S# @+ k, x
if(IRIN==0)# U8 z( ~) [0 C
{) e9 l# ^7 o8 J, q2 @2 W
err=1000;
6 c1 J( y% K# ~" k! n while((IRIN==0)&&(err>0))9 x# [+ h2 o7 v: g; ~
{
+ n5 M1 z0 X; z$ r9 V0 F8 B O" y delay(1); `" _+ u7 y6 O5 [$ a* y) W
err--;
& j3 @1 q" i+ U6 l. s: z- { }# V! ?5 [$ Q0 h5 y
if(IRIN==1)- L! h2 w- y# v1 }
{0 G/ h) |+ [! K6 q) P" P
err=500;
& _7 g+ j0 W. o+ y& e3 u: C! Z while((IRIN==1)&&(err>0))
( c3 a+ ?+ ~, g6 f {
9 k& h6 H& N, ~ delay(1); x( Y5 [% u& S9 t
err--;
- b9 I( {- F. k }# u7 N( ?* P H2 B
for(k=0;k<4;k++)
& c: `) w) J' k$ i# h( P0 v+ i {. T- L" L3 v5 U6 y& ]
for(j=0;j<8;j++)
+ @9 ^1 y% {% ]9 C {
, w# W) d$ k: w4 D6 E$ B2 ~ err=60;+ Y+ k3 x- y' v2 I: I
while((IRIN==0)&&(err>0))
A. I H) O1 b3 F7 T {1 h3 y+ Y. F6 [: B# d" S
delay(1);
; D* J5 _) T+ u' Y err--;
9 d, m0 d, _+ @ }
0 C" ^8 o y9 X3 U0 L err=500;
% j: |: E+ k8 u- B while((IRIN==0)&&(err>0))
1 F: t; ~. x' a* @/ E! d) x { R# \7 f7 J$ c7 O9 L( M( `
delay(10);1 V2 k9 D! U8 \0 d6 R
Time++;
- X! M+ R( y, ?- s* v err--;" u9 E% N/ f9 d% X& g' }! B
if(Time>30), o! N+ A; g. T$ @6 @
{5 V& _( I- a7 Y/ h- w
return;& `' p5 p$ v' z* _/ i3 K- ]8 [1 ^
}: \* l6 J3 I; v# \
}- ^( l) }" F% j) H5 [. z
IrValue[k]>>=1;% y {: v- D5 r+ P9 ^$ d2 S
if(Time>=8)
$ d9 L6 v+ A1 C0 P) P: X {& R& X0 @( i k! p, y! _6 v1 i
IrValue[k]|=0x80;* i$ i, b7 b& g
}
+ ] o" @, N$ i/ p) p Time=0;' p& t2 K) \* `) e7 L
}! T, _+ }& @% X
}
& g0 S( N# m3 V( V( Z4 ^ }1 O% I0 [. H1 I8 A3 Q* u
if(IrValue[2]!=~IrValue[3])
! n, S9 a% s4 D# m( u {# f* J2 ]6 r% A6 O8 C. f" u( F
return;
G" l1 q/ K' k } 2 g2 K) N: U; {1 h$ ^ N3 Q
}- Q6 r% Q* c4 g
}
" { p' |/ A0 z |
|