課程設(shè)計(jì)---基于atmega16單片機(jī)的音樂播放器設(shè)計(jì)_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(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><b>  音樂播放器設(shè)計(jì)</b></p><p>  姓名: </p><p>  學(xué)號(hào): </p><p>  班級(jí): </p><p><b>  目錄</b></p><p><

2、b>  1概述1</b></p><p>  1.1 課題意義1</p><p><b>  1.2設(shè)計(jì)方案1</b></p><p><b>  1.3研究?jī)?nèi)容1</b></p><p>  2 系統(tǒng)總體方案介紹2</p><p>  2.1 系

3、統(tǒng)組成框圖2</p><p>  2.2 音樂盒的功能結(jié)構(gòu)圖2</p><p><b>  3硬件設(shè)計(jì)3</b></p><p>  3.1 總體設(shè)計(jì)框圖3</p><p>  3.2各部分硬件設(shè)計(jì)及其原理3</p><p>  3.2.1 ATmega16簡(jiǎn)介3</p>

4、<p>  3.2.2 LED顯示電路設(shè)計(jì)與原理3</p><p>  3.2.3 時(shí)鐘振蕩電路3</p><p>  3.3 硬件電路圖及功能4</p><p><b>  4軟件設(shè)計(jì)5</b></p><p>  4.1音調(diào)、節(jié)拍以及編碼的確定方法5</p><p>  

5、4.1.1 音調(diào)的確定6</p><p>  4.1.2 節(jié)拍的確定6</p><p>  4.1.3 編碼7</p><p>  4.2 軟件程序設(shè)計(jì)7</p><p>  4.2.1 程序流程圖及相應(yīng)代碼塊7</p><p>  4.2.2 程序源代碼(見附錄A)10</p><p&

6、gt;<b>  5調(diào)試10</b></p><p>  5.1 檢查硬件連接10</p><p>  5.2 檢查軟件系統(tǒng)10</p><p>  5.3 測(cè)試結(jié)果10</p><p>  5.3.1.總體運(yùn)行圖10</p><p>  5.3.2.花樣燈11</p>

7、<p><b>  6總結(jié)11</b></p><p><b>  7心得體會(huì)11</b></p><p><b>  8參考文獻(xiàn)11</b></p><p>  9附錄A 原理圖12</p><p>  10附錄B 程序源代碼及注釋13</p>

8、<p>  基于ATmega16單片機(jī)的音樂播放器設(shè)計(jì)</p><p>  【摘要】本設(shè)計(jì)是一個(gè)基于ATmega16系列單片機(jī)的音樂盒,依據(jù)單片機(jī)技術(shù)原理,通過硬件電路制作以及軟件編譯,設(shè)計(jì)制作出一個(gè)多功能多功能音樂盒。該音樂盒主要由按鍵電路、復(fù)位電路、時(shí)鐘電路以及蜂鳴器組成。使用兩個(gè)按鍵控制音樂盒,一個(gè)用來切換歌曲,另一個(gè)用來切換播放速度,本音樂盒共有兩首歌曲。播放歌曲時(shí),蜂鳴器發(fā)出某個(gè)音調(diào),與之

9、對(duì)應(yīng)的LED亮起。本設(shè)計(jì)利用ICC AVR編程軟件對(duì)音樂盒源程序進(jìn)行編程并調(diào)試,配合PROTEUS仿真軟件對(duì)硬件進(jìn)行仿真調(diào)試,節(jié)約了設(shè)計(jì)時(shí)間。</p><p>  【關(guān)鍵字】音樂盒;ATmega16單片機(jī);ICC AVR; PROTEUS; 音調(diào)</p><p><b>  1概述</b></p><p>  本設(shè)計(jì)是以ATmega16芯片的電

10、路為基礎(chǔ),外部加上放音設(shè)備,以此來實(shí)現(xiàn)音樂演奏控制器的硬件電路,通過軟件程序來控制單片機(jī)內(nèi)部的定時(shí)器使其演奏出優(yōu)美動(dòng)聽的音樂。用戶可以按照自己的喜好選擇音樂并將其轉(zhuǎn)化成機(jī)器碼存入單片機(jī)的存儲(chǔ)器中。對(duì)于不同型號(hào)的單片機(jī)只需要相應(yīng)的改變一下地址即可。該軟、硬件系統(tǒng)具有很好的通用性,很高的實(shí)際使用價(jià)值,為廣大的單片機(jī)和音樂愛好者提供了很好的借鑒。</p><p><b>  1.1 課題意義</b>

