国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于單片機(jī)的音樂盒設(shè)計(jì)與實(shí)現(xiàn)

2016-07-22 21:16魏林海
電腦知識與技術(shù) 2016年16期
關(guān)鍵詞:音樂盒蜂鳴器單片機(jī)

魏林海

摘要:通過以STC89C52單片機(jī)為核心,設(shè)計(jì)一款數(shù)字音樂盒。該音樂盒主要由以下幾部分組成:STC89C52單片機(jī)的最小系統(tǒng),蜂鳴器電路,12864LCD顯示電路,4*4矩陣鍵盤電路,LED燈閃爍電路;功能上實(shí)現(xiàn)讀取樂譜上的信息并轉(zhuǎn)化為單片機(jī)可用數(shù)據(jù),通過驅(qū)動(dòng)蜂鳴器實(shí)現(xiàn)音樂的播放。在矩陣鍵盤上使用按鍵來選擇十首歌曲的播放及相關(guān)控制,同時(shí)在液晶屏上顯示音樂的相關(guān)信息。硬件電路圖布局以Altium Designer為設(shè)計(jì)平臺,進(jìn)行PCB設(shè)計(jì),完成數(shù)字音樂盒的整體設(shè)計(jì)、實(shí)現(xiàn)。

關(guān)鍵詞:單片機(jī);音樂盒;蜂鳴器;LCD;PCB

中圖分類號:TP338 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)16-0234-03

音樂是由人們在長期發(fā)展中為了表達(dá)各種情感而特別挑選出來的,并組成一個(gè)固定的系統(tǒng)[1]。音樂以其具有大眾的魅力,吸引著來自不同地域的人們共同欣賞著優(yōu)美的音樂,激發(fā)調(diào)動(dòng)人們埋藏在內(nèi)心那已久的悸動(dòng)。同時(shí),在21世紀(jì),電子技術(shù)進(jìn)入了輝煌的發(fā)展時(shí)期,其產(chǎn)生的電子產(chǎn)品也遍布社會的各個(gè)領(lǐng)域,在各行各業(yè)中單片機(jī)都在發(fā)揮著核心作用,如何將電子技術(shù)與音樂相融合,亦是研究熱點(diǎn)之一。本文通過利用單片機(jī)及音樂相關(guān)知識,設(shè)計(jì)一個(gè)以52單片機(jī)為核心元件的電子音樂盒,以滿足功能多樣、低成本、方便使用、小巧靈活等需求。

1 音樂盒設(shè)計(jì)框圖及流程

該音樂盒是以STC89C52單片機(jī)為核心,加上外圍電路如:矩陣鍵盤電路、蜂鳴器電路、LCD電路、USB供電電路以及LED燈閃爍電路所組成的[2]。音樂盒設(shè)計(jì)框圖和流程圖如圖1、圖2所示:

2 系統(tǒng)軟件設(shè)計(jì)

2.1 音樂程序設(shè)計(jì)

已知不同的音調(diào)有著不一樣的頻率,每個(gè)音調(diào)都有著不同的時(shí)間周期常數(shù)[3]。用定時(shí)器T0對單片機(jī)進(jìn)行定時(shí),通過輸出不同周期的方波給蜂鳴器來控制、發(fā)出需要的音調(diào)[4]。從低音到高音每一個(gè)音調(diào)都有定時(shí)器T0對應(yīng)的一個(gè)初值,由此當(dāng)晶振為12MHz,可以列出音調(diào)與定時(shí)器T0初值的表1:

通過表1,可以讀出音樂簡譜上每個(gè)音符對應(yīng)的音調(diào),讀出對應(yīng)的定時(shí)器T0的初值,讓定時(shí)器T0工作在定時(shí)模式1,當(dāng)計(jì)數(shù)從初值到最大值65536時(shí)溢出,并觸發(fā)單片機(jī)某個(gè)管腳信號取反,所產(chǎn)生的就是所需要的音調(diào)頻率,再通過蜂鳴器發(fā)出對應(yīng)音調(diào)的聲音。

