基于單片面音樂盒的設(shè)計與制作_第1頁
基于單片面音樂盒的設(shè)計與制作_第2頁
基于單片面音樂盒的設(shè)計與制作_第3頁
基于單片面音樂盒的設(shè)計與制作_第4頁
基于單片面音樂盒的設(shè)計與制作_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

目錄

1產(chǎn)品功能分析.........................................................................................................1

2設(shè)計方案遴選.........................................................................................................1

2.1單片機的選擇..............................................................................................1

2.2LM386音頻功率放大器的選擇...................................................................1

2.3系統(tǒng)框圖設(shè)計..............................................................................................2

3產(chǎn)品硬件設(shè)計.........................................................................................................2

3.1AT89C51單片機核心電路設(shè)計...................................................................2

3.2LM386音頻放大器設(shè)計...............................................................................3

3.3LCD1602液晶顯示模塊...............................................................................4

4產(chǎn)品軟件設(shè)計.........................................................................................................5

4.1主程序流程圖..............................................................................................6

4.2產(chǎn)品程序清單..............................................................................................6

5產(chǎn)品裝配調(diào)試及使用說明.....................................................................................6

5.1產(chǎn)品裝配圖..................................................................................................6

5.2產(chǎn)品調(diào)試......................................................................................................7

5.3產(chǎn)品使用說明..............................................................................................8

6產(chǎn)品設(shè)計技術(shù)標準.................................................................................................8

7參考資料...................................................................................................................9

附錄1元器件清單.....................................................................................................9

附錄2電路原理圖...................................................................................................11

附錄3PCB設(shè)計圖....................................................................................................12

附錄4產(chǎn)品實物圖...................................................................................................13

附錄5主程序代碼...................................................................................................14

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

基于單片機音樂盒的設(shè)計與制作

1產(chǎn)品功能分析

隨著科技的高速發(fā)展,生活節(jié)奏的加快,致使人們長期處于工作、學習壓

力過大的狀態(tài),對此音樂盒的作用十分重要。音樂可以讓身體放輕松,好的音

樂可舒緩壓力,避免因自律神經(jīng)緊張失調(diào)而導致慢性疾病的產(chǎn)生,音樂可以幫

助入眠、增加神經(jīng)傳到速率、增強記憶力和注意力讓人的身心都得到適度的發(fā)

展和釋放。

本設(shè)計是基于STC89C51單片機,通過C語言進行程序設(shè)計。通過控制單片

機的定時器來產(chǎn)生不同頻率的音頻,驅(qū)使蜂鳴器發(fā)出不同音調(diào)的音樂,在利用

延遲來控制發(fā)音的時間長短。把樂譜轉(zhuǎn)化為相對應(yīng)得定時常數(shù)就可以從發(fā)音設(shè)

備中演奏出悅耳動聽的音樂。

2設(shè)計方案遴選

單片機音樂盒所包含控制系統(tǒng)簡單,環(huán)節(jié)較少,除了播放音樂有按鍵外,

其余元器件組成大體相同。對于單片機音樂盒聲音的讀出除了蜂鳴器,還需配

置出合適的揚聲器放大其播放的音樂。

2.1單片機的選擇

選擇51單片機,眾所周知51單片機作為應(yīng)用最廣泛的8位單片機。

其一電路結(jié)構(gòu)簡單。不論是最小系統(tǒng)還是其他外圍電路,所需要的元件都

很少,這樣不會給初學者帶來太多困惑。

其二51單片機寄存器相對較少,一般都是直接進行寄存器操作,這也有利

于建立低層設(shè)計思想,了解底層運行原理。

其三性價比高。雖然運行速度相對于STM32來說較慢,但對于一些運用不

是很復雜的產(chǎn)品其性價比還是很高的。

2.2LM386音頻功率放大器的選擇

LM386是一種音頻集成功效、具有自身功耗低、更新內(nèi)鏈增益可調(diào)整、電源

1

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

電壓范圍大、外接元件少和總諧波失真小等優(yōu)點的功率放大器。

