畢業(yè)設(shè)計(jì)---基于51單片機(jī)的音樂發(fā)生器設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  畢 業(yè) 論 文(設(shè) 計(jì))</p><p>  2013 屆 電氣工程及其自動(dòng)化 專業(yè) 1106971 班級(jí)</p><p>  題 目 基于51單片機(jī)的音樂發(fā)生器設(shè)計(jì) </p><p>  姓 名 學(xué)號(hào) </p><p>  指導(dǎo)教師

2、 職稱 </p><p>  二О一三年五月十六日</p><p><b>  內(nèi) 容 提 要</b></p><p>  本文是應(yīng)用MCS-51單片機(jī)原理和控制理論技術(shù)設(shè)計(jì)音樂發(fā)生器的硬件電路,并利用C語(yǔ)言進(jìn)行軟件開發(fā)和程序設(shè)計(jì)。通過控制單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生不同頻率的方波,驅(qū)動(dòng)喇叭發(fā)出不同音調(diào)

3、的音樂,再利用延遲控制發(fā)音時(shí)間的長(zhǎng)短。把樂譜轉(zhuǎn)化成相應(yīng)的定時(shí)常數(shù),從而達(dá)到從發(fā)音設(shè)備中演奏出悅耳動(dòng)聽的音樂的效果。</p><p>  該音樂盒主要由按鍵電路、復(fù)位電路、時(shí)鐘電路以及蜂鳴器組成。使用兩個(gè)按鍵控制音樂盒,一個(gè)用來切換歌曲,另一個(gè)用來切換8路LED的變化花樣,本音樂盒共有兩首歌曲,花樣燈花樣共計(jì)3種。播放歌曲時(shí),蜂鳴器發(fā)出某個(gè)音調(diào),與之對(duì)應(yīng)的LED亮起。本設(shè)計(jì)利用KEIL編程軟件對(duì)音樂盒源程序進(jìn)行編程

4、并調(diào)試,配合PROTEUS仿真軟件對(duì)硬件進(jìn)行仿真調(diào)試,節(jié)約了設(shè)計(jì)時(shí)間。</p><p>  本系統(tǒng)采用C語(yǔ)言進(jìn)行軟件設(shè)計(jì)。正文中首先簡(jiǎn)單描述系統(tǒng)硬件工作原理,且附以系統(tǒng)硬件設(shè)計(jì)框圖,論述了本次畢業(yè)設(shè)計(jì)所應(yīng)用的各硬件接口技術(shù)和各個(gè)接口模塊的功能及工作過程。其次闡述了程序的流程和實(shí)現(xiàn)過程。本文撰寫的主導(dǎo)思想是軟、硬件相結(jié)合,以硬件為基礎(chǔ),來進(jìn)行各功能模塊的編寫。</p><p><b&g

5、t;  關(guān) 鍵 詞</b></p><p>  單片機(jī);音樂;C語(yǔ)言;STC89C51;KEIL;PROTEUS</p><p><b>  Abstract</b></p><p>  In this paper, The music generator and its hardware circuit is designed b

6、y MCS-51 single-chip microcomputer principle and control theory, and the Software development and programming are based on C language programming. According to control the MCU internal timer to produce different frequenc

7、y Square wave to drive the horn sounds of different tones of music, then use the delay to control the length of time. The music Transformationed into the timing constants corresponding so that the sound equi</p>&

8、lt;p>  The music box is mainly composed of keypad circuit, reset circuit, clock circuit and a buzzer. Two buttons are used to control the music box, one to switch songs, another is used to switch the 8 LED pattern, th

9、e music box has two songs, a total of 3 kinds of pattern light pattern. While the music is playing, the buzzer sounded a tone, and the corresponding LED lights up. The design of programming the music box and debug source

10、 code using KEIL programming software, and to save the design time the</p><p>  The system uses C language for software design. Firstly, in the text describes the working principle of the system hardware, an

11、d attached to the system block diagram of hardware design to discusse the function and working process of the graduation design and the application of the hardware interface technology and the interface module. Secondly,

12、 expound the procedures and processes to achieve process. The main idea of this writing is a combination of software and hardware, on the base of hardwar</p><p><b>  Key words</b></p><

13、p>  Singlechip; music; C language; STC89C51; KEIL; PROTEUS</p><p><b>  目 錄</b></p><p>  前 言- 1 -</p><p>  1 概述- 3 -</p><p>  1.1 課題意義- 3 -</p&g

14、t;<p>  1.2 國(guó)內(nèi)外研究的現(xiàn)狀及發(fā)展趨勢(shì)- 3 -</p><p>  1.3 音樂發(fā)生器的擴(kuò)展- 4 -</p><p>  1.3.1設(shè)計(jì)方案- 4 -</p><p>  2 51單片機(jī)介紹- 4 -</p><p>  2.1 Intel 51系列單片機(jī)- 4 -</p><p&g

15、t;  2.1.1 MCS-51單片機(jī)簡(jiǎn)述- 5 -</p><p>  2.1.2 8051與80C51的區(qū)別- 5 -</p><p>  2.1.3 8051單片機(jī)的引腳功能- 5 -</p><p>  2.2 51單片機(jī)內(nèi)部結(jié)構(gòu)- 8 -</p><p>  2.3 51系列的特性- 8 -</p>

16、<p>  2.4 并行I/O口- 8 -</p><p>  2.4.1 P0端口的結(jié)構(gòu)及工作原理- 9 -</p><p>  2.4.2 P1端口的結(jié)構(gòu)及工作原理- 11 -</p><p>  2.4.3 P2端口的結(jié)構(gòu)及工作原理- 11 -</p><p>  2.4.4 P3端口的結(jié)構(gòu)及工作原理- 12 -

17、</p><p>  2.5 驅(qū)動(dòng)能力- 13 -</p><p>  3 系統(tǒng)總體方案介紹- 13 -</p><p>  3.1 系統(tǒng)組成框圖- 13 -</p><p>  3.2 音樂發(fā)生器的功能結(jié)構(gòu)圖- 14 -</p><p>  3.3主要設(shè)計(jì)軟件介紹- 14 -</p><

18、p>  3.3.1 PROTEUS軟件簡(jiǎn)介- 14 -</p><p>  3.3.2 KEIL簡(jiǎn)介- 14 -</p><p>  4 硬件設(shè)計(jì)- 15 -</p><p>  4.1 總體設(shè)計(jì)框圖- 15 -</p><p>  4.2各部分硬件設(shè)計(jì)及其原理- 16 -</p><p>  4.2.

