基于單片機音樂彩燈電子控制器設計_第1頁
基于單片機音樂彩燈電子控制器設計_第2頁
基于單片機音樂彩燈電子控制器設計_第3頁
基于單片機音樂彩燈電子控制器設計_第4頁
基于單片機音樂彩燈電子控制器設計_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、物理與電子工程學院2014級本科課程設計物理與電子工程學院單片機課程設計報告書 設計題目: 基于單片機音樂彩燈電子控制器設計 專 業(yè): 自動化 班 級: 14接本 學生姓名: 李智瑤 學 號: 20140343112 指導教師: 王承林 2014年 11 月16 日 物理與電子工程學院課程設計任務書專業(yè): 自動化 班級: 2014接本 學生姓名李智瑤學號20140343112課程名稱單片機原理及接口技術設計題目基于單片機音樂彩燈電子控制器設計設計目的、主要內(nèi)容(參數(shù)、方法)及要求設計任務與要求要求將音樂分成四個不同的頻段,將彩燈分為四組,各組彩燈顏色不同,每組彩燈包含兩個顏色相同的彩燈。(1)

2、 實現(xiàn)音樂彩燈同步控制;(2) 當音樂處于高頻段20004000Hz時第一組彩燈根據(jù)音樂節(jié)拍長短不同決定燈亮的個數(shù);(3) 當音樂處于中頻段5001200Hz時第二組彩燈根據(jù)音樂節(jié)拍長短不同決定燈亮的個數(shù);(4) 當音樂處于低頻段50250Hz時第三組彩燈根據(jù)音樂節(jié)拍長短不同決定燈亮的個數(shù);(5) 當音樂在這些頻段之外,要求所有彩燈按照1Hz頻率節(jié)奏性的閃爍;工作量2周時間,每天3學時,共計42學時進度安排l 第1天:查閱資料,整理資料l 第2-3天:整理報告,確定初稿l 第4-14天:完成程序,整理交稿主要參考資料1 楊國志,王立峰,楊東光,王輝林編著.實用電子制作實例M.福建科學技術出版社

3、,2000.10.2 張仁.單片機音樂彩燈同步控制器的設計J.成都氣象學院院報,1995.5.(165168).3 王連濤主編.音樂噴泉的單片機控制J.電子世界,2005.(2122).4 康華光,陳大欽編著.電子技術基礎(模擬部分第四版)M.高等教育出版社,2002.3.5 潘永雄,沙河編著,電子線路CAD實用教程(第三版)M.西安電子科技大學出版社,2010.2.指導教師簽字教研室主任簽字摘 要隨著人們生活環(huán)境的不斷改善和美化,在許多場合可以看到彩色霓虹燈。LED彩燈由于其豐富的燈光色彩,低廉的造價以及控制簡單等特點而得到了廣泛的應用。本篇設計為基于單片機的音樂彩燈控制器,它是指彩燈能隨著

4、音樂信號地變化而變化的一種控制電路。本文詳細論述了音樂彩燈控制器的硬件原理電路,包括振蕩、時鐘、復位等模塊電路。以及如何在硬件電路的基礎上通過單片機進行軟件編程最終實現(xiàn)音樂彩燈的同步控制。關鍵詞:音樂;彩燈;同步控制目 錄1 引言42.1 設計任務與要求52.2 方案的論證和選取53 硬件電路的設計73.1 單片機系統(tǒng)設計框圖73.2 單片機外圍電路83.3 時鐘電路93.5 按鍵電路113.6 ISP下載口電路113.7LED彩燈顯示電路123.8 12864液晶電路123.9 音樂播放電路143.10 直流穩(wěn)壓電源電路154 系統(tǒng)軟件設計164.1 單片機系統(tǒng)設計主程序流程圖164.2 音

5、樂產(chǎn)生程序204.3 定時器子程序設計序214.4 液晶顯示子程序29參考文獻321 引言目前,基于彩燈控制器的設計的方法很多,有利用單片機控制的、有利用傳感器控制的,還有利用EDA控制的等等。在簡化設計步驟和節(jié)約實驗器材的情況下,為了簡化硬件電路,也可采用PLC S7-20CN控制的,雖然硬件電路比較簡便,但是實驗程序更復雜,實驗步奏更繁瑣;對于編寫程序是個比較困難的問題。通常采用單片機控制的方法,即利用單片機的端口來控制彩燈以及音樂播放,在程序編寫上更容易編寫,程序的可編譯性更強。本設計利用AT89S52單片機來實現(xiàn)基于單片機的音樂彩燈控制的設計。用一恒流源供電,當按下“開始”按鍵時單片機

