機械社區(qū)

標(biāo)題: 我自己用單片機做的電子琴 [打印本頁]

作者: jili1986729    時間: 2009-10-7 13:40
標(biāo)題: 我自己用單片機做的電子琴
本帖最后由 jili1986729 于 2009-10-7 13:42 編輯 4 A* H4 X1 ?5 `. Y

+ _1 F  R+ v4 {- T5 r% V2 m: q我自己用單片機做的電子琴,比較簡單,用了一個功放,自己做了個矩陣鍵盤
+ ]: j+ s; F; c: p  p) I  U2 V單片機應(yīng)該用892051,這里89c51,有點浪費) k. Q5 e: R  e! g3 T* x& f& d! m' z
[attach]149262[/attach][attach]149264[/attach][attach]149263[/attach]
" i. |" \$ j! V( b程序:- g, m1 O: a+ E* n% b7 `: p
ORG 00H
+ E6 ?6 y- |& x, m2 _AJMP START1 B4 B2 W8 w& w
ORG 001BH
/ T. q1 i: x1 c. q4 YLJMP TIME1
$ t1 z) r; I( I( `ORG 30H$ K: R! r9 }( P$ x6 D' Z. ?/ X2 T3 Z! o
START:MOV TMOD,#10H
7 d: i/ ]8 l5 ]8 Y& R& e      MOV IE,#88H7 e4 w( H* B' A5 L0 e8 V0 K
KEY:SETB F0
2 n9 }' @4 k: g, L    CLR EA
1 ~- t8 [  [" g- h$ ICLR TR1
. j" G- ^" n& l' F  |& f    MOV P1,#0F0H
7 y3 X6 e. S* mKEY1:MOV A,P1
$ f. j! K8 e2 K9 U  CPL A
5 w- [; M3 t* g  ANL A,#0F0H% E  B' x' o% Z3 \7 S8 z4 W
  JZ KEY
2 C' O  N/ R" F8 e2 H& w. m  CLR F08 G0 v/ |# B5 A, f, @0 w9 \
L1: LCALL SKEY
6 R0 L9 r* g5 U$ R% T) O- J4 z  CLR EA
4 d" e. m6 z- k, \% a1 L# E! o; s3 P  CLR TR1$ ^) o! h( B; j3 h
  JB F0,KEY
4 i- |. d/ X" U7 V' C. Z6 [. S8 z$ kMOV 22H,A6 }1 u( _) A2 I6 Q0 i# N# b
   ADD A,22H& }( Z( ^5 |" G2 @. t
   MOV R3,A3 @/ z6 V' w1 u) C9 C* j* ]
   MOV DPTR,#TABLE1% {4 G$ Z8 y* O# L5 ^. I8 {
   MOVC A,@A+DPTR
' }, R( F# {- c- k. D1 ~9 a' M- z   MOV TH1,A
( @: w4 J9 b" p, u2 S; [   MOV 21H,A4 ?) i9 i9 m/ |  ~( R0 s, y6 H
   MOV A,R3
5 s$ p- O1 a! E   INC A$ H: i$ a- S2 T/ o- f0 r& \2 Q
   MOVC A,@A+DPTR
. i3 n6 V$ a, m' n. Y& c/ G9 N   MOV TL1,A% C& p3 l3 H* C" ~
   MOV 20H,A7 b0 V0 X! k* y* E8 A/ O( L
      SETB EA
2 U9 s! e: |8 L$ v; ?. p) v* d4 i! C; V   SETB TR1" x  L! p$ O$ _+ F6 ?
L2:CALL SKEY" ?4 o2 D  P6 X; w3 D
   SETB EA/ D- T# Y7 e) v) P' r
   SETB TR10 s5 z$ S7 P' S1 f
   JB F0,KEY. O! Z9 z, o  [
   LJMP L2
( R; B2 k" z! H- E$ USKEY:MOV A,#003 R2 Q. j; I  \& G, b2 u1 R
     MOV R0,A
: V+ G% R" ~8 K: ?8 C7 L  MOV R1,A) y0 F' V) o" s. p
  MOV R3,#0FEH3 a7 V9 P. ~$ |( y) `: C  E7 v
SKEY2:MOV A,R3
9 w3 q0 O- R! {. `      MOV P1,A
( L' T/ H$ _& y0 M   NOP
' D. e  P( p* _- q& w/ N   NOP' D- |( g1 Y& Y4 E7 V7 b
   NOP/ Q% E& M1 `1 y+ d4 U
   MOV A,P1
# Z% f7 n: \/ G" _+ I   MOV R1,A8 o* _8 P% U7 E- k! M, s& ?
      CPL A
( |$ j# f8 U4 _7 V   ANL A,#0F0H
" w0 A+ L- m/ n  F3 xS123:JNZ SKEY3
* S8 |6 O" r" s+ W* p  SETB F06 v7 }3 l5 l( q8 d1 F* \% w2 k
     INC R0
6 b: H1 |+ o; }1 N' @6 L  SETB C) u! E+ `+ l5 k' L! Z; c3 s+ v
  MOV A,R3
7 u. _* v8 b* V& I2 d+ b+ m7 I  RLC A2 x8 m8 f( u, V& f/ E) _
  MOV R3,A
& z3 Q  Z* ?8 _! G; T* E1 G  MOV A,R07 F7 f6 {% x. T1 {' G' y
  CJNE A,#04H,SKEY2
4 V4 |7 \' m; Y' [( ~' n8 |& REKEY:RET
- z3 u. Q, ~8 y0 M* HSKEY3:CLR F0% r+ _9 F  u3 i& r
      MOV A,R12 T, W5 j8 a: T4 x
      JNB ACC.4,SKEY5
- R* }; B4 L0 \  m# m$ Q# y   JNB ACC.5,SKEY6" t- v! l* s4 I2 }
   JNB ACC.6,SKEY7
; V: t: a& v& P) z+ G. {* w  `   JNB ACC.7,SKEY8
5 k2 i; M, h1 K+ G; _5 ^0 t   AJMP EKEY
6 p) Y9 S' d  k+ K  A$ Z: m6 W% KSKEY5:MOV A,#00H( b6 o( @+ }& Z
      MOV R2,A5 _/ x8 b- c; D0 W- K$ q
   AJMP DKEY5 |1 @6 H0 p. t: |
SKEY6:MOV A,#01H0 ]8 U, t* p+ O- K, N9 w
      MOV R2,A
4 B* V1 ^  {( G  i. _& K   AJMP DKEY
; n' `, ]' j- N, x- o) OSKEY7:MOV A,#02H& j# D9 x" p1 [1 s0 g
     MOV R2,A/ @4 O) h* c7 z" o0 O% W
  AJMP DKEY
7 D* A  P; Y' E( B( iSKEY8:MOV A,#03H" o. a! P5 \+ z* p. p% ^
      MOV R2,A
1 G/ v; G9 e2 v! V: x$ u. P1 K   AJMP DKEY
* ^: S" Z  ]; \2 x# M" o9 |! YDKEY:MOV A,R0
, C$ Y# _* b+ m% \     ACALL DECODE# C7 L' M! Z+ V! x1 e/ ?. `0 J
  AJMP EKEY
" [3 Q: v7 i; L6 c& S0 F+ rDECODE:MOV A,R0
( b: S2 B+ l$ ^% a0 e( a! r" G       MOV B,#04H2 |# B: g# J/ U" V) S/ m# P
    MUL AB
$ k9 T0 g4 @$ R  H  {2 x    ADD A,R2& V) Q, P. s8 m  U! m
    RET
0 I, ~$ M( Y* O# n2 m* RTIME1:   PUSH ACC# `/ D8 v* F% D3 U9 k5 ]
      PUSH PSW
6 S% |' z; ?* u# R   CPL P2.4
4 s$ H6 k; h2 H& `. b   MOV TL1,20H
* G3 m  C& @! b& U1 p   MOV TH1,21H
! q) m7 w: ~& ~  U9 D$ g   POP PSW
% @" y6 `' F5 z! I0 R   POP ACC
2 @+ ~3 X$ d5 l6 t. g8 E- N1 G   RETI* ^: b# y9 q7 {6 E% j0 V/ t
TABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,64777  `# f) N! b& i& P! C: q# ?
       DW 64820,64898,64968,65030,65058,65110,65157,65178
1 H1 q. j2 m4 T; Y: @END
作者: syw開門造車    時間: 2009-10-8 06:51
jili1986729 網(wǎng)友好!6 }. X# F" {8 E4 f4 w
.
$ R8 a' J# M7 u( t進(jìn)入任何一門“陌生”的知識領(lǐng)域,選準(zhǔn)正確的路徑由為重要,會使你少走彎路。
, q8 v/ r" }5 p' m, @.
( k2 v6 v8 ~5 Q) ], ~匯編語言,是在計算機技術(shù)發(fā)展的過程中,由機器碼走向高級語言的過程中的一個# n( |  {! T2 C8 {9 R
過渡語言,當(dāng)出現(xiàn)了能做底層操作的高級語言的C語言后,匯編語言就應(yīng)該從高校的
, z/ r2 n- ]( |教材中清除出去,以免浪費學(xué)生的精力,以提高學(xué)時的有效性。
  o! s# n0 B2 O) T6 [.3 ^6 {! E  F; o2 e/ ^/ `' B
我國高校教材的更新存在著滯后現(xiàn)象,做為學(xué)生應(yīng)該學(xué)會取舍。2 A2 E$ u( R% ?1 G+ ~5 E6 p
對此,我能給出如下建議:0 e" P6 j0 g( X9 B) U
.6 Z: m* _; O1 ?6 y) b
1、學(xué)單片機應(yīng)該改用C語言,而拋棄匯編。6 l9 I( T5 m8 w, v( p5 c3 G
2、應(yīng)該盡可能的設(shè)計出一套自己專用的萬能板,以應(yīng)對“所有的項目”。) N. u+ c3 T- \% t& l% ]0 S
3、一定要在畫專業(yè)的PCB電路板方面下足功夫。  o9 \8 l# O7 _! a+ h# P' w- u2 i
4、……
6 M, f( H5 h* y4 }+ f.4 |4 G/ b! t# n6 G/ W6 C* w3 U$ E
syw  091008---06.51
作者: 鄭華    時間: 2009-10-8 10:21
不錯啊,我在學(xué)習(xí)!
作者: FLEI200410    時間: 2009-10-8 13:27
現(xiàn)在用C語言的比較多
作者: 卓信    時間: 2009-10-8 14:42
嗯 不錯 其實不應(yīng)該叫電子琴  這個離電子琴遠(yuǎn)啦  不過能自己動手做東西還是很好的
作者: jili1986729    時間: 2009-10-8 18:42
恩,謝謝提醒。+ K, v( x) i, ]" y3 X. \
因為在學(xué)校里學(xué)的是匯編。
: h/ V0 A( v3 W! L9 ]現(xiàn)在正在學(xué)習(xí)C語言,感覺C有它的好處,但有時匯編語言也有優(yōu)勢
作者: 次元碎片    時間: 2009-10-9 11:21
造車總工$ n% _$ @* `+ L0 D$ ^" K. Q
現(xiàn)在的C語言支持底層編程,能大體說說優(yōu)勢嗎?我有10多年沒用過匯編了,記得96年用C編了段程序,用工具轉(zhuǎn)換成低匯編,程序量太大了,而直接用匯編編程,短短的幾行就可以,不知道現(xiàn)在支持底層編程的C這方面改進(jìn)的怎么樣了,多年沒接觸單片機,以為大家還都在用匯編呢
作者: zjhioau    時間: 2009-10-17 17:18
牛人
作者: 舟航    時間: 2009-10-17 19:54
在學(xué)校時摸索的用用也挺好
作者: cc0579    時間: 2009-10-17 20:50
對于很多低端的單片機,還是用匯編比較多,因為考慮到匯編可以更加精簡,可以節(jié)省很多程序空間,這對于低成本的單片機來說尤為重要。原因很簡單,你如果程序量太大,就只好選用程序空間更多,也更貴的單片機來做。像義隆,中翰等單片機都是用匯編的多。' s- e# `8 ?# H, F1 _! |
不過,現(xiàn)在的趨勢上,單片機的程序空間越來越大 ,成本越來越低,用C成為了大勢所趨。
作者: hobbylinux    時間: 2010-1-12 14:08
本帖最后由 hobbylinux 于 2010-1-12 14:09 編輯
( G9 _9 ]% M& |. y% a) ?
jili1986729 網(wǎng)友好!  I5 \- X+ E8 c8 f/ H  K
.$ x% R6 X/ E+ d
進(jìn)入任何一門“陌生”的知識領(lǐng)域,選準(zhǔn)正確的路徑由為重要,會使你少走彎路。0 d2 s! R6 W+ O/ N* q& \' J! q2 `9 ~# U' q$ z: T9 T1 y$ v, W
./ ?2 f; Q) B; i4 H: N
% T- ?5 N- f' R6 l: }$ Z9 l匯編語言,是在計算機技術(shù)發(fā)展的過程中,由機器碼走向高級語言的過程中的一個過渡語言,當(dāng)出現(xiàn)了能做底層操作的高級語言的C語言后,匯編語言就應(yīng)該從高校的: u+ K! w5 C* f/ i5 W* L7 f
, P1 @0 Q- K9 \5 M, X教材中清除出去,以免浪費學(xué)生的精力,以提高學(xué)時的有效性。
( |" H7 A. n5 V+ J' Q* L! t8 d我國高校教材的更新存在著滯后現(xiàn)象,做為學(xué)生應(yīng)該學(xué)會取舍。. ?1 d9 [4 d. a7 _- A( k
對此,我能給出如下建議:
/ A5 _$ G4 k! V6 l6 y  c9 L' }& w! ]( z+ U  o6 x3 I
1、學(xué)單片機應(yīng)該改用C語言,而拋棄匯編。, }' A( l  I5 L+ [; h
  S( B; |+ O8 ?$ _5 S2、應(yīng)該盡可能的設(shè)計出一套自己專用的萬能板,以應(yīng)對“所有的項目”。. X! o# h, s; k7 ]! W: ^7 {
3、一定要在畫專業(yè)的PCB電路板方面下足功夫。: F) F* t$ j6 k4 h" ^, K) ~  X9 ~1 e; _' @1 u8 o( s) J
4、……- Y2 o! O; p( r3 {; N: a
syw開門造車 發(fā)表于 2009-10-8 06:51

1 s" G3 r6 i6 b' X6 Y0 {/ f4 `9 H2 j. W
syw開門造車 兄的話真是有深度,也講得很對,
4 y# J+ ?/ n: G9 r" i我認(rèn)為還要鎖定好是學(xué)什么

4 B- A  x  b9 f7 q" e片機,AVR?或其它。
$ W% O1 A& W& b, f* T問題是,電路不懂的話,應(yīng)該從哪里下功夫?

作者: 非池中    時間: 2010-1-15 23:25
謝謝樓主提醒
作者: honghuzhonggong    時間: 2010-1-16 21:52
樓主的單片機學(xué)的真好   羨慕死我了    上學(xué)那會老師講單片機硬是聽不懂
作者: 急速電棍    時間: 2010-1-16 21:57
比較簡單   不過手工制作牛比




歡迎光臨 機械社區(qū) (http://www.mg7058.com/) Powered by Discuz! X3.4