靜態(tài)功耗低,約為4mA;工作電壓范圍寬,4-12V或5-18V;外圍元件少;

點呀增益可調(diào),20-200;低失真度。

2.3系統(tǒng)框圖設(shè)計

系統(tǒng)框架如圖2-1所示:

圖2-1系統(tǒng)框架

3產(chǎn)品硬件設(shè)計

產(chǎn)品硬件主要由STC89C51單片機、按鍵電路、LM386音頻功率放大器、LCD160

2液晶顯示組成。

通過各個按鍵能顯示相對應(yīng)的效果,且LCD1602液晶顯示能切換到先對應(yīng)

的歌曲名稱及其編號。

3.1STC89C51單片機核心電路設(shè)計

STC89C51是一種4K字節(jié)可編程FLASH存儲器,該器件采用ATMEL高密度非

易失存儲器制造技術(shù)制造,所使用的程序可以與其他C51系列單片機兼容,且

使用壽命可達1000寫/擦循環(huán),數(shù)據(jù)保留時間長達十年。綜合以上因素并結(jié)合

此次設(shè)計產(chǎn)品簡單的緣由則選擇此單片機十分合適。

STC89C51單片機原理圖如圖3-1所示。

2

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

圖3-1STC89C51單片機原理圖

3.2LM386音頻放大器設(shè)計

在6V電源電壓下,它的靜態(tài)功耗僅為24mW,使得LM386特別適用于低電壓

類產(chǎn)品,而此次產(chǎn)品正是低電壓設(shè)計產(chǎn)品。

LM386音頻放大器原理圖如圖3-2所示;

圖3-2LM86音頻放大器原理圖

LM386音頻放大器實物圖如圖3-3所示:

3

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

圖3-3LM386音頻放大器實物圖

3.3LCD1602液晶顯示模塊

顯示模塊選用的是LCD1602字符型液晶顯示模塊。

此液晶顯示器每一個點在收到信號后會一直保持那種色彩和亮度,恒定發(fā)

光,而不會像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點。因此,該液

晶顯示器畫質(zhì)高且不會閃爍,且該液晶顯示器采用數(shù)字式接口,和單片機系統(tǒng)

的接口更加簡單可靠,操作能更加方便。

綜合以上優(yōu)點,選擇這款液晶顯示非常不錯。

LCD1602液晶原理圖如圖3-4所示:

圖3-4LCD1602液晶

LCD液晶實物圖3-5如下圖所示:

4

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

圖3-5液晶實物圖

4產(chǎn)品軟件設(shè)計

本產(chǎn)品的設(shè)計原理利用KELL軟件編寫音樂盒內(nèi)所需程序,將編好程序下

載到51單片機內(nèi),單片機控制LCD液晶顯示屏,通過按鍵隨之反應(yīng)。

4.1主程序流程圖

5

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

4.2產(chǎn)品程序清單

5產(chǎn)品裝配調(diào)試及使用說明

5.1產(chǎn)品裝配圖

產(chǎn)品主要由AT89C51單片機、LCD1602液晶顯示屏、LM386芯片、輕觸按鍵、DC

電源插口、蜂鳴器、藍白電位器及電源開關(guān)組成。

產(chǎn)品裝配圖如下圖5-1所示:

圖5-1產(chǎn)品裝配圖

6

揚聲器

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

5.2產(chǎn)品調(diào)試

產(chǎn)品調(diào)試前應(yīng)先檢查各個元器件是否齊全完整,排查各個元器件焊接點是

否焊接成功,避免虛焊漏焊的情況。

各項檢查完成后將程序燒錄到單片機中。

燒錄成功界面如圖5-2所示:

圖5-2燒錄程序圖

5.3產(chǎn)品使用說明

功能介紹:

本次設(shè)計的硬件電路主要由STC89C51組成。

主要功能:

單片機內(nèi)存有8首歌曲,按鍵可以上一曲、開始/暫停、下一曲,驅(qū)動喇叭

是LM386,使用此喇叭聲音十分響亮。