6、開始輸出,彩燈開始閃爍和音樂播放開始同步播放;當按下“停止”按鈕時音樂播放停止,彩燈停止閃爍,LCD顯示停止。當再次按下“開始”按鈕時彩燈開始閃爍和音樂播放開始同步播放。單片機系統(tǒng)通過對采用數(shù)據(jù)進行掃描,控制D/A轉換器轉換,并根據(jù)按鍵控制端口輸出。此方案思路清楚,電路簡單,便于操作1。2 設計方案的比較與選擇2.1 設計任務與要求要求將音樂分成四個不同的頻段,將彩燈分為四組,各組彩燈顏色不同,每組彩燈包含兩個顏色相同的彩燈。(1) 實現(xiàn)音樂彩燈同步控制;(2) 當音樂處于高頻段20004000Hz時第一組彩燈根據(jù)音樂節(jié)拍長短不同決定燈亮的個數(shù);(3) 當音樂處于中頻段5001200Hz時第二

7、組彩燈根據(jù)音樂節(jié)拍長短不同決定燈亮的個數(shù);(4) 當音樂處于低頻段50250Hz時第三組彩燈根據(jù)音樂節(jié)拍長短不同決定燈亮的個數(shù);(5) 當音樂在這些頻段之外,要求所有彩燈按照1Hz頻率節(jié)奏性的閃爍;2.2 方案的論證和選取單片機系統(tǒng)振蕩電路按鍵及下載口電路12864液晶顯示電路音樂播放電路彩燈顯示電路精密恒流源方案一: 基于單片機的音樂彩燈控制器的設計,是利用單片機編程產(chǎn)生頻率分為1.2MHz12MHz的方波,根據(jù)實際情況,本設計采用12MHz作為系統(tǒng)的外部晶振,電容值取30pF。經(jīng)過發(fā)射驅動電路放大,使LED燈閃爍,同時音樂同步播放并通過12864液晶屏顯示頻率2。其系統(tǒng)框圖如圖1所示。圖1

8、 基于單片機的音樂彩燈控制器的設計的系統(tǒng)框圖這種以單片機為核心的基于單片機的音樂彩燈控制器的設計;利用振蕩電路產(chǎn)生12MHz的時鐘信號,在通過單片機輸出,單片機系統(tǒng)通過對采用數(shù)據(jù)進行掃描,控制D/A轉換器轉換,并根據(jù)按鍵控制端口輸出,此方案思路清楚。利用單片機、按鍵控制音樂彩燈,控制靈敏度高,而且單片機控制方便,操作簡單。許多音樂彩燈控制器的設計都采用這種設計方法。方案二:這種測距系統(tǒng)采用CPLD(Complex Programmable Logic Device)器件,運用VHDL編寫程序,使用MAX+plusII軟件進行軟硬件設計的仿真和調(diào)試,最終實現(xiàn)測距功能。CPLD器件內(nèi)部的宏單元是其

9、最基本的模塊,能獨立地編程為D觸發(fā)器、T觸發(fā)器、RS觸發(fā)器或JK觸發(fā)器工作方式或組合邏輯工作方式。它的這種特性非常適用于本系統(tǒng)。可將本系統(tǒng)所需要的分頻功能、計數(shù)功能、振蕩器、七段碼顯示全部由MAX來實現(xiàn),而只需在外部配上適當?shù)某暡▊鞲衅?、接收和發(fā)送電路,即可組成一個性能穩(wěn)定、響應速度快且具有顯示功能的彩燈控制器。本設計首先進行系統(tǒng)模塊的劃分,規(guī)定每一個模塊的功能以及各模塊之間的借口,最終將設計分為三大模塊:四分頻器,四選一控制器,8樣彩燈控制器。本設計充分利用VHDL“自頂向下”的設計優(yōu)點以及層次化的設計概念,從簡單的單元入手,逐漸構成復雜的系統(tǒng)。配合使用MAX+plusII開發(fā)軟件,可集設

