电子音调发生器_第1页
电子音调发生器_第2页
电子音调发生器_第3页
电子音调发生器_第4页
电子音调发生器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、京交通乂察单片机课程设计电子音调发生器实验报告班级:目录1 .设计目的-2 -2 .设计要求-2 -3 .设计原理 -2 -4 .设计方案及思路 -3 -4.1 总体框图- 3 -4.2 蜂鸣电路- 4 -5 .软件设计流程及描述 -4 -5.1 软件设计思路- 5 -5.2 各部分功能介绍- 5 -5.2.1 键盘键值读取程序- 5 -5.2.2 中断计时 -5-5.2.3 音乐播放 -5-5.2.4 主程序 -5-6 .实验源程 序 -6 -7 .实验结 果 -12 -8 .实验总结及体会 -13 -附:参考文献 -13 -1. 设计目的1 . 了解计算机发声原理。2 .熟悉定时器和键盘扫

2、描电路的工作原理及编程方法。2. 设计要求利用JD51开发板上的按键S1S有口蜂鸣器设计电子音调发生器,要求:1 .利用JD51开发板上的按键S1S4进行音调选择,即按下不同的开 关产生不同的音调,依次按动 S1S4及组合按键,蜂鸣器发出 1234567i 八个音调;并在数码管上显示。2 . 编写 2 支歌曲,并可进行选择播放。3 .设计原理音节由不同频率的方波产生,音节与频率的关系通过查表可得。要产生音频方波,只要算出某一音频的周期(1/频率),然后将此周期除以 2,即为半周期的时间。利用计时器计时此半周期时间,每当计时到后就将输出方波的I/O 反相,然后重复计时此半周期时间再对I/O 反相

3、,就可在I/O 脚得到此频率的方波。在JD51单片机上,产生方波的I/O脚选用P2.4,通过跳线选择器将单输出不同频率的方波,蜂P2.4与蜂鸣器的驱动电路相连。这样P2.4 片机的鸣器便会发出不同的声音。另外,音乐的节拍是由延时实现的,如果1 拍为 0.4秒, 1/4拍是 0.1 秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍。每个音节相应的定时器初值X 可按下法计算:( 1/2) *(1/f)=(12/fose)*(216-x)即 x=216-(fose/24f)其中f:音调频率,当晶振fose=11.0592MHz时,音节“ 1”相应的定时器初值为x

4、,则可得x=63777D=F921H其它的可同样求得表1 .频率(Hz) X(HEX) 音调 F921 262 1F9E1 294 2330 3 FA8c 4 349 FAD8 392 5 FB6440FBE6494FC57FC8F523i4 .设计方案及思路4.1 总体框图.数码管显示电控制声音输出电路 89C51矩阵键单片机制控播重键按音乐播放控制硬件图4.2 蜂鸣电路选择一只压电式蜂鸣器,压电式组成。89C51模块鸣器驱动电路和输出为低电平时蜂鸣器产 100MAl鸣器工作时约需要驱动电流。当89C51输出为高电平时,蜂鸣器不发声。生蜂鸣音,89C515 .软件设计流程及描述 根据要实现的

5、功能,流程图如下:熟悉定功能选音液晶显示5.1 软件设计思路电子琴主要的工作是将按键的信息读取,然后根据按键的数字,用计数器输出相对应的频率,实现电子琴的音调。程序主要为5 部分,键盘扫描、中断计时、数码显示、音乐播放、主程序,他们分别执行不同的功能。5.2 各部分功能介绍5.2.1 键盘键值读取程序键盘键值读取程序包括键盘扫描、消除抖动、键译码等内容。按键的识别主要有两种方法:行反转法和行扫描法。因为键盘为机械开关,容易引入抖动。为了消除抖动干扰,在程序中要加入消除抖动的部分。5.2.2 中断计时中断部分,中断定时器1 主要负责输出不同频率的方波,产生声音,中断定时器1 主要是计时按键时间及