19、1 STC89C51簡(jiǎn)介- 16 -</p><p>  4.2.2 LED顯示電路設(shè)計(jì)與原理- 16 -</p><p>  4.2.3 時(shí)鐘振蕩電路- 17 -</p><p>  4.3 硬件電路圖及功能- 17 -</p><p>  5 軟件設(shè)計(jì)- 18 -</p><p>  5.1音調(diào)、節(jié)拍以及

20、編碼的確定方法- 19 -</p><p>  5.1.1 音調(diào)的確定- 19 -</p><p>  5.1.2 節(jié)拍的確定- 20 -</p><p>  5.1.3 編碼- 21 -</p><p>  5.2 軟件程序設(shè)計(jì)- 23 -</p><p>  5.2.1 程序流程圖及相應(yīng)代碼塊- 23

21、-</p><p>  5.2.2 程序源代碼(見附錄A)- 27 -</p><p>  6 調(diào)試- 27 -</p><p>  6.1 檢查硬件連接- 27 -</p><p>  6.2 檢查軟件系統(tǒng)- 27 -</p><p>  6.3 仿真測(cè)試結(jié)果- 27 -</p><p&

22、gt;  6.3.1 總體運(yùn)行圖- 27 -</p><p>  6.3.2 花樣燈3種花樣圖- 28 -</p><p>  7 總結(jié)- 30 -</p><p>  致謝:- 31 -</p><p>  參考文獻(xiàn):- 32 -</p><p>  附錄A:- 33 -</p><p

23、>  程序源代碼:- 33 -</p><p><b>  前 言</b></p><p>  音樂電聲的一個(gè)重要內(nèi)容就是電子音樂。電子琴的出現(xiàn),開辟了音樂的一個(gè)新天地。但是自從電子合成器問世以來,電子音樂就又進(jìn)入了一個(gè)更高的階段。</p><p>  目前,由于電子音樂的普及,電子合成器(合成器實(shí)際上是一臺(tái)聲音的頻率合成儀,可以制

24、作各種聲音,改變各種音色)可以解決相當(dāng)一部分的歌唱及舞廳的伴奏問題。可以事先制作伴奏音樂或背景音樂,而不需要樂隊(duì),或者部分代替樂隊(duì)。由于音樂合成器制作和修改方便,成本低,音樂豐滿,所以市場(chǎng)需求量很大,因此,世界許多國(guó)家的廠商都不斷地在發(fā)展并推出新的型號(hào),每年都要更新?lián)Q代。當(dāng)前的發(fā)展趨勢(shì)是不斷的采用先進(jìn)技術(shù),以取得更多、更好的音色。如擴(kuò)展容量,這包括擴(kuò)展槽口,增加軟盤驅(qū)動(dòng)器或硬盤,增加最大發(fā)音數(shù)目,增大存貯量,擴(kuò)展琴鍵等;使功能多樣化,如

25、一臺(tái)合成器可以同時(shí)發(fā)二種、四種甚至八種音色,即一臺(tái)當(dāng)作幾臺(tái)使用,或者把鼓機(jī)的節(jié)奏發(fā)生器功能、音序器的編輯功能放入合成器,讓合成器代替計(jì)算機(jī)的主機(jī)等;擴(kuò)展功能,例如有的合成器有“跟隨”功能,即經(jīng)預(yù)置,每一個(gè)音后可以跟隨一個(gè)二度或三度音,“重疊”功能,輕奏或重奏時(shí)可以發(fā)不同音調(diào)或音色;另外,合成器還向輕便、使用操作方便等方向發(fā)展。</p><p>  隨著以法、德、意為代表的歐洲和以美國(guó)為代表的電子音樂、計(jì)算機(jī)音樂早

26、期的大力發(fā)展,國(guó)際上許多國(guó)家紛紛開始引入電子音樂研究與創(chuàng)作。因此,電子音樂創(chuàng)作作為音樂科技領(lǐng)域發(fā)展的重要標(biāo)志,在風(fēng)格上也體現(xiàn)出比以往任何時(shí)代都鮮明的個(gè)性化特征。</p><p>  電腦音樂也許不會(huì)成為今后音樂的主流,但它在整個(gè)人類音樂史上的地位已經(jīng)不容置疑地確立了,相信它會(huì)越來越深入地浸透到音樂創(chuàng)作和欣賞的領(lǐng)域中,并且將在一定程度上影響人們對(duì)音樂的理解和詮釋。用單片機(jī)制作的音樂發(fā)生器也會(huì)越來越多,這將必然成為一

27、種趨勢(shì)。</p><p><b>  1 概述</b></p><p>  本設(shè)計(jì)是以STC89C51芯片的電路為基礎(chǔ),外部加上放音設(shè)備,以此來實(shí)現(xiàn)音樂演奏控制器的硬件電路,通過軟件程序控制單片機(jī)內(nèi)部的定時(shí)器,把樂譜轉(zhuǎn)化成相應(yīng)的定時(shí)常數(shù),使其演奏出優(yōu)美動(dòng)聽的音樂。用戶可以按照自己的喜好選擇音樂并將其轉(zhuǎn)化成機(jī)器碼存入單片機(jī)的存儲(chǔ)器中。對(duì)于不同型號(hào)的單片機(jī)只需要改變相應(yīng)的

28、地址即可實(shí)現(xiàn)功能。本系統(tǒng)的軟件編程和硬件系統(tǒng)設(shè)計(jì)具有很好的通用性,具有一定的實(shí)際使用價(jià)值,為廣大的音樂愛好者提供了利用單片機(jī)實(shí)現(xiàn)音樂播放和設(shè)計(jì)方法和思路提供了較好的借鑒。</p><p><b>  1.1 課題意義</b></p><p>  音樂盒的起源,可追溯至中世紀(jì)歐洲文藝復(fù)興時(shí)期。當(dāng)時(shí)為使教會(huì)的鐘塔報(bào)時(shí),而將大小的鐘表裝上機(jī)械裝置,被稱為“可發(fā)出聲音的組鐘”

29、。音樂盒有著300多年的發(fā)展歷史,是人類文明發(fā)展的歷史見證。</p><p>  傳統(tǒng)的音樂盒多是機(jī)械音樂盒,其工作原理是通過齒輪帶動(dòng)一個(gè)帶有鐵釘?shù)蔫F桶轉(zhuǎn)動(dòng),鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機(jī)械式的音樂盒體積比較大,比較笨重,且發(fā)音單調(diào)。水、灰塵等外在因素,容易使內(nèi)部金屬發(fā)音條變形,從而造成發(fā)音跑調(diào)。另外,機(jī)械音樂盒放音時(shí)為了讓音色穩(wěn)定,必須放平不能動(dòng)搖,而且價(jià)格昂貴,不能實(shí)現(xiàn)大批量生產(chǎn)。&l