使用說明:

一共四個按鍵,最上面那個按鍵為復位按鍵,按下去可使程序重頭開始執(zhí)

行,下面三個按鍵從左至右分別為上一曲、開始/暫停、下一曲。

6產(chǎn)品設(shè)計技術(shù)標準

[1]J-STD-001E電氣與電子組件的焊接要求

[2]IPC-A-610D(中文版),IPC-A-610E電子組件的可接受性要求

7

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

[3]IPC-7711/21電子組件和電路板的返工&返修

[4]GB/T11457-2006信息技術(shù)軟件工程術(shù)語;

[5]GB/T8566-2007信息技術(shù)軟件生存周期過程標準;

[6]GB/T8567-2006計算機軟件文檔編制規(guī)范。

7參考資料

[1]SimonMonk著唐樂譯.Arduino+Ardroid互動智作[M].北京:科學出版社,2021

[2]MichealMcRoberts著楊繼志,郭敬譯.Arduino從基礎(chǔ)到實踐[M].北京:電子工業(yè)出版社,2017

[3]DaleWheat著翁凱譯。Arduino技術(shù)內(nèi)幕[M].北京:人民郵電出版社,2017

[4]程晨著.Arduino開發(fā)實戰(zhàn)指南:AVR篇[M].北京:機械工業(yè)出版社,2019

[5]駿榮,吳明展,盧聰勇著.Arduino一試就上手(第2版)[M].北京:科學出版社,2018

[6]崔才豪氣,張玉華,楊樹財,利用Arduino控制板的光引導運動小車設(shè)計[J]自動化儀表,2019,32

(9):11

附錄1元器件清單

基于51單片

機音樂盒設(shè)計

的元件清單

序號元件數(shù)量

19*15萬能表1

28Ω0.25W小喇叭1

3stc89c51單片機1

4lm389芯片1

540腳座1

8

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

68腳座1

7104藍白電位器1

812m晶振1

930pf電容2

10103排阻1

11LCD1602液晶1

1216p單排母座1

1316p排針1

14473瓷片電容1

15104電容1

1610k電阻3

171k電阻2

1810Ω電阻1

1910uf電容2

20100uf電解電容1

21按鍵4

22電源插口1

23自鎖開關(guān)1

24導線若干1

25錫焊若干1

9

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

usb電源線+DC

26插頭1

附錄2電路原理圖

10

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

附錄3PCB設(shè)計圖

11

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

附錄4產(chǎn)品實物圖

12

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

附錄5主程序代碼

//////////////////////////////////////////////

//51單片機音樂播放器程序

//共三個按鍵:上一曲、下一曲、播放\暫停

//播放完一首歌曲無按鍵按下時順序播放下一曲

//////////////////////////////////////////////

#include<REG52.H>

sbitplay_up=P1^3;//上一首歌

sbitplay_down=P3^5;//下一首歌

sbitpause=P3^2;//播放\暫停

sbitspeaker=P1^0;//無源蜂鳴器

sbitRS=P2^7;

sbitRW=P2^6;

sbitEN=P2^5;

//////////////////////////////////////////////

unsignedchartimer0h,timer0l,time;//timer0h,timer0l為定時器T0的高低位初

值,time為對應(yīng)的節(jié)拍時間

unsignedcharmusic_num;//music_num為歌曲編號,music_num=0表示剛開機

時的狀態(tài),num是查找歌曲數(shù)據(jù)表的地址

unsignedintnum;

unsignedcharcodelist[8][16]={"YanHuaYiLeng",

"FaRuXue",

"JianDanAi",

"ZhiYouMamaHao",

"DangNiGuDan",

"XiangJianXiaoLu",

"SongBie",

13

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

"LangManDeShi"};

signedintfre;//對應(yīng)頻率數(shù)據(jù)表的地址

bitplay_enable;//歌曲播放的使能標志位,用于播放\暫停

voiddelay(unsignedchart);//延時子函數(shù),控制發(fā)音的時間長度