6、按键间隔时间的功能,在播放音乐的时候,还担任着播放音乐的节拍的任务。5.2.3 音乐播放音乐播放部分主要是播放音乐,实现按键重播和播放程序里面的音乐的功能。5.2.4 主程序口的扫描,判 P 主程序主要是随时发出按键的声音功能,并且通过不断是否是播放按键声音还是播放音乐,还是继续发出按键声音。6 .实验源程序汇编程序:/*SB1 1 音 SB2 2 音 SB3 3 音 SB4 4 音 SB1SB2 5 音 SB2SB3 6 音 SB3SB47 音 SB1SB4 i 音 SB1SB3 第一首歌SB2SB4 第二首歌*/ORG 0000HLJMP KEYP0KEYP0: MOV R0,#00HCL

7、R TR0SETB P2.4 ;关蜂鸣器SETB P2.3 ;关数码管WU: MOV R0,P3 ; 扫描键盘输入CJNE R0,#0FFH,KEYPO1 ; 有输入时跳转JMP WUKEYPO1:CJNE R0,#0FBH,KEYPO2输入 1 音,非 1 音跳转SETB P2.4; 蜂鸣器置于高电平MOV R3,#200MAIN01:MOV TMOD,#01H ;初始化, 工作方式1MOV TL0,#21H; 写入计数初值MOV TH0,#0F9HSETB TR0 ; 启动计数WAIT1:JNB TF0,WAIT1CLR TF0CPL P2.4;蜂鸣器响CLR P2.3;数码管显示1MOV

8、 A,#11111001BMOV P0,ADJNZ R3,MAIN01LJMP KEYP0返回程序KEYP0KEYPO2:CJNE R0,#0F7H,KEYPO3 ;输入2 音 , 非 2 音跳转SETB P2.4; 蜂鸣器置于高电平MOV R3,#200MAIN02:MOV TMOD,#01HMOV TL0,#0E1H; 写入计数初值MOV TH0,#0F9HSETB TR0WAIT2:JNB TF0,WAIT2CLR TF0CPL P2.4;蜂鸣器响CLR P2.3; 数码管显示2MOV A,#10100100BMOV P0,ADJNZ R3,MAIN02LJMP KEYP0KEYPO3:

9、CJNE R0,#0EFH,KEYPO4 输入;3 音 , 非 3 音跳转SETB P2.4; 蜂鸣器置于高电平MOV R3,#200MAIN03:MOV TMOD,#01HMOV TL0,#08CHMOV TH0,#0FAHSETB TR0WAIT3:JNB TF0,WAIT3CLR TF0CPL P2.4CLR P2.3MOV A,#10110000BMOV P0,ADJNZ R3,MAIN03LJMP KEYP0KEYPO4:CJNE R0,#0DFH,KEYPO5 ; 输入 4 音 , 非 4音跳转SETB P2.4MOV R3,#200MAIN04:MOV TMOD,#01HMOV

10、TL0,#0D8HMOV TH0,#0FAHSETB TR0WAIT4:JNB TF0,WAIT4CLR TF0CPL P2.4CLR P2.3MOV A,#10011001BMOV P0,ADJNZ R3,MAIN04LJMP KEYP0输入 5 音 , 非 5 音跳转KEYPO5: CJNE R0,#0F3H,KEYPO6SETB P2.4MOV R3,#200MAIN05:MOV TMOD,#01HMOV TL0,#068HMOV TH0,#0FBHSETB TR0WAIT5:JNB TF0,WAIT5CLR TF0CPL P2.4CLR P2.3MOV A,#10010010BMOV

11、P0,ADJNZ R3,MAIN05LJMP KEYP0KEYPO6:CJNE R0,#0E7H,KEYPO7 ; 输入 6 音 , 非 6 音跳转SETB P2.4MOV R3,#200MAIN06:MOV TMOD,#01HMOV TL0,#0E9HMOV TH0,#0FBHSETB TR0WAIT6:JNB TF0,WAIT6CLR TF0CPL P2.4CLR P2.3MOV A,#10000010BMOV P0,ADJNZ R3,MAIN06LJMP KEYP0音跳转 KEYPO7:CJNE R0,#0CFH,KEYPO8 ; 7 非 , 音 7 输入 SETB P2.4MOV R3