30、t;/p><p>  本文設(shè)計(jì)的音樂盒,是基于單片機(jī)設(shè)計(jì)制作的電子式音樂盒。與傳統(tǒng)的機(jī)械式音樂盒相比更小巧,音質(zhì)更優(yōu)美且能演奏和弦音樂。電子式音樂盒動(dòng)力來源是電池,制作工藝簡(jiǎn)單,可進(jìn)行批量生產(chǎn),所以價(jià)格便宜?;趩纹瑱C(jī)制作的電子式音樂盒,控制功能強(qiáng)大,可根據(jù)需要選歌,使用方便。根據(jù)存儲(chǔ)容量的大小,可以盡可能多的存儲(chǔ)歌曲。另外,可以設(shè)計(jì)彩燈外觀效果,使音樂盒的功能更加豐富。</p><p>  

31、1.2 國(guó)內(nèi)外研究的現(xiàn)狀及發(fā)展趨勢(shì) </p><p>  隨著以法、德、意為代表的歐洲和以美國(guó)為代表的電子音樂、計(jì)算機(jī)音樂早期的大力發(fā)展,國(guó)際上許多國(guó)家紛紛開始引入電子音樂研究與創(chuàng)作。因此,電子音樂創(chuàng)作作為音樂科技領(lǐng)域發(fā)展的重要標(biāo)志,在風(fēng)格上也體現(xiàn)出比以往任何時(shí)代都鮮明的個(gè)性化特征。六十年代,美國(guó)物理學(xué)家Robert Moog 研制出了小型實(shí)用的電子合成器。從此,首先在歐美地區(qū),合成器作為新型的樂器被音樂家尤其是

32、流行音樂家所采用并飛快的流行開來。由于美國(guó)雄厚的經(jīng)濟(jì)和科技基礎(chǔ),在早期計(jì)算機(jī)音樂獲得巨大成功后,越來越多的音樂家和科學(xué)家步入到計(jì)算機(jī)音樂的研究與開發(fā)的領(lǐng)域中來,他們一起工作、共同開展研究,許多新產(chǎn)品和新設(shè)計(jì)不斷涌現(xiàn)。</p><p>  1.3 音樂發(fā)生器的擴(kuò)展</p><p>  熟練的運(yùn)用89C51單片機(jī)定時(shí)器產(chǎn)生固定頻率的方波信號(hào),推動(dòng)喇叭發(fā)出旋律,按下單鍵可以演奏預(yù)先設(shè)置的歌曲旋律

33、,最重要的是自己還可以通過程序設(shè)計(jì)輸入自己喜歡的歌曲來演奏中,本設(shè)計(jì)采用簡(jiǎn)易音階編碼直覺式輸入法方便設(shè)計(jì)音樂旋律,可以擴(kuò)充其功能如下:</p><p>  1.設(shè)計(jì)三個(gè)按鍵操作來更改歌曲的序號(hào);</p><p>  2.可以按照歌曲的序號(hào)來播放歌曲;</p><p>  3.可以顯示播放中歌曲的序號(hào);</p><p>  4.可以存儲(chǔ)多首歌曲

34、;</p><p><b>  1.3.1設(shè)計(jì)方案</b></p><p>  設(shè)計(jì)一個(gè)基于STC89C51系列單片機(jī)的音樂盒,利用按鍵切換演奏出不同的樂曲。蜂鳴器發(fā)出某個(gè)音調(diào),與之相對(duì)應(yīng)的LED亮起。使用兩個(gè)按鍵,一個(gè)用來切換歌曲,另一個(gè)切換八路LED的變化花樣。</p><p>  1)電路有兩種工作模式:演奏音樂模式和花樣燈模式。<

35、/p><p>  演奏音樂模式:演奏完整的一首的歌曲,八路LED隨著音樂變化。</p><p>  花樣燈模式:八路LED變化出各種花樣,蜂鳴器隨著發(fā)出“嘀嘀”聲</p><p>  2)按下按鍵1進(jìn)入演奏音樂模式,再按切換歌曲,共兩首歌曲。</p><p>  3)按下按鍵2進(jìn)入花樣燈模式,再按切換LED花樣,共三種花樣。</p>

36、<p>  此電路的程序只占用了1K左右,可編制更多的音樂和LED花樣,使系統(tǒng)的功能更加強(qiáng)大。</p><p><b>  2 51單片機(jī)介紹</b></p><p>  2.1 Intel 51系列單片機(jī)</p><p>  2.1.1 MCS-51單片機(jī)簡(jiǎn)述</p><p>  MCS-51是指

37、由美國(guó)INTEL公司生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了好些品種,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在8051的基礎(chǔ)上進(jìn)行功能的增、減、改變而來的,所以人們習(xí)慣于用8051來稱呼MCS51系列單片機(jī),而8031是前些年在我國(guó)最流行的單片機(jī),所以很多場(chǎng)合會(huì)看到8031的名稱。INTEL公司將MCS51的核心技術(shù)授權(quán)給了很多其它公司,所以有很多公司在

38、做以8051為 核心的單片機(jī),當(dāng)然,功能或多或少有些改變,以滿足不同的需求,其中89C51就 是這幾年在我國(guó)非常流行的單片機(jī),它是由美國(guó)ATMEL公司開發(fā)生產(chǎn)的。</p><p>  MCS-51系列單片機(jī)分為兩大系列,即51子系列與52子系列。51子系列:基本型,根據(jù)片內(nèi)ROM的配置,對(duì)應(yīng)的芯片為8031、8051、8751、8951;</p><p>  52子系列:增強(qiáng)型,根據(jù)片內(nèi)

39、ROM的配置,對(duì)應(yīng)的芯片為8032、8052、8752、8952。</p><p>  2.1.2 8051與80C51的區(qū)別 </p><p>  80C51單片機(jī)是在8051的基礎(chǔ)上發(fā)展起來的,也就是說在單片機(jī)的發(fā)展過程中是先有8051,然后才有80C51的。</p><p>  8051單片機(jī)與80C51單片機(jī)從外形看 是完全一樣的,其指令系統(tǒng)、引腳信號(hào)、總

40、線等完全一致(完全兼容),也就是說在8051下開發(fā)的軟件完全可以在80C51上應(yīng)用,反過來,在89C51下開發(fā)的軟件也可以在8051上應(yīng)用。這兩種單片機(jī)是完全可移植的。 8051與80C51單片機(jī)的主要差別就在于芯片的制造工藝上。80C51的制造工藝是在8051基礎(chǔ)上進(jìn)行了改進(jìn)。 8051系列單片機(jī)采用的是HMOS工藝:高速度、高密度; 80C51系列單片機(jī)采用的是CHMOS工藝:高速度、高密度、低功耗;<