voiddelayms(unsignedintt);//普通延時子程序,可用于按鍵消抖

voidsong(void);//演奏一個音符

voidmusic_play(void);//播放歌曲

//////////////////////////////////////////////

//每三個數(shù)字,代表一個音符

//第一個數(shù)字是音符的數(shù)值1234567之一(第幾個音),代表哆來咪發(fā)...

//第二個數(shù)字是0123之一,代表低音\中音\高音\超高音(第幾個八度)

//第三個數(shù)字是時間長度,以半拍為單位,樂曲數(shù)據(jù)表的結(jié)尾是三個0

//////////////////////////////////////////////

//《煙花易冷》

unsignedcharcodesong1[]={

5,2,1,3,2,1,2,2,2,2,2,4,3,2,1,1,2,1,2,2,1,3,2,4,

5,2,1,3,2,1,2,2,2,2,2,2,5,1,1,3,2,1,4,2,1,3,2,4,

3,2,1,3,2,1,7,2,1,3,2,1,2,2,2,1,2,1,7,1,1,1,2,1,

2,2,1,3,2,1,6,2,3,6,1,1,1,2,1,3,2,1,2,2,1,6,1,1,

1,2,1,7,1,1,5,1,1,6,1,6,5,2,1,3,2,1,2,2,2,2,2,1,

2,2,1,3,2,1,1,2,1,2,2,1,3,2,4,5,2,1,3,2,1,2,2,2,

2,2,1,2,2,1,5,1,1,3,2,1,4,2,1,3,2,4,3,2,1,3,2,1,

7,2,3,3,2,1,2,2,2,1,2,1,7,1,1,1,2,1,2,2,1,3,2,1,

6,2,3,6,1,1,1,2,1,3,2,1,2,2,1,6,1,1,1,2,1,7,1,2,

5,1,2,6,1,6,0,0,0};

//《發(fā)如雪》

unsignedcharcodesong2[]={

5,1,1,2,2,1,3,2,2,2,2,1,3,2,1,5,2,1,6,2,1,5,2,3,1,2,1,2,2,1,

3,2,1,6,2,1,5,2,1,3,2,1,5,2,3,5,2,1,6,2,1,1,3,2,6,2,1,5,2,1,

3,2,1,5,2,1,3,2,2,1,2,1,2,2,1,3,2,1,1,2,1,6,1,1,3,2,1,2,2,1,

5,1,1,2,2,1,3,2,2,2,2,1,3,2,1,5,2,1,6,2,1,5,2,3,1,2,1,2,2,1,

3,2,1,6,2,1,5,2,3,5,2,1,6,2,1,1,3,2,6,2,1,

5,2,1,3,2,1,5,2,1,3,2,2,1,2,1,6,1,1,3,2,1,2,2,1,1,2,1,6,1,1,

1,2,1,2,2,1,2,2,1,1,2,4,0,0,0};

//《簡單愛》

unsignedcharcodesong3[]={

5,1,1,1,2,1,2,2,1,3,2,1,2,2,1,3,2,1,4,2,1,5,2,1,5,2,1,5,2,1,

4,2,1,3,2,1,2,2,3,5,1,1,1,2,1,2,2,1,3,2,1,4,2,1,5,2,1,5,2,1,

5,2,1,6,2,1,5,2,2,2,2,1,3,2,1,1,2,2,1,2,1,6,1,1,2,2,1,2,2,1,

3,2,1,3,2,1,1,2,1,5,2,1,1,2,1,5,2,1,1,2,1,7,1,1,1,2,1,1,2,1,

14

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

6,1,1,

2,2,1,2,2,1,3,2,1,3,2,1,5,2,1,5,2,1,

5,2,1,6,2,1,5,2,2,2,2,1,3,2,1,1,2,2,

5,1,1,1,2,1,2,1,2,3,2,1,2,2,1,3,2,1,4,2,1,5,2,1,5,2,1,5,2,1,

4,2,1,3,2,1,2,2,3,5,1,1,1,2,1,2,2,1,3,2,1,2,2,1,3,2,1,4,2,1,

5,2,1,5,2,1,5,2,2,2,2,1,3,2,1,1,2,2,1,2,1,6,1,1,2,2,1,2,2,1,

3,2,1,3,2,1,1,2,2,5,2,1,1,2,1,5,2,1,5,2,1,7,1,1,1,2,1,

0,0,0};

