基于溫度感應的智能音樂播放器_第1頁
基于溫度感應的智能音樂播放器_第2頁
基于溫度感應的智能音樂播放器_第3頁
基于溫度感應的智能音樂播放器_第4頁
基于溫度感應的智能音樂播放器_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、任務(wù)書一、課程設(shè)計的目的課程設(shè)計是自動化專業(yè)集中實踐環(huán)節(jié)的主要內(nèi)容之一。訓練正確地應用單片機,培養(yǎng)解決工業(yè)控制、工業(yè)檢測等領(lǐng)域具體問題的能力。學生通過所做課題,熟悉單片機應用系統(tǒng)開發(fā)研制的過程,軟硬件設(shè)計的工作方法、內(nèi)容及步驟,對學生進行基本技能訓練。例如組成系統(tǒng)、編程、調(diào)試、繪圖等。使學生理論聯(lián)系實際,提高動手能力和分析問題、解決問題的能力。通過本課程設(shè)計,主要達到以下目的:1.使學生增進對單片機的感性認識,加深對單片機理論方面的理解。2.使學生掌握單片機的內(nèi)部功能模塊的應用,如定時器/計數(shù)器、中斷、片內(nèi)外存貯器、I/O口、串行口通訊等。3.使學生了解和掌握單片機應用系統(tǒng)的軟/硬件設(shè)計過程、

2、方法及實現(xiàn),為以后設(shè)計和實現(xiàn)單片機應用系統(tǒng)打下良好基礎(chǔ)。二、課程設(shè)計的要求1.學生需認真閱讀課程設(shè)計任務(wù)書,熟悉有關(guān)設(shè)計資料及參考資料,熟悉各種設(shè)計規(guī)范的有關(guān)內(nèi)容,認真完成任務(wù)書規(guī)定的設(shè)計內(nèi)容。2.課程設(shè)計的成果為“課程設(shè)計報告”。課程設(shè)計報告內(nèi)容要正確,概念要清楚,完成任務(wù)書所規(guī)定的內(nèi)容,附有原理圖及程序流程圖,程序清單,文字要通順,書寫要工整,設(shè)計圖紙必須符合規(guī)范。3.課程設(shè)計報告應在2000字以上(含相關(guān)圖紙和計劃書等),用A4紙打印。三、課程設(shè)計的選題參考(可另自行擬題或參考教材和實驗指導書)1.交通燈系統(tǒng)設(shè)計2.計時器系統(tǒng)設(shè)計3.出租車計價器系統(tǒng)設(shè)計4.頻率計系統(tǒng)設(shè)計5.溫度控制系統(tǒng)

3、設(shè)計6.音樂播放系統(tǒng)設(shè)計四、時間安排及成績評定課程設(shè)計時間:6月8日下午布置課程設(shè)計,6月12日下午4:30在信息行政樓八層自動化系會議室輔導課程設(shè)計,6月14日全天(自動化1、2班),6月15日全天(自動化3、4班),6月16日全天(交控1班)在信息行政樓B202CPLD實驗室上機調(diào)試電路及程序,6月23日下午各班長收齊設(shè)計報告交給輔導老師。輔導老師根據(jù)學生的設(shè)計資料,設(shè)計報告書、圖紙等進行評定。課程設(shè)計成績按百分制分評定。五、參考資料:牛昱光主編單片機原理與接口技術(shù)電子工業(yè)出版社51單片機實驗指導書胡漢才主編單片機原理及其應用清華大學出版社出版何立民主編單片機應用文集北京航空航天大學出版社

4、出版太原理工大學信息學院自動化系2016/05/23基于溫度感應的智能音樂播放器摘要燥熱或是寒冷的天氣都會使人煩躁,這時可以聽音樂來緩解疲勞,但如果聽著不合適的音樂就會適得其反?;蚴钱斈愫涞亩煸谙丛璧臅r候,溫度較高高,這時候需要激情的音樂使你更加興奮;或是在舒適的泡澡時,需要舒緩的音樂來愉悅身心。手動控制在這里就顯得不那么方便,因此需要一個智能播放器可以根據(jù)不同溫度來播放不同的音樂。本設(shè)計利用51單片機的數(shù)碼管來完成時間的顯示,并利用蜂鳴器實現(xiàn)音樂功能,通過DH11溫濕度傳感器來采集溫度。并且,通過對定時器初值的設(shè)定來產(chǎn)生不同頻率的聲音,利用定時器中斷來完成對音樂節(jié)拍長度的控制。通過音頻功