11、;</p><p>  音樂盒的起源,可追溯至中世紀(jì)歐洲文藝復(fù)興時(shí)期。當(dāng)時(shí)為使教會(huì)的鐘塔報(bào)時(shí),而將大小的鐘表裝上機(jī)械裝置,被稱為“可發(fā)出聲音的組鐘”。音樂盒有著300多年的發(fā)展歷史,是人類文明發(fā)展的歷史見證。</p><p>  傳統(tǒng)的音樂盒多是機(jī)械音樂盒,其工作原理是通過齒輪帶動(dòng)一個(gè)帶有鐵釘?shù)蔫F桶轉(zhuǎn)動(dòng),鐵桶上的鐵釘撞擊鐵片制成的琴鍵,從而發(fā)出聲音。但是,機(jī)械式的音樂盒體積比較大,比較笨重

12、,且發(fā)音單調(diào)。水、灰塵等外在因素,容易使內(nèi)部金屬發(fā)音條變形,從而造成發(fā)音跑調(diào)。另外,機(jī)械音樂盒放音時(shí)為了讓音色穩(wěn)定,必須放平不能動(dòng)搖,而且價(jià)格昂貴,不能實(shí)現(xiàn)大批量生產(chǎn)。</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)

13、大,可根據(jù)需要選歌,使用方便。根據(jù)存儲(chǔ)容量的大小,可以盡可能多的存儲(chǔ)歌曲。另外,可以設(shè)計(jì)彩燈外觀效果,使音樂盒的功能更加豐富。</p><p><b>  1.2設(shè)計(jì)方案</b></p><p>  設(shè)計(jì)一個(gè)基于ATmega16系列單片機(jī)的音樂盒,利用按鍵切換演奏出不同的樂曲。蜂鳴器發(fā)出某個(gè)音調(diào),與之相對(duì)應(yīng)的LED亮起。使用兩個(gè)按鍵,一個(gè)用來切換歌曲,另一個(gè)切換八路L

14、ED的變化花樣。</p><p><b>  1.3研究?jī)?nèi)容</b></p><p>  1)電路有兩種工作模式:演奏音樂模式和花樣燈模式。</p><p>  演奏音樂模式:演奏完整的一首的歌曲,八路LED隨著音樂變化。</p><p>  花樣燈模式:八路LED變化出各種花樣,蜂鳴器隨著發(fā)出“嘀嘀”聲</p&g

15、t;<p>  2)按下按鍵1進(jìn)入演奏音樂模式,再按切換歌曲,共兩首歌曲。</p><p>  3)按下按鍵2進(jìn)入花樣燈模式,再按切換LED花樣,共三種花樣。</p><p>  此電路的程序只占用了1K左右,可編制更多的音樂和LED花樣,使系統(tǒng)的功能更加強(qiáng)大。</p><p>  2 系統(tǒng)總體方案介紹</p><p>  2.

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

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

18、<p>  3.1 總體設(shè)計(jì)框圖</p><p>  圖3.1總體設(shè)計(jì)框圖</p><p>  3.2各部分硬件設(shè)計(jì)及其原理</p><p>  3.2.1 ATmega16簡(jiǎn)介</p><p>  圖3.2 ATmega16系列單片機(jī)</p><p>  3.2.2 LED顯示電路設(shè)計(jì)與原理</p

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

20、,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或者陶瓷諧振器一起構(gòu)成自然振蕩器。外接石英晶體及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1,C2雖然沒有什么嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,我們推薦電容使用30PF10PF,而如果使用陶瓷振蕩器建議選擇40PF10PF。用戶也可