//《世上只有媽媽好》

unsignedcharcodesong4[]={

6,2,3,5,2,1,3,2,2,5,2,2,1,3,2,6,2,1,

//6,2,3代表6,中音,3個半拍;

//5,2,1代表5,中音,1個半拍;

//3,2,2代表3,中音,2個半拍;

//5,2,2代表5,中音,2個半拍;

//1,3,2代表1,高音,2個半拍;

//...

5,2,1,6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1,6,1,1,5,2,1,

3,2,1,2,2,4,2,2,3,3,2,1,5,2,2,5,2,1,6,2,1,3,2,2,2,2,2,

1,2,4,5,2,3,3,2,1,2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0};

//《當你孤單你會想起誰》

unsignedcharcodesong5[]={

3,2,2,3,2,1,4,2,1,3,2,2,2,2,1,1,2,1,2,2,2,5,2,2,2,2,2,2,2,3,

1,2,2,1,2,1,2,2,1,1,2,2,7,1,1,6,1,1,7,1,2,3,2,2,7,1,2,7,1,3,

6,1,2,2,2,1,3,2,1,2,2,1,1,2,1,6,1,2,5,1,2,2,2,1,3,2,1,2,2,1,

1,2,1,6,1,2,6,1,2,2,2,1,3,2,1,2,2,1,1,2,1,6,1,1,7,1,1,1,2,6,

0,0,0};

//《鄉(xiāng)間小路》

unsignedcharcodesong6[]={

3,1,2,3,1,1,3,1,1,6,0,1,6,0,1,1,1,2,

6,0,1,5,0,1,6,0,4,6,0,2,6,0,1,6,0,1,6,0,2,6,0,1,1,1,1,

2,1,2,2,1,1,3,1,1,2,1,4,3,1,1,3,1,1,3,1,1,2,1,1,4,1,2,

4,1,2,3,1,2,2,1,1,1,1,1,2,1,4,7,0,1,7,0,1,7,0,1,6,0,1,

5,0,1,5,0,1,6,0,1,7,0,1,7,0,1,6,0,1,5,0,1,6,0,4,6,1,2,

3,1,1,6,1,1,7,1,1,6,1,1,5,1,1,5,1,2,5,1,1,2,1,1,5,1,1,

6,1,1,5,1,1,4,1,1,4,1,2,4,1,1,3,1,1,2,1,2,1,1,1,2,1,1,

3,1,1,2,1,1,1,1,1,2,1,1,3,1,4,6,1,2,3,1,1,6,1,1,7,1,1,

6,1,1,5,1,1,5,1,2,2,1,1,5,1,1,6,1,1,5,1,1,4,1,1,0,0,0};

//《送別》

15

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

unsignedcharcodesong7[]={

5,1,2,3,1,3,5,1,1,1,2,3,6,1,2,1,2,2,

5,1,4,5,1,2,1,1,1,2,1,1,3,1,2,2,1,1,1,1,1,2,1,4,5,1,2,

3,1,1,5,1,1,1,2,2,7,1,1,6,1,2,1,2,2,5,1,4,5,1,2,2,1,1,

3,1,1,4,1,2,7,0,1,1,1,4,6,1,2,1,2,2,1,2,4,7,1,2,6,1,1,

7,1,1,1,2,4,6,1,1,7,1,1,1,2,1,6,1,1,6,1,1,5,1,1,3,1,1,

1,1,1,2,1,8,5,1,2,3,1,1,5,1,1,1,2,2,7,1,1,6,1,2,1,2,2,

5,1,4,5,1,2,2,1,1,3,1,1,4,1,2,7,0,2,1,1,4,0,0,0};

//《最浪漫的事》

