单片机 利用蜂鸣器演奏音乐.docVIP

  • 32
  • 0
  • 约4.89千字
  • 约 7页
  • 2020-03-08 发布于广东
  • 举报
实验三-利用蜂鸣器演奏音乐 一、实验目的 1.了解BlueSkyC51单片机实验板中蜂鸣器的硬件电路 2.学会利用蜂鸣器实现音乐的演奏 3.掌握蜂鸣器实现音乐演奏的编程 二、实验硬件设计及电路 1. BlueSkyC51单片机实验板 2.单片机最小系统 3.蜂鸣器电路连接 三极管主要是做驱动用的。因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,你要是输出高电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音。 三、实验原理 1.音调及节拍 用一个口,输出方波,这个方波输入进蜂鸣器就会产生声音,通过控制方波的频率、时间,就能产生简单的音乐。一般说来,单片机演奏音乐基本都是单音频率,因此单片机奏乐只需控制音调和节拍。 (1)音调的确定 音调是由频率来确定的。通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,从而让蜂鸣器发出不同频率的声音。只需将定时器给以不同的定时值就可实现。 通过延时,即可发出所需要的频率。 (2)节拍的确定 一拍的时长大约为400—500ms,每个音符的时长通过节拍来计算。详细见程序代码。 2.软件设计相关 (1)头文件 #includereg51.h #define uint unsigned int #define uchar unsigned char #define ulong unsigned long sbit beep=P1^4; //蜂鸣器与P1.4口连接 (2)歌曲曲谱 uchar code diaodata[30]={ //音调代码 0x10,0x0e,0x0c,0x10,0x0e,0x0c, 0x10,0x0e,0x10,0x0c,0x10,0x15, 0x13,0x10,0x13,0x15,0x15,0x13, 0x15,0x13,0x10,0x0e,0x0c,0x0e, 0x0e,0x10,0x0e,0x0c,0x0e,0x00}; uchar code jiedata[30]={ //音长代码 0x04,0x04,0x08,0x06,0x02,0x08, 0x04,0x04,0x04,0x04,0x02,0x06, 0x08,0x02,0x02,0x04,0x04,0x04, 0x04,0x08,0x02,0x02,0x04,0x04, 0x02,0x02,0x04,0x04,0x0c,0x00}; (3)音阶表 uchar code freq[36*2]={ //音阶码表 0xf7,0xd8, //440hz , 1 //0 0xf8,0x50, //466hz , 1# //1 0xf8,0xbc, //494hz , 2 //2 0xf9,0x26, //524hz , 2# //3 0xf9,0x85, //554hz , 3 //4 0xf9,0xe5, //588hz , 4 //5 0xfa,0x3d, //622hz , 4# //6 0xfa,0x92, //660hz , 5 //7 0xfa,0xdd, //698hz , 5# //8 0xfb,0x29, //740hz , 6 //9 0xfb,0x70, //784hz , 6# //10 0xfb,0xb0, //830hz , 7 //11 0xfb,0xef, //880hz , 1 //12 0xfc,0x29, //932hz , 1# //13 0xfc,0x62, //988hz , 2 //14 0xfc,0x95, //1046hz, 2# //15 0xfc,0xc7, //1108hz, 3 //16 0xfc,0xf5, //1174hz, 4 //17 0xfd,0x20, //1244hz, 4# //18 0xfd,0x4c, //1318hz, 5 //19 0xfd,0x72, //1396hz, 5# //20 0xfd,0x97, //1480hz, 6 //21 0xfd,0xbb, //1568hz, 6# //22 0xfd,0xdc, //1662hz, 7 //23 0xfd,0xfb, //1769hz, `1 //24 0xfe,0x18, //1864hz, `1# //25 0xfe,0x34, //1976hz, `2 //26 0xfe,0x4e, //2092hz, `2# //27 0xfe,0x67, //2218hz, `3 //28

文档评论(0)

1亿VIP精品文档

相关文档