机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6448|回复: 13

我自己用单片机做的电子琴

[复制链接]
发表于 2009-10-7 13:40:44 | 显示全部楼层 |阅读模式
本帖最后由 jili1986729 于 2009-10-7 13:42 编辑
/ F' \" W. @9 j! H- _
2 ^# W" L/ t3 V6 z9 N, @我自己用单片机做的电子琴,比较简单,用了一个功放,自己做了个矩阵键盘
0 c+ A: ?8 d. K* k; u; Z: ~单片机应该用892051,这里89c51,有点浪费3 K0 k3 }$ e: ]( ^  @) `
+ _2 W3 f3 S' o. p# r8 b+ Z3 z
程序:, r& b7 `% z+ N6 F
ORG 00H$ n3 S6 D8 s& Z# o
AJMP START& D# |! l; r. C9 g
ORG 001BH
9 D) p) j1 g4 sLJMP TIME1" t' o6 o: C8 c) Q! g& z
ORG 30H
3 \  Q8 ~0 _) T: G$ T; p8 SSTART:MOV TMOD,#10H+ {# V3 f3 }" [0 {# F" a8 S
      MOV IE,#88H( D* \! ~# \- T& i) Z# S
KEY:SETB F0  a5 C# K% ^) \/ b: L8 |% P
    CLR EA% R+ d1 m- _# j6 p
