版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 51單片機的電子音樂盒的設計</p><p><b> 前 言</b></p><p> 隨著科技越來越發(fā)達,單片機技術也越來越純熟,單片機的應用也越來越廣泛,可以說幾乎很難找到哪個領域沒有單片機的蹤跡。如今,單片機在各個領域都起著至關重要的作用[1]。</p><p> 單片機是一種集成在電路芯片,是采用超大規(guī)
2、模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統(tǒng)。</p><p> 隨著人類社會的發(fā)展,人們對于視聽方面的享受提出了更高的要求。而傳統(tǒng)的音樂盒大部分是機械型的,體積龐大,而且沉重,發(fā)音單調,且不悅耳,不能實
3、現大批量的生產,所以很難滿足當代人們的需求。但是本文設計的數字音樂盒是以單片機為核心元件的數字音樂盒。單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優(yōu)點。因此該數字音樂盒也就具有體積小,重量輕,能演奏各種各樣的音樂,功能多,外觀絢麗多彩,使用非常方便等諸多優(yōu)點。而且具有一定的開發(fā)價值。</p><p><b> 1 設計目的和要求</b></p><
4、p><b> 1.1 設計目的</b></p><p> (1) 通過設計,查閱相關資料,掌握如何利用單片機設計產品,同時了解與單片機有關的軟件模擬器的使用及取字模塊軟件的使用方法。</p><p> (2) 通過本課程設計鞏固并擴展單片機課程的基本概念、基本理論、分析方法和實現方法。結合Proteus和Keil軟件等,學習單片機產品的設計方法,有效地將理
5、論和實際緊密結合,培養(yǎng)創(chuàng)新思維和設計能力,增強軟件編程實現能力和解決實際問題的能力。</p><p> (3) 學習Proteus軟件,掌握Proteus中各種芯片的功能以及模擬。由于Proteus提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數量、質量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)實踐精神、創(chuàng)造精神的平臺。</p><p><b&g
6、t; 1.2 設計要求 </b></p><p> (1) 利用I/O口產生一定頻率的方波,驅動蜂鳴器,發(fā)出不同的音調,從而演樂曲(內存四首樂曲);</p><p> (2) 用LCD顯示歌曲序號和歌曲名字;</p><p> (3) 可通過功能鍵進行選擇歌曲和暫停的操作。</p><p><b> 2、硬件電
7、路設計</b></p><p><b> 2.1總體方案設計</b></p><p><b> 圖1 總體方案圖</b></p><p> 以AT89C51為核心,通過單片機的定時器產生一定長度的方波,方波脈沖驅動蜂鳴器發(fā)聲。要產生音頻脈沖,只需算出某一音頻的周期(1/音頻),然后取半周期的時間定時。利用
8、定時器計時這個半周期時間,每當計時到后就將輸出脈沖的I/O反相,然后重復計時此半周期時間再對I/O口反相,就可在I/O腳上得到此頻率的脈沖。當鍵盤有鍵按下時,判斷鍵值,啟動計數器T0,產生一定頻率的脈沖,驅動蜂鳴器,放出樂曲。同時在LCD顯示歌曲序號和歌曲名稱。</p><p> 2.2 器件的選擇</p><p> 2.2.1單片機的選擇</p><p>
9、 隨著當代單片機技術的突飛猛進,單片機的功能也越來越強大,主要包括:</p><p> (1)單片機集成度高;</p><p> ?。?)系統(tǒng)結構簡單,使用方便,實現模塊化; </p><p> ?。?)單片機可靠性高,處理功能強,速度快; </p><p> (4)低電壓,低功耗,便于生產便攜式產品 ; </p>
10、<p> ?。?)控制功能強大。</p><p> 單片機型號的選擇是根據控制系統(tǒng)的目標、功能、可靠性、性價比、精度和速度等來決定的。根據本課題的實際情況,單片機型號的選擇主要從以下兩點考慮;一是要有較強的抗干擾能力。二是要有較高的性價比。由于51系列在我國使用最廣,且該系列的資料和能夠兼容的外圍芯片也比較多,特別是ATMEL公司89C系列單片機,其典型產品AT89C51單片機,具有較高的性能價格比
11、。故本系統(tǒng)采用ATMEL公司生產的AT89C51單片機作為電子音樂盒的核心部件,AT89C51是美國ATMEL公司生產的低電壓,高性能CMOS8位單片機,片內含4k bytes的可反復擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器(CPU)和Flash存儲單元,功能強大AT89C51單片機可
12、提供許多高性價比的應用場合,可靈活應用于各種控制領域。所以本次設計采用的是AT89C51單片機,這是一款性價比非常高的單片機。</p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器。俗稱單片機。如圖2:</p><p> 圖 2 AT89C51單片機實物圖</p><p><b> 引腳功能:
13、</b></p><p> P0.0-P0.7:為一個8位漏級開路雙向I/O口;</p><p> P1.0-P1.7:是一個內部提供上拉電阻的8位雙向I/O口;</p><p> P2.0-P2.7:為一個內部上拉電阻的8位雙向I/O口;</p><p> P3.0-P3.7:管腳是8個帶內部上拉電阻的雙向I/O口;&l
14、t;/p><p> P3.0:RXD(串行輸入口);</p><p> P3.1:TXD(串行輸出口);</p><p> P3.2:INT0(外部中斷0);</p><p> P3.3:INT1(外部中斷1);</p><p> P3.4:T0(記時器0外部輸入);</p><p>
15、P3.6:WR(外部數據存儲器寫選通);</p><p> P3.7:RD(外部數據存儲器讀選通);</p><p> EA:當EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,EA將內部鎖定為RESET;當EA端保持高電平時,此間內部程序存儲器;</p><p> P3.5:T1(記時器1外部輸
16、入);</p><p> ALE:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié);</p><p> P RST:復位輸入;</p><p> XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入;</p><p> XTAL2:來自反向振蕩器的輸出;</p><p> SEN:外部程序
17、存儲器的選通信號。</p><p> 2.2.2 LCD1602簡介</p><p> LCD液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅動、易于實現全彩色顯示的特點,目前已經被廣泛應用在便攜式電腦、數字攝像機、PDA移動通信工具等眾多領域。</p><p>
18、; 字符型液晶顯示模塊是一種專門用于顯示字母、數字、符號等點陣式LCD,目前常用16×1,16×2,20×2和40×2行等的模塊。LCD1602分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如下圖2所示:</p><p> 圖3 LCD尺寸圖</p><p> 160
19、2LCD主要技術參數:</p><p> 顯示容量:16×2個字符;</p><p> 芯片工作電壓:4.5—5.5V;</p><p> 工作電流:2.0mA(5.0V);</p><p> 模塊最佳工作電壓:5.0V;</p><p> 字符尺寸:2.95×4.35(W×H)
20、mm。</p><p><b> 引腳功能說明</b></p><p> LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表1所示。</p><p> 表1 引腳接口說明表</p><p> 第1腳:VSS為地電源。</p><p> 第2腳:VDD接5V
21、正電源。</p><p> 第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。</p><p> 第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。</p><p> 第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當
22、RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。</p><p> 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p> 第7~14腳:D0~D7為8位雙向數據線。</p><p> 第15腳:背光源正極。</p>&l
23、t;p> 第16腳:背光源負極。</p><p> 1602液晶模塊內部的控制器共有11條控制指令,如表2所示:</p><p><b> 表2 控制命令表</b></p><p> 1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現的。(說明:1為高電平、0為低電平)</p><p>
24、指令1:清顯示,指令碼01H,光標復位到地址00H位置。</p><p> 指令2:光標復位,光標返回到地址00H。</p><p> 指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。</p><p> 指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示
25、,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。</p><p> 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。</p><p> 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高
26、電平時顯示5x10的點陣字符。</p><p> 指令7:字符發(fā)生器RAM地址設置。</p><p> 指令8:DDRAM地址設置。</p><p> 指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果為低電平表示不忙。</p><p><b> 指令10:寫數據。</b&g
27、t;</p><p><b> 指令11:讀數據。</b></p><p> 與HD44780相兼容的芯片時序表如下:</p><p><b> 表 3 芯片時序圖</b></p><p> 2.3 單元電路設計</p><p><b> 2.3.1晶振
28、電路</b></p><p> 單片機需要一個時間基準來為各種操作提供秩序,此電路叫時鐘電路,采用不同的接線方式可以獲得不同時鐘電路,有內部時鐘電路和外部時鐘電路,如圖4.3所示,外部時鐘電路會使電路復雜,故采用的是內部時鐘電路。時鐘電路在單片機的外部通過XTAL1,XTAL2這兩個引腳跨接晶體振蕩器和微調電容,構成穩(wěn)定的自激振蕩器.本系統(tǒng)采用的為12MHz的晶振,一個機器周期為1us,C1,C2為
29、30uF。</p><p><b> 2.3.2復位電路</b></p><p> 復位電路的基本功能是:系統(tǒng)上電時提供復位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復位信號。為可靠起見,電源穩(wěn)定后還要經一定的延時才撤銷復位信號,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。</p><p> 復位電路分為上電自動復位和按鍵手動復位,如圖3
30、所示。RST引腳是復位信號的輸入端,復位信號是高電平有效.這次采用的是手動復位,復位通過電容C3,C4和電阻R1,R2來實現,按鍵手動復位是圖中復位鍵來實現的。</p><p> 圖 4 晶振與復位電路</p><p> 2.3.3 鍵盤部分</p><p> 鍵盤是由一組按壓式或觸摸式開關構成的陣列,是一種常用的輸入設備。鍵盤可分為編碼式鍵盤和非編碼式鍵
31、盤兩種。</p><p> 1.編碼鍵盤通過硬件電路產生被按按鍵的鍵碼,這種鍵盤所需程序簡單,但硬件電路復雜、價格昂貴通常不被單片機系統(tǒng)采用。</p><p> 2.非編碼鍵盤常用一些按鍵排列成行列矩陣,其硬件邏輯與按鍵編碼不存在嚴格的對應關系,而要由所用的程序來決定。非編碼鍵盤的硬件接口簡單,但是要占用較多的CPU時間,通常采用可編程鍵盤管理芯片來克服這個缺點。本設計使用兩種按鍵,一
32、種是按鍵式非編碼鍵盤和輕觸式非編碼開關。</p><p><b> 圖 5 鍵盤電路</b></p><p> 2.3.4 LCD顯示電路</p><p> LCD的8根數據線與P1口相連,RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。R/W為讀寫信號線,RS與P2.0相連,由P2.0控制LCD的寫指令或寫數據操作。
33、R/W與P2.1相連,由P2.1決定是讀操作還是寫操作。E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。E端與P2.2相連。</p><p> 圖6 LCD顯示電路</p><p> 2.3.5 蜂鳴器部分</p><p> 一般所指的蜂鳴器是以壓電陶瓷為主要元件的。壓電陶瓷是一類有將壓力與電流相互轉換能力的特殊陶瓷。這種能力緣于其特殊的晶體
34、結構。當壓電陶瓷在一定方向上受到一個壓力使其晶體結構發(fā)生形變時,它就會在內部產生一個電流,并且電流的變化與壓力的變化密切相關。反之亦然。所以利用這一特性,在壓電陶瓷上通過一定頻率的電流,就會引起壓電陶瓷微小形變,這一形變帶動空氣發(fā)生振動,如果頻率適當,就可以被人耳所聽見,也就是產生了蜂鳴聲。</p><p> 由于蜂鳴器的工作電流一般比較大,以致于單片機的I/O 口是無法直接驅動的,所以要利用放大電路來驅動,一
35、般使用三極管來放大電流就可以了。</p><p><b> 圖6 蜂鳴器電路</b></p><p><b> 2.4 整體電路</b></p><p><b> 圖 7 整體電路</b></p><p><b> 3.軟件設計</b><
36、/p><p> 3.1 主程序流程圖</p><p> 圖 8 主程序流程圖</p><p><b> 3.2主程序</b></p><p><b> main()</b></p><p><b> {uint i;</b></p>
37、<p><b> k=8;</b></p><p><b> init();</b></p><p> for(i=0;i<15;i++)</p><p><b> {</b></p><p> WriteData(tab[i]);/
38、/LCD寫數據函數寫第一行</p><p> mydelay(50);</p><p><b> }</b></p><p> mydelay(1000);</p><p> WriteCMD(0x80+0x40+2);//將指針設到第二行空兩字符</p><p> for(i
39、=0;i<6;i++) {</p><p> WriteData(tab1[i]);</p><p> mydelay(50); }</p><p> InitialSound();//發(fā)音初始化程序</p><p><b> while(1)</b></p><
40、;p> { Getch();//掃描鍵盤,獲得鍵值</p><p> if(k==0)//若鍵值為0</p><p><b> {uint i;</b></p><p><b> init();</b></p><p> for(i=0;i<10;i++)
41、 {</p><p> WriteData(tab2[i]);//寫第一首歌序號</p><p> mydelay(50); }</p><p> mydelay(1000);</p><p> WriteCMD(0x80+0x40);//轉到第二行</p><p> for(i=0;i&
42、lt;9;i++)</p><p> {WriteData(tab3[i]);//寫歌名</p><p> mydelay(50); }</p><p> Play(Music_Girl,0,3,360);//播放第一首歌</p><p> Delay1ms(500);</p><p>
43、<b> break;</b></p><p><b> }</b></p><p> else if (k==1) //若鍵值為1</p><p><b> {uint i;</b></p><p><b> init();</b>
44、</p><p> for(i=0;i<11;i++)</p><p> {WriteData(tab4[i]); //寫第二首歌序號</p><p> mydelay(50); }</p><p> mydelay(1000);</p><p> WriteCMD(0x80+0x40); /
45、/轉到第二行</p><p> for(i=0;i<11;i++)</p><p> { WriteData(tab5[i]); //寫歌名</p><p> mydelay(50); }</p><p> Play(Music_Jingle,0,3,360); //播放第二首歌&l
46、t;/p><p> Delay1ms(500);</p><p><b> break;</b></p><p><b> }</b></p><p> else if (k==2) //若鍵值為2</p><p> { uint i;</p>
47、<p><b> init();</b></p><p> for(i=0;i<10;i++)</p><p> {WriteData(tab6[i]); //寫第三首歌序號</p><p> mydelay(50); }</p><p> mydelay(1000);&l
48、t;/p><p> //WriteCMD(0x01);</p><p> WriteCMD(0x80+0x40); //轉到第二行</p><p> for(i=0;i<6;i++)</p><p><b> {</b></p><p> WriteData(tab7[i]);
49、//寫歌名</p><p> mydelay(50); }</p><p> Play(Music_Two,0,3,360); //播放第三首歌</p><p> Delay1ms(500);</p><p><b> break;</b></p><p><b>
50、 }</b></p><p> else if (k==3) //若鍵值為3</p><p><b> {uint i;</b></p><p><b> init();</b></p><p> for(i=0;i<10;i++)</p><p>
51、; {WriteData(tab8[i]); //寫第四首歌序號</p><p> mydelay(50); }</p><p> mydelay(1000);</p><p> WriteCMD(0x80+0x40); //轉到第二行</p><p> for(i=0;i<6;i++)
52、</p><p> {WriteData(tab9[i]); //寫歌名</p><p> mydelay(50); }</p><p> Play(Music_Four,0,3,360); //播放第三首歌</p><p> Delay1ms(500);</p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計--音樂盒
- 音樂盒單片機課程設計
- 單片機音樂盒課程設計
- 單片機音樂盒課程設計
- 單片機課程設計報告 音樂盒設計
- 單片機課程設計---數字音樂盒
- 單片機課程設計--- 數字音樂盒
- 基于51單片機音樂盒課程設計
- 單片機原理課程設計---音樂盒的設計
- 單片機課程設計-數字音樂盒設計
- 電子音樂盒(單片機課程設計)
- 電子音樂盒(單片機課程設計)
- 單片機課程設計--基于單片機的數字音樂盒
- 單片機課程設計-基于單片機的數字音樂盒設計
- 電子音樂盒單片機課程設計
- 單片機音樂盒設計
- 課程設計-基于單片機的音樂盒的設計
- 單片機課程設計《數字音樂盒的設計》
- 單片機課程設計--數字音樂盒的設計
- 單片機課程設計---電子音樂盒的設計
評論
0/150
提交評論