unsignedcharcodesong8[]={

5,1,1,6,1,1,1,2,1,6,1,2,6,1,1,5,1,1,6,1,1,5,1,1,3,1,1,5,1,5,

5,1,1,6,1,1,1,2,1,6,1,2,6,1,1,5,1,1,6,1,1,5,1,1,6,1,1,1,1,5,

1,1,1,2,1,1,3,1,1,2,1,1,2,1,1,2,1,1,1,1,1,2,1,1,1,1,1,6,1,1,

3,1,2,2,1,3,5,1,1,6,1,1,1,2,1,6,1,2,6,1,1,5,1,1,6,1,1,5,1,1,

6,1,1,1,1,5,1,1,1,2,1,1,3,1,1,4,1,2,4,1,1,5,1,1,6,1,1,6,1,1,

5,1,1,6,1,2,1,2,1,6,1,3,1,2,1,6,1,1,5,1,1,5,1,4,1,1,1,6,1,1,

5,1,5,5,1,1,6,1,1,1,2,1,3,1,1,2,1,1,3,1,1,1,1,6,0,0,0};

//頻率-半周期數(shù)據(jù)表高八位共保存了四個八度的28個頻率數(shù)據(jù)

unsignedcharcodeFREQH[]={

0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,//低音1234567

0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,//1,2,3,4,5,6,7,i

0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//高音234567

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF};//超高音1234567

//頻率-半周期數(shù)據(jù)表低八位

unsignedcharcodeFREQL[]={

0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,//低音1234567

0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,//1,2,3,4,5,6,7,i

0xEE,0x44,0x6B,0xB4,0xF4,0x2D,//高音234567

0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16};//超高音1234567

/*************************lcd1602程序**************************/

voiddelay1ms(unsignedintms)//延時1毫秒(不夠精確的)

{unsignedinti,j;

for(i=0;i<ms;i++)

for(j=0;j<100;j++);

}

voidwr_com(unsignedcharcom)//寫指令//

{delay1ms(1);

RS=0;

16

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

RW=0;

EN=0;

P0=com;

delay1ms(1);

EN=1;

delay1ms(1);

EN=0;

}

voidwr_dat(unsignedchardat)//寫數(shù)據(jù)//

{delay1ms(1);;

RS=1;

RW=0;

EN=0;

P0=dat;

delay1ms(1);

EN=1;

delay1ms(1);

EN=0;

}

voidlcd_init()//初始化設(shè)置//

{delay1ms(15);

wr_com(0x38);delay1ms(5);

wr_com(0x0c);

wr_com(0x06);

wr_com(0x01);

}

voidinit_play()

{

wr_com(0xc4);

wr_dat('W');

wr_dat('E');

wr_dat('L');

wr_dat('C');

wr_dat('O');

wr_dat('M');

wr_dat('E');

wr_dat('!');

}

voiddisplay(unsignedchari)

{

17

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

unsignedcharj;

wr_com(0x80);

wr_dat(i+0x30);

wr_dat(':');

wr_com(0xc0);

for(j=0;j<16;j++)

{

wr_dat(list[i-1][j]);

}

}

voidKEY()