在本設(shè)計(jì)中以延時(shí)函數(shù)控制每個(gè)音符的時(shí)長來實(shí)現(xiàn),以十六分音符的時(shí)長編寫一個(gè)延時(shí)函數(shù),做為其他音符時(shí)長的一個(gè)基準(zhǔn),所以調(diào)用一次就是十六分音符的時(shí)長,循環(huán)調(diào)用該函數(shù)兩次就是八分音符,循環(huán)調(diào)用四次就是四分音符,循環(huán)調(diào)用該函數(shù)八次就是二分音符。根據(jù)以上所述,在程序中本設(shè)計(jì)是這樣處理的:把各個(gè)音調(diào)所對應(yīng)定時(shí)器T0的初值化為十六進(jìn)制數(shù),取每個(gè)音調(diào)初值的高八位、低八位依次放在兩個(gè)數(shù)組中。音階頻率表高八位數(shù)組code uchar FREQH[]={0xF8, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; 音階頻率表低八位數(shù)組code uchar FREQL[]={0x8C, 0x5B, 0x15, 0x67, 0x04, 0x90, 0x0C, 0x44, 0xAC, 0x09, 0x33, 0x82, 0xC8, 0x06, 0x22, 0x57, 0x85, 0x98, 0xC1, 0xE4, 0x03}。

音調(diào)和節(jié)拍關(guān)系處理:從簡譜可以讀出每個(gè)音符的音調(diào)和節(jié)拍存在數(shù)組中,每三個(gè)表示一個(gè)音符:第一個(gè)數(shù)字表示音符名1 2 3 4 5 6 7;第二個(gè)數(shù)字表示音調(diào)所在音區(qū):0是重音,1是中音,2是高音;第三個(gè)數(shù)字表示延時(shí)函數(shù)的調(diào)用次數(shù): 1是16分音符調(diào)用次數(shù);2是8分音符調(diào)用次數(shù);4是4分音符調(diào)用次數(shù);8是2分音符調(diào)用次數(shù);16是全音符調(diào)用次數(shù)。通過這樣就可以構(gòu)成一首音樂的數(shù)組,下面就表示《歡樂頌》在本設(shè)計(jì)中數(shù)組的表示:

以此簡譜為標(biāo)準(zhǔn)說明從簡譜到音樂的編碼:數(shù)組第一個(gè)數(shù)字3表示第一個(gè)音符是3,第二個(gè)數(shù)字是1表示第一個(gè)音符是中音,第三個(gè)數(shù)字4表示這是個(gè)四分音符,所以第一個(gè)音就是四分音符的中音3。

2.2 LCD顯示程序設(shè)計(jì)

LCD顯示之前,需進(jìn)行初始化,之后才能對它進(jìn)行寫指令或數(shù)據(jù),下面圖3是LCD初始化過程:

本設(shè)計(jì)采用8位數(shù)據(jù)并行方式, DL取1,RE取0,向LCD寫入0x30指令。功能設(shè)定寫入指令0x30。顯示開關(guān)的控制指令: D=1,B=1,C=1,向LCD寫入0x0f指令,等待時(shí)間大于100us。清除顯示指令,向LCD寫入0x01指令,等待時(shí)間大于10ms,進(jìn)入模式設(shè)置,向LCD寫入0x06指令。完成初始化設(shè)置,根據(jù)控制端使用單片機(jī)向LCD寫入指令和寫入數(shù)據(jù)。

3 系統(tǒng)硬件設(shè)計(jì)

3.1 硬件原理圖

基于Altium Designer的原理圖庫建立music.SCHLIB[5]。圖4給出了音樂盒在Altium Designer中設(shè)計(jì)的原理圖。

通過音樂盒原理圖的繪制后,進(jìn)行編譯排除原理圖中漏接或者其他可以檢測到的問題,驗(yàn)證無誤后導(dǎo)入到PCB進(jìn)行布局和布線。

3.2 單片機(jī)最小系統(tǒng)電路

3.2.1 時(shí)鐘振蕩電路

52MCU的運(yùn)行速度和其穩(wěn)定性依賴于微控制器時(shí)鐘頻率,時(shí)鐘電路直接關(guān)系到設(shè)備是否可以正常使用,本設(shè)計(jì)時(shí)鐘電路采用的是內(nèi)部時(shí)鐘模式下,單片機(jī)有一個(gè)內(nèi)部高增益反相放大器,通過作為輸入引腳XTAL1,輸出引腳為XTAL2,構(gòu)成自激振蕩電路[6]。

3.2.2 復(fù)位電路

STC89C52單片機(jī)最小系統(tǒng)中的復(fù)位電路是最小系統(tǒng)中另外一個(gè)重要組成部分,它主要的作用就是:用在對單片機(jī)實(shí)現(xiàn)初始的狀態(tài)。

3.3 蜂鳴器電路

單片機(jī)通過P3.7口與蜂鳴器模塊聯(lián)系在一起,當(dāng)蜂鳴器兩端加上工作電壓后,蜂鳴器就可以發(fā)出鳴叫聲。該電路之所以能夠?qū)崿F(xiàn)控制蜂鳴器的響與不響,主要是利用三極管Q1工作在開關(guān)狀態(tài),當(dāng)P3.7=1時(shí),三極管Q1工作在截止區(qū),蜂鳴器兩端與5V電源斷開,此時(shí)不發(fā)聲;當(dāng)P3.7=0時(shí),三極管Q1工作在飽和區(qū),發(fā)射極與集電極幾乎成短路狀態(tài),蜂鳴器兩端有電壓從而使得蜂鳴器鳴叫聲。