21、以采用外部時(shí)鐘。采用外部時(shí)鐘的電路如圖示。這種情況下,外部時(shí)鐘脈沖接到XTAL1端,即內(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>  圖3.3 單片機(jī)內(nèi)部、外部振蕩電路</p><p>  

22、3.3 硬件電路圖及功能</p><p>  總體硬件電路實(shí)現(xiàn)功能如下,如圖3.4所示</p><p>  電路中用PB0、PB1、PB2控制按鍵。</p><p>  PA0~PA7控制LED。</p><p><b>  PD5控制蜂鳴器。</b></p><p>  電路為12MHZ晶振頻率

23、工作,起振電路中C1、C2均為30PF。</p><p>  圖3.4 硬件電路圖</p><p><b>  4軟件設(shè)計(jì)</b></p><p>  在本程序中設(shè)置了兩個(gè)標(biāo)志——count1和count2,分別初始化為1和0。按鍵1使得count1在1和2之間切換,按鍵2使得count2在1~4之間切換。程序檢測(cè)count1的值,count1

24、等于1時(shí)播放第一首歌曲,等于2時(shí)播放第二首。另一方面根據(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>  4.1音調(diào)、節(jié)拍以及編碼的確定方法</p><p>  一般說來,單片機(jī)演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻

25、率,也就是說不能像電子琴那樣能奏出多種音色的聲音。因此單片機(jī)奏樂只需弄清楚兩個(gè)概念即可,也就是“音調(diào)”和節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。</p><p>  4.1.1 音調(diào)的確定</p><p>  高音DO的頻率(1046Hz)剛好是中音DO的頻率(523Hz)的一倍,中音DO的頻率(523Hz)剛好是低音DO頻率(266 Hz)的一倍;同樣的,高音RE的頻率(1175Hz)剛好是中音R

26、E的頻率(587Hz)的一倍,中音RE的頻率(587Hz)剛好是低音RE頻率(294 Hz)的一倍。</p><p>  1)要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周期除以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)利用AT

27、mega16的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式MODE1下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法。</p><p>  此外結(jié)束符和休止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為00H,則表示曲子終了;若查表結(jié)果為FFH,則產(chǎn)生相應(yīng)的停頓效果。</p><p>  3)例如頻率為523Hz,其周期T=1/523=1912us,因此只要令計(jì)數(shù)器計(jì)時(shí)956us/1us=956,在

28、每次技術(shù)956次時(shí)將I/O反相,就可得到中音DO(523Hz)。</p><p>  計(jì)數(shù)脈沖值與頻率的關(guān)系公式如下:</p><p>  N=Fi2Fr</p><p>  N:計(jì)算值;Fi:內(nèi)部計(jì)時(shí)一次為1us,故其頻率為1MHz;</p><p>  其計(jì)數(shù)值的求法如下:</p><p>  T=65

29、536-N=65536-Fi2Fr</p><p>  C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表如表4.1所示。</p><p>  表4.1 C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表</p><p>  4.1.2 節(jié)拍的確定</p><p>  一首音樂是由許多不同的音符組成的,而每個(gè)音符對(duì)應(yīng)著不同頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對(duì)應(yīng)的

30、延時(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>  表4.2節(jié)拍與節(jié)拍碼對(duì)照</p><p>  每個(gè)音符使用1個(gè)字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,圖

31、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><b>  4.1.3 編碼</b></p><p>  do re mi fa so

32、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>  舉例1:音調(diào)do,發(fā)音長(zhǎng)度為兩拍,即二分音符,將其編碼為0x18。</p><

33、;p>  舉例2:音調(diào)re,發(fā)音長(zhǎng)度為半拍,即八分音符,將其編碼為0x22</p><p>  4.2 軟件程序設(shè)計(jì)</p><p>  4.2.1 程序流程圖及相應(yīng)代碼塊</p><p><b>  主程序流程圖</b></p><p>  圖4.1 主程序流程圖</p><p><

34、b>  主程序代碼:</b></p><p>  void main(void) </p><p><b>  {</b></p><p>  unsigned char i,j;</p><p>  DDRA = 0xFF;//方向輸出</p><p>  PORT

35、A = 0x00;//輸出低電平</p><p>  DDRB = 0x00;//上拉</p><p>  PORTB = 0xFF;</p><p>  DDRC = 0x00;</p><p>  PORTC = 0xFF;</p><p>  DDRD = 0xFF;

36、 //輸出高電平</p><p>  PORTD = 0xFF;</p><p>  while (1) </p><p><b>  {</b></p><p>  keyscan();</p><p>  TCCR1A = 0x40; <

37、/p><p>  TCCR1B = 0x09; //比較匹配時(shí)OCA1電平取反,CTC模式,無預(yù)分頻</p><p>  if(count1==1) //如果按鍵1按下,播放第一首</p><p><b>  {</b></p><p>  buzzer01(); //7種聲音,由低到高</

38、p><p>  for (i = 0; i < 8; i ++) </p><p><b>  {</b></p><p>  PORTA = (1 << i);</p><p>  if(count3==1)//如果按鍵3按下,播放速度變慢</p><p>  DelayMs(

39、500);</p><p>  DelayMs(100); </p><p><b>  }</b></p><p>  PORTA=0X00; //關(guān)閉所有LED</p><p><b>  }</b></p><p>  if(c

40、ount2==1) //如果按鍵2按下,播放第二首</p><p><b>  {</b></p><p>  buzzer02(); //7種聲音,由高到低 </p><p>  for (i = 0; i < 8; i ++) </p><p><b>  {</b><