10、計輸入、設計處理、設計校驗和器件編程于一體,集成度高,開發(fā)周期短。其系統(tǒng)框圖如圖2所示。音頻控制器顯示控制器四分頻器12864液晶顯示彩燈顯示音樂播放四選一控制器音頻發(fā)生器圖2 基于CPLD的音樂彩燈控制器系統(tǒng)框圖綜合考慮前兩種方案,方案一操作方便,控制性更好,功耗低,模塊簡單,穩(wěn)定性高,成本低的特點,方案二具有靈敏度高,但結構復雜、功耗比較和高控制不簡便的缺點。綜合各自的優(yōu)劣點我們選擇方案一。3 硬件電路的設計3.1 單片機系統(tǒng)設計框圖本文所設計的基于單片機的音樂彩燈控制器的設計主要由AT89S52單片機、時鐘電路、復位電路、按鍵控制電路、下載口電路、喇叭聲音電路、顯示電路、直流穩(wěn)壓電源等硬

11、件電路部分以及相應的軟件部分構成。首先由單片機驅動產(chǎn)生12MHz晶振,在單片機片內(nèi)有一個高增益的反相放大器,反相放大器的輸入端為XTAL1,輸出端為XTAL2,由該放大器構成的振蕩電路和時鐘電路一起構成了單片機的時鐘方式。由單片機驅動后把結果輸出到LED彩燈、小喇叭和12864液晶屏上。由編程可以實現(xiàn)音符頻率表、音名以及半音頻率表的確定和分配??梢詫⒙曇舴譃楦咭簦?KHz4KHz)、中音(500Hz1.2KHz)以及低音(50Hz250Hz)三等,故可以分配彩燈在不同的頻率段實現(xiàn)閃爍;同時當在劃定頻率外時實現(xiàn)彩燈以1Hz的頻率節(jié)奏閃爍;從而可以滿足設計的要求,達到設計的標準3。根據(jù)要求并綜合以

12、上各方面因素,采用AT89S52單片機作為主控制器,采用按鍵來控制音樂以及彩燈的開始、暫停和停止?;趩纹瑱C的音樂彩燈控制器的單片機最小系統(tǒng)如下圖3所示:圖3 基于單片機的彩燈控制器的設計的設計框圖3.2 單片機外圍電路當使用單片機的內(nèi)部時鐘電路時,單片機的XATL1和XATL2用來接石英晶體和微調(diào)電容,晶體一般可以選擇1.2MHz12MHz,電容選擇30pF左右。我們選擇晶振為12MHz,電容30pF。在系統(tǒng)上電的瞬間,RST與電源電壓同電位,隨著電容的電壓逐漸上升,RST電位下降,于是在RST形成一個正脈沖。只要該脈沖足夠寬就可以實現(xiàn)復位,即=RC20ms。一般取R1K,C22uF。當人按

13、下按鈕S1時,使電容C5通過R1迅速放電,待S1彈起后,C再次充電,實現(xiàn)手動復位。R1一般取10K。我們通過P2.0來啟動控制,程序中通過查詢P2.0的電平來檢測是否按鍵被按下,當按下按鍵時P2.0為低電平,單片機通過查詢到低電平開始音樂輸出和彩燈,當松開按鍵,P2.0即為高電平,在軟件中通過軟件延時來消除按鍵的機械抖動。圖4 單片機外圍電路3.3 時鐘電路(1) 在單片機片內(nèi)有一個高增益的反相放大器,反相放大器的輸入端為XTAL1,輸出端為XTAL2,由該放大器構成的振蕩電路和時鐘電路一起構成了單片機的時鐘方式。根據(jù)硬件電路的不同,單片機的時鐘連接方式可分為內(nèi)部時鐘方式和外部時鐘方式。我們采

14、用內(nèi)部時鐘方式,如圖4所示:圖5 晶振電路(2) 在內(nèi)部方式時鐘電路中,必須在XTAL1和XTAL2引腳兩端跨接石英晶體振蕩器和兩個微調(diào)電容構成振蕩電路,C6和C7取31pF左右,晶振的頻率取值1.2MHz12MHz。根據(jù)實際情況,本設計采用12MHz作為系統(tǒng)的外部晶振,電容值取30pF4。3.4 復位電路我們在用按鍵控制時,為了避免單片機程序錯誤而導致的錯誤輸出,從而加入復位電路,對任意的情況都能夠通過復位按鍵使電路復位。單片機復位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。無論是單片機剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復位。所以,必須弄清楚單

