51單片機(jī)播放音樂簡譜的函數(shù)庫:
/**************************************************************************
SOUND PLAY FOR 51MCU
COPYRIGHT (c) 2005 BY JJJ.
-- ALL RIGHTS RESERVED --
File Name: SoundPlay.h
Author: Jiang Jian Jun
Created: 2005/5/16
Modified: NO
Revision: 1.0
*******************************************************************************/
/*說明**************************************************************************
曲譜存貯格式 unsigned char code MusicName{音高,音長,音高,音長...., 0,0}; 末尾:0,0 表示結(jié)束(Important)
音高由三位數(shù)字組成:
個(gè)位是表示 1~7 這七個(gè)音符
十位是表示音符所在的音區(qū):1-低音,2-中音,3-高音;
百位表示這個(gè)音符是否要升半音: 0-不升,1-升半音。
音長最多由三位數(shù)字組成:
個(gè)位表示音符的時(shí)值,其對應(yīng)關(guān)系是:
|數(shù)值(n): |0 |1 |2 |3 | 4 | 5 | 6
|幾分音符: |1 |2 |4 |8 |16 |32 |64 音符=2^n
十位表示音符的演奏效果(0-2): 0-普通,1-連音,2-頓音
百位是符點(diǎn)位: 0-無符點(diǎn),1-有符點(diǎn)
調(diào)用演奏子程序的格式
Play(樂曲名,調(diào)號,升降八度,演奏速度);
|樂曲名 : 要播放的樂曲指針,結(jié)尾以(0,0)結(jié)束;
|調(diào)號(0-11) : 是指樂曲升多少個(gè)半音演奏;
|升降八度(1-3) : 1:降八度, 2:不升不降, 3:升八度;
|演奏速度(1-12000): 值越大速度越快;
***************************************************************************/
#ifndef __SOUNDPLAY_H_REVISION_FIRST__
#define __SOUNDPLAY_H_REVISION_FIRST__
#i nclude
//**************************************************************************
#define SYSTEM_OSC 11059200//12000000 //定義晶振頻率12000000HZ
#define SOUND_SPACE 4/5 //定義普通音符演奏的長度分率,//每4分音符間隔
sbit BeepIO = P2^6; //定義輸出管腳
unsigned int code FreTab[12] = { 262,277,294,311,