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

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上单片机课程设计报告电子音调发生器 1 课程设计总体目标1.1 总体结构图1 总体结构1.2 设计要求 利用JD51开发板上的按键S1S4和蜂鸣器设计电子音调发生器,要求:(1)利用JD51开发板上的按键S1S4进行音调选择,即按下不同的开关产生不同的音调,依次按动S1S4 及组合按键,蜂鸣器发出i八个音调;并在数码管上显示。(2)编写2支歌曲,并可进行选择播放。1.3 设计目的(1) 了解计算机发声原理。(2) 熟悉定时器和键盘扫描电路的工作原理及编程方法。1.4 设计原理(1)音节由不同频率的方波产生,音节与频率的关系如表1所示。要产生音频方波,只要算出某一音频的周

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

3、振fose=11.0592MHz时,音节“1”相应的定时器初值为x,则可得x=63777D=F921H 其它的可同样求得。 音调低音频率(Hz)低音计数初值X(HEX)中音频率(Hz)中音计数初值X(HEX)高音频率(Hz)高音计数初值X(HEX)1131F242262F921522FC8F2147F3C1294F9E1587FCEF3165F517330FA8C659FD454175F5B7349FAD8700FD6E5196F6D1392FB68784FDB26220F7D1440FBE9880FDEA7247F8B6494FC5B988FE2Ei/523FC8F/表一曲调值DELAY调4

4、/4125ms调3/4187ms调2/4250ms表二(2)音乐程序查表原理: 乐谱格式:每字节的高字节为音符代码,低字节为节拍代码 音符代码 1 2 3 4 5 6 7 8 9 A B C D E F 0 音节 .5 .6 .7 1 2 3 4 5 6 7 1 2 3 4 5 休止 节拍代码 1 2 3 4 5 6 8 A C F 节拍 1/4 2/4 3/4 1 1(1/4) 1(1/2) 2 2(1/2) 3 3(3/4)(3)定时器的使用及时间延迟,首先对定时器进行初始化图2门控位:GATE0,TR=1启动计数(软件启动); GATE1,TR=1 且 INT=1启动计数(硬件启动)。

5、C/T: 定时或计数方式选择位。 C/T0,定时工作方式;C/T1,计数工作方式。M1M0:工作方式选择位。 M1M000,方式0:13位计数(TL0-4、TH0-7)M1M001,方式1:16位计数(TL0-7、TH0-7)M1M010,方式2:8位计数,有自动装入功能M1M011,方式3:T0分为两个8位计数器,TL0可工作为定时或计数方式,TH0只能工作为定时方式。图3TR0/TR1:启动计数。为1启动计数;为0停止计数。TF0/TF1:计数溢出。当加”1”计数结束时为1。本实验采用定时器T0,工作在方式1 (16位计数),无自动装入功能。2 硬件设计2.1 总体框图图4 硬件图2.2

6、蜂鸣电路 模块鸣器驱动电路和89C51组成。 选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100MA驱动电流。当89C51输出为低电平时蜂鸣器产生蜂鸣音,89C51 输出为高电平时,蜂鸣器不发声。2.3 硬件电路图5 电路图3 软件设计3.1 软件设计流程及描述 根据要实现的功能,流程图如下: 熟悉定时器和键盘扫描电路的工作原理及编程方法。图6 流程图图73.2 软件设计思路 电子音调发生器主要的工作是将按键的信息读取,然后根据按键的数字,用计数器输出相对应的频率,实现电子音调发生器的音调。程序主要为5部分,键盘扫描、中断计时、数码显示、音乐播放、主程序,他们分别执行不同的功能。3.3 各部

7、分功能介绍(1)键盘键值读取程序键盘键值读取程序包括键盘扫描、消除抖动、键译码等内容。按键的识别主要有两种方法:行反转法和行扫描法。因为键盘为机械开关,容易引入抖动。为了消除抖动干扰,在程序中要加入消除抖动的部分。(2)中断计时中断部分,中断定时器1主要负责输出不同频率的方波,产生声音,中断定时器1主要是计时按键时间及按键间隔时间的功能,在播放音乐的时候,还担任着播放音乐的节拍的任务。(3)音乐播放音乐播放部分主要是播放音乐,实现按键重播和播放程序里面的音乐的功能。(4)主程序主程序主要是随时发出按键的声音功能,并且通过不同P口的扫描,判断是否是播放按键声音还是播放音乐,还是继续发出按键声音。

8、3.4 实验程序/*SB1 1音 SB2 2音 SB3 3音 SB4 4音 SB1SB2 5音 SB2SB3 6音 SB3SB4 7音 SB1SB4 i音 SB1SB3 第一首歌 SB2SB4 第二首歌 */ORG 0000HLJMP KEYP0KEYP0: MOV R0,#00H CLR TR0 SETB P2.4 ;关蜂鸣器 SETB P2.3 ;关数码管WU: MOV R0,P3 ;扫描键盘输入 CJNE R0,#0FFH,KEYPO1 ;有输入时跳转 JMP WUKEYPO1:CJNE R0,#0FBH,KEYPO2 ;输入1音,非1音跳转 SETB P2.4 ;蜂鸣器置于高电平 MO

