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

正文內(nèi)容

基于51單片機(jī)的低成本音樂門鈴設(shè)計(jì)畢業(yè)論文(參考版)

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

【正文】 ksv*3t nGK8!z89Am YWpazadNuKNamp。 qYpEh5pDx2zVkumamp。 UE9aQGn8xp$Ramp。 6a*CZ7H$dq8Kqqf HVZFedswSyXTyamp。 } BeepIO = 0。 Tone=Sound[Point]。 TF1=0。 TH1 = Sound_Temp_TH1。i0。 BeepIO=0。 TF1=0。 TH1 = Sound_Temp_TH1。i0。 //算出不發(fā)音的長(zhǎng)度 if (SL!=0) { TR0=1。 if(SL==0) LDiv1=0。 else LDiv1=LDiv/2。 if(XG!=1) if(XG==0) //算出普通音符的演奏長(zhǎng)度 if (SLen=4) 34 LDiv1=LDivLDiv4。 LDiv=LDiv0/SLen。 //算出是幾分音符 XG=Length/10%10。 TL0 = Sound_Temp_TL0 + 12。 Sound_Temp_TL0 = Temp_T%256。 //高音 Temp_T = 65536(50000/CurrentFre)*10/(12021000/SYSTEM_OSC)。 //查出對(duì)應(yīng)音符的頻率 if(SL!=0) { if (SM==1) CurrentFre = 2。 //計(jì)算出高低音 SH=Tone/100。 while(Point SoundLength) { SL=Tone%10。 // 普通音最長(zhǎng)間隔標(biāo)準(zhǔn) TR0 = 0。 // 算出 1分音符的長(zhǎng)度 (幾個(gè) 10ms) 33 LDiv4 = LDiv0/4。 Length = Sound[Point+1]。 } Point = 0。 } SoundLength = 0。 if(Octachord == 1) NewFreTab[i]=2。 NewFreTab[i] = FreTab[j]*2。i++) // 根據(jù)調(diào)號(hào)及升降八度來生成新的頻率表 { j = i + Signature。 for(i=0。 32 unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength。 } //************************************************************************** void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed) { unsigned int NewFreTab[12]。 TH0 = Sound_Temp_TH0。 EA = 1。 TR0 = 0。 ET0 = 1。 TL1 = Sound_Temp_TL1。 // 計(jì)算TL1 應(yīng)裝入的初值 (10ms 的初裝值 ) Sound_Temp_TL1 = (65535(1/1200)*SYSTEM_OSC)%256。 //音長(zhǎng)定時(shí)器初值暫存 //************************************************************************** void InitialSound(void) { BeepIO = 0。 unsigned char Sound_Temp_TH0,Sound_Temp_TL0。 //原始頻率表 unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }。 //定義輸出管腳 sbit key=P3^7。 |演 奏速度 (112021): 值越大速度越快 。 |調(diào)號(hào) (011) : 是指樂曲升多少個(gè)半音演奏 。 音長(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無符點(diǎn), 1有符點(diǎn) 調(diào)用演奏子程序的格式 Play(樂曲名 ,調(diào)號(hào) ,升降八度 ,演奏速度 )。 末尾 :0,0 表示結(jié)束 (Important) 音高由三位數(shù)字組成: 個(gè)位是表示 1~7 這七個(gè)音符 十位是表示音符所在的音區(qū) :1低音, 2中音, 3高音 。 if(key==0) Play(Music_Two,0,3,360)。 do { }while(key==1)。 if(key==0) { Delay1ms(10)。 28 if(key==0) Play(Music_Girl,0,3,360)。 //*********************************************************************************** main() { InitialSound()。 //小星星 unsigned char code Music_Same[]={ 0x15,0x02, 0x15,0x02, 0x19,0x02, 0x19,0x02, 0x1A,0x02, 0x1A,0x02, 0x19,0x01, 0x18,0x02, 0x18,0x02, 0x17,0x02, 0x17,0x02, 0x16,0x02, 0x16,0x02, 0x15,0x01, 0x19,0x02, 27 0x19,0x02, 0x18,0x02, 0x18,0x02, 0x17,0x02, 0x17,0x02, 0x16,0x01, 0x19,0x02, 0x19,0x02, 0x18,0x02, 0x18,0x02, 0x17,0x02, 0x17,0x02, 0x16,0x01, 0x15,0x02, 0x15,0x02, 0x19,0x02, 0x19,0x02, 0x1A,0x02, 0x1A,0x02, 0x19,0x01, 0x18,0x02, 0x18,0x02, 0x17,0x02, 0x17,0x02, 0x16,0x02, 0x16,0x02, 0x15,0x01, 0x00,0x00 }。j++)。i++) for(j=0。 for(i=0。這是我們都希望看到的也正是我們進(jìn)行畢業(yè)設(shè)計(jì)的目的所在。其次是程序方面的設(shè)計(jì),主要解決的問題是如何在一個(gè)按鈕的基礎(chǔ)上,實(shí)現(xiàn)歌曲的輪換以及播放,這是此次設(shè)計(jì)的難點(diǎn)之一,另外,焊接是此次設(shè)計(jì)所用時(shí)間最多的一部分,因?yàn)楸救说暮附蛹夹g(shù)不到位 ,焊接能力不高,所以造成焊接的屢次失敗,不過我在失敗中吸取經(jīng)驗(yàn),在完成焊接后,焊接技術(shù)得到很大的提高。 對(duì)于該段程序中的主要保護(hù)手段,就是按鈕防治抖動(dòng)部分,因此在等待 按鈕按下后, 采用一小段的延遲程序,再次判定是否有按鈕的按下,在進(jìn)入播放程序。 所以,主要考慮到的是如何在 播放完一首歌曲后,進(jìn)入在此等待狀態(tài)。 其次是主程序的編輯,原來的音樂播放程序只是假單的等待按鈕按下后,直接播放一首 完整的 歌 曲 后緊接著另外一首 完整的歌曲 歌。 程序在開始之初是用簡(jiǎn)單的中斷延遲來實(shí)現(xiàn),對(duì)于編歌曲來講需要很大的工作量,在網(wǎng)上查找大量的資料之后,找到了一個(gè)做音樂播放器的程序,他也是基于中斷延遲來實(shí)現(xiàn)播放功能,但是他對(duì)于歌曲編輯的靈活性,有很大的發(fā)展空間,所以我就采用了他的部分程序 。 在 keil 軟件經(jīng)不斷改進(jìn)后,生成 hex 文件,再用郭天祥 51 開發(fā)板燒入程序,并通過 stcisp 燒錄軟件燒錄后,最終得以完成。 軟件調(diào)試與實(shí)現(xiàn) 程序主要取自一個(gè)音樂播放程序,但沒有功率放大部分,更沒有多音樂輪流 23 播放部分,按鈕部分。其中還試過由于本人疏忽,直接把芯片焊接(沒通過 芯片底座 ) 在開發(fā)板上,導(dǎo)致芯片燒壞,不得將其更換。這樣的焊接不僅有利于系統(tǒng)的調(diào)試,還有利于日后對(duì)于其他系統(tǒng)的開發(fā),直接利用最小系統(tǒng)以及杜邦線引出端口即可。 硬件調(diào)試與實(shí)現(xiàn) 考慮到本設(shè)計(jì)以低成本為主,所以一切原件以便宜為上,本設(shè)計(jì)開發(fā)工具需要用到一個(gè)電烙鐵,一個(gè)鐵架,一卷焊錫,一盒松脂, 1 塊 6X7CM 開發(fā)板, 1塊 6X10CM 開發(fā)板,一塊 STC89C52 芯片以及一塊芯片底座,一個(gè) USB 接口,一個(gè)電源開關(guān), 1 個(gè) 10uf 電容, 2 個(gè) 30pf 電容, 1 個(gè) 12Mhz 晶振,一個(gè)抖動(dòng)開關(guān), 1 個(gè) 10k 電阻,一個(gè) 10k 滑動(dòng)變阻器,一塊 lm386 芯片及其底座, 1 個(gè) 220uf電容, 1 個(gè) 電容,一個(gè) 8 歐姆 5 瓦的揚(yáng)聲器,以及杜邦線若干 ,插排若干。 TL0 = Sound_Temp_TL0 + 12。 Sound_Temp_TL0 = Temp_T%256。 //高音 Temp_T = 65536(50000/CurrentFre)*10/(12021000/SYSTEM_OSC)。 //查出對(duì)應(yīng)音符 的頻率 if(SL!=0) { if (SM==1) CurrentFre = 2。 //計(jì)算出高低音 SH=Tone/100。 } 播放函數(shù)用于主文件程序中調(diào)用 音符的音調(diào)以及節(jié)拍,從而產(chǎn)生中斷,播放音樂,其部分程序如下: …… while(Point SoundLength) { SL=Tone%10。 21 TH0 = Sound_Temp_TH0。 EA = 1。 TR0 = 0。 ET0 = 1。 TL1 = Sound_Temp_TL1。 // 計(jì)算 TL1 應(yīng)裝入的初值 (10ms 的初裝值 ) Sound_Temp_TL1 = (65535(1/1200)*SYSTEM_OSC)%256。 初始化函數(shù)是對(duì)芯片端口進(jìn)行初始化操作,以確定中斷模式以及端口初始值,程序如下: void InitialSound(void) { BeepIO = 0。j++)。i++) for(j=0。 for(i=0。} } } } } 延時(shí)程序部分。 if(key==0) { Delay1ms(10)。 if(key==0) Play(Music_Same,0,3,360)。 do { }while(key==1)。 while(1){ if(key==0) 19 { Delay1ms(10)。 主程序首先對(duì)所有端口進(jìn)行初始化操作,接著進(jìn)入不斷循環(huán)部分,直到按鍵按下,進(jìn)入防止抖動(dòng)程序,如果不是抖動(dòng),則進(jìn)入音樂播放程序,直到音樂播放完畢,再次進(jìn)入等待按鍵按下部分,直到第二次按鍵按下,再次進(jìn)入防止抖動(dòng)程序,如果不是抖動(dòng),則 再次 進(jìn)入音樂播放程序,直到音樂播放完畢, 直到第三次按鍵按下,最后一次次進(jìn)入防止抖動(dòng)程序,如果不是抖動(dòng),則最后一次次進(jìn)入音樂播放程序,直到音樂播放完畢,回到循環(huán)起點(diǎn),等 待第四次按鍵按下部分,如此類推。 1/4 拍的延時(shí)時(shí)間在此我們?cè)O(shè)為 125毫秒。假設(shè)1/4 拍為 1 DELAY,則 1 拍應(yīng)該為 4 DELAY,以此類推。 17 圖 程序控制流程圖 準(zhǔn)備 調(diào)用初始化程序 讀 P3 口,判斷有無按鍵按下 調(diào)用初始化程序 調(diào)用延時(shí)子程序 讀 P3 口,判斷有無按鍵按下 調(diào)用初始化程序 調(diào)用延時(shí)子程序 調(diào)用延時(shí)子程序 調(diào)用播放子程序
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1