5、率放大器,將單片機輸出的信號放大,再通過喇叭播放樂曲。此設(shè)計擺脫了傳統(tǒng)音樂播放器的手動操作,取而代之的是智能化操作,能為人們的日常生活提供便利,且成本低廉,值得推廣。關(guān)鍵詞:音樂播放;音頻轉(zhuǎn)換;溫度采集;AbstractHot weather or cold weather will make people irritable, then you can listen to music to ease fatigue, but if listening to inappropriate music will be counterproductive. Or when you are cold

6、in the winter when the bath, the temperature is high, this time the need for passionate music to make you more excited; or in a comfortable bath, the need for soothing music to enjoy the physical and mental. Manual control here is not so convenient, so you need a smart player can play different colo

7、rs according to different music.The design of the use of 51 single-chip digital control to complete the time display, and the use of buzzer to achieve music function, through the DH11 temperature and humidity sensor to collect temperature. And, by setting the initial value of the timer to produce di

8、fferent frequencies of sound, the use of timer interrupt to complete the control of the length of the music beat. Through the audio power amplifier, the microcontroller output signal amplification, and then through the speaker to play music. This design out of the traditional music player manual ope

9、ration, replaced by intelligent operation, for people's daily life to facilitate, and low cost, it is worth promoting.Key words: Music player; audio conversion; Temperature collection目錄任務(wù)書2摘要4一、總體設(shè)計61.1設(shè)計概要61.2具體功能61.3設(shè)計的硬件流程6二、硬件設(shè)計72.1單片機(STC89C51)介紹72.2原理圖72.2.1 主控程序72.2.2 供電、程序下載、串口通信模塊82.2.3

10、 數(shù)碼管及鎖存器82.2.4 DH11溫濕度傳感器92.2.5 蜂鳴器92.2.6 獨立鍵盤102.3線路接線10三、軟件設(shè)計113.1聲音信號113.2節(jié)拍信號113.3音頻轉(zhuǎn)換113.4軟件流程設(shè)計113.5程序13四、調(diào)試及運行224.1調(diào)試運行步驟224.2運行結(jié)果22五、實驗總結(jié)23參考資料23一、 總體設(shè)計1.1設(shè)計概要在基于51單片機的音樂播放器中,采用DH11溫濕度傳感器為硬件基礎(chǔ),通過其對周圍溫濕度的采集,控制音樂播放。單片機需外接+5V穩(wěn)壓電源,單片機工作時,用軟件對定時器初值進行設(shè)定,從而得到所需要的聲音頻率;通過8位共陰極數(shù)碼管,可顯示溫度;將單片機輸出的信號放大,接入

11、蜂鳴器即可發(fā)聲。1.2具體功能(1)對周圍溫度進行采集,當采集的溫度達到不同設(shè)定值時,通過喇叭能播放不同的音樂。要求播放出的音樂的音階準確,不能有太大偏差,否則會造成音樂聲音刺耳難聽;音樂播放必須連貫,即音樂必須有節(jié)奏感;喇叭放出的音樂聲音響亮,不能太小,否則不能達到樂曲的作用。(2)在共陰數(shù)碼管上顯示出采集到的溫度(攝氏度),包括溫度及單位,當采集到溫度后,立即在數(shù)碼管上顯示出溫度,實時顯示。(3)將音樂編寫好存儲在單片機中,一共有三首歌曲選擇,可通過獨立鍵盤模塊選擇音樂播放,K1-K3按鍵分別選擇音樂1-音樂3,K4按鍵為停止播放。1.3設(shè)計的硬件流程數(shù)碼管獨立鍵盤蜂鳴器單片機PC溫度傳感

