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

正文內(nèi)容

基于avr單片機(jī)的電子琴設(shè)計(jì)(已修改)

2024-11-21 22:19 本頁面
 

【正文】 一、功能說明 1. 能通過鍵盤輸入基本的音階,并在 LED 上顯示,蜂鳴器同步發(fā)出聲音。輸入的音階將被存儲起來,可以被重放。 2. 編輯完成后,可播放編輯好的音樂。 3. 可對音樂進(jìn)行基本的操作:播放,暫停,停止,重輸入,快進(jìn),后退。 二、應(yīng)用價(jià)值 1. 作為手機(jī)音樂編輯器。 2. 作為的模擬電子琴(比如,放在嬰兒車上)。 3. 作為定音哨。 …… 三、實(shí)現(xiàn)方案 1. 硬件設(shè)計(jì)思想和電原理圖。 2. 通過 TIMER0 輸出方波,作為音階,以 TIMER1 延時(shí),產(chǎn)生節(jié)拍,通過蜂鳴器播放出來。 3. 由鍵盤輸入數(shù)據(jù)、控制播放,由 LED 顯示。 電原理圖如下 : 連線照片: 軟件設(shè)計(jì)思想和流程圖。 每個 play, pause 等(暫稱之為執(zhí)行函數(shù)) ,都只執(zhí)行很短的時(shí)間,放在 while (state=?)循環(huán)內(nèi)部,中斷函數(shù)只負(fù)責(zé)改變 state 的值。 數(shù)組定義: Music_arr[歌曲數(shù)組名 ][狀態(tài)位 ]。 歌曲數(shù)組名 [音頻 ][節(jié)拍 ]。 共五個; 下圖僅表示功能定義,代表由上而下的設(shè)計(jì)結(jié)構(gòu)。不代表程序流程。 4位 led 代表意義: 1. 模式選擇, P, E; 2. 曲目序號, 15; 3. 播放模式時(shí)為當(dāng)前狀態(tài), state 為空時(shí)不顯示 4. 音階 07,播放時(shí)為播放的音階,編輯時(shí)為輸入的音階。 中斷處理子過程 程序流程 main() 軟件詳細(xì)功能: 當(dāng)鍵盤被按下時(shí),觸發(fā)外部中斷,中斷函數(shù)更改全局狀態(tài)變量,主函數(shù)不斷掃描這些變量,從而調(diào)用相應(yīng)的函數(shù)處理。 以下簡單介紹幾個函數(shù)的功能: ? play 函數(shù):播放預(yù)存數(shù)組中的一個音節(jié)。 ? stop 函數(shù) :停止播放。 ? pause 函數(shù):暫停播放,同時(shí)記錄下當(dāng)前播放的數(shù)組元素的位置,等待繼續(xù)播放。 ? ,:播放狀態(tài)時(shí),前進(jìn)一首和后退一首。編輯狀態(tài)時(shí),升高或降低八度,從而可以在覆蓋幾乎全部音域 ? 當(dāng)處于編輯狀態(tài)時(shí), delete 退格鍵, reset 重新輸入鍵。 0- 7 為音階,存入數(shù)組中。 程序源代碼見 附一 。 四.系統(tǒng)測試過程及測試數(shù)據(jù) 。 系統(tǒng)測試過程隨著開發(fā)過程同時(shí)進(jìn)行,我們實(shí)行的是邊開發(fā),邊測試的思路。 開發(fā)過程及進(jìn)度表如下: 起始階段:定義鍵盤功能( 詳見附二 ) 1. 6 月 13 日,可以通過 TIMER0 輸出方波,作為音階,以 TIMER1 延時(shí),產(chǎn)生節(jié)拍,通過蜂鳴器播放出來發(fā)出各種頻率的聲音。 定義了 1- 7各個音階的頻率。寫出發(fā)音函數(shù),作為底層接口,可以在程序中直接 調(diào)用。 方便以后的進(jìn)程。(測試代碼見 附三 ) 2. 6 月 16 日,能通過鍵盤輸入基本的音階,并在 LED上顯示,蜂鳴器同步發(fā)出聲音。通過鍵盤輸入,編輯完成音樂,數(shù)據(jù)存入一個定義的數(shù)組中。 編輯完成后,可將數(shù)組中的數(shù)據(jù)按照預(yù)定的方式通過單片機(jī)輸出到喇叭中,播放編輯好的音樂。 數(shù)組中預(yù)存《喀秋莎》,可以下載程序聽到美妙的音樂播放出來。(測試代碼 見附四 ) 3. 6 月 20 日,完成,并開始準(zhǔn)備相應(yīng)的設(shè)計(jì)報(bào)告及其他文檔。(測試代碼見 附一 ) 五 . 設(shè)計(jì)所需資源。 硬件資源: AVR 開發(fā)板一塊,揚(yáng)聲器一個。 軟 件資源: iccavr, avr studio 軟件。 人力資源:組內(nèi)全體成員。 六 .成員分工和工作情況。 李曉:播放函數(shù)編寫,鍵盤定義。 楊金龍:軟件整體架構(gòu),軟件調(diào)試。 李鈺:相關(guān)文檔整理, ppt , 網(wǎng)頁制作。 各成員基本完成各自份內(nèi)的任務(wù)。 附一: include //決定是否播放 ,全局變量 /////////uint16 *p。//歌曲選擇指針 uint8 list=0。//歌曲選擇變量 uint8 input=1。 uint8 pause=1。 uint8 state=0,stop=1,play=1,key。 uint8 MUSIC_DATA[50][2]。 uint8 i=0,length=50,key_buffer。//i 歌曲播放指針 //6 7 1 2 3 5 6 7 1 flash uint16 Mode_Data[16]={440,494,523,587,659,698,784, 880,998,1046,1156,1318,1396,1568,0}。//存放聲音的頻率 /*********************************** * 音樂產(chǎn)生函數(shù) * * 功能:輸出頻率為 x 的方波,延時(shí) y MS* * 范圍: x:10020200Hz, 0:不發(fā)聲 * * y:065536 MS * ***********************************/ extern void sound(uint16 i) { //uint16 x。 //x=music_data[i][0]。 //取音樂的頻率數(shù)據(jù) if(i!=0) { //x=。 //1M 時(shí)鐘數(shù)據(jù)計(jì)算 OCR1A=500000/i。 //比較值賦值 TCCR1A = 0x40。 //允許比較反轉(zhuǎn)輸出 } else { TCCR1A = 0x00。 //頻率為 0,休止符,不發(fā)聲 } } /************************************ * 延時(shí)函數(shù): 1M 時(shí)鐘時(shí)為 MS * ************************************/ extern void delay_ms(uint16 i) { uint8 a。 for(。i。i) { for (a = 220。 a。 a) //倍率 原來 220 { 。}} } flash uint16 kaqiusha[][2]= { {440,600},{494,200},{523,600},{443,200},{523,400},{494,200}, {440,200},{494,400},{330,400},{494,600},{523,200},{578,600}, {494,200},{578,400},{523,200},{494,200},{440,800},{659,400}, {880,400},{784,400},{880,200},{784,200},{698,400},{659,200}, {578,200},{659,400},{440,400},{ 0,200},{698,400},{578,200}, {659,600},{523,200},{494,200},{330,200},{523,200},{494,200}, {440,800},{659,400},{880,400},{784,400},{880,200},{784,200}, {698,400},{659,200},{578,200},{659,400},{440,400},{ 0,200}, {698,400},{578,200},{659,600},{523,200},{494,200},{330,200}, {523,200},{494,200},{440,800},{0,0} }。 void kaqiusha_sing(void) { sound(kaqiusha[i][0])。 //輸出音符 // PORTA=seg7_data(i%16)。 delay_ms(kaqiusha[i][1])。//節(jié)拍延時(shí) TCCR1A = 0x00。 //奏完一個音符停止 PORTD|=15。 if(!kaqiusha[++i][1]) //準(zhǔn)備一下個音符 { i=0。 play=0。 pause=1。 input=0。 if((++list)5) {list=0。}。 } } flash uint16 moscow_night[][2]= { {440,400},{523,400},{659,400},{523,400}, {587,800},{523,400},{494,400},{659,800}, {587,800},{440,1600},{523,400},{659,400}, {784,400},{784,400},{880,800},{784,400}, {698,400},{659,1600},{740,800},{831,800}, {988,400},{880,400},{659,1200},{494,800},{440,400}, {659,400},{587,400},{698,1600},{784,400}, {698,400},{659,800},{587,400},{523,400},{659,800}, {587,800},{440,1600},{740,800},{831,800}, {988,400},{880,400},{659,1200},{494,800},{440,400}, {659,400},{587,400},{698,1600},{784,400}, {698,400},{659,800},{587,400},{523,400},{659,800}, {587,800},{440,3200},{0,0} }。 void moscow_night_sing(void) { sound(moscow_night[i][0])。 //輸出音符 // PORTA=seg7_data(i%16)。 delay_ms(moscow_night[i][1])。//節(jié)拍延時(shí) TCCR1A = 0x00。 //奏完一個音符停止 PORTD|=15。 if(!moscow_night[++i][1]) //準(zhǔn)備一下個音符 { i=0。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1