|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
电子琴2.C(163): error C187: not an lvalue, P+ m# E: j8 L* X
主程序第一行,不明白为什么会错,咋改,很急,求解
9 g& R9 E) S! b& M* ?8 y, G3 p; k" X+ _2 w8 X8 u7 n: l
#include //调用单片机头文件
2 C& P" C4 g) g6 D0 X#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255! }& |; d3 }- ^1 } C2 V
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
7 P# V" e. E, x. i( r5 K u$ L; E+ B5 K* |* P5 ]7 Q
4 ^. g5 `/ T0 N! z" y9 r***it beep = P1^5; //蜂鸣器定义) o1 t* ^5 W) ]- j q, E
& u4 B3 o% j; b$ m
; \* S7 B& x; E% |
***it K1=P3^2;//音乐播放按键6 e& `" a, _- W! j+ a
uchar flag_en = 0; //开始放歌6 d9 w4 u2 J$ p1 z
uchar flag_i = 0;- e$ v% L+ ^: ^$ t
. L5 B+ p; ^ {; L
- p0 [. o2 a4 I+ w% D2 R7 x0 N
uchar num=0;//初始化num,用于控制数1码管显示的字符* |9 v, A) \0 J4 x5 V9 X5 j
, b. Z! x9 o# F% a6 s4 `
5 J V+ C, |, w! q9 Q& L/ d2 @$ h//数码管段选定义 0 1 2 3 4 5 6 7 8 9
) z+ L9 B# l) @% N* Yuchar code smg_du[]={0x28,0xee,0x34,0xa4,0xe2,0xa1,0x21,0xec,0x20,0xa0,- g% w# O! R) A( [
// A B C D E F 不显示
# k) O: P1 P3 K 0x60,0x23,0x39,0x26,0x31,0x71,0xbf}; //断码 3 q6 l: X4 E0 c1 j( j* Q
# [" O) v2 {* K4 s5 \
& _9 U+ W: u7 d, m3 G
. C: @+ M3 ~4 K& ~" kuchar m,n;
; A4 s2 o* Y4 l% ~+ G0 ]$ }uchar code T[49][2]={{0,0},
/ I" p" R9 j8 z0 H7 Q{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},, p2 z; z% S$ E* u& M
{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},
9 O) r. T5 U' z) j& g2 W3 r{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
3 @2 a4 z X! O{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},+ G, Z, |6 X: a- `6 |
{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},
6 j) o/ P) h+ w" t+ i$ M{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}$ K) r2 c' X9 @0 V! K8 V4 r
};
( |0 s: Z7 F1 l V7 {uchar code music1[][2]={{0,4}, //两只蝴蝶 " x) e! ^! b9 I' y! p
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},# X9 {0 Z! Q; g; O8 C) N0 G6 `
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,24},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{21,24},
; W! v8 F+ N3 i* j' @& q, ~+ ]9 S( G' W4 j. _
8 U! J! o% r0 _$ g, \" K* b
{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},
$ U. D: P7 S5 |- z! j- @{23,4},{26,4},{26,16},{26,4},{28,4},{26,4},{23,24},{21,4},{23,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{16,2},{19,2},{19,24},{0,20},! v: u7 T0 R8 O6 Z% `. N
{26,4},{26,4},{28,4},{31,4},{30,4},{30,4},{28,4},{23,4},{21,4},{21,4},{23,16},{0,4},{23,4},{23,4},{26,4},{28,8},{28,12},{16,4},{23,4},{21,4},
! \' U/ j% v' _0 x" x# L8 |0 d{21,24},{23,4},{26,4},{26,4},{23,4},{26,8},{0,4},{31,8},{30,4},{28,4},{30,4},{23,8},{0,4},{28,4},{28,4},{30,4},{28,4},{26,4},{23,4},{21,8},{23,4},{21,4},{23,4},{26,16},
" v5 q& _- U% {. |4 o7 s7 G{0xFF,0xFF}};
& v' k6 Y' r5 G5 I* O: x; W/ [4 \- q0 |
7 K4 T. b' M) l3 j5 H
7 l9 a; g, J' K3 v W
3 s, I$ }7 s9 X% Fuchar code music2[][2]={{0,4}, //生日快乐
. i) w& q, P) F5 P% |{17,6},{17,2},{19,8},{17,8},{22,8},{21,16},
) B( @, j! C' u+ `/ G6 Z; U g{17,6},{17,2},{19,8},{17,8},{24,8},{22,16},{17,6},{17,2},{29,8},{26,8},{22,8},{21,8},{19,8},{27,6},{27,2},{26,8},{22,8},{24,8},{22,16}, z1 z1 R( r1 }& F- o$ b
{0xFF,0xFF}}; k% n# [- R/ q$ F; a z- x
. h/ Z: K& v' ]! f
' p4 N. S/ Z9 d3 d! B( x9 kuchar code music3[][2]={{0,4}, //爱情买卖" ]# q8 n k- R t* W
{22,4},{22,4},{17,4},{15,4},{15,4},{17,12},
4 n% a# g+ C6 ^" ?: [{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},{0,4},0 {2 y, \& w. }2 I* k
{20,4},{20,4},{20,4},{17,4},{20,4},{20,4},{20,4},{17,4},
; }/ I! X f+ D. q{22,4},{17,4},{17,4},{15,4},{15,4},{17,12},
- W4 u! ^+ `- B& f{22,4},{22,4},{17,4},{15,4},{15,4},{17,12},
4 P- q" F1 |& z5 p( \8 C8 z{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},3 e; G8 F: ?7 \
{20,4},{20,4},{20,2},{17,2},{17,4},{20,4},{20,4},{20,2},{17,2},{17,2},{17,2},8 Y2 T% p7 J7 x5 }1 O8 ]( i, C
{24,4},{20,4},{20,2},{17,2},{17,4},{20,4},{22,12},- U5 x8 B% b/ b: Z) R
{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
( V: j, [' x$ s6 z{24,4},{22,2},{24,2},{22,4},{20,4},{15,4},{17,12},
T& a" h7 S8 z! c& M9 J/ L{15,4},{15,4},{15,4},{10,4},{15,4},{17,4},{20,8},
2 B7 H9 I8 \' ]. U7 v9 i{17,4},{24,4},{24,4},{20,4},{15,4},{17,12},- W7 T6 M, |% w7 I9 C; o2 \- i
{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
3 u# a. ^+ I- O5 J) U! @7 Z7 \{29,4},{27,2},{29,2},{27,4},{25,4},{25,4},{27,12},
6 `+ A9 I$ x! a* Q# J0 y{29,4},{29,2},{27,4},{25,4},{27,6},{27,2},{25,4},{24,4},2 b8 `) L1 u0 y9 v( k
{20,4},{20,2},{17,2},{20,4},{20,2},{22,2},{22,16},
/ c: P7 x& ]+ \9 f- ~7 \{0xFF,0xFF}};
7 `5 D" k; y+ ], G& M; m, Q; Fvoid delay(uchar p)8 P% U6 `& T7 H6 Y
{
1 C2 t' |2 V7 l6 M( k uchar i,j;
( y7 O; j. R' O0 ~4 r4 p for(;p>0;p--)
8 Z9 `& p, H" s8 ~ for(i=181;i>0;i--)3 n+ M( n) [0 R! r# y1 A+ q$ J
for(j=181;j>0;j--);1 w( S6 q. `) E
}- a& P$ m% s& x" r; ^( W
) F$ y% K6 [6 L' t3 O
" q; O) O% V* `$ i* mvoid pause(); c, r# b6 `4 s* E+ m+ g% Z3 S
{
* _8 r2 h( a( _ V uchar i,j;+ V, ^ l; S. H! t' Z5 i9 u
for(i=150;i>0;i--)/ H* W8 \$ D0 j! {
for(j=150;j>0;j--);4 [* N( s3 I) z; L1 N
} e2 h) B# H) h& s
$ ]% ~$ Y; e+ x& _
* V- x3 j4 R1 z+ I2 ^
7 Q( r7 K* e$ s1 K0 a2 k! m' N+ A- z
9 q+ m- ]7 J- N+ u& B" B. t5 M8 _; B/***********************1ms延时函数*****************************/
2 q. D4 u7 `( _2 G2 P Kvoid delay_1ms(uint q)
+ S8 b5 A; g A1 w2 y* j8 `{
0 @- n8 }8 I7 |. w& n( B uint i,j;
, n4 Z8 z' v& b for(i=0;i
9 r% g3 H3 K8 h8 d) l for(j=0;j<120;j++);
; ]) _% g9 B0 }" z- X2 W}
# }' ]$ _% R* A4 c
: e9 w, N' Z" s* D. _
! f; w4 ?% k7 `. R% d3 [6 B/******************按键程序*************************/# C+ A+ A+ T4 e' U* Y: C8 F
uchar key_can; //按键值
3 D7 H# c- A" ^% Q; t " R3 t+ X! [) S U# f
void key() //独立按键程序
9 Z# z O6 {7 u( L$ j( {9 D& k2 y{ p4 u; e! r: f4 k
static uchar key_new = 0, key_l;
; @7 s$ e2 K( L, y( R$ {4 b2 x, { key_can = 20; //按键值还原
9 S W+ N# J& ~( [9 X3 P/ x& { P1 = 0x0f;
$ ~% C9 q k2 _5 p8 c if((P1 & 0x0f) != 0x0f) //按键按下% C. p1 t1 A5 K' h. E3 U2 G9 i
{
1 m/ s* I6 ~" B: j$ D delay_1ms(1); //按键消抖动
8 o7 d& {% m1 n; f7 x% s: I2 d if(((P1 & 0x0f) != 0x0f) && (key_new == 1)); C9 t. a. s: m. q$ V6 n0 D4 {: Q
{ //确认是按键按下/ O. z9 K/ }; C0 H
key_new = 0;
; b; A' h6 L- P) ?+ ] key_l = (P1 | 0x0f); //矩阵键盘扫描* p M9 K7 R6 [% s. F# S% [
P1 = key_l;
7 I' z* s; a* f8 K2 }( _ i switch(P1)7 S& R% W) m/ E# ]( N' N
{ % i3 \) J+ z$ V) ?
case 0xee: key_can = 0; m = 8; TR0 = 1; break; //得到按键值 //打开定时器
" X: |# v7 i0 F case 0xde: key_can = 1; m = 9; TR0 = 1; break; //得到按键值 # ]& `% c* K, m0 e
case 0xbe: key_can = 2; m = 10; TR0 = 1; break; //得到按键值
4 f9 M* ?2 q% B. m5 q) J, h0 ], F: S case 0x7e: key_can = 3; m = 11; TR0 = 1; break; //得到按键值
% m( f9 A8 b! n6 F, U4 E4 R 3 G$ k* Z- }4 ?2 t |+ i
case 0xed: key_can = 4; m = 12; TR0 = 1; break; //得到按键值
# ?( ~! N8 S% G9 l4 `* C case 0xdd: key_can = 5; m = 13; TR0 = 1; break; //得到按键值 - g) O) W1 {! d1 M; d7 `: H
case 0xbd: key_can = 6; m = 14; TR0 = 1; break; //得到按键值 / Q5 i6 y. p: t" z( p& n+ k0 ] u
case 0x7d: key_can = 7; m = 15; TR0 = 1; break; //得到按键值
( C" B5 M8 Y0 M$ k3 ~ ; R9 C/ o" D0 M8 p( q* ^2 {
case 0xeb: key_can = 8; m = 16; TR0 = 1; break; //得到按键值
8 I, ?8 X3 P4 o# o! x3 a' w W4 O! A case 0xdb: key_can = 9; m = 17; TR0 = 1; break; //得到按键值 # j" O! q9 j: k
case 0xbb: key_can = 10; m = 18; TR0 = 1; break; //得到按键值 . Q, r% P! ?, D7 ?/ j# M( j) j
case 0x7b: key_can = 11; m = 19; TR0 = 1; break; //得到按键值
% t7 T5 T0 r. O# ~: ]0 }' a 0 {% v# d( f$ N6 G8 Z# y: t1 b8 r
case 0xe7: key_can = 12; m = 20; TR0 = 1; break; //得到按键值 # I- I1 _5 |9 V/ O" c/ R2 Q
case 0xd7: key_can = 13; m = 21; TR0 = 1; break; //得到按键值
0 o. a( E' A- y case 0xb7: key_can = 14; m = 22; TR0 = 1; break; //得到按键值
- G1 b5 @9 [6 b' `. x6 M case 0x77: key_can = 15; m = 23; TR0 = 1; break; //得到按键值 " J- N( }6 Q8 C" l" w
}
1 o% Y: A0 q5 `6 q) L) i j- x0 c1 f P0 = smg_du[key_can]; //显示
9 B; ?( S7 c2 Q0 Z8 Y while(P1 != 0x0f)7 `. V$ B5 `/ w* ?% F( j
P1 = 0x0f;
1 F. m1 J+ d' P: _+ `! ?; G TR0 = 0; //关闭定时器) m; m. t: f/ _
}
$ y L; W1 B$ ^( r; H4 d6 j) w' V$ N } Q, M: p7 q5 i1 _: C
else //按键松开9 U) R4 e6 k0 l$ B0 ?" [
{
" j* V- {4 c f, x' | P0 = 0xdf; //显示小数点: t/ `8 \# U9 Z" [$ D
key_new = 1;
- h9 h- \- s! l" K) @ }
- v% Z9 k' _; E* `- [" r7 m H6 H8 E+ e- s. ~: d
! l/ f/ w- q. m8 W2 J/ j$ X
/*********************歌曲播放*********************// c2 F e# ?3 J- Z4 \" N: U `
K1=1 ;- t! t, I/ }, b4 F8 u+ t
if(K1==0)
! i/ b% s1 F5 `" C$ d) B6 j% | {' { O8 N# `. N5 U
delay_1ms(10); //按键去抖动1 C: N k, [" z9 @, Y( {
if(K1==0)
2 n; D: ~" B' A {
% U% d6 h/ m3 i6 t' D num=8;
% ?+ _: T- O- e6 `. l- K// P1=smg_du[num];//使数码管显示该音调的字符5 x: y( Z- n4 ^3 X( l1 u
flag_en ++;
" i) n) h& S1 i) |$ f' I, L flag_i = 0;
! T, E) n: I b# Q4 W& C6 C" P% v if(flag_en > 3)1 [* R9 l; W/ K4 L
{. T. l4 q7 P1 ^* u
flag_en = 0; $ G( ? C0 x# I1 c* P
TR0 = 0;
% r" `' z) c2 @0 q6 T" L } ( r0 G9 |1 p. [8 ^' a! x/ k
while(!K1)
7 G2 Y ~+ {: o/ x. P; {; m5 k {9 [ U# _# {5 w0 }1 c0 u7 V0 d
}//使蜂鸣器发出相应频率的声音;
5 y/ J4 w7 ]5 ?0 h }' A: }/ [' C) c0 _6 Z' c4 f. r) F
}
5 c1 R4 w/ ~* i. c. `& Y% H8 }}$ O- u4 K( i) I4 ?
# W3 n8 d5 Z/ G7 S; G( R+ Q( t2 Q/ _ M% X ]8 C
; ~: m' B" R% q! g$ W' a+ e
, [: A1 V) `# ]9 b( p/******************主程序**********************/
5 m0 m0 M- }" k9 ~2 |. W" y! P' Jvoid main()
4 E8 _5 f: N) Q5 p1 R( Y5 H- Z{ 5*++++++++++++++++
( \; @% p. O. w P0=P3=P2=P1=0xff;
) g: w u0 X n1 n" Q
) E" X6 ~/ B9 q TMOD=0x01; EA=1; ET0=1; //定时器0初始化) y0 `9 L! h0 @- p* g: W. ~( {
while(1)7 x1 I3 s- i- D& c& z" p
{
3 }+ e$ q6 E3 b- ?" @1 h6 X P0 = 0xdf; //显示小数点- @- t& B, G* n, W0 ?
key(); //按键程序0 {2 K6 M3 u7 F: Y2 K
if(flag_en == 1) //爱情买卖# D: r+ x0 p, T3 J& [8 h+ o( A( z
{
) b* i/ p( }# K( y/ T& X m=music1[flag_i][0];n=music1[flag_i][1]; //放歌 / Z9 j0 V1 Z* |! \7 `" d' { ]
P0 = smg_du[m % 16]; //显示) L! }# r3 l/ D/ j# q
if(m==0x00)
B( L* J+ M0 o( z/ b7 p6 \; Q {1 H, A z6 ]) Z z3 W' s1 O8 L
TR0=0;
& J9 d! [: f1 {; }. F2 j beep = 1;
6 n: a- t. u8 B5 n3 f& G delay(n);
1 j! q, c# B5 I% Q flag_i++;% ^; Y u. {+ }9 h; a8 V# t
}
7 N8 Z7 ]# [! Q3 e* i else if(m==0xFF) //放歌结束! Q! n+ }' Q, v2 m, \6 A' {$ Z
{3 ~" I% ^$ `! Z/ B/ m1 o, N
TR0=0;beep = 1;delay(30);flag_i=0;flag_en = 0;}
8 a; t0 B1 e' j/ Y8 m else if(m==music1[flag_i+1][0]) 9 s% ^# W; I7 \9 E
{TR0=1;delay(n);TR0=0;beep = 1;pause();flag_i++; }
' @; N; @, H M' h else ; R1 d0 X8 l i/ @/ q
{TR0=1;delay(n);flag_i++;}
# h& L5 B8 d/ U }; B2 x8 Q. ^$ o9 w( g/ d
else
+ Y% T( b8 m1 V [ beep = 1 ;
K! K; m2 V% f1 E; X, K
: t. }7 r8 X+ ]- E1 K- o9 T6 h( B
5 N6 i7 t+ P3 C; w if(flag_en == 2) //生日歌
/ H6 M+ X* g: K7 U {# e% t* r2 b O4 [7 k: B
m=music2[flag_i][0];n=music2[flag_i][1]; //放歌 7 \7 S& j7 p" l- m$ K5 ?0 I# x: c4 h
P0 = smg_du[m % 16]; //显示
' M5 t: _+ Z9 w$ T; @ if(m==0x00)! a: T# t! U2 N! V' ^- _
{
9 S. r- u. w8 r3 O TR0=0;6 q0 O* k6 j4 o+ E! d
beep = 1;
3 W# V- Z7 G- m delay(n);+ Z% X7 X5 S9 h" J0 I
flag_i++;
% U7 q2 N. u) X! g- V3 q- F* ? } & ]- J9 g+ u6 c! c' x
else if(m==0xFF) //放歌结束
" v) J& V/ d! p R6 F {
* [3 o; r# O5 g/ H7 l3 ~0 ^ TR0=0;beep = 1;delay(30);flag_i=0;flag_en = 0;}
+ j0 Y; {) P: D% r" Y, q, a else if(m==music2[flag_i+1][0])
+ |7 d2 M4 k8 Q' E- W; V {TR0=1;delay(n);TR0=0;beep = 1;pause();flag_i++; }
$ L* c7 p4 j5 q else
0 Q, P7 A, j: w+ x% @ {TR0=1;delay(n);flag_i++;}
7 \5 V3 M4 J: H5 d2 g0 [ }
3 x9 b3 P, i8 V5 v: T0 g/ n( ? else ' C1 |; I ^) `( S
beep = 1 ;
^* g+ r, z; z$ `! l$ E- f( y) q1 q
5 |& v1 R# C4 w+ ?4 Y ~1 e( W5 Z A# Z0 D' w* D
if(flag_en == 3) //新年好, d! p# p; X( R$ H
{. q X& M! e4 q p
m=music3[flag_i][0];n=music3[flag_i][1]; //放歌 ' i9 ~& ?% R. T
P0 = smg_du[m % 16]; //显示
9 l3 o' x+ J7 F- Q if(m==0x00); s; G8 m4 H4 X, W
{
4 h( }6 [* c/ O+ e! E/ ~ TR0=0;
p% Y+ j& N: s beep = 1;$ o* m( S" J5 w0 ]8 A9 t
delay(n);
. J1 ?; ?5 T/ Q flag_i++;3 M! [3 A/ c, q' {4 e
} ' _. `5 S0 X4 c4 I
else if(m==0xFF) //放歌结束% W- j( N/ G, T) ?, m6 s
{
' Z2 H- D: a4 D! @ TR0=0;beep = 1;delay(30);flag_i=0;flag_en = 0;} 6 r( L* J+ q* N+ g! l$ [9 x! U5 \2 }
else if(m==music3[flag_i+1][0])
$ _8 R$ j' e" @! ]- L {TR0=1;delay(n);TR0=0;beep = 1;pause();flag_i++; }
X* J8 P) ]2 A: x2 h7 N8 f' c+ h9 R else9 U& O; V n, G+ S3 b0 V u, K
{TR0=1;delay(n);flag_i++;}8 B; T Z7 F! |0 O4 x0 T0 m
}
0 f9 D/ R1 ], w1 ? else : d4 q7 {7 v7 O3 H* F
beep = 1 ;( r$ s) Y+ M* p. I- y
}& U) f) e& \: s; r5 L5 \
}1 I7 U F& Y9 T. f T: F# Q1 w
) k# b& c( l+ m" }& `5 s! q
! }3 ~9 F l* I6 d/*****************定时器0中断*********************/
! D# R* u$ s) q- J/ N, w& ]6 Gvoid T0_int() interrupt 1
) Q- x( ]' r1 p{
+ o& P: p' H! x beep=!beep;
$ T0 @. R9 _1 @1 `) Z TH0=T[m][0];
/ T/ W) n9 V5 {" g TL0=T[m][1];& e( h5 Z( w( d3 J
}
; A5 D" c6 \0 M, o% B& h |
|