机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6645|回复: 13

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

[复制链接]
发表于 2009-10-7 13:40:44 | 显示全部楼层 |阅读模式
本帖最后由 jili1986729 于 2009-10-7 13:42 编辑
3 |' s' y$ Z6 W
$ a$ L/ }6 w7 A2 `1 [1 K7 h我自己用单片机做的电子琴,比较简单,用了一个功放,自己做了个矩阵键盘
! E  q" `6 x# D3 Z单片机应该用892051,这里89c51,有点浪费
' B2 q/ R& F9 h2 {$ l/ I7 {% ~1 C, t7 C0 \2 C, {
程序:- ^; N1 L$ r1 X6 v) y+ C
ORG 00H0 n! v5 }) f8 I$ x# t
AJMP START( Q0 @: S9 s- B) M+ J' L4 B) U
ORG 001BH" l% m- a# ?0 {# p# B" z
LJMP TIME1" T6 l# s7 e' ]9 e+ f/ E4 _* ]
ORG 30H* b# f/ N! C7 F4 ]- R# Q8 q! l
START:MOV TMOD,#10H
( v1 j) D$ \$ Y" K# d( e      MOV IE,#88H
" Z" _$ x: `# e6 R# bKEY:SETB F0
! z( ?6 t6 }+ P" a    CLR EA! ~" i1 i7 E) {7 K3 X, I/ ^
CLR TR1! g% F6 I& K  Z" R1 X
    MOV P1,#0F0H
" }9 h4 A; N/ j/ X: a; F3 cKEY1:MOV A,P1
( s  Z  j+ O+ c1 W6 D+ l  CPL A
# U- ]0 T7 l2 }1 v" L5 ~6 d  ANL A,#0F0H
( l/ e: j  G" L8 C% L+ V  JZ KEY
/ j/ ?6 T9 z+ ]# i& V9 H* E4 J  CLR F0
6 m: ]# J( Y) S6 `" x9 jL1: LCALL SKEY
; o  x$ E8 b8 y3 ?. T: P8 Y  CLR EA  C% s# f4 `5 g( K$ N1 j
  CLR TR1% ]2 x6 |$ z; ^
  JB F0,KEY
- B+ p, B" F+ FMOV 22H,A
9 ?3 t5 S/ s' i2 o$ `   ADD A,22H' j1 n5 j; t# R9 M6 i2 B$ P/ {& n4 d- w
   MOV R3,A
+ F3 ^3 d/ o  ^. ], |   MOV DPTR,#TABLE1
9 ]  H5 S- j9 \, g0 b7 A   MOVC A,@A+DPTR1 m, A# b* g& Y+ j+ R6 v
   MOV TH1,A" x  V: e: R9 ]  a4 I+ _3 o$ A
   MOV 21H,A
5 e' L, m5 b2 i7 ]! U9 R! v0 q& q   MOV A,R3- S" z* b7 T# o! V& u0 D1 y& J, F+ }. c
   INC A
$ z* _. A, [) Z2 N% `8 d   MOVC A,@A+DPTR
' i: E7 T' g8 P; O* p7 c* b   MOV TL1,A
) {; [+ m- v; z% v, M7 T' l   MOV 20H,A
" _4 A1 e; z' m, S, z      SETB EA$ E; W) E/ G6 p6 h# E( M
   SETB TR1
9 y1 q& X+ m! v, i, \6 f8 N3 xL2:CALL SKEY
6 k4 {; I7 d$ k; O; g   SETB EA
8 {  k8 @  {/ _: |9 V" X2 O   SETB TR15 F. k7 Y; M& a: t% ^" K& {9 p  p
   JB F0,KEY
* f( ?6 \3 X3 q0 \' u# U. Z; }   LJMP L22 H8 n/ i+ o0 y. d: [
SKEY:MOV A,#00( M; J* }5 p" M" V" n+ S
     MOV R0,A
  \5 f. n+ _7 V  MOV R1,A$ i, }% `, V, H( t% c% Z- ^* j$ m
  MOV R3,#0FEH. n4 d! z& `/ q5 c1 {6 I2 w
SKEY2:MOV A,R3  E, p! q- a0 D) a
      MOV P1,A! ^- ^8 l4 S' Z' X5 X! w) ~' t/ V
   NOP* _! S, A: c. e) C
   NOP
