毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

电子琴电路设计及程序设计 第2页

更新时间:2010-2-14:  来源:毕业论文
电子琴电路设计及程序设计 第2页
第三章   简易电子琴实例
一、系统硬件图、流程图:         三、原理:
音乐产生原理及硬件设计
由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1us,假如选择工作方式1,那T值便为T= 216--5﹡105/相应的频率 ,那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数值如下表所示:
音符 频率(HZ) 简谱码(T值)
中 1 DO 523 64580
中 2 RE 587 64684
中 3 M 659 64777
中 4 FA 698 64820
中 5 SO 784 64898
中 6 LA 880 64968
中 7 SI 988 65030
采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:
TABLE DW 64580,64684,64777,64820,64898,64968,65030
第四章  程序设计
源程序:
方案一:产生按键音符
  ORG 0000H
        LJMP MAIN
        ORG 000BH
        LJMP BREAK
MAIN:  MOV TMOD,#01H       ;设置定时器0的工作方式
        SETB EA
       SETB ET0               ; 设置定时器0中断
       SETB TR0               ; 启动定时器0
WAIT1: LCALL KEY             ; 调用KEY子程序,判断有键按下否?第几个键?
       CLR EA                 ;屏蔽中断
       CJNE R3,#00H,WAIT1     ;如果R3=0,表示有键按下
       MOV A,22H              ;将22H里存放的按键号送给A
       RL A                   ; 因为查表里都是字,所以得乘2查得数据
       MOV DPTR,#TABLE      ;指向表头
       MOVC A,@A+DPTR      ; 查表
       MOV TH0,A             ;将数据高位送TH0
       MOV 21H,A             ; 将高位备份
       MOV A,22H             ;将22H里存放的按键号送给A
       RL A                   ;因为查表里都是字,所以得乘2查得数据
       INC A                  ;取低位数据
       MOVC A,@A+DPTR
       MOV TL0,A
       MOV 20H,A
WAIT2: LCALL KEY
       SETB EA
       CJNE R3,#00H,WAIT1
       JMP WAIT2
KEY:   MOV R3,#00H          ; KEY子程序,判断有键按下否?第几个键?
       MOV R1,#0FFH
       MOV R0,#00H
       MOV A,R1
       MOV P2,A
       MOV A,P2
       CLR C
       CPL C               ;利用标志位CY来判断是哪个键按下
       MOV R2,#08H
WAIT3: RLC A               ;移位判断
       JNC STORE
       INC R0      
       DJNZ R2,WAIT3
STORE: MOV 22H,R0        ; 将按键号存22H,R3=0有键按下
       MOV R3,#00H
       RET
BREAK: PUSH ACC          ;  中断产生方波,从P1.0口输出
       PUSH PSW
       MOV TL0,20H
       MOV TH0,21H
       CPL P1.0
       POP PSW
       POP ACC
       RETI
TABLE: DW 65030,64968,64898,64820,64777,64684,64580 ; 7,6,5,4,3,2,1
       END
方案二:产生按键音符
       ORG 0000H
       www.751com.cn
       AJMP INT_0
       ORG 0030H
START: MOV P1,#00H
       SETB EA
       SETB ET0                       ;计数器0
       MOV TMOD,#02H
       MOV TH1,#09CH
       MOV TL1,#09CH                 ;定时器初植
       CLR TR0                        ;定时器不允许
SCAN:                                 ;键盘扫描
       MOV A,P2                   ;判断键盘按下,跳到SCAN_1,若未按,继续扫描
       CJNE A,#0FFH,SCAN_1
       NOP
       SJMP SCAN
SCAN_1:ACALL DELAY ;是不是真的要按下?如果是,则跳转SU_KEY查询是哪个按下?
       MOV A,P2
       CJNE A,#0FFH,SU_KEY
       NOP
       SJMP SCAN
SU_KEY:JNB P2.1,MU_1                  ;判断是哪个键按下?
       JNB P2.2,MU_2
       JNB P2.3,MU_3
       JNB P2.4,MU_4
       JNB P2.5,MU_5
       JNB P2.6,MU_6
       JNB P2.7,MU_7
       SJMP SCAN                                       ;R1信号周期

上一页  [1] [2] [3] [4] 下一页

电子琴电路设计及程序设计 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。