12、器二、 硬件設(shè)計2.1單片機(STC89C51)介紹STC89C51RC是采用8051核的ISP(In System Programming)在系統(tǒng)可編程芯片,最高工作時鐘頻率為80MHz,片內(nèi)含4K Bytes的可反復擦寫1000次的Flash只讀程序存儲器,器件兼容標準MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,具有在系統(tǒng)可編程(ISP)特性,配合PC端的控制程序即可將用戶的程序代碼下載進單片機內(nèi)部,省去了購買通用編程器,而且速度更快。STC89C51RC系列單片機是單時鐘/機器周期(1T)的兼容8051 內(nèi)核單片機,是高速/低功耗

13、的新一代8051單片機,全新的流水線/精簡指令集結(jié)構(gòu),內(nèi)部集成MAX810 專用復位電路。2.2原理圖2.2.1 主控程序2.2.2 供電、程序下載、串口通信模塊2.2.3 數(shù)碼管及鎖存器數(shù)碼管數(shù)碼管鎖存器2.2.4 DH11溫濕度傳感器2.2.5 蜂鳴器2.2.6 獨立鍵盤2.3線路接線三、軟件設(shè)計3.1聲音信號聲音是音頻振動的結(jié)果,振動的頻率高則為高音,頻率低則為低音。音頻范圍為20HZ-200KHZ之間,而人類耳朵比較容易辨識的聲音大概是200HZ-20KHZ。一般音響電路是以正弦波信號驅(qū)動喇叭,產(chǎn)生悅耳的音樂的。在數(shù)字電路里,則是以脈沖信號驅(qū)動喇叭以產(chǎn)生聲音。同樣的頻率,脈沖信號或正弦

14、信號產(chǎn)生的音效,對于人類的耳朵來說很難有所區(qū)別。若用單片機產(chǎn)生聲音,可利用程序產(chǎn)生頻率,送到輸入/輸出端口,再從該點連接到喇叭的驅(qū)動電路,即可驅(qū)動喇叭。若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期,再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當計時終止后就將P1.0反相,然后重復計時再反相。就可在P1.0引腳上得到此頻率的脈沖。3.2節(jié)拍信號音階的頻率是固定的,而節(jié)拍有快有慢,拍子越短節(jié)奏越快,拍子越長節(jié)奏越慢??刂瓢l(fā)音的時間有兩種方法:調(diào)用延時子程序或采用定時器中斷。本次設(shè)計采用的是定時器中斷。然后在程序執(zhí)行時順序查此表,取出音符代碼,查頻率表,置入T/C口,取出節(jié)拍代碼,供

15、定時器使用,啟動后即可發(fā)出聲音。3.3音頻轉(zhuǎn)換利用單片機的內(nèi)部定時器使其工作計數(shù)器模式(MODEL1)下,改變其計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階。3.4軟件流程設(shè)計程序開始運行時先對單片機進行初始化,其中包括定時器及其工作方式的選擇、外部中斷設(shè)定、定時器初值的設(shè)定。程序流程圖如下:開始否是按鍵是否按下?是否是溫度是否還在設(shè)定值?音樂播放否溫度是否達到設(shè)定值?溫度顯示溫度采集初始化3.5程序#include <reg52.h>#include <intrins.h> typedef unsigned char U8; typedef signed ch

16、ar S8; typedef unsigned int U16; typedef signed int S16; typedef unsigned long U32; typedef signed long S32; typedef float F32; typedef double F64; #define uchar unsigned char#define uint unsigned int#define Data_0_time 4/-IO口定義區(qū)-/sbit P2_0 = P20 ;sbit dula=P26;sbit wela=P27;/-定義區(qū)-/U8 U8FLAG,k;U8 U8

17、count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U8 outdata5; /定義發(fā)送的字節(jié)數(shù) U8 indata5;U8 count, count_r=0;U8 str5;U16 U16temp1,U16temp2;U8 table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d

18、,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; void delayms(U16 xms) U16 i,j; for(i=xms;i>0;i-) for(j=110;j>0;j-); void Delay(U16 j) U8 i; for(;j>0;j-) for(i=0;i<27;i+); void Delay_10us(void) U8 i; i-; i-; i-; i-; i-; i-; void COM(void) U8 i; for(i=0;i<8;i+) U8FLAG=2; while(!P2_0)&

