第一章 總體設(shè)計(jì)
1.1 系統(tǒng)功能
按照設(shè)計(jì)要求,本系統(tǒng)具有以下功能:
共有三個(gè)基本模式:電子琴模式、錄音模式、播放器模式
電子琴模式:7個(gè)基本按鍵控制產(chǎn)生7種音調(diào),功能鍵實(shí)現(xiàn)調(diào)節(jié)音階和音量
錄音模式:可分為錄音和放音兩個(gè)模塊,錄音狀態(tài)下會(huì)記錄彈奏的音調(diào)以及時(shí)間;放音模式調(diào)用音樂播放器某些模塊,實(shí)現(xiàn)相同的功能。
音樂播放器模式:可以實(shí)現(xiàn)音樂的播放、暫停、切歌、調(diào)速、順序播放、單曲循環(huán)、隨機(jī)播放、以及進(jìn)度條顯示。
有兩個(gè)全局按鍵中斷,可控制模式切換和全局靜音/暫停。
1.2 主要技術(shù)性能指標(biāo)
基本按鍵:7個(gè);
功能按鍵:6個(gè);
全局中斷按鍵:2個(gè);
揚(yáng)聲器:1個(gè);
揚(yáng)聲器功率:1w;
LCD1602:1塊;
主要模式:3個(gè);
曲庫(kù):8首;
音域范圍:262Hz~2217Hz;
音量階數(shù):3階;
速度階數(shù):4階;
循環(huán)模式:3種;
第二章硬件設(shè)計(jì)
總體系統(tǒng)設(shè)計(jì)上在硬件上共分為3個(gè)區(qū)域:基本按鍵區(qū)、功能按鍵區(qū)、LCD顯示區(qū)。在軟件的設(shè)計(jì)上共分為3個(gè)主要模式:電子琴模式、錄音模式、播放器模式。主控模塊選擇使用STM32f103rbt6芯片,進(jìn)行編程、控制、實(shí)現(xiàn)電子琴以及播放器功能。
2.1 整體硬件圖
2.2 按鍵模塊
按鍵模塊分為兩部分:基本按鍵和功能按鍵
倆個(gè)部分按鍵分別接在單片機(jī)的PC0-PC6以及PC8-PC13接口上。
2.3 揚(yáng)聲器模塊
揚(yáng)聲器模塊接在單片機(jī)的PC07接口上。
2.4 顯示模塊
將LCD1602的D0 ~ D7分別連接到單片機(jī)的 PA0~7,使能端 E、 RW、 RS分別連接到單片機(jī)的 PA8、 PA11、 PA12。
2.5 主控模塊
第三章 軟件設(shè)計(jì)
3.1 主要工作原理
設(shè)計(jì)的主要工作原理是利用STM32所內(nèi)置的定時(shí)器TIM3產(chǎn)生一個(gè)PWM信號(hào)驅(qū)動(dòng)揚(yáng)聲器產(chǎn)生特定頻率的聲音。通過改變定時(shí)器TIM3的分頻預(yù)置數(shù)改變PWM信號(hào)的頻率從而產(chǎn)生不同音調(diào)的聲音。通過改變占空比,從而產(chǎn)生不同音量的聲音。
相關(guān)流程圖如下:
3.2 PWM發(fā)生器
3.3 music播放器模塊
music模塊包含了產(chǎn)生聲音,靜音,音樂播放,音樂切換,進(jìn)度條展示等相關(guān)函數(shù),全都由本人編寫
靜音模塊:通過調(diào)用TIM_SetTIM3Compare2()函數(shù)讓占空比為0,進(jìn)而達(dá)到靜音效果。
void buzzerQuiet(void)//停止發(fā)聲
{
TIM_SetTIM3Compare2(0);
}
發(fā)聲函數(shù):通過調(diào)用TIM_SetTIM3Autoreload設(shè)置TIM3的自動(dòng)裝載值實(shí)現(xiàn)產(chǎn)生特定頻率PWM信號(hào),傳入的參數(shù)為聲音頻率和音量參數(shù)。
進(jìn)度條顯示函數(shù):可以顯示播放進(jìn)度以及全局狀態(tài),如當(dāng)前曲目、暫停狀態(tài)、音量、播放速度等。
下一首函數(shù):根據(jù)傳入nextmode參數(shù)不同進(jìn)行順序,單曲,隨機(jī)下一首。
音樂播放函數(shù):傳入樂譜(由結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)),調(diào)用彈奏音符函數(shù),實(shí)現(xiàn)音樂自動(dòng)播放。
3.4 exti外部中斷
本設(shè)計(jì)使用了PC8,PC9口的按鍵作為兩個(gè)外部中斷,控制全局切換模式,以及全局暫停/靜音。
3.5 按鍵相關(guān)驅(qū)動(dòng)
通過函數(shù)判斷按鍵值,mode參數(shù)可調(diào)節(jié)是否支持連按。
3.6 LCD1602驅(qū)動(dòng)
LCD初始化相關(guān)代碼采用例程,只列出關(guān)鍵代碼:
void LCD_SHOW(u8* tab0,u8* tab1)
{
if(tab0)
LCD1602_Show_Str(0, 0, tab0);
if(tab1)
LCD1602_Show_Str(0, 1, tab1);
}
定義函數(shù)LCD_SHOW,傳入字符串顯示,在避免直接調(diào)用LCD的顯示函數(shù),通過tab0和tab1的鎖存,實(shí)現(xiàn)更豐富需求。
第四章 整體實(shí)現(xiàn)功能
單片機(jī)下載完成后,顯示Mode Selection Please Press 1-3表示初始化完成等待選擇模式。
按下key1,進(jìn)入Piano模式,可以開始彈奏。
按下key13可進(jìn)行音量調(diào)節(jié),key12可以調(diào)節(jié)音調(diào)
按下key8切換模式,進(jìn)入錄音模式
錄音模式下,按key0進(jìn)行開始錄音
錄音會(huì)記錄音調(diào)以及持續(xù)時(shí)間,按下key13停止錄音
錄音完成后按下key13放音,可以聽到記錄的曲子
按下key13切換模式進(jìn)入播放器模式
按下key0-key7選擇曲目,也可以直接按key13開始播放
播放時(shí),按下key13下一首,key12調(diào)音量,key11調(diào)速度,key10調(diào)節(jié)下一首。 按下key9可暫停。
播放時(shí)有進(jìn)度條顯示。
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634624 -
lcd
+關(guān)注
關(guān)注
34文章
4424瀏覽量
167396 -
播放器
+關(guān)注
關(guān)注
5文章
397瀏覽量
37409 -
STM32
+關(guān)注
關(guān)注
2270文章
10895瀏覽量
355727 -
電子琴
+關(guān)注
關(guān)注
4文章
152瀏覽量
30496
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論