3.4 LED閃爍電路模塊

LED閃爍電路由發(fā)光二極管構(gòu)成的,共有8個(gè),一方面同一端接在一起接到VCC,另一方面8個(gè)發(fā)光二極管各自通過一個(gè)阻值足夠的電阻,從而減少電流,然后分別接到單片機(jī)的P0的8個(gè)管腳構(gòu)成,當(dāng)P0的某個(gè)管腳通過程序控制其為高電平,那么它對應(yīng)的LED是一個(gè)二極管,符合二極管的原理,所以它處于截止?fàn)顟B(tài),沒有電流通過,所以燈是滅的。反之,當(dāng)P0的某個(gè)管腳通過程序控制其為低電平的時(shí)候,同理,這時(shí)電流可以流經(jīng)二極管,因?yàn)樗幱陲柡蛥^(qū),所以燈是亮的。通過在keil開發(fā)環(huán)境改變LED相關(guān)的程序讓其可以達(dá)到多種的亮滅情況。

3.5 矩陣鍵盤掃描模塊電路

由于單片機(jī)I/O口數(shù)目有限,當(dāng)需要用多個(gè)按鍵,采用獨(dú)立按鍵一個(gè)鍵占用一個(gè)端口這樣單片機(jī)可能會出現(xiàn)端口不夠用的情況。本次設(shè)計(jì)就是這種情況,采用獨(dú)立按鍵會占用大量單片機(jī)端口而出現(xiàn)端口不夠用,所以為了高效利用單片機(jī)的I/O口,采用矩陣式鍵盤可以只利用八個(gè)I/O口控制16個(gè)按鍵,16個(gè)按鍵分成4行4列。每個(gè)行列線的交叉點(diǎn)設(shè)一個(gè)按鍵,以此構(gòu)成矩陣鍵盤。

對于矩陣鍵盤按鍵的識別方法,本設(shè)計(jì)采用的是線反轉(zhuǎn)法。首先先讓行線全為高電平,列線全為低電平,當(dāng)一個(gè)按鍵按下的時(shí)候會使得按下的鍵對應(yīng)的一條行線變?yōu)榈碗娖剑@一步就可以判斷該按鍵在哪一行,接著讓行線全為低電平,列線全為高電平,同理,當(dāng)一個(gè)按鍵按下的時(shí)候會使得該鍵對應(yīng)的列線變?yōu)榈碗娖?,通過這兩步確定按鍵的所在的行列也就可以確定是矩陣鍵盤第幾個(gè)按鍵被按下了[7]。

3.6 LCD顯示模塊