15、片機復位的條件、復位電路和復位后的狀態(tài)。單片機復位的條件是,必須使RST引腳(9腳)加上持續(xù)兩個機器周期(即24個振蕩周期)的高電平。例如,若時鐘頻率為12MHz,每機器周期為1us,則只需2us以上時間的高電平。在RST引腳出現(xiàn)高電平后的第二個周期執(zhí)行復位。單片機常見的復位電路有上電復位電路和按鍵復位電路。為了方便系統(tǒng)的硬件初始化,我們采用按鍵復位電路。如圖6所示:圖6 復位電路3.5 按鍵電路由于要達到設計要求,同時也為了提高設計的課操作性;選用按鍵來控制輸入從而可以手動的對音樂彩燈進行控制。按鍵S2與單片機P2.0端口連接是“開始”按鍵;按鍵S3與單片機P2.1端口連接是“暫?!卑存I;按

16、鍵S3與單片機P2.2端口連接是“停止”按鍵。如圖7所示。圖7 按鍵電路3.6 ISP下載口電路下載口電路采用了ISP下載口,能快速下載和更換單片機中的程序,從而滿足和達到實驗的要求下載口的1腳與單片機的P1.5相連接,下載口的2腳與VCC相連接,下載口的3腳與單片機的相連接,下載口的5腳與單片機的相連接,下載口的7腳與單片機的P1.7相連接,下載口的9腳與單片機的P1.6相連接,下載口的4、6和8腳與GND相連接。下載電路采用DIP10插座;其插座的管腳如圖8示,DIP10管腳功能如表1所示5。圖8 按鍵下載口電路表1 DIP10管腳使用說明AT89ISP引腳CPU端說明AT89ISP引腳C

17、PU端說明1SCK時鐘信號5RST復位端2VCC電源9MOSI輸出信號3MISO輸入信號10GND地線4GND地線3.7 LED彩燈顯示電路LED數(shù)碼顯示管有兩種,一種是共陽極數(shù)碼管,另一種是共陰極數(shù)碼管,其內(nèi)部是由八個陽極或陰極相連接的發(fā)光二極管組成,二者原理不同但功能相同。共陰極LED數(shù)碼顯示塊的發(fā)光二極管陰極連接在一起,形成該模塊的公共端(通常稱為位選端),因此稱為共陰極LED數(shù)碼顯示器,8個數(shù)碼管的另一端通常稱為段選端,當顯示器的公共端接低電平,某個發(fā)光二極管的陽極接高電平時,該發(fā)光二極管被點亮;而共陽極LED數(shù)碼顯示管則形成共陽極LED數(shù)碼顯示塊的公共端,該公共端必須接高電平,同理在

18、共陽極LED數(shù)碼顯示塊中如某個發(fā)光二極管的陰極為低電平時,該發(fā)光二極管被點亮7。AT89S52是采用12MHZ晶振獲得穩(wěn)定的時鐘頻率。采用12MHz高精度的晶振,以獲得較穩(wěn)定的時鐘頻率,從而使輸出的頻率更為穩(wěn)定。顯示電路采用簡單實用的8位共陽LED數(shù)碼管。單片機系統(tǒng)顯示電路如圖9所示。圖9 LED顯示電路3.8 12864液晶電路3.8.1 12864液晶簡介12864是128*64點陣液晶模塊的點陣數(shù)簡稱。該點陣的屏顯成本相對較低,適用于各類儀器。液晶模組的驅動應遵照規(guī)定的額定指標,避免故障及永久損壞。液晶顯示屏焊接溫度:280°C+10°C 焊接時間3-4秒6。液晶的電

19、氣特性如表2所示。表2 12864液晶的電氣特性 項目符號最小典型最大單位電源電壓VDD-VSS4.755.05.25V液晶驅動電壓VDD-VADJTa=0-11.0-11.5-12.0Ta=25-10.5-11.0-11.5Ta=50-10.0-10.5-11.0 液晶的背光驅動電流ILED-6080液晶驅動電流IEE-1.0-3.8.2 12864液晶顯示屏管腳號及作用液晶的1腳VSS接電源,為液晶提供電流;17腳為復位端,與單片機的27腳連接,通過單片機程序來控制液晶顯示的復位;液晶20腳接地線;714腳與排阻的29腳連接。如表3所示。 表3 12864液晶顯示屏的管腳號及作用管腳號管腳