41、/p><p>  也就是說80C51單片機(jī)是一種低功耗單片機(jī)。</p><p>  2.1.3 8051單片機(jī)的引腳功能</p><p>  圖中給出了40引腳的8051單片機(jī)的引腳圖,40個(gè)引腳按引腳功能大致可分為4個(gè)種類:電源、時(shí)鐘、控制和I/O引腳。</p><p>  圖2.1 8051單片機(jī)的引腳圖</p><p&g

42、t;<b>  (1)電源 </b></p><p>  1)VCC - 芯片電源,接+5V;</p><p>  2)VSS - 接地端;</p><p>  注:用萬(wàn)用表測(cè)試單片機(jī)引腳電壓一般為0v或者5v,這是標(biāo)準(zhǔn)的TTL電平。但有時(shí)候在單片機(jī)程序正在工作時(shí)候測(cè)試結(jié)果并不是這個(gè)值而是介于0v-5v之間,其實(shí)這是萬(wàn)用表的響應(yīng)速度沒這么快而已

43、,在某一個(gè)瞬間單片機(jī)引腳電壓仍保持在0v或者5v。</p><p><b>  (2)時(shí)鐘</b></p><p>  時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 </p><p><b>  (3)控制線 </b></p><p>  1)ALE/PROG:地址鎖存允許/片

44、內(nèi)EPROM編程脈沖。</p><p> ?、?ALE功能:用來鎖存P0口送出的低8位地址。</p><p> ?、?PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。</p><p>  2)PSEN:外ROM讀選通信號(hào)。</p><p>  3)RST/VPD:復(fù)位/備用電源。</p><

45、p> ?、?RST(Reset)功能:復(fù)位信號(hào)輸入端。</p><p> ?、?VPD功能:在Vcc掉電情況下,接備用電源。</p><p>  4)EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。</p><p> ?、?EA功能:內(nèi)外ROM選擇端。</p><p> ?、?Vpp功能:片內(nèi)有EPROM芯片,在EPROM編程期間

46、,施加編程電源Vpp。</p><p><b>  (4)I/O線</b></p><p>  80C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。</p><p>  P3口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線)。</p><p><b>  P3口第二功能為:

47、</b></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 定時(shí)計(jì)數(shù)器0</p>

48、;<p>  P3.5 T1 定時(shí)計(jì)數(shù)器1</p><p>  P3.6 WR 外部數(shù)據(jù)存儲(chǔ)器寫選通(低電平有效)</p><p>  P3.7 RD 外部數(shù)據(jù)存儲(chǔ)器讀選通(低電平有效)</p><p>  2.2 51單片機(jī)內(nèi)部結(jié)構(gòu)</p><p>  圖2.2 51單片機(jī)內(nèi)部結(jié)構(gòu)圖</p><p>

49、  從內(nèi)部結(jié)構(gòu)簡(jiǎn)圖可以看出,51單片機(jī)內(nèi)部有以下主要部分:</p><p>  1) CPU51 2) 振蕩器及定時(shí)電路</p><p>  3)4KB程序存儲(chǔ)器 4) 128B數(shù)據(jù)存儲(chǔ)器</p><p>  5) 2個(gè)16位定時(shí)/計(jì)數(shù)器

50、 6) 64KB總線擴(kuò)展控制</p><p>  7) 可編程I/O 8) 可編程串行口</p><p>  9) 中斷系統(tǒng) </p><p>  2.3 51系列的特性</p><p>  1)片內(nèi)存儲(chǔ)器容量較小,一般

51、內(nèi)部ROM:8KB以下,內(nèi)部RAM:256KB以下</p><p><b>  2)可靠性高</b></p><p><b>  3)易擴(kuò)展 </b></p><p><b>  4)控制功能強(qiáng) </b></p><p><b>  5)易于開發(fā)&

52、lt;/b></p><p>  2.4 并行I/O口</p><p>  51單片機(jī)有四個(gè)并行I/O口:P0,P1,P2,P3。</p><p>  2.4.1 P0端口的結(jié)構(gòu)及工作原理</p><p>  P0端口由鎖存器、輸入緩沖器、切換開關(guān)、一個(gè)與非門、一個(gè)與門及V1、V2場(chǎng)效應(yīng)管驅(qū)動(dòng)電路構(gòu)成。</p><p

53、>  在P0口中,有兩個(gè)三態(tài)的緩沖器,在其的輸出端可以是高電平、低電平,同時(shí)還有一種就是高阻狀態(tài)(或稱為禁止?fàn)顟B(tài)),上面一個(gè)是讀鎖存器的緩沖器,下面一個(gè)是讀引腳的緩沖器,讀取P0.X引腳上的數(shù)據(jù),要使這個(gè)三態(tài)緩沖器有效,引腳上的數(shù)據(jù)才會(huì)傳輸?shù)絻?nèi)部數(shù)據(jù)總線上。在51單片機(jī)的32根I/O口線中都是用一個(gè)D觸發(fā)器來構(gòu)成鎖存器的。D端是數(shù)據(jù)輸入端,CP是控制端(也就是時(shí)序控制信號(hào)輸入端),Q是輸出端,Q非是反向輸出端。在51單片機(jī)中,不需

54、要外擴(kuò)展存儲(chǔ)器時(shí),P0口可以作為通用的輸入輸出端口(即I/O)使用,對(duì)于8031(內(nèi)部沒有ROM)的單片機(jī)或者編寫的程序超過了單片機(jī)內(nèi)部的存儲(chǔ)器容量,需要外擴(kuò)存儲(chǔ)器時(shí),P0口就作為‘地址/數(shù)據(jù)’總線使用。這個(gè)多路選擇開關(guān)就是用于選擇是做為普通I/O口使用還是作為‘?dāng)?shù)據(jù)/地址’總線使用的選擇開關(guān)了。當(dāng)多路開關(guān)與下面接通時(shí),P0口是作為普通的I/O口使用的,當(dāng)多路開關(guān)是與上面接通時(shí),P0口是作為‘地址/數(shù)據(jù)’總線使用的。P0口的輸出是由兩個(gè)

55、MOS管組成的推拉式結(jié)構(gòu),也就是說,這兩個(gè)MOS管一次只能導(dǎo)通一個(gè),當(dāng)V1導(dǎo)通時(shí),V2就截止,當(dāng)V2導(dǎo)通時(shí),V1截止。</p><p>  P0口作為I/O端口使用時(shí),多路開關(guān)的控制信號(hào)為‘0’(低電平),V1管截止,多路開關(guān)是與鎖存器的Q非端相接的(即P0口作為I/O口線使用)。作為地址/數(shù)據(jù)線使用時(shí),多路開關(guān)的控制信號(hào)為‘1’,V1管由地址/數(shù)據(jù)線決定,多路開關(guān)與地址/數(shù)據(jù)線連接。</p>&l

