课程设计(论文)基于单片机的电子音响设计.doc

上传人:仙人指路1688 文档编号:4150630 上传时间:2023-04-07 格式:DOC 页数:18 大小:309.50KB
返回 下载 相关 举报
课程设计(论文)基于单片机的电子音响设计.doc_第1页
第1页 / 共18页
课程设计(论文)基于单片机的电子音响设计.doc_第2页
第2页 / 共18页
课程设计(论文)基于单片机的电子音响设计.doc_第3页
第3页 / 共18页
课程设计(论文)基于单片机的电子音响设计.doc_第4页
第4页 / 共18页
课程设计(论文)基于单片机的电子音响设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《课程设计(论文)基于单片机的电子音响设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的电子音响设计.doc(18页珍藏版)》请在三一办公上搜索。

1、摘要:单片机是一种集成电路芯片,采用超大规模技术,把具有数据处理能力的微处理器、随机存取数据存储器、只读程序存储器、输入输出电路、可能还包括定时计数器、串口通信口、显示驱动电路,脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一块芯片上,构成一个最小而完善的计算机系统。这些电路在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。此次电子音响(定时器/计数器)实验,设计的系统是以51系列单片机80C51为主控制器,几个按键、扬声器等组成。根据代码设计用定时器0控制,通过按钮的选择,产生一定频率的脉冲,驱动蜂鸣器,放出音。外接两个按钮,用这两个键来控制喇叭发出不同的声音。本系统运行

2、稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词 单片机80C51;电子音响;定时器0 目录1 引言12 概述12.1课题来源与意义12.2系统主要功能以及所做工作13 硬件系统设计13.1总体设计13.2模块设计23.3硬件设计34 软件设计54.1 音调和节拍54.2软件设计流程94.3源程序代码9实习体会14参 考 文 献151 引言单片机控制系统能够取代以前利用复杂电子线路或者数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在的单片机的控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等

3、,单片机的应用领域越来越广泛。2 概述2.1课题来源与意义随着经济的发展、科技的突飞猛进,芯片业得到了迅速的发展,是单片机技术在各种民用和工业控制等领域得到更广泛的应用。单片机凭借其低成本、高性能的不可代替优势已经成为了微电脑控制的主力军。学习单片机的有效方法是将理论与实践并重,因此通过对单片机电子音响的设计和研究,鼓励学生在熟悉基本原理的前提下,与实际应用相联系,提出自己的方案,来完善设计,使得他们更好的掌握单片机的应用。2.2系统主要功能以及所做工作本次课程设计的要求用定时器0或定时器1定时产生不同的频率,利用开关组进行选择,从P3口输出方波频率,然后送驱动电路,推动喇叭发声。编写程序,调

4、试运行,拨动不同的开关,使喇叭发出不同的声音。3 硬件系统设计3.1总体设计实现这个课题我们使用80C51作为控制主体,系统针对一首曲子进行编码,然后查表播放,乐谱中每一个音符都与某一个特定的频率相对应。单片机音乐演奏控制通过控制内部定时器T0来产生不同频率的方波,从而驱动喇叭发出不同音符的声音。外接两个按钮,用这两个键来控制喇叭发出不同的声音。模块图如下:主体控制模块时钟模块放大电路按钮控制模块图3-1 系统模块图3.2模块设计3.2.1主体控制模块芯片80C51是核心,P0、P1、P2、P3口均可以作为I/O口使用。P0口接2个按键,分别进行方式选择,控制喇叭发出不同的声音。图3-2主体控

5、制模块图3.2.2按键控制模块按键控制模块采用独立式按键接口设计。独立式按键是每一个按键占用一根I/O端线。特点:各个按键相互独立,电路配置灵活;按键数量较多时,I/O端线耗费较多,电路复杂;软件结构简单。按键去抖动问题:键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。软件去抖动:检测到按键按下后,执行延时子程序后再确认是否确实按下,消除抖动影响。图3-3按钮控制模块图3.2.3时钟模块时钟电路用于产生单片机工作时所需的时钟信号,在芯片的外部通过18脚、19脚接晶体振荡器和微调电容,形成反馈电路,构成一个稳定的自激振荡器。电路中的C1、C2取30

6、Pf左右,二晶体振荡器的频率范围通常是1.2-12MHZ,晶体振荡器的频率越高,振荡频率越高。图3-4时钟模块图3.3硬件设计使用Protel 99 SE绘制原理图,绘制相应的原件封装,进行电气规则检查并生成原件清单。如图3-5。使用Protel 99 SE绘制PCB印刷电路板设计,如图3-6。图3-5 Protel硬件连接图图3-6 PCB硬件连接图使用Proteus仿真软件,根据已经画出的Protel 99 SE的原理图,绘制出了仿真图,而且在设计的功能的要求的基础上,我又增加了数码管的显示,用于对按键选择的显示功能,以及增加了流水灯的功能,在播放音乐时候,可以进行流水灯的显示,增添了视觉