{

if(!pause)//暫停鍵處理

{

delayms(5);

if(!pause)

{

TR0=0;

speaker=1;

if(music_num==0)//music_num=0只有在剛開機,且未按下暫停鍵時

存在,表示剛開機時的狀態(tài),按下后從第一首開始播放

{

music_num=1;//歌曲序號置1

num=0;//從頭播放

play_enable=1;//允許播放

display(1);

if(play_enable)

{wr_com(0x86);wr_dat('P');

wr_dat('L');wr_dat('A');wr_dat('Y');wr_dat('');}

}

else

{

play_enable=~play_enable;

speaker=1;

if(play_enable)

{wr_com(0x86);wr_dat('P');

wr_dat('L');wr_dat('A');wr_dat('Y');wr_dat('');}

if(!play_enable)

{wr_com(0x86);wr_dat('P');

wr_dat('A');wr_dat('U');wr_dat('S');wr_dat('E');}

}

while(!pause)//若按著暫停鍵不放手時的處理

18

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

{

if(play_enable==0){}//如果是暫停,則顯示時間不變//

(暫停時play_enable==0)

}

}//暫停鍵處理結(jié)束

}//while結(jié)束

if((!play_up)&&(music_num!=0))//上一首按鍵

{

delayms(5);

if((!play_up)&&(music_num!=0))

{

TR0=0;

speaker=1;

music_num-=1;//歌曲編號減一

if(music_num<=0)

music_num=8;

num=0;//從頭開始播放

display(music_num);

delayms(500);//歌曲切換時延時0.5S

}

}

if((!play_down)&&(music_num!=0))

{

delayms(5);

if((!play_down)&&(music_num!=0))

{

TR0=0;

speaker=1;

music_num+=1;//歌曲編號加一

if(music_num>=9)

music_num=1;

num=0;//從頭開始播放

display(music_num);

delayms(500);//歌曲切換時延時0.5S

}

}

}

voidmain(void)

{

TMOD=0x11;//T0T1均在工作方式1

19

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

ET0=1;//T0開中斷

EA=1;//CPU開中斷

lcd_init();

init_play();

while(1)

{

music_play();//根據(jù)當前狀態(tài)播放相應(yīng)歌曲的某個音符

KEY();

}

}

voiddelayms(unsignedintt)//MS延時子程序

{

unsignedinti,j;

for(i=0;i<t;i++)

{

for(j=0;j<123;j++)

;

}

}

voiddelay(unsignedchart)//延時子函數(shù),控制發(fā)音的時間長度,每個節(jié)拍

0.4S

{

unsignedchart1;

unsignedlongt2;

for(t1=0;t1<t;t1++)//嵌套循環(huán),共延時t個半拍

{

for(t2=0;t2<6500;t2++)//延時期間,可進入T0中斷去發(fā)音

{

KEY();

}

}

TR0=0;//關(guān)閉T0,停止發(fā)音

}

voidtimer0(void)interrupt1//T0中斷程序,控制發(fā)音的音調(diào)

{

speaker=!speaker;//輸出方波,發(fā)音

TH0=timer0h;//下次的中斷時間,這個時間控制音調(diào)高低

TL0=timer0l;

20

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

}

voidsong(void)//演奏一個音符

{

TH0=timer0h;//控制音調(diào)

TL0=timer0l;

TR0=1;//啟動T0,由T0輸出方波發(fā)音

delay(time);//每個音符的演奏時間

}

///////////////////////////////////////////////////////////////////////////

/////////

voidmusic_play(void)//播放相應(yīng)歌曲的某個音符

{

if((music_num==1)&&(play_enable==1))

{

fre=song1[num]+7*song1[num+1]-1;//第i個是音符,第i+1個是第幾個八度

timer0h=FREQH[fre];//從數(shù)據(jù)表中讀出頻率數(shù)值,實際上是定

時的時間長度

timer0l=FREQL[fre];

time=song1[num+2];//讀出時間長度數(shù)值

num+=3;

if(fre<0)//判斷歌曲的結(jié)束位,結(jié)束后轉(zhuǎn)到下一首

{

num=0;//下一首從頭播放

music_num=2;

display(2);

}

song();//發(fā)出一個音符

}

///////////////////////////////////////////////////////////////////////////

/////////

if((music_num==2)&&(play_enable==1))

{

fre=song2[num]+7*song2[num+1]-1;

timer0h=FREQH[fre];

timer0l=FREQL[fre];

time=song2[num+2];

num+=3;

if(fre<0)

{

num=0;

music_num=3;

display(3);

21

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

}

song();

}

///////////////////////////////////////////////////////////////////////////

/////////

if((music_num==3)&&(play_enable==1))

{

fre=song3[num]+7*song3[num+1]-1;

timer0h=FREQH[fre];

timer0l=FREQL[fre];

time=song3[num+2];

num+=3;

if(fre<0)

{

num=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論