56、t;p>  輸出過程:當(dāng)寫鎖存器信號(hào)CP有效,數(shù)據(jù)總線的信號(hào)→鎖存器的輸入端D→鎖存器的反向輸出Q非端→多路開關(guān)→V2管的柵極→V2的漏極到輸出端P0.X。這時(shí)多路開關(guān)的控制信號(hào)為低電平0,V1管是截止的,所以作為輸出口時(shí),P0是漏極開路輸出,類似于OC門,當(dāng)驅(qū)動(dòng)上接電流負(fù)載時(shí),需要外接上拉電阻。地址輸出過程時(shí),控制信號(hào)為‘1’,地址信號(hào)為‘0’時(shí),與門輸出低電平,V1管截止;反相器輸出高電平,V2管導(dǎo)通,輸出引腳的地址信號(hào)為低電

57、平。反之,控制信號(hào)為‘0’、地址信號(hào)為‘1’,“與門”輸出為高電平,V1管導(dǎo)通;反相器輸出低電平,V2管截止,輸出引腳的地址信號(hào)為高電平??梢?,在輸出“地址/數(shù)據(jù)”信息時(shí),V1、V2管是交替導(dǎo)通的,負(fù)載能力很強(qiáng),可以直接與外設(shè)存儲(chǔ)器相連,無(wú)須增加總線驅(qū)動(dòng)器。作為數(shù)據(jù)總線的輸出過程時(shí),如果該指令是輸出數(shù)據(jù),如MOVX   @DPTR,A(將累加器的內(nèi)容通過P0口數(shù)據(jù)總線傳送到外部RAM中),則多路開關(guān)“控制”信號(hào)為‘1

58、’,“與門”解鎖,與輸出地址信號(hào)的工作流程類似,數(shù)據(jù)據(jù)由“地址/數(shù)據(jù)”線→反相器→V2場(chǎng)效應(yīng)管柵極→V2漏極輸出。</p><p>  輸入過程:讀芯片引腳上的數(shù)據(jù)時(shí),讀引腳緩沖器打開,通過內(nèi)部數(shù)據(jù)總線輸入。通過打開讀鎖存器三態(tài)緩沖器,讀取鎖存器輸出端Q的狀態(tài)。作為數(shù)據(jù)總線使用時(shí),在訪問外部程序存儲(chǔ)器時(shí),P0口輸出低8位地址信息后,將變?yōu)閿?shù)據(jù)總線,以便讀指令碼(輸入)。在取指令期間,“控制”信號(hào)為“0”,V1管截

59、止,多路開關(guān)也跟著轉(zhuǎn)向鎖存器反相輸出端Q非;CPU自動(dòng)將0FFH(11111111,即向D鎖存器寫入一個(gè)高電平‘1’)寫入P0口鎖存器,使V2管截止,在讀引腳信號(hào)控制下,通過讀引腳三態(tài)門電路將指令碼讀到內(nèi)部總線,這個(gè)過程和I/O讀引腳過程是一樣的。</p><p>  在輸入狀態(tài)下,從鎖存器和從引腳上讀來的信號(hào)一般是一致的,但也有例外。例如,當(dāng)從內(nèi)部總線輸出低電平后,鎖存器Q=0,Q非=1,場(chǎng)效應(yīng)管T2開通,端口

60、線呈低電平狀態(tài)。此時(shí)無(wú)論端口線上外接的信號(hào)是低電乎還是高電平,從引腳讀入單片機(jī)的信號(hào)都是低電平,因而不能正確地讀入端口引腳上的信號(hào)。又如,當(dāng)從內(nèi)部總線輸出高電平后,鎖存器Q=1,Q非=0,場(chǎng)效應(yīng)管T2截止。如外接引腳信號(hào)為低電平,從引腳上讀入的信號(hào)就與從鎖存器讀入的信號(hào)不同。為此,8031單片機(jī)在對(duì)端口P0-P3的輸入操作上,有如下約定:凡屬于讀-修改-寫方式的指令,從鎖存器讀入信號(hào),其它指令則從端口引腳線上讀入信號(hào)。讀-修改-寫指令的

61、特點(diǎn)是,從端口輸入(讀)信號(hào),在單片機(jī)內(nèi)加以運(yùn)算(修改)后,再輸出(寫)到該端口上。這樣安排的原因在于讀-修改-寫指令需要得到端口原輸出的狀態(tài),修改后再輸出,讀鎖存器而不是讀引腳,可以避免因外部電路的原因而使原端口的狀態(tài)被讀錯(cuò)。當(dāng)P0作為地址/數(shù)據(jù)總線使用時(shí),在讀指令碼或輸入數(shù)據(jù)前,CPU自動(dòng)向P0口鎖存器寫入0FFH,破壞了P0口原來的狀態(tài)。因此,不能再作為通用的I/O端口。在系統(tǒng)設(shè)計(jì)時(shí)務(wù)必注意,即程序中不能</p>&

62、lt;p>  2.4.2 P1端口的結(jié)構(gòu)及工作原理</p><p>  P1端口與P0端口的主要差別在于,P1端口用內(nèi)部上拉電阻R代替了P0端口的場(chǎng)效應(yīng)管T1,并且輸出的信息僅來自內(nèi)部總線。由內(nèi)部總線輸出的數(shù)據(jù)經(jīng)鎖存器反相和場(chǎng)效應(yīng)管反相后,鎖存在端口線上,所以,P1端口是具有輸出鎖存的靜態(tài)口。要正確地從引腳上讀入外部信息,必須先使場(chǎng)效應(yīng)管關(guān)斷,以便由外部輸入的信息確定引腳的狀態(tài)。為此,在作引腳讀入前,必須先

63、對(duì)該端口寫入l。具有這種操作特點(diǎn)的輸入/輸出端口,稱為準(zhǔn)雙向I/O口。8051單片機(jī)的P1、P2、P3都是準(zhǔn)雙向口。P0端口由于輸出有三態(tài)功能,輸入前,端口線已處于高阻態(tài),無(wú)需先寫入l后再作讀操作。單片機(jī)復(fù)位后,各個(gè)端口已自動(dòng)地被寫入了1,此時(shí),可直接作輸入操作。如果在應(yīng)用端口的過程中,已向P1-P3端口線輸出過0,則再要輸入時(shí),必須先寫1后再讀引腳,才能得到正確的信息。此外,隨輸入指令的不同,P1端口也有讀鎖存器與讀引腳之分。<