19、;&U8FLAG+); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while(P2_0)&&U8FLAG+); /超時則跳出for循環(huán) if(U8FLAG=1)break; /判斷數(shù)據(jù)位是0還是1 / 如果高電平高過預定0高電平值則數(shù)據(jù)位為 1 U8comdata<<=1; U8comdata|=U8temp; /0 /rof /-濕度讀取子程序 - /- /-以下變量均為全局變量- /-溫度高8位= U8T_data_H- /-溫度低8位=

20、 U8T_data_L- /-濕度高8位= U8RH_data_H- /-濕度低8位= U8RH_data_L- /-校驗 8位 = U8checkdata- /-調(diào)用相關(guān)子程序如下- /- Delay();, Delay_10us();,COM(); /- void RH(void) /主機拉低18ms P2_0=0; Delay(180); P2_0=1; /總線由上拉電阻拉高 主機延時20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); /主機設(shè)為輸入 判斷從機響應信號 P2_0=1; /判斷從機是否有低電平響應信號 如

21、不響應則跳出,響應則向下運行 if(!P2_0) /T ! U8FLAG=2; /判斷從機是否發(fā)出 80us 的低電平響應信號是否結(jié)束 while(!P2_0)&&U8FLAG+); U8FLAG=2; /判斷從機是否發(fā)出 80us 的高電平,如發(fā)出則進入數(shù)據(jù)接收狀態(tài) while(P2_0)&&U8FLAG+); /數(shù)據(jù)接收狀態(tài) COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_dat

22、a_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P2_0=1; /數(shù)據(jù)校驗 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp=U8checkdata_temp) U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata

23、=U8checkdata_temp; /fi /fi char code dx5163 _at_ 0x003b;sbit BEEP=P23; /喇叭輸出腳 sbit P10=P10; sbit K1= P30;sbit K2= P31;sbit K3= P32;sbit K4= P33; uchar th0_f; /在中斷中裝載的T0的值高8位 uchar tl0_f; /在中斷中裝載的T0的值低8位 /T0的值,及輸出頻率對照表 uchar code freq36*2= 0xA9,0xEF,/00220HZ ,1/0 0x93,0xF0,/00233HZ ,1# 0x73,0xF1,/002

24、47HZ ,2 0x49,0xF2,/00262HZ ,2# 0x07,0xF3,/00277HZ ,3 0xC8,0xF3,/00294HZ ,4 0x73,0xF4,/00311HZ ,4# 0x1E,0xF5,/00330HZ ,5 0xB6,0xF5,/00349HZ ,5# 0x4C,0xF6,/00370HZ ,6 0xD7,0xF6,/00392HZ ,6# 0x5A,0xF7,/00415HZ ,7 0xD8,0xF7,/00440HZ 1 /12 0x4D,0xF8,/00466HZ 1# /13 0xBD,0xF8,/00494HZ 2 /14 0x24,0xF9,/005

25、23HZ 2# /15 0x87,0xF9,/00554HZ 3 /16 0xE4,0xF9,/00587HZ 4 /17 0x3D,0xFA,/00622HZ 4# /18 0x90,0xFA,/00659HZ 5 /19 0xDE,0xFA,/00698HZ 5# /20 0x29,0xFB,/00740HZ 6 /21 0x6F,0xFB,/00784HZ 6# /22 0xB1,0xFB,/00831HZ 7 /23 0xEF,0xFB,/00880HZ 1 0x2A,0xFC,/00932HZ 1# 0x62,0xFC,/00988HZ 2 0x95,0xFC,/01046HZ 2#

