课程设计:嵌入式系统应用题目名称:成绩利用蜂鸣器实现音乐播放功能姓 名:学号 班级 完成时间:1设计的任务设计内容:动手焊接一个51单片机设计目标:利用单片机上的蜂鸣器实现音乐播放功能2设计的过程2・1基本结构1.STC89C52RC在本次的试验中采用了 STC89C52RC单片机,STC89C52RC单片机是宏晶 科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传 统8051单片机,12时钟/机器周期,工作电压:5.5V〜3.3VC5V单片机)/3.8V〜 2.0VC3V单片机),工作频率范围:0〜40MHz,相当于普通8051的0〜80MHz, 实际工作频率可达48MHz,用户应用程序空间为8K字节5二臣 SV?臣 『::"亠 匸-1:迈£ F 1-1:=一出 目 ——血 WASI 总二 ◎:;-二 〕1二_〕-二8r7n:应9.EIII 二― 二二;.: 迁SIE—15二 “-二 二■■■■IL■i~T71CO2U2:・l_T37'--■J C-=J .―1 ■:z:' 3oo2gLTDcn・ Ir_l 1CT-ZicoproC--I「 co cvn i:v j i:-=]C--JC--3c-jc-j匸TC--3r-JC-=]JFDIF-40・ 1coLOC-Ot—■O- ,―1 EMi±i±i cn 1_1 T~~1 T~~1'-■■■ _l・ ■L£j空b—CCi1(STC89C52RC 引脚图)STC89C52RC单片机的工作模式:(1) 典型功耗<0.1 "A,可由外部中断唤醒,中断返回后,继续执行原程序(2) 空闲模式:典型功耗2mA(3) 正常工作模式:典型功耗4Ma〜7mA(4) 唤醒,适用于水表、气表等电池供电系统及便携设备2.蜂鸣器及其工作原理:蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产 生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声本实验采用的是电磁式蜂鸣器蜂鸣器按其是否带有信号源又分为有源和无源两种类型有源蜂鸣 器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固 定频率的信号,驱动蜂鸣器发出声音无源蜂鸣器可以理解成与喇叭一 样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音 本实验采用的是有源蜂鸣器P34(蜂鸣器与单片机连接电路图)2・2软件设计过程1.蜂鸣器发声原理本实验由于采用有源蜂鸣器,只需将引脚端口 P3八4清零,蜂鸣 器即可发声;P3八4置位,蜂鸣器停止发声采用置1置0的方法只 能使蜂鸣器发声或停止发声,想要使蜂鸣器发出声音,必须对蜂鸣 器发出声音的音频和节拍进行控制音乐基础音调:不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就 是音乐的音名,它们一般依次唱成DO、RE、Ml、FA、SO、LA、SI,即唱成简谱的 1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读 音,这是唱曲时乐音的发音,所以叫“音调”即Tone。
把C、D、E、F、 G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音” 两个音之间的距离有两个“半音”,就叫“全音” 在钢琴等键盘乐器上, C-D、D-E、F-G、G-A、A- B两音之间隔着一个黑键,他们之间的 距离就是全音;E-F、B-C两音之间没有黑键相隔,它们之间的距离就 是半音通常唱成 1、 2、 3、 4、 5、 6、 7 的音叫自然音,那些在它们的 左上角加上#号或者b号的叫变化音叫升记号,表示把音在原来的 基础上升高半音, b 叫降记音,表示在原来的基础上降低半音例如高 音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音 DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的,高 音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音 RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍节拍: 节拍是让音乐具有旋律(固定的律动),而且可以调节各个音的快满 度节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之 拍手或跺脚若1拍实0.5s,则1/4拍为0.125s至于1拍多少s,并没 有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些 人快一点,有些人慢一点,只要听的悦耳就好。
音持续时间的长短即时 值,一般用拍数表示休止符表示暂停发音1) 控制发声频率要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周 期除以 2,即为半周期的时间利用定时器计时这半个周期时间,每当 计时到后就将输出脉冲的 I/O 反相,然后重复计时此半周期时间再对 I/O 反相,就可在I/O脚上得到此频率的脉冲利用STC89C52RC的内部定时 器使其工作在计数器模式MODE1下,改变计数值TH0及TL0从而产生 不同频率此外结束符和休止符可以分别用代码00H和FFH来表示,若 查表结果为0x00,则表示曲子终了;若查表结果为0xff,则产生相应的 停顿效果以标准音高A为例,A的频率是440Hz,周期T=1/440=2272us在占 空比为50%的情况下,导通时间=断开时间=半周期t=2272us/2=1136us, 利用P3A4端口的位操作,经过不断地反相变换即可得到标准音高A的音 频脉冲端口导通时间与断开时的时间利用定时器实现具体的方法是 将单片机定时器的中断触发时间设为半周期t,这样每隔半周期端口反 相,输出连续的对应音高的频率设晶振的频率为f0,中断触发时间(半周期)为t,定时器工作在模 式1时计数器的初值为THL,高8位为THL,低8位为TL。
时钟周期即 为1/f0,定时器每一次累加用去一个机器周期,一个机器周期包含12个 时钟周期,即定时器每次加一所用时间是12/f0定时器在模式1下计时 采用16位数,最大计数为2八16-1 (65535),再次加一(65536)溢出触 发中断根据以上分析可得如下关系:音频对应定时器初值的高8位TH=THL/(2八8)=(65536-t*f/12)/256; 音频对应定时器初值的低8位TL=THL%(2A8)=(65536-t*f/12)%256;附:八度12音阶定时器初值表(只含自然音)低音音频率Hz晶振晶振中音音频率Hz晶振晶振高音音频率Hz晶振晶振名12MHz11.0592名12MHz11.0592名12MHz11.0592MHzMHzMHzDo2620xF8850xF91BDo5230xFC430xFC8EDo10460xFE210xFE47Re2940xF95A0xF9DFRe5870xFCAD0xFCEDRe11750xFE560xFE76Mi3300xFA130xFA8AMi6590xFD0A0xFD43Mi13180xFE850xFEA1Fa3490xFA680xFAD8Fa6980xFD340xFD6AFa13970xFE9A0xFEC7So3920xFB040xFB68So7840xFD820xFDB3So15680xFEC10xFED9La4400xFB900xFBE9La8800xFDC80xFDF3La17600xFEE40xFEF9Si4940xFC0C0xFC5BSi9880xFE060xFE2DSi19760xFF030xFF162)控制发声节拍每个音符的节拍可通过延时一定的时间来实现,在具体实现时需要 有一个基本的带参延时程序,用于主函数根据不同的音符调用不同的时 延。
若以十六分之一音符的时长为基本延时时间,则十六分音符只需调 用一次延时程序,八分音符则需调用两次延时程序,以此类推3)简谱及其编码*简谱知识音阶CDEFGAB唱名doremifasolasi数字1234567Q音符音符用数字1至7表示这7个数字就等于大调的自然音阶如果是C大调,加上音名,就会是这样:Q八度如果是高一个八度,就会在数字上方加上一点如果是低一个八度, 就会数字下方加上一点在中间的那一个八度就什么也不用加如果要 再高一个八度,就在上方垂直加上两点(如::);要再低一个八度,就在5下方垂直加上两点(如:•),如此类推见下表所示:小调(八…H ]:门H…讥Q音长通常只有数字的是四分音符数字下加一条横线,就可令四分音符 的长度减半,即成为八分音符;两条横线可令八分音符的长度减半,即 成为十六分音符,余此类推;简单来説,下加横綫数目与五綫谱的符尾 数目相对应数字后方的横线延长音符,每加一条横线延长一个四分音 符的长度正如五綫谱的附点一样,数字后方加一点会将音符长度增加 一半Q休止符休止符用“0”来表示比四分休止符长,就只需在每一个四分休止符 再多加一个“0”,不需在后方加上横线若整个小节均是休止状态的话, 就在每个四分音符加一个“0”,就像是3拍4就写成"I 0 0 0 I”,而4拍4 就写成“I 0 0 0 0 I”。
Q无音高音符就像敲击乐的乐器那样是没有音高的,这时,简谱就需要用“X”或“X” 表达例如啦啦队拍手时,简谱上就需如此表达:4/4 > >拍手:I X X X X X I X X X X 0 X X IIQ小节线正如五綫谱一样,小节与小节之间以纵綫(称小节线)分隔,乐曲终止 以一粗一细的直綫表示(但是一般不分粗细);重复乐段以纵綫后两点表示 开始,纵綫前两点表示终止9拍号拍号的表达方式为:“2/4”、“3/4”、“4/4”、“6/8”等等拍号一般都是置 于调号的后方9变调与调号表示调号有两种方法:可以直接写“C调”,“C小调”或“Key: C”,“Key:Cm”亦可写清楚主音代表哪一个音,例如1=C,就是C大调(大调以1 为主音)6=C就是C小调(小调以6为主音)2=D就是D多利安调(多 利安调以2为主音)五线谱有升降号,简谱同样有升降号在简谱中, 若需表达升降号,就把符号加在数字1至7的前方,让该音升高或降低 若要把升降号加在调号跟和弦CDEFGAB七个字母,就须加在它们的后方 在五綫谱中,C小调要把B-E-A三个音降低半音所以表达它的和声小调 时,就会把一个还原号放在Bb前面。