64、/p><p>  2.4.3 P2端口的結(jié)構(gòu)及工作原理</p><p>  P2端口在片內(nèi)既有上拉電阻,又有切換開關(guān)MUX,所以P2端口在功能上兼有P0端口和P1端口的特點(diǎn)。這主要表現(xiàn)在輸出功能上,當(dāng)切換開關(guān)向下接通時(shí),從內(nèi)部總線輸出的一位數(shù)據(jù)經(jīng)反相器和場(chǎng)效應(yīng)管反相后,輸出在端口引腳線上;當(dāng)多路開關(guān)向上時(shí),輸出的一位地址信號(hào)也經(jīng)反相器和場(chǎng)效應(yīng)管反相后,輸出在端口引腳線上。 對(duì)于8031

65、單片機(jī)必須外接程序存儲(chǔ)器才能構(gòu)成應(yīng)用電路(或者我們的應(yīng)用電路擴(kuò)展了外部存儲(chǔ)器),而P2端口就是用來周期性地輸出從外存中取指令的地址(高8位地址),因此,P2端口的多路開關(guān)總是在進(jìn)行切換,分時(shí)地輸出從內(nèi)部總線來的數(shù)據(jù)和從地址信號(hào)線上來的地址。因此P2端口是動(dòng)態(tài)的I/O端口。輸出數(shù)據(jù)雖被鎖存,但不是穩(wěn)定地出現(xiàn)在端口線上。其實(shí),這里輸出的數(shù)據(jù)往往也是一種地址,只不過是外部RAM的高8位地址。 在輸入功能方面,P2端口與P0和H端口相同

66、,有讀引腳和讀鎖存器之分,并且P2端口也是準(zhǔn)雙向口。 可見,P2端口的主要特點(diǎn)包括: 1)不能輸出靜態(tài)的數(shù)據(jù); 2)自身輸出外部程序存儲(chǔ)器的高8位地址; 3)執(zhí)行MOVX指令時(shí),還輸出外部RAM的高位</p><p>  P2作為I/O端口使用時(shí)的工作過程:當(dāng)沒有外部程序存儲(chǔ)器或雖然有外部數(shù)據(jù)存儲(chǔ)器,但容易不大于256B,即不需要高8位地址時(shí)(在這種情況下,不能通過數(shù)據(jù)地址

67、寄存器DPTR讀寫外部數(shù)據(jù)存儲(chǔ)器),P2口可以I/O口使用。這時(shí),控制信號(hào)為“0”,多路開關(guān)轉(zhuǎn)向鎖存器同相輸出端Q,輸出信號(hào)經(jīng)內(nèi)部總線→鎖存器同相輸出端Q→反相器→V2管柵極→V2管9漏極輸出。由于V2漏極帶有上拉電阻,可以提供一定的上拉電流,負(fù)載能力約為8個(gè)TTL與非門;作為輸出口前,同樣需要向鎖存器寫入“1”,使反相器輸出低電平,V2管截止,即引腳懸空時(shí)為高電平,防止引腳被鉗位在低電平。讀引腳有效后,輸入信息經(jīng)讀引腳三態(tài)門電路到內(nèi)部

68、數(shù)據(jù)總線。</p><p>  P2作為地址總線使用時(shí)的工作過程:P2口作為地址總線時(shí),“控制”信號(hào)為‘1’,多路開關(guān)車向地址線(即向上接通),地址信息經(jīng)反相器→V2管柵極→漏極輸出。由于P2口輸出高8位地址,與P0口不同,無(wú)須分時(shí)使用,因此P2口上的地址信息(程序存儲(chǔ)器上的A15~A8)功數(shù)據(jù)地址寄存器高8位DPH保存時(shí)間長(zhǎng),無(wú)須鎖存。</p><p>  2.4.4 P3端口的結(jié)構(gòu)及工

69、作原理</p><p>  P3口是一個(gè)多功能口,它除了可以作為I/O口外,還具有第二功能P3端口和Pl端口的結(jié)構(gòu)相似,區(qū)別僅在于P3端口的各端口線有兩種功能選擇。當(dāng)處于第一功能時(shí),第二輸出功能線為1,此時(shí),內(nèi)部總線信號(hào)經(jīng)鎖存器和場(chǎng)效應(yīng)管輸入/輸出,其作用與P1端口作用相同,也是靜態(tài)準(zhǔn)雙向I/O端口。當(dāng)處于第二功能時(shí),鎖存器輸出1,通過第二輸出功能線輸出特定的內(nèi)含信號(hào),在輸入方面,即可以通過緩沖器讀入引腳信號(hào),還

70、可以通過替代輸入功能讀入片內(nèi)的特定第二功能信號(hào)。由于輸出信號(hào)鎖存并且有雙重功能,故P3端口為靜態(tài)雙功能端口。</p><p>  使P3端口各線處于第二功能的條件是:</p><p>  1)串行I/O處于運(yùn)行狀態(tài)(RXD,TXD);</p><p>  2)打開了處部中斷(INT0,INT1);</p><p>  3)定時(shí)器/計(jì)數(shù)器處于外

71、部計(jì)數(shù)狀態(tài)(T0,T1)</p><p>  4)執(zhí)行讀寫外部RAM的指令(RD,WR)</p><p>  在應(yīng)用中,如不設(shè)定P3端口各位的第二功能,則P3端口線自動(dòng)處于第一功能狀態(tài),也就是靜態(tài)I/O端口的工作狀態(tài)。在更多的場(chǎng)合是根據(jù)應(yīng)用的需要,把幾條端口線設(shè)置為第二功能,而另外幾條端口線處于第一功能運(yùn)行狀態(tài)。在這種情況下,不宜對(duì)P3端口作字節(jié)操作,需采用位操作的形式。</p>

72、;<p><b>  2.5 驅(qū)動(dòng)能力</b></p><p>  P0端口能驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。如需增加負(fù)載能力,可在P0總線上增加總線驅(qū)動(dòng)器。P1,P2,P3端口各能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。由于P0-P3端口已映射成特殊功能寄存器中的P0-P3端口寄存器,所以對(duì)這些端口寄存器的讀/寫就實(shí)現(xiàn)了信息從相應(yīng)端口的輸入/輸出。</p><p>  3 系

73、統(tǒng)總體方案介紹</p><p>  3.1 系統(tǒng)組成框圖</p><p>  音樂盒的系統(tǒng)結(jié)構(gòu)以STC89C51單片機(jī)位控制核心,加上2個(gè)按鍵、時(shí)鐘復(fù)位電路、蜂鳴器、LED模塊組成。單片機(jī)負(fù)責(zé)接收按鍵的輸入,根據(jù)輸入控制音樂播放曲目和音樂花樣燈的顯示樣式以及蜂鳴器發(fā)音。系統(tǒng)組成框圖如圖2.1所示。</p><p>  圖3.1 系統(tǒng)組成框圖</p>&