CLR TR1
& J! n" \: W% P" W# ]7 @- Y3 q7 ?    MOV P1,#0F0H
0 }- C0 k: T. ?$ H7 Q: a! oKEY1:MOV A,P18 M; t; K% I  ?  `: ^
  CPL A7 _  S. Y& N3 Y$ s. P/ q9 z
  ANL A,#0F0H- Y- ]7 u* I9 }8 O1 t
  JZ KEY4 g/ M  [1 O2 ^) N* [3 {( T" Y
  CLR F0
* x. w" m2 B+ B1 h' ]+ iL1: LCALL SKEY  I7 a3 O0 ]5 C: K" g
  CLR EA
8 U( U" Z) |5 h1 w% \  CLR TR1
! t# ^' n  U4 o0 ?  JB F0,KEY" {# k& E( {* X! V" H9 G% }' m6 d) S
MOV 22H,A
' x& j& q, ^- e  \3 f' ~9 S   ADD A,22H! j! @0 w& Z: s' X6 g
   MOV R3,A
- a7 s$ O' M7 Y! O- d4 H: b   MOV DPTR,#TABLE1
* [& I! G: K, n* m   MOVC A,@A+DPTR
, T4 l/ a% a( U: }; P. d, Y   MOV TH1,A1 t, Y* p* e- h
   MOV 21H,A
) F. U# v. W7 N5 H- o1 M; S   MOV A,R3
  W8 W' w0 q5 S  v$ [2 E   INC A, M+ H& ~5 A. J0 {& y
   MOVC A,@A+DPTR; y+ W0 x* k9 O# `( ?
   MOV TL1,A
5 g2 K4 k- _% {; H   MOV 20H,A. T' Q- e$ s* s) C9 [
      SETB EA( O5 ], F& g% M) K* K$ G  h
   SETB TR13 z" ^: ?+ O* s$ Y" B
L2:CALL SKEY
; C; s' s3 Z: @   SETB EA9 E5 i3 ]/ E6 ]' I& w3 A
   SETB TR1
( w$ W. A! m+ P+ j- m& n   JB F0,KEY
9 J# V, u8 a( o* d, i# o/ v" }   LJMP L2
# o  c' K" }6 I* CSKEY:MOV A,#00
8 L+ `- {3 T8 _0 D& U     MOV R0,A1 d; x+ O+ u4 q4 X
  MOV R1,A( M" D" ?  F$ D& v7 ~. v
  MOV R3,#0FEH  [9 w8 z8 f( ^' E. ?
SKEY2:MOV A,R3! g( i; {1 H& v) K4 x; K7 C9 p
      MOV P1,A
' g  W# A# z8 x! c; v4 ~) s& x6 a   NOP8 t; A/ L4 P  u. J& T+ w
   NOP
8 D" `! o( w- b+ l1 ^& q1 ]   NOP' i  H4 W9 s6 E7 D, `' A
   MOV A,P1
7 ]  f/ F1 S! H8 ?4 G& ?+ V   MOV R1,A
8 R2 b' Y2 X/ ~      CPL A
( V- Z& i- h1 ?; [% X: a% N( e0 U4 {   ANL A,#0F0H# p7 |% S6 B: x5 h8 ?5 g# U
S123:JNZ SKEY3
" j8 j. @1 ]5 ~2 P  SETB F0
2 q# q( k2 q- n/ B     INC R0- Q8 l$ ?% }; ]
  SETB C  o6 w9 ?+ r4 Q" H
  MOV A,R3
9 w" U1 h  d4 n# W9 d  RLC A& R: Z7 ]8 z" @3 G/ K( c1 S
  MOV R3,A/ P0 }  R3 q: ]
  MOV A,R0' k* J1 v9 ~3 y7 y
  CJNE A,#04H,SKEY2
. q9 O2 r8 H; sEKEY:RET
, t. z' f. h/ wSKEY3:CLR F02 Q" N3 I7 A, k5 }
      MOV A,R1
, @; l% d- N' \: i      JNB ACC.4,SKEY5* v1 q$ Q( Y6 F/ Z& f$ q
   JNB ACC.5,SKEY68 C9 x( d) i' Y. W6 \$ L4 |
   JNB ACC.6,SKEY7# C" I1 D- G% w9 F* L9 l8 U1 P
   JNB ACC.7,SKEY8- a! y. N7 E- E4 d9 Y8 [2 G+ m" A
   AJMP EKEY' \4 {  C' c8 w+ M  K* i: F
SKEY5:MOV A,#00H7 G4 a5 x  e( f3 w6 L/ z$ p
      MOV R2,A. Q! y9 O2 W1 B- Q* _  K, `7 ~
   AJMP DKEY
, r1 Y) D# ^3 _0 W' V, c# M( xSKEY6:MOV A,#01H
1 \1 p4 Z) g$ m1 d" ^3 B: N, [9 a      MOV R2,A
0 l7 A% A. o8 j) G   AJMP DKEY
& m6 X8 m4 q5 q$ [SKEY7:MOV A,#02H
2 ^" Q& {* S+ F/ \% M6 D     MOV R2,A! W4 H% W. b, g4 g
  AJMP DKEY+ _2 X' W# y4 H0 o- G7 h
SKEY8:MOV A,#03H
+ R! A: h  ]/ R3 ]& ?+ {" b$ f      MOV R2,A7 L5 G( J$ j  b' N4 U
   AJMP DKEY
/ Y& C. X( I" [  u2 }* y. bDKEY:MOV A,R09 n- I, Y# ~$ z1 c2 P
     ACALL DECODE* X7 M( {  b1 _1 ]+ ^" i; b, u
  AJMP EKEY
* D+ H/ i3 B4 B: H7 C/ k% w6 wDECODE:MOV A,R0+ l' K. ]2 J# C7 K9 f
       MOV B,#04H7 A$ L1 U  |1 {  A
    MUL AB
2 n) `3 S! Y4 a7 c/ Y. r    ADD A,R2( ^4 s1 w1 _6 l3 u
    RET- z1 k% Z2 Y4 G4 y6 P
TIME1:   PUSH ACC% P+ |4 e2 x* i2 ]' g! C
      PUSH PSW2 u& d- h- o$ e9 l( G0 }
   CPL P2.4. W# A8 ^2 D- I
   MOV TL1,20H2 o: X0 @" f" A) Y# ~
   MOV TH1,21H
: j* L/ L4 f" O) V; m) c   POP PSW
! S# d. q  y# h5 Z   POP ACC
8 O/ h' t* o- c2 n- l  A* j+ M& T   RETI' E2 P, g( L( A& h1 b
TABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,64777. ?( G$ Y; m4 Z8 q8 F1 ?
       DW 64820,64898,64968,65030,65058,65110,65157,65178  N9 `+ p+ q3 h& L: c6 x
END

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
回复

使用道具 举报

发表于 2009-10-8 06:51:24 | 显示全部楼层
jili1986729 网友好!
/ z* r( R1 U3 N7 V: D$ U" g.4 K: W, ~7 I' z. Y  n4 C
进入任何一门“陌生”的知识领域,选准正确的路径由为重要,会使你少走弯路。
: V* G9 g2 U$ `3 k2 I  o.
# O& D5 P5 a( v( R: w+ P汇编语言,是在计算机技术发展的过程中,由机器码走向高级语言的过程中的一个
6 I, {3 r% ]2 l. A7 H过渡语言,当出现了能做底层操作的高级语言的C语言后,汇编语言就应该从高校的
& k7 `9 z2 ]- q, w8 y% l4 _1 _0 H教材中清除出去,以免浪费学生的精力,以提高学时的有效性。' e, H& G) Q/ z( B& B; m3 B( _
.+ F- [  l  S$ f
我国高校教材的更新存在着滞后现象,做为学生应该学会取舍。
2 f3 P5 |5 C* w$ H5 Y, q% F对此,我能给出如下建议:
* @% y# O4 }7 Q$ P% t& W, D.
+ [( Z# K6 S+ Q1 Q4 r$ P1、学单片机应该改用C语言,而抛弃汇编。" M7 ~2 j" J6 o" i! n& K
2、应该尽可能的设计出一套自己专用的万能板,以应对“所有的项目”。1 H% X& [* B( J8 B
3、一定要在画专业的PCB电路板方面下足功夫。
! |7 {4 a' w& c4 H" _1 E' e9 A4、……+ i2 j% A" i& g% ?5 W* H
.) A) `% _4 x0 i% U5 B
syw  091008---06.51
回复 支持 反对

使用道具 举报

发表于 2009-10-8 10:21:03 | 显示全部楼层
不错啊,我在学习!
回复 支持 反对

使用道具 举报

发表于 2009-10-8 13:27:28 | 显示全部楼层
现在用C语言的比较多
回复 支持 反对

使用道具 举报

发表于 2009-10-8 14:42:44 | 显示全部楼层
嗯 不错 其实不应该叫电子琴  这个离电子琴远啦  不过能自己动手做东西还是很好的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-8 18:42:02 | 显示全部楼层
恩,谢谢提醒。
/ W. `% r! i2 f% j0 ~因为在学校里学的是汇编。3 j; y( g6 h" F# W$ o9 U" K
现在正在学习C语言,感觉C有它的好处,但有时汇编语言也有优势
回复 支持 反对

使用道具 举报

发表于 2009-10-9 11:21:54 | 显示全部楼层
造车总工# b. r5 j  ]  s' r  Y3 S
现在的C语言支持底层编程,能大体说说优势吗?我有10多年没用过汇编了,记得96年用C编了段程序,用工具转换成低汇编,程序量太大了,而直接用汇编编程,短短的几行就可以,不知道现在支持底层编程的C这方面改进的怎么样了,多年没接触单片机,以为大家还都在用汇编呢
回复 支持 反对

使用道具 举报

发表于 2009-10-17 17:18:27 | 显示全部楼层
牛人
回复 支持 反对

使用道具 举报

发表于 2009-10-17 19:54:55 | 显示全部楼层
在学校时摸索的用用也挺好
回复 支持 反对

使用道具 举报

发表于 2009-10-17 20:50:37 | 显示全部楼层
对于很多低端的单片机,还是用汇编比较多,因为考虑到汇编可以更加精简,可以节省很多程序空间,这对于低成本的单片机来说尤为重要。原因很简单,你如果程序量太大,就只好选用程序空间更多,也更贵的单片机来做。像义隆,中翰等单片机都是用汇编的多。$ i1 e6 e" y  _$ o" w
不过,现在的趋势上,单片机的程序空间越来越大 ,成本越来越低,用C成为了大势所趋。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-6 10:50 , Processed in 0.058407 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表