20、名稱電平管腳功能描述1VSS+5V電源地2VCC3.0+5V電源正3V0-對比度(亮度)調(diào)整4RS(CS)H/LRS=“H”,表示DB7DB0為顯示數(shù)據(jù)RS=“L”,表示DB7DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,R/W=“L”,E=“HL”, 6E(SCLK)H/L使能信號7DB0H/L三態(tài)數(shù)據(jù)線8DB1H/L三態(tài)數(shù)據(jù)線9DB2H/L三態(tài)數(shù)據(jù)線10DB3H/L三態(tài)數(shù)據(jù)線11DB4H/L三態(tài)數(shù)據(jù)線12DB5H/L三態(tài)數(shù)據(jù)線13DB6H/L三態(tài)數(shù)據(jù)線14DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8位或4位并口方式,L:串口方式16NC-空腳17/RESETH/L

21、復位端,低電平有效續(xù)表 12864液晶顯示屏的管腳號及作用管腳號管腳名稱電平管腳功能描述18VOUT-LCD驅動電壓輸出端19AVDD背光源正端(+5V)20KVSS背光源負端在這個設計中由于采用的是并行,故直接將PSB連接高電平;VSS與LED_K端接地。液晶的數(shù)據(jù)位DB0DB7分別接在排阻U2的A0A7上;復位端17腳和單片機的復位端連接。12864液晶屏顯示部分電圖如圖10所示。圖10 12864液晶屏顯示電路3.9 音樂播放電路為了提高聲音電路的功率并保持穩(wěn)定在喇叭電路中增加了一個8550三極管,并增加了一個阻值比較大的電阻來增加電路的電流。音樂播放電路如圖11所示。圖11 喇叭電路3

22、.10 直流穩(wěn)壓電源電路電源電路采用普通可調(diào)電源供電,電源由外接端口連接5V電壓參考源,可滿足本系統(tǒng)單片機、彩燈和小喇叭的供電要求。其中采用兩個電容并聯(lián),達到濾波的作用,以便得到穩(wěn)定的電流。如下圖12。圖12 穩(wěn)壓電源電路4 系統(tǒng)軟件設計硬件電路一旦確定,大體的功能框架也形成了。這時我們需要在硬件平臺上編寫軟件程序,完成各部分硬件的控制和協(xié)調(diào)。系統(tǒng)功能是由軟硬件共同實現(xiàn)的,由于軟件的可伸縮性,最終實現(xiàn)的系統(tǒng)功能可強可弱,差別可能很大。因此,軟件是本系統(tǒng)的靈魂。音樂彩燈控制器的軟件設計主要是為了實現(xiàn)彩燈與音樂同步控制?;趩纹瑱C的音樂彩燈控制器的設計的軟件設計主要由主程序、復位程序、音頻及半音程

23、序、按鍵中斷程序及顯示子程序組成。下面分別對主程序、音頻及半音程序、按鍵中斷程序和顯示程序逐一作介紹7。4.1 單片機系統(tǒng)設計主程序流程圖本設計選用AT89S52的單片機來控制歌曲播放和歌詞顯示。采用直流電源為其提供基準電壓+5V,采用12864LCD顯示,小喇叭播放音樂8。通過軟件程序與按鍵輸入來控制輸入與輸出。當電源接通時,程序開始初始化。當開始鍵按下時單片機的21腳輸入低電平,程序啟動;音樂開始播放彩燈交替移動點亮;隨即進入通過頻率變化范圍中斷若在整體頻率范圍內(nèi)則繼續(xù)程序;若不在整體頻率范圍內(nèi)則所有彩燈1Hz閃爍。當程序進入高頻判定時,若在高頻段內(nèi)則使高頻段燈亮,液晶顯示當前頻率的大概值

24、;若不在高頻段范圍內(nèi)則進入中頻判定,判定結果同高頻;當程序進入低頻判定時,若滿足頻率判定要求則低頻段燈亮,液晶顯示當前頻率的大概值;若不滿足判定要求則程序結束。圖13為主要程序流程圖。開始初始化按鍵按下?播放音樂Y在高頻段內(nèi)?在中頻段內(nèi)?高頻段燈亮并且液晶顯示當前頻率大概值Y中頻段燈亮并且液晶顯示當前頻率大概值Y在低頻段內(nèi)?低頻段燈亮并且液晶顯示當前頻率大概值Y所有彩燈1Hz閃爍結束NNNN圖13主程序流程圖音樂彩燈控制器的主程序如下。#include <reg52.h>#include <ctype.h>#pragma ot(0)#define uint unsign

25、ed int#define uchar unsigned char#define io_LCD12864_DATAPORT P0;#define SET_DATA io_LCD12864_RS = 1 ;#define SET_INC io_LCD12864_RS = 0 ;#define SET_READ io_LCD12864_RW = 1 ;#define SET_WRITE io_LCD12864_RW = 0 ;#define SET_EN io_LCD12864_EN = 1 ;#define CLR_EN io_LCD12864_EN = 0 ;#define OSFREQ 11