' ~! d- h' b5 g: E& i  x" e   NOP
9 D$ z5 m0 Q" D- O   MOV A,P1- \# `( G# q+ Y( q6 `7 w$ k9 _0 p
   MOV R1,A) q& B; [6 ?: F2 q
      CPL A
0 ^0 t9 s+ \6 `& G. S   ANL A,#0F0H* j+ H& c4 m" P  }8 y: m  S
S123:JNZ SKEY3
+ e6 R% C7 D/ F0 }4 T! r. M  SETB F0
( E% P2 A* p, R5 l# L( Z     INC R0
  j# p. E, _( O0 E# o  SETB C
( c% X( w* ^2 n' E2 N$ n8 ^  MOV A,R3
( s2 L7 R7 H! F$ _  RLC A
& ^) r% F* |4 q: H! p, a  MOV R3,A' Z4 o- i5 a' k4 e1 e& _
  MOV A,R0) y) J: p; H, x4 G
  CJNE A,#04H,SKEY2
9 m: z' F9 B3 AEKEY:RET
7 [6 r8 P3 y9 B8 S# |SKEY3:CLR F0
" u7 t3 I, w5 G      MOV A,R1
6 \+ \0 T4 \% Q2 F      JNB ACC.4,SKEY5- V2 `8 B3 ?1 m
   JNB ACC.5,SKEY6
, l; j- a' u8 u2 k# {   JNB ACC.6,SKEY7' ^) s" S4 v/ z% X' s
   JNB ACC.7,SKEY8, z; w- g0 l% h  ^" B
   AJMP EKEY# ?) o# c: x  s5 {
SKEY5:MOV A,#00H4 x% i! ^( ?2 L; h7 r% E
      MOV R2,A
( C7 i$ ^4 c. r5 e+ i0 d   AJMP DKEY
* ^- o0 G, D+ |5 r9 w6 dSKEY6:MOV A,#01H
" Q- ^5 B, l0 w& M      MOV R2,A8 }* o) F# }7 b  i: N! p' C( w
   AJMP DKEY' m: C8 z+ U6 U3 w
SKEY7:MOV A,#02H! e* y) y' q- G/ M: Q. y  ^
     MOV R2,A- x  }1 e1 p7 l! w5 {6 I" ~4 M* p
  AJMP DKEY. c1 S5 y' d2 q3 V
SKEY8:MOV A,#03H
' S1 }/ a  q0 X: Z$ G/ H/ m      MOV R2,A
  i& e: s5 v5 `/ m  p" e& \   AJMP DKEY9 |& G+ r2 b$ g* o4 ?( B
DKEY:MOV A,R0; b6 q6 l; k, ]  h
     ACALL DECODE# g9 M4 d: K, M$ p  @
  AJMP EKEY
. z6 c: b% m6 Y% J! |DECODE:MOV A,R0) w9 l  x6 J5 c0 W6 w  T  S. z: z; D
       MOV B,#04H
, e, z. x0 O! G8 T6 o9 \; l6 \    MUL AB! ~) q/ c& e- Y$ m2 l9 ?
    ADD A,R2
0 y! @9 ]( p8 O3 ~    RET
' i) ]; y5 r2 q$ [  BTIME1:   PUSH ACC
; `5 n0 s; c! Z' O" u! T      PUSH PSW
1 k* G1 |  c* d   CPL P2.4
- M$ W) ^) |; @   MOV TL1,20H
4 C7 {. W" j( G4 o   MOV TH1,21H- Y# w3 L( P  I* Q  D% V
   POP PSW
2 Y$ e! h: K! Y- S# v0 N! K   POP ACC
. M4 n6 w/ L& Y8 G) n% g   RETI
% h  C1 O0 P  V  V9 p7 w. sTABLE1:  DW 64021,64103,64260,64400,64524,64580,64684,64777
/ V) D7 o1 O  Q       DW 64820,64898,64968,65030,65058,65110,65157,65178$ `8 x2 s! F/ n3 }/ \( T
END

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2009-10-8 06:51:24 | 显示全部楼层
jili1986729 网友好!5 B# v/ N8 k: }3 O7 i
.
- t* t( b& H& @* |进入任何一门“陌生”的知识领域,选准正确的路径由为重要,会使你少走弯路。; }5 T1 M( R! Y
., U& m, N3 B" h3 [- T: a4 ~
汇编语言,是在计算机技术发展的过程中,由机器码走向高级语言的过程中的一个6 k7 u7 z, \  i" o) ^. t
过渡语言,当出现了能做底层操作的高级语言的C语言后,汇编语言就应该从高校的
. U% ~3 e% Y6 Q教材中清除出去,以免浪费学生的精力,以提高学时的有效性。. q3 u2 h) s& E" A8 p- G
.
' [9 Z  [/ Q1 z2 x  j( Q* M9 O我国高校教材的更新存在着滞后现象,做为学生应该学会取舍。) i* \3 `  z+ b) S. B
对此,我能给出如下建议:
2 o& F6 {5 C4 T; d! p% Y' Z.! E" }/ n0 c4 x: X- a& V" v* ^. {, ^
1、学单片机应该改用C语言,而抛弃汇编。2 V  _2 k4 L0 E5 s! N2 a& {
2、应该尽可能的设计出一套自己专用的万能板,以应对“所有的项目”。
. y9 U$ c5 l- l0 j* l: k% [3、一定要在画专业的PCB电路板方面下足功夫。
8 v/ y( Y5 f  M, ]4、……2 e4 S) ^" j& u# V" G# w
.# [) H6 T3 G* o0 w
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 | 显示全部楼层
恩,谢谢提醒。
# P) G! a/ Z& A. y4 y因为在学校里学的是汇编。
3 p. I' k9 g. x2 {7 c现在正在学习C语言,感觉C有它的好处,但有时汇编语言也有优势
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-9 01:59 , Processed in 0.061690 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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