音樂盒在LCD上主要顯示音樂信息,包括音樂的序號、音樂名稱、音樂作曲以及作曲家,所以這里采用的是帶中文字庫的點(diǎn)陣型液晶12864,從名字可以看出它表示的意思,它表示在液晶范圍的橫向可以顯示128個(gè)點(diǎn),縱向可以顯示64個(gè)點(diǎn)。該芯片內(nèi)部共有8192個(gè)中文漢字,基本確保常用漢字都包括進(jìn)去了,比較偏的漢字可以通過造字來實(shí)現(xiàn)。每個(gè)漢字占據(jù)16*16個(gè)點(diǎn),所以屏幕一次最多顯示8*4個(gè)漢字,液晶的控制芯片有很多,由于中國漢字的特殊性,這里采用的是用ST7920控制屏幕的顯示,因?yàn)槠鋷в兄形淖謳欤梢燥@示本設(shè)計(jì)所需要的一些信息。

單片機(jī)通過LCD的控制端的不同組合來進(jìn)行不同的通信,LCD的主要控制端有第4腳RS,第五腳R/W,第六腳E,第十五腳PSB,在程序里可以通過RS和R/W的高低電平(即置1或置0)組合來選擇單片機(jī)寫指令或?qū)憯?shù)據(jù)到LCD存儲器,以及單片機(jī)從LCD讀指令或讀數(shù)據(jù)。

本設(shè)計(jì)中主要用到當(dāng)RS=0,R/W=0,單片機(jī)向LCD寫指令,當(dāng)RS=1,R/W=0,單片機(jī)向LCD寫數(shù)據(jù)。

4 結(jié)果展示

使用說明:從key1~key10表示第一首歌曲到第十首歌曲,key11表示暫停,key12表示播放,key13表示上一首,key14表示下一首。

音樂盒播放界面如圖5所示:

本設(shè)計(jì)把音樂和電子聯(lián)系在一起,以一個(gè)STC89C52單片機(jī)為核心,通過矩陣鍵盤來達(dá)到控制音樂的目的,并把當(dāng)前音樂的信息通過12864液晶屏顯示出來,并利用LED燈來給音樂伴奏。

參考文獻(xiàn):

[1] 張新彩. 基于內(nèi)容的音樂檢索技術(shù)研究與實(shí)現(xiàn)[D]. 西安:西北大學(xué), 2009.

[2] 汲項(xiàng)楓. 基于嵌入式系統(tǒng)的便攜式評價(jià)終端設(shè)計(jì)與開發(fā)[D]. 青島:中國石油大學(xué)(華東), 2012.

[3] Atmed Corporation. Microcontroller Data Book[Z]. 1999.

[4] 馬松平. 談?wù)勔魳方虒W(xué)中怎樣記錄音的高低長短[J]. 讀寫算(教育教學(xué)研究), 2011(41).

[5] 王鵬. 以Altium Designer為平臺的EDA實(shí)踐教學(xué)探討[J]. 電子世界, 2012(2).

[6] 劉鳳格等. MCS-51單片機(jī)的時(shí)鐘電路[J]. 菏澤學(xué)院學(xué)報(bào), 2003(2).

[7] 張迎輝. 單片微型計(jì)算機(jī)鍵盤接口設(shè)計(jì)[J]. 信息技術(shù), 2004(7).

猜你喜歡
音樂盒蜂鳴器單片機(jī)
電動(dòng)自行車產(chǎn)品車速提示音檢測現(xiàn)狀和整改技術(shù)研究(2)
特別的音樂盒
掌控板制作簡易鋼琴
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
基于單片機(jī)的層次漸變暖燈的研究
基于單片機(jī)的便捷式LCF測量儀
單片機(jī)驅(qū)動(dòng)蜂鳴器的程序設(shè)計(jì)
豐田凱美瑞240V車間隙警告蜂鳴器異常鳴響
音樂盒里的秘密
Microchip推出兩個(gè)全新PIC單片機(jī)系列
丽水市| 江津市| 定兴县| 海兴县| 临夏县| 石门县| 伊金霍洛旗| 双鸭山市| 玉门市| 白城市| 泰安市| 伊宁县| 云梦县| 海口市| 西吉县| 汪清县| 凤山县| 收藏| 厦门市| 若尔盖县| 甘孜县| 姚安县| 九寨沟县| 剑河县| 英山县| 富裕县| 新河县| 南岸区| 余江县| 马公市| 鹿邑县| 玉屏| 达州市| 鹤岗市| 阳江市| 玛曲县| 鄂托克前旗| 冷水江市| 葵青区| 噶尔县| 达孜县|