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

正文內(nèi)容

微機(jī)與接口技術(shù)課程設(shè)計(jì)音樂發(fā)生器實(shí)驗(yàn)(已修改)

2025-06-12 18:02 本頁面
 

【正文】 音樂發(fā)生器實(shí)驗(yàn)?zāi)? 錄1 前言 22 需求分析 22.1原理 22.2要求 22.3任務(wù) 22.4運(yùn)行環(huán)境 22.5開發(fā)工具 23 概要設(shè)計(jì) 33.1系統(tǒng)流程圖: 33.2音符文件讀取程序流程圖 33.3播放子程序 43.4延時(shí)子程序 44 詳細(xì)設(shè)計(jì) 54.1歌曲編排 54.2分析和設(shè)計(jì) 54.3具體代碼實(shí)現(xiàn) 85 課程設(shè)計(jì)的總結(jié)與體會(huì) 136 致謝 137 參考資料 13 1 前言編寫一個(gè)程序來初始化8253定時(shí)/計(jì)數(shù)器和8255并行通信接口芯片。通過接口控制音樂發(fā)聲器的播放和燈光的閃爍,實(shí)現(xiàn)通過運(yùn)行在MFDI平臺(tái)運(yùn)行程序?qū)τ布娐返目刂啤? 需求分析2.1 原理編寫程序?qū)?253和8255芯片進(jìn)行初始化,按照音符來設(shè)定頻率和8253定時(shí)/計(jì)數(shù)器的延時(shí)時(shí)間。對(duì)8255芯片pc0和pc6口的置0和1來控制揚(yáng)聲器的開關(guān),對(duì)pc4口的置0和1控制LED燈的閃爍。2.2 要求(1)熟悉電路,理解各個(gè)元件之間的控制流程。(2)熟悉MFDI平臺(tái)的運(yùn)行環(huán)境。(3)熟練掌握C語言,調(diào)用中斷子程序和端口函數(shù)對(duì)端口進(jìn)行讀寫數(shù)據(jù)的操作。(4)理解樂譜知識(shí),熟悉音頻轉(zhuǎn)換表和節(jié)拍的延長時(shí)間2.3 任務(wù)(1)曲譜轉(zhuǎn)換(2)分析電路圖(3)畫出程序流程圖(4)編寫代碼(5)程序分析與調(diào)試(6)測(cè)試2.4 運(yùn)行環(huán)境(1)WINDOWS2000/XP系統(tǒng)(2)MFDI實(shí)驗(yàn)平臺(tái)(3)VC編譯環(huán)境2.5 開發(fā)工具C語言3 概要設(shè)計(jì)3.1 系統(tǒng)流程圖():YNYNYYNNN等于‘1’?等于‘2’?等于‘3’?輸入一個(gè)字符這個(gè)數(shù)字是否等于‘5’?讀文件子程序1播放子程序1讀文件子程序2播放子程序2等于‘4’?讀文件子程序4播放子程序4讀文件子程序3播放子程序3開始結(jié)束啟動(dòng)界面Y 系統(tǒng)流程圖3.2 音符文件讀取程序流程圖(): N文件是否存在?讀取文件的字符N是否讀完?打印報(bào)錯(cuò)信息開始結(jié)束結(jié)束y 音符文件讀取流程圖3.3 播放子程序流程圖():取下一個(gè)音符的頻率和時(shí)延開始初始化歌曲的頻率及延時(shí)取歌曲的第一個(gè)音符的頻率和時(shí)延初始化8255和8253置8255的pcpc0為0,再次關(guān)閉揚(yáng)聲器結(jié)束根據(jù)頻率計(jì)算計(jì)數(shù)初值并送往8253置8255的pcpc0為1,使揚(yáng)聲器發(fā)聲調(diào)用延時(shí)子程序置8255的pcpc0為0,關(guān)閉揚(yáng)聲器返回DOS是否按了任意鍵或遇到了音符頻率的結(jié)束?YN 播放流程圖3.4 延時(shí)子程序流程圖():獲取并保存中斷ICH的中斷向量音符的延時(shí)次數(shù)已到?向中斷ICH裝入新的中斷向量恢復(fù)中斷ICH原來的中斷向量NY開始結(jié)束 延時(shí)流程圖4 詳細(xì)設(shè)計(jì)4.1 歌曲編排根據(jù)歌曲的音符來獲取它的頻率和延時(shí)時(shí)間,具體介紹請(qǐng)參考《音樂發(fā)聲器音樂篇》4.2 分析和設(shè)計(jì)在程序的開頭部分是聲明了四首歌曲的頻率和延時(shí)時(shí)間然后分別定義了指向頻率數(shù)組和延時(shí)數(shù)組的指針,void interrupt (*oldhandler)(__CPPARGS)。void interrupt handler(__CPPARGS){ (*pTimeDelay) 。 // 延時(shí)點(diǎn)數(shù)減一 oldhandler()。 // 調(diào)用原例程 }這個(gè)函數(shù)表示的是調(diào)用的延時(shí)子程序。然后聲明了4個(gè)Playing函數(shù),來調(diào)用4首歌的播放子程序。下面是編寫的4個(gè)read函數(shù),分別是從文件里讀出4首歌的音符。通過轉(zhuǎn)換表轉(zhuǎn)換成16進(jìn)制的數(shù)字()。 音符——燈光閃爍頻率表音符1234567燈光閃爍頻率0x10x30x70xf0x1f0x3f0x7f說明當(dāng)音符為‘1’時(shí),相應(yīng)的閃爍一個(gè)燈為0x1,音符為‘2’時(shí),相應(yīng)的閃爍兩個(gè)燈為0x3,依次規(guī)律類推。int * read(char *p){ int i。 FILE * fp。 int aa[300],* pp。 fp=fopen(p,r)。 while((aa[i]= fgetc(fp))!=1) { switch(aa[i]) { case 39。139。:bb[i]=0x1。break。 case 39。239。:bb[i]=0x3。break。 case 39。339。:bb[i]=0x7。break。 case 39。439。:bb[i]=0xf。break。 case 39。539。:bb[i]=0x1f。break。 case 39。639。:bb[i]=0x3f。break。case 39。739。:bb[i]=0x7f。break。}i++。}pp = dd。 return pp。 }這個(gè)程序主要是從文件中讀取音符,然后把讀到的音符通過音符——燈光閃爍頻率表轉(zhuǎn)化成相應(yīng)的16進(jìn)制。讀完了后放到一個(gè)數(shù)組中,然后返回一個(gè)數(shù)組指針。int Playing(void){ oldhandler = getvect(INTR)。 // 保存原中斷向量 setvect(INTR, h
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1