freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機(jī)的低成本音樂(lè)門(mén)鈴設(shè)計(jì)畢業(yè)論文-資料下載頁(yè)

2025-02-26 08:25本頁(yè)面
  

【正文】 ********************************************** main() { InitialSound()。 while(1){ if(key==0) { Delay1ms(10)。 28 if(key==0) Play(Music_Girl,0,3,360)。 do { }while(key==1)。 if(key==0) { Delay1ms(10)。 if(key==0) Play(Music_Same,0,3,360)。 do { }while(key==1)。 if(key==0) { Delay1ms(10)。 if(key==0) Play(Music_Two,0,3,360)。} } } } } 29 附錄 B 播放文件程序 /************************************************************************** SOUND PLAY FOR 51MCU COPYRIGHT (c) 2021 BY JJJ. ALL RIGHTS RESERVED File Name: Author: Jiang Jian Jun Created: 2021/5/16 Modified: NO Revision: *******************************************************************************/ /* ************************************************************************** 曲譜存貯格式 unsigned char code MusicName{音高,音長(zhǎng),音高,音長(zhǎng) ...., 0,0}。 末尾 :0,0 表示結(jié)束 (Important) 音高由三位數(shù)字組成: 個(gè)位是表示 1~7 這七個(gè)音符 十位是表示音符所在的音區(qū) :1低音, 2中音, 3高音 。 百位表示這個(gè)音符是否要升半音 : 0不升, 1升半音。 音長(zhǎng)最多由三位數(shù)字組成: 個(gè)位表示音符的時(shí)值,其對(duì)應(yīng)關(guān)系是: |數(shù)值 (n): |0 |1 |2 |3 | 4 | 5 | 6 30 |幾分音符 : |1 |2 |4 |8 |16 |32 |64 音符 =2^n 十位表示音符的演奏效果 (02): 0普通, 1連音, 2頓音 百位是符點(diǎn)位 : 0無(wú)符點(diǎn), 1有符點(diǎn) 調(diào)用演奏子程序的格式 Play(樂(lè)曲名 ,調(diào)號(hào) ,升降八度 ,演奏速度 )。 |樂(lè)曲名 : 要播放的樂(lè)曲指針 ,結(jié)尾以 (0,0)結(jié)束 。 |調(diào)號(hào) (011) : 是指樂(lè)曲升多少個(gè)半音演奏 。 |升降八度 (13) : 1:降八度 , 2:不升不降 , 3:升八度 。 |演 奏速度 (112021): 值越大速度越快 。 ***************************************************************************/ ifndef __SOUNDPLAY_H_REVISION_FIRST__ define __SOUNDPLAY_H_REVISION_FIRST__ //************************************************************************** define SYSTEM_OSC 12021000 //定義晶振頻率 12021000HZ define SOUND_SPACE 4/5 //定義普通音符演奏的長(zhǎng)度分率 ,//每 4 分音符間隔 sbit BeepIO = P1^0。 //定義輸出管腳 sbit key=P3^7。 unsigned int code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }。 //原始頻率表 unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }。 //1~7 在頻率表中的位置 unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 }。 unsigned char Sound_Temp_TH0,Sound_Temp_TL0。 //音符定時(shí)器初值暫存 31 unsigned char Sound_Temp_TH1,Sound_Temp_TL1。 //音長(zhǎng)定時(shí)器初值暫存 //************************************************************************** void InitialSound(void) { BeepIO = 0。 Sound_Temp_TH1 = (65535(1/1200)*SYSTEM_OSC)/256。 // 計(jì)算TL1 應(yīng)裝入的初值 (10ms 的初裝值 ) Sound_Temp_TL1 = (65535(1/1200)*SYSTEM_OSC)%256。 // 計(jì)算TH1 應(yīng)裝入的初 值 TH1 = Sound_Temp_TH1。 TL1 = Sound_Temp_TL1。 TMOD |= 0x11。 ET0 = 1。 ET1 = 0。 TR0 = 0。 TR1 = 0。 EA = 1。 } void BeepTimer0(void) interrupt 1 //音符發(fā)生中斷 { BeepIO = !BeepIO。 TH0 = Sound_Temp_TH0。 TL0 = Sound_Temp_TL0。 } //************************************************************************** void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed) { unsigned int NewFreTab[12]。 //新的頻率表 unsigned char i,j。 32 unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength。 unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD。 for(i=0。i12。i++) // 根據(jù)調(diào)號(hào)及升降八度來(lái)生成新的頻率表 { j = i + Signature。 if(j 11) { j = j12。 NewFreTab[i] = FreTab[j]*2。 } else NewFreTab[i] = FreTab[j]。 if(Octachord == 1) NewFreTab[i]=2。 else if(Octachord == 3) NewFreTab[i]=2。 } SoundLength = 0。 while(Sound[SoundLength] != 0x00) //計(jì)算歌曲長(zhǎng)度 { SoundLength+=2。 } Point = 0。 Tone = Sound[Point]。 Length = Sound[Point+1]。 // 讀出第一個(gè)音符和它時(shí)時(shí)值 LDiv0 = 12021/Speed。 // 算出 1分音符的長(zhǎng)度 (幾個(gè) 10ms) 33 LDiv4 = LDiv0/4。 // 算出 4 分音符的長(zhǎng)度 LDiv4 = LDiv4LDiv4*SOUND_SPACE。 // 普通音最長(zhǎng)間隔標(biāo)準(zhǔn) TR0 = 0。 TR1 = 1。 while(Point SoundLength) { SL=Tone%10。 //計(jì)算出音符 SM=Tone/10%10。 //計(jì)算出高低音 SH=Tone/100。 //計(jì)算出是否升半 CurrentFre = NewFreTab[SignTab[SL1]+SH]。 //查出對(duì)應(yīng)音符的頻率 if(SL!=0) { if (SM==1) CurrentFre = 2。 //低音 if (SM==3) CurrentFre = 2。 //高音 Temp_T = 65536(50000/CurrentFre)*10/(12021000/SYSTEM_OSC)。//計(jì)算計(jì)數(shù)器初值 Sound_Temp_TH0 = Temp_T/256。 Sound_Temp_TL0 = Temp_T%256。 TH0 = Sound_Temp_TH0。 TL0 = Sound_Temp_TL0 + 12。 //加 12 是對(duì)中斷延時(shí)的補(bǔ)償 } SLen=LengthTab[Length%10]。 //算出是幾分音符 XG=Length/10%10。 //算出音符類(lèi)型 (0 普通 1 連音 2 頓音 ) FD=Length/100。 LDiv=LDiv0/SLen。 //算出連音音符演奏的長(zhǎng)度 (多少個(gè)10ms) if (FD==1) LDiv=LDiv+LDiv/2。 if(XG!=1) if(XG==0) //算出普通音符的演奏長(zhǎng)度 if (SLen=4) 34 LDiv1=LDivLDiv4。 else LDiv1=LDiv*SOUND_SPACE。 else LDiv1=LDiv/2。 //算出頓音的演奏長(zhǎng)度 else LDiv1=LDiv。 if(SL==0) LDiv1=0。 LDiv2=LDivLDiv1。 //算出不發(fā)音的長(zhǎng)度 if (SL!=0) { TR0=1。 for(i=LDiv1。i0。i) //發(fā)規(guī)定長(zhǎng)度的音 { while(TF1==0)。 TH1 = Sound_Temp_TH1。 TL1 = Sound_Temp_TL1。 TF1=0。 } } if(LDiv2!=0) { TR0=0。 BeepIO=0。 for(i=LDiv2。i0。i) //音符間的間隔 { while(TF1==0)。 TH1 = Sound_Temp_TH1。 TL1 = Sound_Temp_TL1。 TF1=0。 } } Point+=2。 Tone=Sound[Point]。 35 Length=Sound[Point+1]。 } BeepIO = 0。 } //************************************************************************** endif 內(nèi)部資料 請(qǐng)勿外傳 9JWKf wvGt YM*Jgamp。 6a*CZ7H$dq8Kqqf HVZFedswSyXTyamp。 QA9wkxFyeQ^! djsXuyUP2kNXpRWXm Aamp。 UE9aQ@Gn8xp$Ramp。849Gx^Gj qv^$UE9wEwZQc@UE%amp。 qYp@Eh5pDx2zVkumamp。 gTXRm 6X4NGpP$vSTTamp。ksv*3t nGK8!z89Am YWpazadNuKNamp
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1