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