26、059200 /所使用的晶振頻率sbit io_LCD12864_RS = P23 ;sbit io_LCD12864_RW = P24 ;sbit io_LCD12864_EN = P25 ;sbit BEEP_PWR=P27;sbit P3.0=P30;sbit P3.1=P31;sbit P3.2=P32;sbit P3.3=P33;sbit P3.4=P34;sbit P3.5=P35;sbit P3.6=P36;sbit P3.7=P37;sbit P2.0=P20;uchar FreqSandH,FreqSandL; /*產(chǎn)生方波的定時器的初值*/uchar timer1cnt;

27、/*定時器延時計數(shù) */uchar timer1cntflg; /*定時器定時完成標志 */uchar g_PL=0, g_Pai=0;uchar gp_Freq16="當前頻率值: "uint g_Freq=0;/*音符頻率表*/uint code notefreq= 523, 587, 659, 698, 784, 880, 988, 1047,1175,1319,1396,1568,1760,1976, 2093,2349,2637,2793,3136,3520,3961;/*音名*/uchar code notename='c','d'

28、;,'e','f','g','a','b', '1','2','3','4','5','6','7', 'C','D','E','F','G','A','B',0;/*半音頻率表*/uint code halfnotefreq= 554, 622, 740, 831, 933, 1109,124

29、5,1480,1161,1865, 2218,2489,2960,3322,3729;/*音名*/uchar code halfnotename='c','d','f','g','a', '1','2','4','5','6', 'C','D','F','G','A',0;/*聲明*/void Dis_PL(uchar *p,unit i);void v_L

30、cd12864CheckBusy_f( void );void v_Lcd12864SendCmd_f( unsigned char byCmd );void v_Lcd12864SendData_f( unsigned char byData );void v_DelayMs_f( unsigned int nDelay );void v_Lcd12864Init_f( void );void v_Lcd12864PutString_f( unsigned char x, unsigned char y, unsigned char *pData );4.2 音樂程序主要利用單片機的頻率發(fā)生