26、 0xC7,0xFC,/01109HZ 3 0xF6,0xFC,/01175HZ 4 0x22,0xFD,/01244HZ 4# 0x4B,0xFD,/01318HZ 5 0x73,0xFD,/01397HZ 5# 0x98,0xFD,/01480HZ 6 0xBB,0xFD,/01568HZ 6# 0xDC,0xFD,/01661HZ 7/35 ; /定時中斷0,用于產(chǎn)生唱歌頻率 timer0() interrupt 1 TL0=tl0_f;TH0=th0_f; /調(diào)入預定時值 BEEP=BEEP; /取反音樂輸出IO /* /音樂符號串解釋函數(shù) /入口:要解釋的音樂符號串,輸出的音調(diào)串,輸

27、出的時長串 changedata(uchar *song,uchar *diao,uchar *jie) uchar i,i1,j; char gaodi; /高低+/-12音階 uchar banyin;/有沒有半個升音階 uchar yinchang;/音長 uchar code jie78=0,12,14,16,17,19,21,23; /C調(diào)的7個值 *diao=*song; for(i=0,i1=0;) gaodi=0; /高低=0 banyin=0;/半音=0 yinchang=4;/音長1拍 if(*(song+i)='|') | (*(song+i)='

28、 ') i+; /拍子間隔和一個空格過濾 switch(*(song+i) case ',': gaodi=-12;i+;/低音 break; case '': gaodi=12;i+; /高音 break; if(*(song+i)=0) /遇到0結(jié)束 *(diao+i1)=0; /加入結(jié)束標志0 *(jie+i1)=0; return; j=*(song+i)-0x30; i+; /取出基準音 j=jie7j+gaodi; /加上高低音 yinc: switch(*(song+i) case '#': /有半音j加一個音階 i+;j+

29、; goto yinc; case '-': /有一個音節(jié)加長 yinchang+=4; i+; goto yinc; case '_': /有一個音節(jié)縮短 yinchang/=2; i+; goto yinc; case '.': /有一個加半拍 yinchang=yinchang+yinchang/2; i+; goto yinc; *(diao+i1)=j; /記錄音符 *(jie+i1)=yinchang; /記錄音長 i1+; /* /奏樂函數(shù) /入口:要演奏的音樂符號串 void play(uchar *songdata) uchar

30、 i,c,j=0; uint n; uchar xdata diaodata112; /音調(diào)緩沖 uchar xdata jiedata112; /音長緩沖 changedata(songdata,diaodata,jiedata); /解釋音樂符號串 TR0=1; for(i=0;diaodatai!=0;i+) /逐個符號演奏 tl0_f=freqdiaodatai*2; /取出對應的定時值送給T0 th0_f=freqdiaodatai*2+1; for(c=0;c<jiedatai;c+) /按照音長延時 for(n=0;n<32000;n+); if(!K1)|(!K2)

31、|(!K4)|(!K3)/發(fā)現(xiàn)按鍵,立即退出播放 TR0=0; return; TR0=0; for(n=0;n<500;n+); /音符間延時 TR0=1; TR0=0; /兩只老虎uchar code xianjian= "|1_2_3_1_1_2_3_1|4_5_6_4_5_6_|1_2_3_1_1_2_3_1|4_5_6_4_5_6_|1_2_3_1_1_2_3_1|4_5_6_4_5_6_|" ; /童話uchar code song3= "5_5_4_3.|3_4_3_|3_4_3_4_3_2_1-|1_3_5_6.|6_6_5_2_2_4_3-

32、|1_3_5_6_|6_6_7_6_5_4_3_4_3_2_1_-|" ; /世上只有媽媽好 uchar code mamahao= "6.5_35|16_5_6-|35_6_53_2_|1_,6_5_3_2-|" "2.3_55_6_|321-|5.3_2_1_,6_1_|,5-" ; void main() /* 系統(tǒng)初始化 */ Delay(20000); TMOD = 0x01; /使用定時器0的16位工作模式 TR0 = 0; ET0 = 1;/定時器0中斷 EA = 1;/打開總中斷 Delay(1); /延時100US(12M晶振) while(1) /調(diào)用溫濕度讀取子程序 RH(); /串口顯示程序 str0=U8RH_data_H; / 把濕度整數(shù)給予SRT0.(直接使用即可) str1=U8RH_data_L; / 把濕度小數(shù)給予SRT1.=0(為零,不

溫馨提示

  • 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

提交評論