|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
电子琴2.C(163): error C187: not an lvalue
6 }4 V# H' @; g7 U: G4 b0 A4 X3 h主程序第一行,不明白为什么会错,咋改,很急,求解
; E' P( B! C7 r7 y# Y3 V8 m, U N/ ]/ x7 X9 T( M1 \
#include //调用单片机头文件1 ^4 @. c2 Y- U7 D9 [0 z$ C
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255* e' M5 ]7 {) c% [6 |' m2 X1 y
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
% d; e" ~$ I- Y7 p' u" W2 w! @* p) ~+ T, j/ i7 @6 t9 E
% E2 o0 s5 [# g6 ~; ?
***it beep = P1^5; //蜂鸣器定义
7 ]6 D' J! B, Z g/ ]9 R' {. {
1 G, K* ~4 W4 T; [( \( D& Q) l1 |% K2 t4 V/ b6 x7 U. @0 S! U/ t
***it K1=P3^2;//音乐播放按键) h, r( m. w# C0 x' j+ o4 T8 v
uchar flag_en = 0; //开始放歌) ]4 I$ \( w7 M
uchar flag_i = 0;
+ G, T/ [: E: i" C4 i; ?
- H6 u5 G4 \1 y4 n) B8 X# ?7 L6 ^0 S/ m) S+ V
uchar num=0;//初始化num,用于控制数1码管显示的字符+ y: b9 g7 S% g: D8 y
: p# l H2 ^; ~9 r$ e, D' P9 u; ?* |4 B! E+ f3 O
//数码管段选定义 0 1 2 3 4 5 6 7 8 9
2 w |6 l! W g" j" n+ _) F9 puchar code smg_du[]={0x28,0xee,0x34,0xa4,0xe2,0xa1,0x21,0xec,0x20,0xa0,
, s s$ t' P0 q( _7 m// A B C D E F 不显示
% V9 \" F( i9 P& S/ [8 i2 | 0x60,0x23,0x39,0x26,0x31,0x71,0xbf}; //断码
8 C0 k0 W3 q# p$ U! }' s6 ~0 C 5 y2 O, M, {5 Z& B3 s
& O* n3 A# @ e+ [' J# Z& @6 I o$ q( z
. F# e. E$ A$ \* P6 `+ |uchar m,n;
7 j2 c5 k% H1 r: m" c6 Ouchar code T[49][2]={{0,0},! f/ S: m: R0 C8 c6 q+ n
{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},
- H. t9 {* d: ]" e" r% n{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},) D4 ~* R. X. {# ~, a- y3 }
{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
5 I% N9 V4 Q: X/ ~: q8 b{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},
# t& H5 ^7 ^6 K3 w( G& P{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},
8 H6 {5 N& y" B) R7 m8 G0 ^$ A{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}" r- _+ d; A4 Q2 \9 v) ^
};" t8 P% G: k+ M M& i. y2 H. `
uchar code music1[][2]={{0,4}, //两只蝴蝶
+ {3 l& D% ?- X" \) `" j{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},
" e$ z9 Y5 d' J{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. C5 `3 O: m+ f) Y
; ^" g4 d8 K9 n
, O4 M- s2 L' n$ R/ T& I/ {{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},: H# [# Q" r: J3 @ t# {
{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},; i! G4 f+ _/ I; Q4 I
{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},
- n2 Y" y b/ Q0 E3 y% C# \/ a{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},( F7 m6 Q! g. k$ K' F. ]
{0xFF,0xFF}};. [3 C% w" K* D
) f0 R4 G8 |9 B0 `$ s9 f
( A; W" z9 K% g. @/ R# E9 g/ R3 O* u1 F k& R S' n+ O
+ v" V- [$ c+ E- Wuchar code music2[][2]={{0,4}, //生日快乐% J6 ^! [. N" I5 B
{17,6},{17,2},{19,8},{17,8},{22,8},{21,16},# R* Z% `. d/ @ u
{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},
8 c+ S8 V) _( S* a' ?{0xFF,0xFF}};- T1 a; V+ r4 E' q+ d: _
P! D. B+ {- a8 p' I
0 m% q6 s+ F: o! ^3 ?3 M
uchar code music3[][2]={{0,4}, //爱情买卖
+ ]8 u( B( C$ J& x$ P& T{22,4},{22,4},{17,4},{15,4},{15,4},{17,12},9 z5 Q( K4 `$ b6 N. F' E1 j& ~9 \
{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},{0,4},
2 U0 D" |; |" u M2 h) ]{20,4},{20,4},{20,4},{17,4},{20,4},{20,4},{20,4},{17,4},. }& l- ]$ e' G Y
{22,4},{17,4},{17,4},{15,4},{15,4},{17,12},
. U/ V" g$ E9 f- j7 I{22,4},{22,4},{17,4},{15,4},{15,4},{17,12},4 F+ }8 x& r, [" t8 W6 H. S
{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},
5 n7 ]; S: a3 R$ L" W6 V6 H* L{20,4},{20,4},{20,2},{17,2},{17,4},{20,4},{20,4},{20,2},{17,2},{17,2},{17,2},7 b9 a: `! L5 C& t; X4 u& B
{24,4},{20,4},{20,2},{17,2},{17,4},{20,4},{22,12},
$ k% M" q1 N: Q2 ^/ R- J$ a{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
5 k* S3 g( w/ E4 q- P- J{24,4},{22,2},{24,2},{22,4},{20,4},{15,4},{17,12},: k3 V) s" ?" _4 z, @
{15,4},{15,4},{15,4},{10,4},{15,4},{17,4},{20,8},
- L+ g2 q9 b0 t! s{17,4},{24,4},{24,4},{20,4},{15,4},{17,12},2 ^! Q4 T) b2 V `
{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},5 W( c* P- ~5 E4 o. u7 w
{29,4},{27,2},{29,2},{27,4},{25,4},{25,4},{27,12},
& N e i5 A# s7 k{29,4},{29,2},{27,4},{25,4},{27,6},{27,2},{25,4},{24,4},
; T! j2 g* m- n& U8 z. h, o' ?{20,4},{20,2},{17,2},{20,4},{20,2},{22,2},{22,16},# `# @# K" u9 r0 [' ^2 s
{0xFF,0xFF}};9 T7 M- {$ A- t7 r- T2 X4 U
void delay(uchar p)6 C. t- ~: \6 k7 k$ w* A( L: X
{/ r7 O, Z- F* `9 e
uchar i,j; % U3 A+ f) ~& |- y1 U( u
for(;p>0;p--)
/ I+ O8 [: K% i- s- s- N for(i=181;i>0;i--)8 ], h$ B$ O( n1 H6 R
for(j=181;j>0;j--);
j0 }! I Q* k# N$ [9 c}
/ O- O, s! e h4 u2 H3 k5 k2 O. T" |7 Y( i9 E. B. t- a8 L: Y
( e5 x( r) C9 m5 T- Z! _+ Qvoid pause()# a2 e% s0 ]) u7 q, r7 |0 y
{
( v- u+ P+ V4 ?' r$ u uchar i,j;2 L" t& @) F1 D) S( ?4 G9 z5 V
for(i=150;i>0;i--)
8 `& Q* B7 X/ b$ a7 i for(j=150;j>0;j--);! O v% m4 C( G3 N% O
}) a) i4 |6 P2 C, v' L
: F% Q3 d: k( Y9 Y0 l
6 d f" O' k7 i0 U7 t. ^5 W: N
9 }9 D# q" R f) Z
* J9 _5 I% T9 @) B/***********************1ms延时函数*****************************/+ y9 ~- _& I8 `
void delay_1ms(uint q)
' `6 k- o+ I& \7 [{8 e4 b4 L3 K- W: s# r1 g5 G8 R+ o
uint i,j;* E+ m' A$ p- u t
for(i=0;i9 B6 Y; y* S+ r- E0 z0 V
for(j=0;j<120;j++);) y- R* k" ?; R0 t
}
: R; j, U: o+ M& N, a2 ^+ j% W1 p' ?+ i _; I; ?
0 a3 Q. T2 [1 z8 N% N0 {) [
/******************按键程序*************************/9 l8 T) ~' Z0 Z- A: [" p2 t/ x
uchar key_can; //按键值( x' [ }7 z( L- R7 E& [
9 m0 z5 \+ x3 Z6 Z& {* qvoid key() //独立按键程序2 S0 p6 @% y) L% P% {
{+ }! F9 L, Z( U2 R& n% `0 N
static uchar key_new = 0, key_l;
4 U5 M+ j: h( [: _' O key_can = 20; //按键值还原
5 d9 z( a9 {: Q4 c- ~% l5 T9 ~ P1 = 0x0f;
& k) d! L+ Q# o( p3 u# ] if((P1 & 0x0f) != 0x0f) //按键按下
1 v, P1 h' D+ W1 u% ~- s- T {, J- k3 v5 O- p
delay_1ms(1); //按键消抖动
4 O% Q: x! g4 k& J) L if(((P1 & 0x0f) != 0x0f) && (key_new == 1))2 k! p! U" [8 }
{ //确认是按键按下5 x5 o% `% M8 Q- F t# F j
key_new = 0;
2 f7 a, |5 F, M9 }. k key_l = (P1 | 0x0f); //矩阵键盘扫描
) i, T" ?+ ~' k: o3 a4 i8 I" U0 Y P1 = key_l;
$ K0 s' H( `0 _ switch(P1)5 M/ D6 |. {# T7 k$ g
{ # i- k! I8 B8 M
case 0xee: key_can = 0; m = 8; TR0 = 1; break; //得到按键值 //打开定时器 3 Z4 { n3 i* j. b2 q7 _# ~$ t
case 0xde: key_can = 1; m = 9; TR0 = 1; break; //得到按键值 ' ?1 y, E+ p0 H' ]
case 0xbe: key_can = 2; m = 10; TR0 = 1; break; //得到按键值 4 o9 t2 W+ a T
case 0x7e: key_can = 3; m = 11; TR0 = 1; break; //得到按键值
! \6 v( |# v2 X ]) \% {0 j' @! _1 S 7 ^& ~# c2 a" }+ O/ x9 O+ G
case 0xed: key_can = 4; m = 12; TR0 = 1; break; //得到按键值
- }9 f! I! a. t) T# ^' B: g( Z Q* D5 h case 0xdd: key_can = 5; m = 13; TR0 = 1; break; //得到按键值
$ {9 H. m6 j" u1 g case 0xbd: key_can = 6; m = 14; TR0 = 1; break; //得到按键值
6 E3 h4 R$ J0 V" r1 {/ ] case 0x7d: key_can = 7; m = 15; TR0 = 1; break; //得到按键值
1 c c' ^3 U- {' C& [
+ }+ O3 p& q% }& o; w! K case 0xeb: key_can = 8; m = 16; TR0 = 1; break; //得到按键值
9 H2 M* Z$ C6 N% K0 _; L case 0xdb: key_can = 9; m = 17; TR0 = 1; break; //得到按键值 % m! ?& a& a. B4 B: j. A/ r; O
case 0xbb: key_can = 10; m = 18; TR0 = 1; break; //得到按键值 ; \1 r$ P! |6 k
case 0x7b: key_can = 11; m = 19; TR0 = 1; break; //得到按键值 F' B3 ?# H1 e) m- r& V) @3 w, ]
4 u+ s: K% v1 G0 r
case 0xe7: key_can = 12; m = 20; TR0 = 1; break; //得到按键值
* i' H0 q# ~) |3 m9 t case 0xd7: key_can = 13; m = 21; TR0 = 1; break; //得到按键值 ; ?' }) d9 { c2 o5 u
case 0xb7: key_can = 14; m = 22; TR0 = 1; break; //得到按键值
# q+ G' E$ i8 c/ e5 E case 0x77: key_can = 15; m = 23; TR0 = 1; break; //得到按键值
+ E& Q4 R6 J# b- C } ! h; U2 G5 U7 f- v+ U
P0 = smg_du[key_can]; //显示
9 W) U# d% K. ]: @% X- U4 c while(P1 != 0x0f)% ? A# r+ T3 W
P1 = 0x0f;
2 y" F+ W7 ~6 g6 \ TR0 = 0; //关闭定时器
6 I( s" |% _& P/ x. @) v } # @: V+ h8 T5 J0 ^' n' k
}& n6 R6 `% x: i6 |1 m
else //按键松开2 N$ y: a1 `+ q. |
{" Q( B1 M# i' |5 P6 R' c
P0 = 0xdf; //显示小数点/ r( k- D) e) R5 E4 ]) e4 V
key_new = 1; ' G* L8 {' \* m( a
}0 M+ C' a" M i6 ?& c5 b
( g' ]" r) R" L* g$ R
: ~2 O8 d) r. a4 ?% U! u/*********************歌曲播放*********************/
6 S$ b% d4 n& v# ] K1=1 ;
, x5 J0 x6 ]. _# X3 }+ ^ ~ if(K1==0)
) h U; _/ L+ A8 j( ] {0 |, m4 R$ j Q3 R2 z
delay_1ms(10); //按键去抖动
5 X, l' b5 t8 c1 X& X+ j Y3 N% E if(K1==0)- [! S, {) A* F- p, h* b$ Q6 ]
{
" d+ S8 x5 a& E$ m% ` num=8;/ Z$ a. s; J5 p: V/ M, o" N- F# q' w: N
// P1=smg_du[num];//使数码管显示该音调的字符5 l( e8 `" f! \# ^% R- A
flag_en ++;2 t5 V O9 q6 l
flag_i = 0;) Z7 L1 C9 Q J2 ^( ?6 R1 o
if(flag_en > 3)6 Q y! R6 s! h* k) p
{& ?/ v7 m2 t, R) {7 H W/ o
flag_en = 0;
2 {& B2 [+ ~, t. a5 M C TR0 = 0;8 s6 A, Z6 Q* ^. w
} % M% }8 {( {0 a1 d
while(!K1)7 ?# @8 d1 T5 S$ |) X/ ?. d
{
( Q3 g4 j1 H7 ? z2 F O! q }//使蜂鸣器发出相应频率的声音;+ j9 H% L$ N- ?
}
3 G# |) M" F8 { X, T" R5 ^ }' G) _0 B% V* i; u) J) c
}
+ ~3 k1 k2 q1 g7 ~: y$ F: g$ @; t% d
& f1 s% t' a) @7 P5 ^9 v o, ]) Q6 r0 P- E
' L: o% k \, b/ y2 R( r) b
/******************主程序**********************/
% H" Q6 o: F+ ]. D# \7 L! lvoid main()- z* A6 _. u- M
{ 5*++++++++++++++++
- ]/ l0 | p# u! ]* @: g1 `% t P0=P3=P2=P1=0xff;/ M! |- ~: a# X- X, m
- f0 o1 S$ a5 s+ |! V& J2 @, F TMOD=0x01; EA=1; ET0=1; //定时器0初始化- `. V4 w1 X9 q
while(1); I: S. d# y+ z
{
' M# U% T0 d4 R' ^4 d; i P0 = 0xdf; //显示小数点
0 W% c8 E9 y% K key(); //按键程序+ G& t5 s5 N0 [- N% V
if(flag_en == 1) //爱情买卖
" y% R8 N- t! k* v' X {. z5 ^8 \5 b' g5 G
m=music1[flag_i][0];n=music1[flag_i][1]; //放歌 ) p- D. b( G ]- y
P0 = smg_du[m % 16]; //显示
4 \$ i4 ]8 ]/ B3 O' M if(m==0x00)
" i4 g( h& p1 P. I+ ^# R {$ m( |# @, l4 o( ?5 e- a+ \# q
TR0=0;
( {% p6 _& {6 S. o/ C beep = 1;5 t% q) Q4 O* i( U% w3 z
delay(n);& u/ j) P+ I. P/ \$ A# |
flag_i++;
0 ~% @5 G) |" j0 h7 Q6 y* {( l } 8 r' m- {3 I# r$ G, K0 k1 ?# m7 ?+ E1 u
else if(m==0xFF) //放歌结束$ J) P# h+ D9 D: H1 L
{
( i, r) Y- k2 ?: ~) v TR0=0;beep = 1;delay(30);flag_i=0;flag_en = 0;} $ i. q D9 |3 t8 g4 _) U
else if(m==music1[flag_i+1][0])
" I. l" y, ^- j6 \1 ?& R {TR0=1;delay(n);TR0=0;beep = 1;pause();flag_i++; }
% W Z) G% y9 l2 `5 Q* w! T else 1 ` h! m( k" G8 {6 E, @1 u
{TR0=1;delay(n);flag_i++;}) U# \, b5 p) H' g3 l( |
}
; {. ^; N1 x" D5 L7 ~, C else
. N2 J3 ^$ n. q d6 z9 a5 W% h beep = 1 ;
; q" j8 E% v2 X& x/ m" Y, A& b3 m# t1 l- b% R& \: m0 x
4 Q' }6 K9 m" ]- K& Y0 {$ }4 _1 V if(flag_en == 2) //生日歌! i9 v3 K+ D% L: u
{% r* _. b! X) M3 S8 n( @5 t: `
m=music2[flag_i][0];n=music2[flag_i][1]; //放歌 0 s, S: M |7 a% ~/ Y
P0 = smg_du[m % 16]; //显示" g1 j% Q! W1 Y# k8 H
if(m==0x00)
5 U) }3 y: ^/ i u: z {
' P4 v: @- X# c3 V3 I0 j) w TR0=0;
( q2 j9 |5 f3 q: Y3 S. F+ O- h- K beep = 1;$ [; h8 G# }4 w: Q7 m
delay(n);
2 ~" |) D: }( U* c) X4 c0 M flag_i++;3 d; b* j7 ^8 M0 u- U9 ?
}
( m& ]6 @+ {% j: ^! d1 V+ q else if(m==0xFF) //放歌结束, x2 S) \) i4 N( ?8 E2 ~3 N+ Q
{
- _( `( I# E- b3 U TR0=0;beep = 1;delay(30);flag_i=0;flag_en = 0;}
: w7 v3 n) a4 j else if(m==music2[flag_i+1][0]) % S, Z7 ]" w, _' y s* N0 `
{TR0=1;delay(n);TR0=0;beep = 1;pause();flag_i++; }
- k: z6 @! [+ I5 Q8 z. M0 B3 v else
9 @$ z: `, W2 p f {TR0=1;delay(n);flag_i++;}3 g1 C; I; l: N% J7 H* G% F, b+ _
}
2 Z* w& S0 D6 m/ \) X else # L3 P7 [. {0 l4 C* c
beep = 1 ;
3 ~" k; F8 q7 S0 W2 k3 s1 |: ` Z+ S$ t+ }
$ R b, ]5 i* R; t
if(flag_en == 3) //新年好
4 x1 x5 h6 _2 X# k {
0 h1 S3 s8 H9 X' r! ~) L+ o2 i m=music3[flag_i][0];n=music3[flag_i][1]; //放歌 - S6 n: o1 _0 S
P0 = smg_du[m % 16]; //显示2 q1 u# z' B, N z. m% r6 X w3 G
if(m==0x00)! [2 E T( z$ ~' A/ {/ V, v
{& J( A" K- L" W' e4 L5 M
TR0=0;
9 d5 G" x# ?9 b( N v9 ^ beep = 1;
" a4 |" q: S7 M+ u& [ delay(n);5 d& I1 h9 P* e9 B+ E/ K
flag_i++;
$ [. \' r4 i1 U } / a$ g7 [8 _ f, C* n
else if(m==0xFF) //放歌结束& m. k( O( J ^0 s; O
{7 ^9 E' B! h# v- U. X, ~! ?1 o$ r
TR0=0;beep = 1;delay(30);flag_i=0;flag_en = 0;} , f" d# R: B! a3 X
else if(m==music3[flag_i+1][0]) ) |; f1 P6 R2 w" Z B3 L9 T# s9 w
{TR0=1;delay(n);TR0=0;beep = 1;pause();flag_i++; }
# V" I: _7 q% o" p' { else/ V* {. v* ]) O# V* ]8 E, ^7 ]
{TR0=1;delay(n);flag_i++;}
( n6 v9 ~2 ?- u% Z% k) h( a }
+ g, f- |* n) I0 x m/ k# r else ( p' P8 M/ w# M" o1 A
beep = 1 ;& J+ t0 s1 y7 U7 ]" t P8 l* A
}
( Z% d A. ], L9 h7 o5 M}' W: b* b4 e, ?: b, J
7 L; o# y8 y: H. W$ a2 u* g/ B+ s" y0 n! e
( m5 m, x; b6 N! r) j/*****************定时器0中断*********************/ & [' c& p- ~5 p& _& m
void T0_int() interrupt 12 N; m3 _3 Z4 Z, C. |1 R. R0 r
{; e( Z7 } `) \" K
beep=!beep;3 g7 B0 l" I G. G; L- u% J
TH0=T[m][0];
* X( q6 k3 E/ N$ c: F TL0=T[m][1];( i f( k% j' r; @4 v' y
}7 N6 f$ X w4 B7 e2 r
|
|