12、,#200MAIN07:MOV TMOD,#01HMOV TL0,#05BHMOV TH0,#0FCHSETB TR0WAIT7:JNB TF0,WAIT7CLR TF0CPL P2.4CLR P2.3MOV A,#11111000BMOV P0,ADJNZ R3,MAIN07LJMP KEYP0KEYPO8:CJNE R0,#0DBH,KEYPO9 ; 输入 i 音 , 非 i 音跳转 SETB P2.4MOV R3,#200MAIN08:MOV TMOD,#01HMOV TL0,#08FHMOV TH0,#0FCHSETB TR0WAIT8:JNB TF0,WAIT8CLR TF0CPL

13、P2.4CLR P2.3MOV A,#10000000BMOV P0,ADJNZ R3,MAIN08LJMP KEYP0KEYPO9:CJNE R0,#0EBH,KEYPO10 跳转到第一首歌程序;LJMP MUSTART1跳转到第二首歌程序KEYPO10:CJNE R0,#0D7H,JIELI ; LJMPMUSTART2返回主程序JIELI:JMP KEYP0;歌曲 MUSTART1:;1的播放程序节拍表指针置零MOV R0,#00H;音符表指针置零MOV R1,#00H;RTAB:MOV A,R0MOV DPTR,#RYTH查表法将一个节拍数据取出放 R2计数器中MOVC A,A+DPT

14、RMOV R2,ATTAB:MOV A,R1MOV DPTR,#TONEMOVC A,A+DPTR位取出音符表高MOV R3,A;81 INCR1;指针加MOV A,R1MOV DPTR,#TONEMOVC A,A+DPTR位取出低8 MOV R4,A; SETBP2.4;输出相应音调的方波LOOP:MOV R5,#3BHMAIN:MOV TMOD,#01HMOV TL0,R4MOV TH0,R3SETB TR0WAIT:JNB TF0,WAITCLR TF0CPL P2.4MAYA:JB P3.2,MAYB ;JB P3.4,MAYB ;LJMP RA;P3.4MAYB:JB P3.3,JI

15、ELI ;JB P3.5,JIELI;LJMP MUSTART2 ;P3.5RA: DJNZ R5,MAIN ;DJNZ R2,LOOPINC R0;INC R1CJNE R1,#88,RTAB;LJMP KEYP0判断P3.2口是否有为1判断P3.4口是否有为1口为0 则跳转到程序RA判断P3.3口是否有为1判断P3.5口是否有为1口为0 则放第二首歌无打断则继续放第一首歌两个表的指针都加1判断是否取完TONE:DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FHDB0FCH,

16、0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH ,68H,0FBH,68HDB0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH ,68H,0FBH,68HDB0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FC H,8FH,0FCH,5BHDB0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0

17、FDH,45H,0FDH,6EH,0FCH,0EFHRYTH:DB 04,04,04,04,04,04,04,04,04,04DB 04,05,04,04,04,04,04,04,04,04DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,04MUSTART2:MOV R0,#00HMOV R1,#00HRTAB2:MOV A,R1MOV DPTR,#TABLE1MOVC A,A+DPTRMOV R2,ATTAB2: MOV A,R1MOV DPTR,#TONE2MOVC A,A+DPTRMO

18、V R3,AINC R1MOV A,R1MOV DPTR,#TONE2MOVC A,A+DPTRMOV R4,ASETB P2.4LOOP2: MOV R5,#9BHMAIN2:MOV TMOD,#01HMOV TL0,R4MOV TH0,R3SETB TR0WAITR:JNB TF0,WAITRCLR TF0CPL P2.4MAYA1:JB P3.3,MAYB1JB P3.5,MAYB1LJMP RBMAYB1:JB P3.2,BACKJB P3.4,BACKLJMP MUSTART1BACK:LJMP JIELIRB: DJNZ R5,MAIN2DJNZ R2,LOOP2INC R0INC

19、 R1CJNE R1,#64,RTAB2LJMP KEYP0TONE2:DB0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FHDB0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH ,68H,0FBH,68HDB0FAH,0DBH,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH ,68H,0FBH,68HDB0FBH,0E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FC H,8FH,0FCH,5BH

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论