9、V R3,#200MAIN01:MOV TMOD,#01H ;初始化,工作方式1 MOV TL0,#21H ;写入计数初值 MOV TH0,#0F9H SETB TR0 ;启动计数 WAIT1:JNB TF0,WAIT1 CLR TF0 CPL P2.4 ;蜂鸣器响 CLR P2.3 ;数码管显示1 MOV A,#B MOV P0,A DJNZ R3,MAIN01 LJMP KEYP0 ;返回程序KEYP0 KEYPO2:CJNE R0,#0F7H,KEYPO3 ; 输入2音,非2音跳转SETB P2.4 ;蜂鸣器置于高电平MOV R3,#200 MAIN02:MOV TMOD,#01H MO

10、V TL0,#0E1H ;写入计数初值 MOV TH0,#0F9H SETB TR0WAIT2:JNB TF0,WAIT2 CLR TF0 CPL P2.4 ;蜂鸣器响 CLR P2.3 ;数码管显示2 MOV A,#B MOV P0,A DJNZ R3,MAIN02LJMP KEYP0KEYPO3:CJNE R0,#0EFH,KEYPO4 ; 输入3音,非3音跳转SETB P2.4 ;蜂鸣器置于高电平MOV R3,#200MAIN03:MOV TMOD,#01H MOV TL0,#08CH MOV TH0,#0FAH SETB TR0WAIT3:JNB TF0,WAIT3 CLR TF0 C

11、PL P2.4 CLR P2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN03LJMP KEYP0KEYPO4:CJNE R0,#0DFH,KEYPO5 ; 输入4音,非4音跳转SETB P2.4MOV R3,#200MAIN04:MOV TMOD,#01H MOV TL0,#0D8H MOV TH0,#0FAH SETB TR0WAIT4:JNB TF0,WAIT4 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN04LJMP KEYP0KEYPO5:CJNE R0,#0F3H,KEYPO6 ; 输入5音,非

12、5音跳转SETB P2.4MOV R3,#200 MAIN05:MOV TMOD,#01H MOV TL0,#068H MOV TH0,#0FBH SETB TR0WAIT5:JNB TF0,WAIT5 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN05LJMP KEYP0KEYPO6:CJNE R0,#0E7H,KEYPO7 ; 输入6音,非6音跳转SETB P2.4MOV R3,#200 MAIN06:MOV TMOD,#01H MOV TL0,#0E9H MOV TH0,#0FBH SETB TR0WAIT6:JNB TF

13、0,WAIT6 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN06LJMP KEYP0KEYPO7:CJNE R0,#0CFH,KEYPO8 ; 输入7音,非7音跳转SETB P2.4MOV R3,#200 MAIN07:MOV TMOD,#01H MOV TL0,#05BH MOV TH0,#0FCH SETB TR0WAIT7:JNB TF0,WAIT7 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN07LJMP KEYP0KEYPO8:CJNE R0,#0D

14、BH,KEYPO9 ; 输入i音,非i音跳转 SETB P2.4 MOV R3,#200 MAIN08:MOV TMOD,#01H MOV TL0,#08FH MOV TH0,#0FCH SETB TR0WAIT8:JNB TF0,WAIT8 CLR TF0 CPL P2.4 CLR P2.3 MOV A,#B MOV P0,A DJNZ R3,MAIN08LJMP KEYP0KEYPO9:CJNE R0,#0EBH,KEYPO10 ;跳转到第一首歌程序 LJMP MUSTART1KEYPO10:CJNE R0,#0D7H,JIELI ;跳转到第二首歌程序 LJMP MUSTART2JIELI

15、:JMP KEYP0 ;返回主程序MUSTART1: ;歌曲1的播放程序 MOV R0,#00H ;节拍表指针置零 MOV R1,#00H ;音符表指针置零RTAB:MOV A,R0 MOV DPTR,#RYTH MOVC A,A+DPTR ;查表法将一个节拍数据取出放R2计数器中 MOV R2,ATTAB:MOV A,R1 MOV DPTR,#TONE MOVC A,A+DPTR MOV R3,A ;取出音符表高8位 INC R1 ;指针加1 MOV A,R1 MOV DPTR,#TONE MOVC A,A+DPTR MOV R4,A ;取出低8位 SETB P2.4 ;输出相应音调的方波L

16、OOP:MOV R5,#3BHMAIN:MOV TMOD,#01H MOV TL0,R4 MOV TH0,R3 SETB TR0WAIT:JNB TF0,WAIT CLR TF0 CPL P2.4MAYA:JB P3.2,MAYB ;判断P3.2口是否有为1 JB P3.4,MAYB ;判断P3.4口是否有为1 LJMP RA ;P3.4口为0则跳转到程序RAMAYB:JB P3.3,JIELI ;判断P3.3口是否有为1 JB P3.5,JIELI ;判断P3.5口是否有为1 LJMP MUSTART2 ;P3.5口为0则放第二首歌RA: DJNZ R5,MAIN ;无打断则继续放第一首歌