74、lt;p>  3.2 音樂發(fā)生器的功能結(jié)構(gòu)圖</p><p>  音樂盒的功能結(jié)構(gòu)如圖2.2所示。Key1負(fù)責(zé)切換播放歌曲,播放歌曲共2首,分別是揮著翅膀的女孩和寂寞沙洲冷。Key2負(fù)責(zé)切換LED顯示花樣,顯示花樣共3種,第一種順序顯示,第二種由兩邊向中間移動(dòng)然后向兩邊移動(dòng),第三種循環(huán)顯示。</p><p>  圖3.2 音樂盒功能結(jié)構(gòu)圖</p><p>  

75、3.3主要設(shè)計(jì)軟件介紹</p><p>  本設(shè)計(jì)利用KEIL編程軟件對(duì)音樂盒源程序進(jìn)行編程并調(diào)試,配合PROTEUS仿真軟件對(duì)硬件進(jìn)行仿真調(diào)試,兩種軟件的簡(jiǎn)介如下:</p><p>  3.3.1 PROTEUS軟件簡(jiǎn)介</p><p>  Proteus軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件(該軟件中國(guó)總代理為廣州風(fēng)標(biāo)電子技

76、術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國(guó)內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬

77、模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。 </p><p>  3.3.2 KEIL簡(jiǎn)介</p><p>  單片機(jī)開發(fā)中除

78、必要的硬件外,同樣離不開軟件,我們寫的匯編語(yǔ)言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣布全

79、面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。運(yùn)行Keil軟件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的愛好者來說是十分必要的,如果你使用C語(yǔ)言編程,那么Keil幾乎

80、就是你的不二之選(目前在國(guó)內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件),即使不使用C語(yǔ)言而僅用</p><p><b>  4 硬件設(shè)計(jì)</b></p><p>  4.1 總體設(shè)計(jì)框圖</p><p>  圖4.1總體設(shè)計(jì)框圖</p><p>  4.2各部分硬件設(shè)計(jì)及其原理</p><

81、p>  4.2.1 STC89C51簡(jiǎn)介</p><p>  STC89C51是一種帶4K字節(jié)閃存的低電壓高性能的可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory),俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功

82、能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,STC89C51是一種高效微控制器。STC89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖3.2所示:</p><p>  圖4.2 STC89C51系列單片機(jī)</p><p>  4.2.2 LED顯示電路設(shè)計(jì)與原理</p><p>  LED顯示電路是由8個(gè)LED發(fā)光二極管組成,連

83、接方式為共陽(yáng)極,LED接到單片機(jī)的P1口,若為低電平,可使LED亮起。發(fā)光二極管的亮、滅由內(nèi)部程序控制,8個(gè)LED發(fā)光二極管分別對(duì)應(yīng)不同的音階,所以LED會(huì)隨著音階的變化按規(guī)律亮、滅。</p><p>  4.2.3 時(shí)鐘振蕩電路</p><p>  STC89C51中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋

84、元件的片外石英晶體或者陶瓷諧振器一起構(gòu)成自然振蕩器。外接石英晶體及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1,C2雖然沒有什么嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,我們推薦電容使用30PF 10PF,而如果使用陶瓷振蕩器建議選擇40PF 10PF。用戶也可以采用外部時(shí)鐘。采用外部時(shí)鐘的電路如圖示。這種情況下,外部時(shí)鐘脈沖接到XTA

85、L1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2則懸空。由于外部時(shí)鐘信號(hào)是通過一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以對(duì)外部時(shí)鐘信號(hào)的占空比沒有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。振蕩器電路圖如下:</p><p>  圖4.3 單片機(jī)內(nèi)部、外部振蕩電路</p><p>  4.3 硬件電路圖及功能</p><p>  總體硬

86、件電路實(shí)現(xiàn)功能如下,如圖3.4所示</p><p>  電路中用P3.2、P3.3控制按鍵。</p><p>  P1.0~P1.7控制LED。</p><p>  P2.3控制蜂鳴器。</p><p>  電路為12MHZ晶振頻率工作,起振電路中C1、C2均為30PF。</p><p>  硬件電路圖如圖所示:<

87、;/p><p>  圖4.4 硬件電路圖</p><p><b>  5 軟件設(shè)計(jì)</b></p><p>  在本程序中設(shè)置了兩個(gè)標(biāo)志——count1和count2,分別初始化為1和0。按鍵1使得count1在1和2之間切換,按鍵2使得count2在1~4之間切換。程序檢測(cè)count1的值,count1等于1時(shí)播放第一首歌曲,等于2時(shí)播放第二首。

88、另一方面根據(jù)count2的值來切換LED的花樣。count1和count2的值是互斥的,設(shè)置count1等于1、2時(shí),count2同時(shí)設(shè)置為0;設(shè)置count2等于1~4時(shí),count1也同時(shí)設(shè)置為0。</p><p>  5.1音調(diào)、節(jié)拍以及編碼的確定方法</p><p>  一般說來,單片機(jī)演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能像電子琴那樣能奏出多種音色的聲

89、音。因此單片機(jī)奏樂只需弄清楚兩個(gè)概念即可,也就是“音調(diào)”和節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。</p><p>  5.1.1 音調(diào)的確定</p><p>  不同音高的樂音是用C、D、E、F、G、A、B來表示,這7個(gè)字母就是音樂的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡(jiǎn)譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來米發(fā)梭拉西”的讀音,這是唱曲時(shí)樂音的發(fā)音,所以

90、叫“音調(diào)”,即Tone。把C、D、E、F、G、A、B這一組音的距離分成12個(gè)等份,每一個(gè)等份叫一個(gè)“半音”。兩個(gè)音之間的距離有兩個(gè)“半音”,就叫“全音”。在鋼琴等鍵盤樂器上,C–D、D–E、F–G、G–A、A–B兩音之間隔著一個(gè)黑鍵,他們之間的距離就是全音;E–F、B–C兩音之間沒有黑鍵相隔,它們之間的距離就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上﹟號(hào)或者b號(hào)的叫變化音。﹟叫升記號(hào),表示把音在原來的

91、基礎(chǔ)上升高半音,b叫降記音,表示在原來的基礎(chǔ)上降低半音。例如高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音RE的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音R</p><p>  1)要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以

92、2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)這半個(gè)周期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O反相,就可在I/O腳上得到此頻率的脈沖。</p><p>  2)利用AT89C51的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。</p><p>  此外結(jié)束符和休止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00

93、H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。</p><p>  3)例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在每次技術(shù)956次時(shí)將I/O反相,就可得到中音DO(523Hz)。</p><p>  計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:</p><p>  N=Fi2Fr</

94、p><p>  N:計(jì)算值;Fi:內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1MHz;</p><p>  4)其計(jì)數(shù)值的求法如下:</p><p>  T=65536-N=65536-Fi2Fr</p><p>  例如:設(shè)K=65536,F(xiàn)=1000000=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)