7、上的效果。仿真图如下图3-7。图3-7 Proteus仿真图仿真运行后,按下按键SW2,选择模式1,此时数码管显示“1”,同时流水灯进行花样变化,喇叭可以放出歌曲1,效果如图3-8。.图3-8 Proteus仿真运行图4 软件设计4.1 音调和节拍4.1.1 音调与频率一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。乐谱中每一个音符都与某一个特定的频率相对应。单片机音乐演奏控制通过控制内部定时器T0来产生

8、不同频率的方波,从而驱动喇叭发出不同音符的声音。调号-音乐上指用以确定乐曲主音高度的符号。很明显一个八度就有12个半音。 A、B、C、D、E、F、G。经过研究,全世界都用这些字母来表示固定的音高。比如,A这个音,标准的音高为每秒钟振动440周。升C调:1#C,也就是降D调:1BD;277(频率)升D调:1#D,也就是降E调:1BE;311升F调:1#F,也就是降G调:1BG;369升G调:1#G,也就是降A调:1BA;415升A调:1#A,也就是降B调:1BB。466,C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415 A 440

9、. #A466 B 494所谓1A,就是说,这首歌曲的“导”要唱得同A一样高,人们也把这首歌曲叫做A调歌曲,或叫“唱A调”。1C,就是说,这首歌曲的“导”要唱得同C一样高,或者说“这歌曲唱C调”。同样是“导”,不同的调唱起来的高低是不一样的。在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与,2(来)与正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1i八音区为例,12个半音是:11、12、22、

10、23、34、44,45、5一5、56、66、67、7i。这12个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例:A的频率f = 440 Hz,其对应的周期为:T

11、= 1/ f = 1/440 =2272s单片机上对应蜂鸣器的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136s这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定:t = 12 *(TALL THL)/ f0式中TALL = 216 = 65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:TH = THL / 256 = ( TALL t* f0/12) / 256TL = THL % 256 = ( TALL

12、t* f0/12) %256将t=1136s代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为 :TH440Hz = (65536 1136 * 12/12) /256 = FBHTL440Hz = (65536 1136 * 12/12)%256 = 90H根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。4.1.2节拍与周期音符的节拍我们可以举例来说明。在一张乐谱中,我们经常会看到这样的表达式,如1=C 、1=G 等等,这里1=C,1=G表示乐谱的曲调,和我们前面所谈

13、的音调有很大的关联,、就是用来表示节拍的。以为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如: 其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为400500ms 。我们以一拍的时长为400ms为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。可见,在单片机上控制一个音符唱

14、多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数,如此直到播放完毕最后一个音符,根据需要也可循环不停

15、地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。下面给出部分音符(三个八度音)的频率以及以单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值 :表4-1 音调与频率对应表C调音符频率Hz262277293311329349370392415440466494TH/TLF88BF8F2F95BF9B7FA14FA66FAB9FB03FB4AFB8FFBCFFC0BC调音符11#22#344#55#66#7频率Hz523553586621658697739783

16、830879931987TH/TLFC43FC78FCABFCDBFD08FD33FD5BFD81FDA5FDC7FDE7FE05C调音符频率Hz104511061171124113161393147615631658175518601971TH/TLFB21FE3CFE55FE6DFE84FE99FEADFEC0FE02FEE3FEF3FF024.2软件设计流程T0初始化并开中断允放T0中断装入音符到T值到T0读取按键值开始启动启动T0工作停止T0工作T0中断入口重装TH0,TL0初值中断返回图4-1软件设计流程图4.3源程序代码#include #includeunsigned char

17、Count;unsigned char keys;sbit _Speak =P34 ; /喇叭控制脚 #define led P2 /数码管unsigned char pattern_P2=0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF9,0xF3,0xE7,0xCF,0x9F,0x3F,0xFF,0xAA,0x55,0x18,0xFF,0xF0,0x0F,0x00,0xFF,0xF8,0xF1,0xE3,0xC7,0x8F,0x1F,0x3F,0x7F,0x7F,0x3F,0x1F,0x8F,0xC7,0xE3,0xF1,0xF8,0xFF,

18、0x00,0x00,0xFF,0xFF,0x0F,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,

19、0xFF,0x00,0xFF;unsigned char code SONG1 = /祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x3

20、0,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x2

21、6,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x2

22、6,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,; unsigned char code SONG2 = /路边的野花不要采0x1C,0x10,0x18,0x10,0x20,0x10,

23、0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,

24、0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,0x05,0x20,0x10,

25、0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,;void