17、DJNZ R2,LOOPINC R0 ;两个表的指针都加1INC R1CJNE R1,#88,RTAB ;判断是否取完LJMP KEYP0TONE:DB 0FBH,68H,0FAH,8CH,0FBH,68H,0F9H,0E1H,0FAH,8CH,0F9H,0E1H,0F9H,21HDB 0F9H,21H,0F8H,0B6H,0F7H,0D1H,0F8H,0B6H,0F9H,21H,0F8H,0B6H,0F9H,21H,0F9H,0E1H,0FAH,8CHDB 0FBH,68H,0FAH,8CH,0FBH,68H,0F9H,0E1H,0FAH,8CH,0F9H,0E1H,0F9H,21HDB 0

18、F9H,21H,0F8H,0B6H,0F7H,0D1H,0F8H,0B6H,0F9H,21H,0F8H,0B6H,0F9H,21H,0F9H,0E1H,0F9H,21HDB 0FBH,68H,0FBH,0E9H,0FCH,5BH,0FCH,8FH,0FCH,5BH,0FCH,8FH,0FCH,0EFH,0FCH,8FH,0FCH,0EFH,0FDH,45H,0FBH,68HDB 0F9H,21H,0F9H,0E1H,0FAH,8CH,0FAH,0D8H,0FAH,8CH,0FAH,0D8H,0FAH,0D8H,0FBH,68H,0F9H,21H,0F9H,0E1H,0FAH,8CH,0FAH,

19、8CHDB 0FBH,68H,0FBH,0E9H,0FCH,5BH,0FCH,8FH,0FCH,5BH,0FCH,8FH,0FCH,0EFH,0FCH,8FH,0FCH,0EFH,0FDH,45H,0FBH,68HDB 0F9H,21H,0F9H,0E1H,0FAH,8CH,0FAH,0D8H,0FAH,8CH,0FAH,0D8H,0FAH,8CH,0F9H,0E1H,0F9H,21H,0F8H,0B6H,0F9H,21HRYTH:DB 04,09,04,09,04,08,09DB 04,04,04,04,04,12,04,09,09DB 04,09,04,09,04,08,09DB 04,0

20、4,04,04,04,12,04,09,09DB 04,04,04,08,04,04,04,08,08DB 04,04,04,08,04,04,04,08,08DB 04,04,04,08,04,04,04,08,08DB 04,04,04,08,04,04,04,08,08MUSTART2: MOV R0,#00H MOV R1,#00HRTAB2: MOV A,R1 MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV R2,ATTAB2: MOV A,R1 MOV DPTR,#TONE2 MOVC A,A+DPTR MOV R3,A INC R1 MOV A,R1 MOV

21、 DPTR,#TONE2 MOVC A,A+DPTR MOV R4,A SETB P2.4LOOP2: MOV R5,#9BHMAIN2: MOV TMOD,#01H MOV TL0,R4 MOV TH0,R3 SETB TR0WAITR:JNB TF0,WAITR CLR TF0 CPL P2.4MAYA1:JB P3.3,MAYB1 JB P3.5,MAYB1 LJMP RBMAYB1:JB P3.2,BACK JB P3.4,BACK LJMP MUSTART1BACK:LJMP JIELIRB: DJNZ R5,MAIN2 DJNZ R2,LOOP2 INC R0INC R1CJNE

22、R1,#64,RTAB2LJMP KEYP0TONE2:DB 0FBH,68H,0FDH,6EH,0FDH,45H,0FCH,0EFH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,8FH,0FCH,5BH,0FCH,8FHDB 0FCH,0EFH,0FDH,45H,0FBH,68H,0FBH,68H,0FCH,8FH,0FCH,5BH,0FBH,0E9H,0FBH,68H,0FBH,68HDB 0FAH,0D8H,0FAH,8CH,0F9H,21H,0FAH,8CH,0FAH,0D8H,0FBH,68H,0FBH,68H,0FBH,68H,0FBH,68HDB 0FBH,0

23、E9H,0FBH,0E9H,0FBH,68H,0FBH,0E9H,0FCH,5BH,0FAH,8CH,0FCH,8FH,0FCH,8FH,0FCH,5BHDB 0FCH,8FH,0FCH,0EFH,0FCH,0EFH,0FCH,0EFH,0FCH,8FH,0FDH,45H,0FDH,6EH,0FCH,0EFHTABLE1:DB 04,04,04,04,04,04,04,04,04,04DB 04,06,04,04,04,04,04,04,04,04DB 04,04,04,04,04,04,04,07,04,04DB 04,04,04,06,04,04,04,07,04,04DB 04,04,04,04 END4 实验结果用proteus仿真

温馨提示

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

评论

0/150

提交评论