41、;/p><p>  PORTA = (1 << i);</p><p>  if(count3==1)//如果按鍵3按下,播放速度變慢</p><p>  DelayMs(500);</p><p>  DelayMs(200); </p><p><b>  }</b>

42、</p><p>  PORTA=0X00; //關(guān)閉所有LED</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  播放音樂子程序流程圖

43、</p><p>  圖4.2 播放音樂子程序流程圖</p><p>  播放音樂子程序代碼:</p><p>  //7種聲音,由低到高</p><p>  void buzzer01(void)</p><p><b>  {</b></p><p>  for(OCR

44、1A= 1000;OCR1A<1700;OCR1A+=100)</p><p><b>  {</b></p><p>  TCCR1A = 0x40; </p><p>  TCCR1B = 0x09;</p><p>  DelayMs(300); //蜂鳴器鳴叫300mS鐘,定時(shí)器

45、一開始工作蜂鳴器即開始鳴叫</p><p>  TCCR1A = 0x00; //定時(shí)器停止工作,無頻率產(chǎn)生,蜂鳴器停止鳴叫</p><p><b>  }</b></p><p><b>  }</b></p><p>  //7種聲音,由高到低 </p><p

46、>  void buzzer02(void)</p><p><b>  {</b></p><p>  for(OCR1A= 1600;OCR1A>900;OCR1A-=100)</p><p><b>  {</b></p><p>  TCCR1A = 0x40;

47、</p><p>  TCCR1B = 0x09;</p><p>  DelayMs(300); //蜂鳴器鳴叫300mS鐘,定時(shí)器一開始工作蜂鳴器即開始鳴叫</p><p>  TCCR1A = 0x00; //定時(shí)器停止工作,無頻率產(chǎn)生,蜂鳴器停止鳴叫</p><p><b>  }</b>

48、;</p><p><b>  }</b></p><p>  4.2.2 程序源代碼(見附錄A)</p><p><b>  5調(diào)試</b></p><p>  5.1 檢查硬件連接</p><p>  在PROTUES檢查各硬件管腳是否連接正確,線路邏輯是否正確,例如:

49、晶振電路的連接,復(fù)位電路是否設(shè)計(jì)正確。</p><p>  5.2 檢查軟件系統(tǒng)</p><p>  1.根據(jù)系統(tǒng)的原理結(jié)構(gòu)檢查各流程圖是否正確,再根據(jù)流程圖來檢查程序是否也正確。</p><p>  2.將所有程序組織起來,在軟件環(huán)境下運(yùn)行,檢查程序是否正確。通過對(duì)硬件和軟件系統(tǒng)的認(rèn)真檢查,反復(fù)測(cè)試,如果沒有出現(xiàn)問題即可把源程序編譯成HEX文件裝載到單片機(jī)中,對(duì)硬

50、件進(jìn)行仿真。</p><p><b>  5.3 測(cè)試結(jié)果</b></p><p>  5.3.1.總體運(yùn)行圖</p><p>  圖5.1 系統(tǒng)總體運(yùn)行圖</p><p><b>  5.3.2.花樣燈</b></p><p>  由于截圖只能看到靜態(tài)圖,不能看到整體圖樣,

51、下面畫圖說明:</p><p><b>  圖5.2 花樣燈</b></p><p><b>  6 總結(jié)</b></p><p>  單片機(jī)的設(shè)計(jì)至今為止已經(jīng)進(jìn)入了令人鼓舞的階段,在進(jìn)行了半年時(shí)間的摸索與實(shí)驗(yàn),使我不僅僅是對(duì)于單片機(jī)入門軟件與硬件的常用設(shè)計(jì)與功能,還使我對(duì)于一項(xiàng)設(shè)計(jì)研究的制作過程所需要的詳細(xì)步驟和具體的實(shí)

52、現(xiàn)方法的力度的掌握。</p><p>  當(dāng)然在這次寶貴的課程設(shè)計(jì)活動(dòng)中,經(jīng)驗(yàn)才是對(duì)于我們最大的收獲,而且還增強(qiáng)了自身對(duì)未知問題以及對(duì)知識(shí)的深化認(rèn)識(shí)的能力,用受益匪淺這個(gè)詞語來概括這次難忘的活動(dòng)我覺得再合適不過了。但是,光是完成了作品還是不可以自我滿足的,在從一開始的時(shí)候就懷著將作品制作得更加人性化,更加令人滿意,更加地使功能完美又方便地被應(yīng)用領(lǐng)域這個(gè)最終目的下,隨著對(duì)單片機(jī)這門學(xué)科的認(rèn)識(shí)加深,到達(dá)了拓展的程度,

53、我想這個(gè)目的將在不遠(yuǎn)的時(shí)期內(nèi)被實(shí)現(xiàn)。</p><p>  總之,這次設(shè)計(jì)從軟件編寫、調(diào)試到軟硬件聯(lián)機(jī)調(diào)試,我傾注了大量的時(shí)間和心血。真是曾經(jīng)為程序的編寫而冥思查找過,曾經(jīng)為無法找出錯(cuò)誤而郁悶苦惱過,也曾經(jīng)為某一功能不能實(shí)現(xiàn)而猶豫彷徨過,但最終我成功了。</p><p>  我不僅品味到了結(jié)果的喜悅,更明白了過程的彌足珍貴。</p><p><b>  7心

54、得體會(huì)</b></p><p>  感謝我的老師,他們嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中的榜樣;他們循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪。感謝我的爸爸媽媽,焉得諼草,言樹之背,養(yǎng)育之恩,無以回報(bào),你們永遠(yuǎn)健康快樂是我最大的心愿。感謝我的同學(xué)們,是你們和我共同維系著彼此之間親人般的感情,維系著班級(jí)那份家的融洽。在論文即將完成之際,我的心情無法平靜,從開始進(jìn)入課題到論文的順利完成,有多

55、少可敬的師長(zhǎng)、同學(xué)、朋友給了我無言的幫助,在這里請(qǐng)接受我誠(chéng)摯的謝意!</p><p><b>  8參考文獻(xiàn)</b></p><p>  [1] 李建忠.單片機(jī)原理及應(yīng)用[M],西安電子科技大學(xué)出版社,2008.2. </p><p>  [2] 黃智偉.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽系統(tǒng)設(shè)計(jì)[M],北京:北京航空航天大學(xué)出版社,2006.6.<

56、/p><p>  [3] 李廣弟,朱月秀,王秀山.單片機(jī)基礎(chǔ)[M],北京:北京航空航天大學(xué)出版社,2001.7.</p><p>  [4] 趙曙光,郭萬有,楊頌華.可編程邏輯器件原理開發(fā)與應(yīng)用[M],西安:西安電子科技大學(xué), 2000.</p><p>  [5] 譚浩強(qiáng).C語言程序設(shè)計(jì)(第二版)[M],北京:清華大學(xué)出版社,1991.</p><

57、p><b>  9附錄A 原理圖</b></p><p>  10附錄B 程序源代碼及注釋</p><p>  #include <iom16v.h></p><p>  #include <macros.h></p><p>  #include "buzzer.h"&

58、lt;/p><p>  #include "delay.h"</p><p>  void buzzer01(void) //7種聲音,由低到高</p><p><b>  {</b></p><p>  for(OCR1A= 1000;OCR1A<1700;OCR1A+=100)</p&g

59、t;<p><b>  {</b></p><p>  TCCR1A = 0x40; </p><p>  TCCR1B = 0x09;</p><p>  DelayMs(300); //蜂鳴器鳴叫300mS鐘,定時(shí)器一開始工作蜂鳴器即開始鳴叫</p><p>  TCCR1A

60、 = 0x00; //定時(shí)器停止工作,無頻率產(chǎn)生,蜂鳴器停止鳴叫</p><p><b>  }</b></p><p><b>  }</b></p><p>  void buzzer02(void)//7種聲音,由高到低 </p><p><b>  {</b

61、></p><p>  for(OCR1A= 1600;OCR1A>900;OCR1A-=100)</p><p><b>  {</b></p><p>  TCCR1A = 0x40; </p><p>  TCCR1B = 0x09;</p><p>  Delay

62、Ms(300); //蜂鳴器鳴叫300mS鐘,定時(shí)器一開始工作蜂鳴器即開始鳴叫</p><p>  TCCR1A = 0x00; //定時(shí)器停止工作,無頻率產(chǎn)生,蜂鳴器停止鳴叫</p><p><b>  }</b></p><p><b>  }</b></p><p>

63、;  void keyscan()//鍵盤掃描</p><p><b>  {</b></p><p>  unsigned char count1,count2,count3;</p><p>  if(key1==0)//若按鍵1按下,播放第一首曲</p><p><b>  {</b>

64、;</p><p>  DelayMs(10);</p><p>  if(key1==0)</p><p><b>  {</b></p><p><b>  count1=1;</b></p><p><b>  }</b></p>&

65、lt;p>  while(!key1);</p><p><b>  }</b></p><p>  if(key2==0)//若按鍵2按下,播放第二首曲</p><p><b>  {</b></p><p>  DelayMs(10);</p><p>  i

66、f(key2==0)</p><p><b>  {</b></p><p><b>  count1=2;</b></p><p><b>  }</b></p><p>  while(!key2);</p><p><b>  }<

67、/b></p><p>  if(key3==0)//若按鍵3按下,播放速度變慢</p><p><b>  {</b></p><p>  count3=1;</p><p>  while(!key2);</p><p><b>  }</b></p

68、><p><b>  }</b></p><p>  void main(void) //主程序</p><p><b>  {</b></p><p>  unsigned char i,j;</p><p>  DDRA =

69、0xFF;//方向輸出</p><p>  PORTA = 0x00;//輸出低電平</p><p>  DDRB = 0x00;//上拉</p><p>  PORTB = 0xFF;</p><p>  DDRC = 0x00;</p><p>  PORTC = 0

70、xFF;</p><p>  DDRD = 0xFF; //輸出高電平</p><p>  PORTD = 0xFF;</p><p>  while (1) </p><p><b>  {</b></p><p>  keyscan();</

71、p><p>  TCCR1A = 0x40; </p><p>  TCCR1B = 0x09; //比較匹配時(shí)OCA1電平取反,CTC模式,無預(yù)分頻</p><p>  if(count1==1) //如果按鍵1按下,播放第一首</p><p><b>  {</b></p&g

72、t;<p>  buzzer01(); //7種聲音,由低到高</p><p>  for (i = 0; i < 8; i ++) </p><p><b>  {</b></p><p>  PORTA = (1 << i);</p><p>  if(count3==1)//如

73、果按鍵3按下,播放速度變慢</p><p>  DelayMs(1000);</p><p>  DelayMs(100); </p><p><b>  }</b></p><p>  PORTA=0X00; //關(guān)閉所有LED</p><p><

74、b>  }</b></p><p>  if(count2==1) //如果按鍵2按下,播放第二首</p><p><b>  {</b></p><p>  buzzer02(); //7種聲音,由高到低 </p><p>  for (i = 0; i < 8; i ++) &

75、lt;/p><p><b>  {</b></p><p>  PORTA = (1 << i);</p><p>  if(count3==1)//如果按鍵3按下,播放速度變慢</p><p>  DelayMs(1000);</p><p>  DelayMs(200);

76、 </p><p><b>  }</b></p><p>  PORTA=0X00; //關(guān)閉所有LED</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論