26、 Time_Init() TMOD = 0x11; IE = 0x8a; IP = 0x02; TH0 = 0xD8; TL0 = 0xEF; /12MZ晶振,10ms TH1 = (65536 - 50000)/256; TL1 = (65536 - 50000)%256; TR1 = 1;void Time0_Int() interrupt 1 TH0 = 0xD8; TL0 = 0xEF; Count+; /长度加1void Time0_LED() interrupt 3static unsigned char L_Count = 0,n=0;TH1 = (65536 - 50000)/

27、256; TL1 = (65536 - 50000)%256;if(+L_Count = 5)L_Count = 0;led=pattern_P2n+;n%=104;/*-功能:1MS延时子程序-*/void Delay_xMs(unsigned int x) unsigned int i,j; for( i =0;i x;i+ ) for( j =0;j3;j+ ); /*-功能:歌曲播放子程序i为播放哪一段曲目-*/void Play_Song1(unsigned char i) unsigned char Temp1,Temp2; unsigned int Addr; /P0=0xc0;

28、 P0=0xf9; Count = 0; /中断计数器清0 Addr = i * 217; while(1) Temp1 = SONG1Addr+; if ( Temp1 = 0xFF ) /休止符 TR0 = 0; Delay_xMs(100); else if ( Temp1 = 0x00 ) /歌曲结束符 return; else Temp2 = SONG1Addr+; TR0 = 1; while(1) _Speak = _Speak; Delay_xMs(Temp1); if ( Temp2 = Count ) Count = 0; break; void Play_Song2(un

29、signed char i) unsigned char Temp1,Temp2; unsigned int Addr; /P0=0xc0; P0=0xa4; Count = 0; /中断计数器清0 Addr = i * 217; while(1) Temp1 = SONG2Addr+; if ( Temp1 = 0xFF ) /休止符 TR0 = 0; Delay_xMs(100); else if ( Temp1 = 0x00 ) /歌曲结束符 return; else Temp2 = SONG2Addr+; TR0 = 1; while(1) _Speak = _Speak; Delay

30、_xMs(Temp1); if ( Temp2 = Count ) Count = 0; break; /*-功能:主程序-*/void main() Time_Init(); /定时器0中断初始化 P3=0xfe; P1=0xff; /将Port2规划为输入口 while(1) /while循环 keys=P1; /读取按钮 switch(keys) /判断 case 0x01:Play_Song1(0); break; /按下S1,播放第一首歌 case 0x02:Play_Song2(0); break; /按下S2,播放第二首歌 /while循环结束实习体会通过这次的课程设计,让我学习

31、到了很多知识以及认识到了很多问题。同时我意识到了一个很重要的问题,那就是课程设计之前的准备工作也是很重要的,包括提前预习设计的题目,上网和去图书馆查阅资料。我清楚的知道了,资料也是那么重要,否则在一个新颖的题目面前,你将无从下手。通过准备工作,这样可以保正在设计的时候,有了充足的准备,使得自己不会在真正要开始课程设计的时候,对着题目发呆,没有什么进展。因此,我觉得这个也是对待学习的一种好的态度,以后在学习中,也要一直以这种好的态度对待。本次实习所设计的系统针对一首曲子进行编码,然后查表播放,乐谱中每一个音符都与某一个特定的频率相对应。单片机音乐演奏控制通过控制内部定时器T0来产生不同频率的方波

32、,从而驱动喇叭发出不同音符的声音。外接两个按钮,用这两个键来控制喇叭发出不同的声音。在程序设计的过程中,也遇到了好多的问题,刚开始在代码调试的时候,一直会存在错误,也有过很失望的时候,但是都没有放弃,在同学以及老师的帮助下,我们把代码进行了修改,才得以完成了电子音响的基本功能。总的来说,这次设计获益胜多。因为本次课程设计是一个团队的合作,所以,不仅使得我们团结合作,学习到了知识,还让我们更加的学会沟通。不仅培养了实践能力,还培养了设计思维,同时也锻炼了动手实际操作能力,在摸索该如何设计电路使之实现所需功能的过程中,锻炼了运用所学知识的灵活性,加深了对知识的理解及提高了解决问题的能力。在体会到设计电路的艰辛的同时,更能体会到成功喜悦和快乐。参 考 文 献1 康华光.电子技术基础数字部分(第五版).高等教育出版社,20062 严天峰.单片机应用系统设计与仿真调试.北京:北京航空航天大学出版社,2005 3 李广弟,朱秀月,冷祖祁.单片机基础(第三版).北京:北京航空航天大学出版社,2007 4 赵建领.51系列单片机开发宝典M.北京.电子工业出版社,20075 王曙霞.单片机实验与实训指导M.西安.西安电子科技大学出版社,20076 胡汉才.单片机原理及其接口技术M.北京.清华大学出版社,20047 梅丽凤.王艳秋.单片机原理及接口技术.清华大学出版社.北京交通大学出版社.2007

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号