95、的計(jì)算值</p><p>  T=65536-N=65536-Fi2Fr=65536-10000002Fr=65536-500000/Fr</p><p>  低音DO的T=65536-500000/262=63627</p><p>  低音DO的T=65536-500000/523=64580</p><p>  低音DO的T=65536

96、-500000/1047=65059</p><p>  5)C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表如表4.1所示。</p><p>  表5.1 C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表</p><p>  5.1.2 節(jié)拍的確定</p><p>  若要構(gòu)成音樂,光有音調(diào)是不夠的,還需要節(jié)拍,讓音樂具有旋律(固定的律動(dòng)),而且可以調(diào)節(jié)各個(gè)音的快滿度。

97、“節(jié)拍”,即Beat,簡(jiǎn)單說就是打拍子,就像我們聽音樂不自主的隨之拍手或跺腳。若1拍實(shí)0.5s,則1/4 拍為0.125s。至于1拍多少s,并沒有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些人快一點(diǎn),有些人慢一點(diǎn),只要聽的悅耳就好。音持續(xù)時(shí)間的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。</p><p>  一首音樂是由許多不同的音符組成的,而每個(gè)音符對(duì)應(yīng)著不同頻率,這樣就可以利用不同的頻率

98、的組合,加以與拍數(shù)對(duì)應(yīng)的延時(shí),構(gòu)成音樂。了解音樂的一些基礎(chǔ)知識(shí),我們可知產(chǎn)生不同頻率的音頻脈沖即能產(chǎn)生音樂。對(duì)于單片機(jī)來說,產(chǎn)生不同頻率的脈沖是非常方便的,利用單片機(jī)的定時(shí)/計(jì)數(shù)器來產(chǎn)生這樣的方波頻率信號(hào)。因此,需要弄清楚音樂中的音符和對(duì)應(yīng)的頻率,以及單片機(jī)定時(shí)計(jì)數(shù)的關(guān)系。</p><p>  表5.2節(jié)拍與節(jié)拍碼對(duì)照</p><p>  每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,

99、低4位代表音符的節(jié)拍,圖5.2為節(jié)拍碼的對(duì)照。如果1拍為0.4秒,1/4拍實(shí)0.1秒,只要設(shè)定延遲時(shí)間就可求得節(jié)拍的時(shí)間。假設(shè)1/4拍為1DELAY,則1拍應(yīng)為4DELAY,以此類推。所以只要求得1/4拍的DELAY時(shí)間,其余的節(jié)拍就是它的倍數(shù),如圖5.3為1/4和1/8節(jié)拍的時(shí)間設(shè)定。</p><p>  表5.3 1/4和1/8節(jié)拍的時(shí)間設(shè)定</p><p><b>  5.

100、1.3 編碼</b></p><p>  do re mi fa so la si分別編碼為1~7,重音do編為8,重音re編為9,停頓編為0。播放長(zhǎng)度以十六分音符為單位(在本程序中為165ms),一拍即四分音符等于4個(gè)十六分音符,編為4,其它的播放時(shí)間以此類推。音調(diào)作為編碼的高4位,而播放時(shí)間作為低4位,如此音調(diào)和節(jié)拍就構(gòu)成了一個(gè)編碼。以0xff作為曲譜的結(jié)束標(biāo)志。</p><p

101、>  舉例1:音調(diào)do,發(fā)音長(zhǎng)度為兩拍,即二分音符,將其編碼為0x18。</p><p>  舉例2:音調(diào)re,發(fā)音長(zhǎng)度為半拍,即八分音符,將其編碼為0x22</p><p>  歌曲播放的設(shè)計(jì)。先將歌曲的簡(jiǎn)譜進(jìn)行編碼,儲(chǔ)存在一個(gè)數(shù)據(jù)類型為unsigned char 的數(shù)組中。程序從數(shù)組中取出一個(gè)數(shù),然后分離出高4位得到音調(diào),接著找出相應(yīng)的值賦給定時(shí)器0,使之定時(shí)操作蜂鳴器,得出相應(yīng)

102、的音調(diào);接著分離出該數(shù)的低4位,得到延時(shí)時(shí)間,接著調(diào)用軟件延時(shí)。</p><p>  表5.4 簡(jiǎn)譜對(duì)應(yīng)的簡(jiǎn)譜碼、T值、節(jié)拍數(shù)</p><p>  5.2 軟件程序設(shè)計(jì)</p><p>  5.2.1 主程序流程圖及相應(yīng)代碼塊</p><p>  主程序流程圖如圖所示:</p><p>  圖5.1 主程序流程圖<

103、;/p><p><b>  主程序代碼:</b></p><p><b>  main()</b></p><p>  {uchar x;</p><p>  count1=0;//流水燈無(wú)花樣 </p><p>  count2=1;//唱第一首歌 </p>&

104、lt;p>  P34=0;//選取矩陣鍵盤的一列 </p><p>  EA=1;//開總中斷</p><p>  EX0=1;//開外部中斷0 </p><p>  IT0=1;//外部中斷0下降沿觸發(fā)方式 </p><p>  EX1=1;//開外部中斷1 </p><p>  IT1=1;//外部中

105、斷1下降沿觸發(fā)方式 </p><p>  TMOD=0x01;//定時(shí)器0工作在方式1 </p><p><b>  TH0=0;</b></p><p><b>  TL0=0;</b></p><p><b>  ET0=1;</b></p><p

106、><b>  while(1)</b></p><p><b>  {</b></p><p>  if(count1!=0) //音樂停止,花樣燈開始按照花樣閃爍</p><p><b>  {</b></p><p>  switch(count1) </p&

107、gt;<p><b>  {</b></p><p><b>  case 1:</b></p><p>  for(x=0;x<14;x++)</p><p><b>  {</b></p><p>  P1=huayang1[x];</p>

108、<p><b>  beep();</b></p><p>  delay1(300);</p><p>  if(count1!=1)</p><p><b>  break;</b></p><p><b>  }</b></p><p&g

109、t;<b>  break;</b></p><p><b>  case 2:</b></p><p>  for(x=0;x<14;x++)</p><p><b>  {</b></p><p>  P1=huayang2[x];</p><p&

110、gt;<b>  beep();</b></p><p>  delay1(300);</p><p>  if(count1!=2)</p><p><b>  break;</b></p><p><b>  }</b></p><p><b

111、>  break;</b></p><p><b>  case 3:</b></p><p>  for(x=0;x<16;x++)</p><p><b>  {</b></p><p>  P1=huayang3[x];</p><p><

112、b>  beep();</b></p><p>  delay1(300);</p><p>  if(count1!=3)</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  b

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論