31、器產(chǎn)生方波,來產(chǎn)生不同頻率的音樂。10,具體程序如下。void main(void) uint i; TMOD=0x11; ET1=1; ET0=1; EA=1; v_Lcd12864Init_f() ;while(1)if(P1.0=0)if(i=1)i=0; /啟動關閉按鍵if(i=0)i=1;if(i=1)/Play("1_1_5_5_6_6_54_4_3_3_2_2_15_5_4_4_3_3_2 5_5_4_4_3_3_21_1_5_5_6_6_5 4_4_3_3_2_2_1"); /滿天都是小星星v_Lcd12864PutString_f( 0,0, "

32、曲目:兩只老虎") ;Play("1_2_3_1_1_2_3_1_3_4_5 3_4_55=6=5=4=3_1_ 5=6=5=4=3_1_ 2_g_12_g_1"); /兩只老虎/Play("a-a1-a2-a-b1b13-2a-a-a-33-12-a-b1b13-21-1-5-55432-a-b1-12123-3- 1-1_1_1235-4-32-b3-2a-a- a-66565-4-34-56543-3-1-1_1_1235-4-32-b3-2a-a-"); /山楂樹v_Lcd12864PutString_f( 0,0, "學習雷

33、鋒好榜樣") ;Play("5._3=2_1_5-12_3_g-5.3_23_5_1a_3_2-356.5_352._3=2_1_a32_21_a1g05.3_6562_3_50"); /學習雷鋒好榜樣/Play("C-53.2_1530C-53.2_1650 5_C6_5_C05_C6_5_6_0_3_C.6_53C.6_C0C53_6_5_3_2.1_30_5_C56_C_6_5_33_1_6-60C._C=5_5_2._3=5_5_6.5_6DC6_5_C6_5_33_5_C-");/ Play("3- 2_3_4_3 3- 2

34、_3_4_3 3- 4- 3_4_5_4 4- 3-2- 3- 2_3_4_3 3- 2_3_4_3 3-4- 3_4_5_4 4- 3-2");/許巍星空前奏v_Lcd12864PutString_f( 0,0, "許巍 時光") ;Play("543 3_2_1_2_30 g53 3_2_1_2_30 a65 4_3_2_3_4 1 b a g");/許巍-時光 SoundOff(); /*音符頻率表*/uint code notefreq= 523, 587, 659, 698, 784, 880, 988,1047,1175,1319,

35、1396,1568,1760,1976,2093,2349,2637,2793,3136,3520,3961;/*音名*/uchar code notename='c','d','e','f','g','a','b', '1','2','3','4','5','6','7', 'C','D','E','F',&

36、#39;G','A','B',0;/*半音頻率表*/uint code halfnotefreq= 554, 622, 740, 831, 933, 1109,1245,1480,1161,1865, 2218,2489,2960,3322,3729;/*音名*/uchar code halfnotename='c','d','f','g','a', '1','2','4','5','6', &#

37、39;C','D','F','G','A',0;4.3 定時器子程序設計序4.3.1 定時器工作原理當定時器設置為定時方式時,計數(shù)器對內(nèi)部機器周期計數(shù),每過一個機器周期,計數(shù)器加1,直至計滿溢出。定時器的定時時間與系統(tǒng)的振蕩頻率緊密相關,實驗單片機系統(tǒng)采用12MHz晶振,計數(shù)周期為1s,適當選擇定時器的初值可獲取各種定時時間。4.3.2 定時器特殊功能寄存器定時器的初始化是通過定時器的方式寄存器TMOD和控制寄存器TCON完成的。(1) 定時器的方式寄存器TMODTMOD為定時器0、定時器1的工作方式寄存器,其格式如表4所

38、示。表4 定時器工作方式寄存器GATEC/T M1 M0 GATE C/T M1 M0 TMOD的低四位為定時器0的方式字段,高四位為定時器1的方式字段,它們的含義完全相同。各位的意義如下。 M1M0:工作方式選擇位,設最大計數(shù)值為M。具體功能如表5所示。表5 M1M0工作功能描述M1M0工作方式功能描述最大計數(shù)值00方式013位定時器/計數(shù)器M=213=819201方式116位定時器/計數(shù)器M=216=6553610方式2常數(shù)自動重裝的8位定時器/計數(shù)器M=28=25611方式3僅適用于T0,分為兩個8位定時器/計數(shù)器。定時器0分成兩個8位計數(shù)器,所以兩個定時器的M值均為256。 C/T:定

39、時器/計數(shù)器的選擇位。C/T =0工作于定時方式,C/T =1 工作于計數(shù)方式。 GATE:門控位。當GATE=0時,只要有TRi=1,定時器/計數(shù)器就開始工作,稱為軟啟動。當GATE=1時,只有INTi引腳和TRi引腳同時為1時,定時器/計數(shù)器才開始工作,主要用于測量INT引腳上高電平脈沖的寬度,稱為硬啟動。(2) 定時器控制寄存器TCONTCON的作用是控制定時器/計數(shù)器的啟動、停止,標志定時器的溢出和中斷情況,其格式如表6所示。表6 定時器控制寄存器TR0TR1TF0TF1TR0TR1TF0TF1 TF1(TF0):定時器/計數(shù)器T1(T0)的溢出標志。當T1(T0)被允許計數(shù)后,T1(

40、T0)從初始值開始加1計數(shù),最高位產(chǎn)生溢出時,該位由內(nèi)部硬件置位,并向CPU請求申請中斷。當CPU響應,由硬件清零。 TR1(TR0):定時器/計數(shù)器T1(T0)的運行控制位。由軟件置1或清零來啟動或關閉定時器/計數(shù)器。本程序通過單片機的T2產(chǎn)生中斷,來調(diào)用歌詞顯示程序和彩燈程序,達到一種同步的效果。按下復位鍵后,將從頭開始。軟件分為兩部分,主程序和中斷服務程序,主程序完成初始化工作、進入定時中斷程序。定時中斷服務子程序完成對彩燈和音樂的控制,外部中斷服務子程序主要完成時間值的讀取、程序的運算、結果的輸出等工作9。定時中斷與外部中斷流程圖分別如圖14、15所示。定時中斷入口NY顯示同步定時器初

41、始化返回按鍵輸入音樂同步圖14 定時中斷服務子程序流圖關外部中斷外部中斷入口讀取輸入程序運算結果輸出開外部中斷返回圖15 外部中斷服務子程序流圖4.3.3 定時器子程序首先我們定義寄存器TMOD=0X01,選擇定時器0,定時方式,方式1。本設計采用的12MHz的晶振,所以計數(shù)周期為1s。方式1最大計數(shù)時間為65536s,這里我們選擇定時50ms。所以初值就可以計算:初值 X=65536-50000=15536=3CB0H (公式1)TH0=3CHTL0=B0H (公式2)由于本設計需要使彩燈1Hz的頻率閃爍,即需要定時時間為500ms,所以,沒完成一次定時,定義一個count自加一次,當cou

42、nt計數(shù)到10時,使所以彩燈取反。定義好初值以后則打開總開關EA=1和允許中斷開關ET0=1,最后啟動定時器0,TR1=1。定時器程序如下:/*定時器0用來產(chǎn)生方波*/void timer0int () interrupt 1 TH0=FreqSandH; TL0=FreqSandL; BEEP_PWR=!BEEP_PWR;/*定時器用來進行比較準確的延時*/void timer1int() interrupt 3 TH1=0xe0; TL1=0x00; timer1cnt+; if(timer1cnt>=(OSFREQ/1500000l) timer1cntflg=1; TR1=0;v

43、oid delay(uchar time) uchar i; uint j; for(i=0;i<time;i+) for(j=0;j<0x900;j+);/* uchar i; for(i=0;i<time;i+) timer1cnt=0; timer1cntflg=0; TR1=1; while(!timer1cntflg); */4.4 彩燈顯示子程序當檢測到不同的音樂頻率是彩燈的閃爍樣式和個數(shù)就會發(fā)生變化。高頻段時高頻段的燈亮,當為1個節(jié)拍時3個彩燈全部點亮,當為半拍時2個彩燈點亮,當為1/4拍時1個彩燈點亮。低頻段時和中頻段時亮燈個數(shù)與原理同高頻。沒有在設定頻率范圍

44、內(nèi)時所有彩燈以1Hz的頻率閃爍。彩燈子程序如下。/函數(shù)名稱:led_dis/函數(shù)說明:用于顯示音樂的led燈 主要是根據(jù)頻率和節(jié)拍來顯示不同的效果/輸入?yún)?shù):uint pl,uchar pai/輸出參數(shù):無void led_dis(uint pl,uchar pai)uchar i;if(pl<250)i=1;else if(pl>500&&pl<1200)i=2;else if(pl>2000&&pl<4000)i=3;elsei=0;switch(i)case 0:if(P3=0xff)P3=0x00;P2.0=0;elseP3

45、=0xff;P2.0=1;break;case 1: /高頻switch(pai)case 1:P3=0x07;P2.0=0;break;case 2:P3=0x03;P2.0=0;break;case 3:P3=0x01;P2.0=0;break;default :P3=0x00;P2.0=0;break;case 2: /中頻switch(pai)case 1:P3=0x38;P2.0=0;break;case 2:P3=0x08;P2.0=0;break;case 3:P3=0x04;P2.0=0;break;default :P3=0x00;P2.0=0;break;case 3:sw

46、itch(pai) /低頻case 1:P3=0xc0;P2.0=1;break;case 2:P3=0xc0;P2.0=0;break;case 3:P3=0x40;P2.0=0;break;default :P3=0x00;P2.0=0;break;default :break;4.4 液晶顯示子程序液晶顯示子程序通過定時器延時計數(shù)來檢測信號;同時通過定時器定時來完成定時器的計數(shù)。初始化液晶顯示程序并對液晶屏進行清屏。通過0x0c來開始液晶顯示,使用光標右移的數(shù)據(jù)移動方式來顯示數(shù)據(jù)。/函數(shù)名稱:Dis_PL/函數(shù)說明:用來顯示當前的音樂的頻率值/輸入?yún)?shù):uchar *p,unit i/輸

47、出參數(shù): 無void Dis_PL(uchar *p,unit i)int j=0;;pj=(i%10)+0x30;i+;pj=(i/10)%10)+0x30;i+;pj=(i/100)%10)+0x30;i+;pj=(i/1000)%10)+0x30;v_Lcd12864PutString_f(0,1,gp_Freq)void v_Lcd12864CheckBusy_f( void ) /忙檢測函數(shù) unsigned int nTimeOut = 0 ; SET_INC SET_READ CLR_EN SET_EN while( ( io_LCD12864_DATAPORT & 0x80 ) && ( +nTimeOut != 0 ) ) ; CLR_EN SET_INC SET_READvoid v_Lcd12864SendCmd_f( unsigned char byCmd ) /發(fā)送命令 v_Lcd12864CheckBusy_f() ; SET_I

溫馨提示

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

評論

0/150

提交評論