課程設(shè)計(jì)-基于單片機(jī)的音樂盒播放器設(shè)計(jì)_第1頁
課程設(shè)計(jì)-基于單片機(jī)的音樂盒播放器設(shè)計(jì)_第2頁
課程設(shè)計(jì)-基于單片機(jī)的音樂盒播放器設(shè)計(jì)_第3頁
課程設(shè)計(jì)-基于單片機(jī)的音樂盒播放器設(shè)計(jì)_第4頁
課程設(shè)計(jì)-基于單片機(jī)的音樂盒播放器設(shè)計(jì)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、21課程設(shè)計(jì)報(bào)告( 2012 - 2013年度第一學(xué)期) 名 稱: 單片機(jī)與嵌入式系統(tǒng) 題 目:基于AVR單片機(jī)的音樂盒播放器 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 成 績: 日期:2012年12月28日II摘 要利用單片機(jī)演奏音樂大概是單片機(jī)愛好者感興趣的問題之一。利用單片機(jī)控制音樂播放也多不勝舉.音樂芯片也相當(dāng)之多,而利用單片機(jī)存儲(chǔ)音樂,控制播放最為廣泛。它有功能多價(jià)格優(yōu)外圍電路簡單的特點(diǎn),備受音樂愛好者及音樂芯片制造商的青睞。本題設(shè)計(jì)的系統(tǒng)以ATmega16單片機(jī)為核心,本文應(yīng)用單片機(jī)和音樂發(fā)聲的相關(guān)知識(shí)設(shè)計(jì)了一個(gè)簡單的音樂播放器。所謂音樂播放器,由單片機(jī)進(jìn)行信息處理,再經(jīng)過信號(hào)放大,由耳機(jī)

2、或揚(yáng)聲器(喇叭)放出樂曲聲。我們知道,振動(dòng)產(chǎn)生聲音,振動(dòng)頻率不同,所發(fā)出的聲音也就不同,有規(guī)律的振動(dòng)發(fā)出的聲音叫“樂音”,音樂由音頻和節(jié)拍構(gòu)成,音頻即發(fā)聲的頻率,節(jié)拍即延時(shí)的長短,因此利用單片機(jī)的定時(shí)器/計(jì)數(shù)器產(chǎn)生一定頻率的方波,本文比較詳細(xì)地介紹了音樂播放器的原理、設(shè)計(jì)思路、硬件的選擇及相關(guān)作用、軟件的實(shí)現(xiàn)方法及詳細(xì)的程序清單、還包括進(jìn)行了軟、硬件調(diào)試和測試,耳熟能詳?shù)母枨囊来巍⑤喕夭シ?。關(guān)鍵詞:單片機(jī),中斷,頻率,鍵盤,音樂播放器目 錄1系統(tǒng)方案11.1控制器系統(tǒng)模塊11.2揚(yáng)聲器模塊21.3數(shù)碼管模塊21.4按鍵模塊32系統(tǒng)原理分析42.1 單片機(jī)發(fā)聲原理43硬件設(shè)計(jì)43.1單片機(jī)硬件

3、資源的設(shè)計(jì)43.2功能模塊硬件設(shè)計(jì)54軟件設(shè)計(jì)54.1數(shù)碼管的設(shè)計(jì)54.2 鍵盤的設(shè)計(jì)64.3 音樂播放75設(shè)計(jì)體會(huì)8附錄1:電路原理圖9附錄2:源程序101系統(tǒng)方案本系統(tǒng)主要利用單片機(jī)的定時(shí)器/計(jì)數(shù)器產(chǎn)生一定頻率的方波,利用延時(shí)來實(shí)現(xiàn)方波的延時(shí),從而實(shí)現(xiàn)“17”的頻率的高、中、低音的發(fā)音,而后把每首歌曲編碼編程并結(jié)合單片機(jī)硬件再通過外接的揚(yáng)聲器來實(shí)現(xiàn)歌曲的播放。再利用4*4鍵盤與單片機(jī)相連接,通過對(duì)4*4鍵盤的捕捉,實(shí)現(xiàn)換曲、播放、暫停等功能。另外,我們又外加一個(gè)電機(jī)模塊,驅(qū)動(dòng)一個(gè)小女孩在為音樂盒上舞動(dòng),實(shí)現(xiàn)了音樂盒的美觀性。 4*4鍵盤數(shù)碼管顯示AVR單片機(jī)音樂播放電路圖1 系統(tǒng)總體設(shè)計(jì)圖

4、本系統(tǒng)主要由按鍵模塊、揚(yáng)聲器模塊、數(shù)碼管模塊、控制器模塊組成,下面分別論證這幾個(gè)模塊。1.1 控制器系統(tǒng)模塊方案一:采用51系列8位單片機(jī),這種處理器處理速度相對(duì)緩慢,功能簡單,外圍電路電路比較復(fù)雜。方案二:采用196系列16位單片機(jī),這種處理器處理速度較快,但由于內(nèi)部外設(shè)模塊不夠豐富,需要接一定的外圍電路,實(shí)現(xiàn)較為復(fù)雜。方案三:ATMEGA16作為CPU來控制,性價(jià)比較高,我們平時(shí)運(yùn)用得多也較為熟悉。而且ATMEGA16能夠產(chǎn)生我們所需要的控制信號(hào),能連接鍵盤。硬件結(jié)構(gòu)適合C語言編程,功能齊全,不容易解密??垢蓴_能力強(qiáng)。本實(shí)踐活動(dòng)用其即可很好的實(shí)現(xiàn)。綜合以上本題要求和以上三種方案的分析,最終

5、選擇方案三。圖2 ATMEGA16最小系統(tǒng)1.2 揚(yáng)聲器模塊采用音頻功率放大器LM386來進(jìn)行對(duì)音頻的放大。LM386是一種音頻集成功放,具有自身功耗低、更新內(nèi)鏈增益可調(diào)整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點(diǎn)的功率放大器,廣泛應(yīng)用于錄音機(jī)和收音機(jī)之中。通過揚(yáng)聲器即可實(shí)現(xiàn)對(duì)音樂盒音樂的播放。圖3 揚(yáng)聲器模塊1.3 數(shù)碼管模塊數(shù)碼管由8個(gè)發(fā)光二極管構(gòu)成。其按按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管,共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,

6、當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。考慮系統(tǒng)的實(shí)際要求及易操作性,我們采用的是共陰極八段數(shù)碼管,來實(shí)現(xiàn)對(duì)歌曲的播放曲目第幾首的顯示。圖4 8段數(shù)碼管原理1.4 按鍵模塊通過單片機(jī)相應(yīng)程序控制,實(shí)現(xiàn)對(duì)4乘4鍵盤信息的采集。圖5 4乘4按鍵模塊2系統(tǒng)原理分析2.1 單片機(jī)發(fā)聲原理我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單處機(jī)某個(gè)口線的“高”電平或

7、低電平,則在該口線上就能產(chǎn)生一定頻率的波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào)。音符的節(jié)拍我們可以用定時(shí)器來控制,送入不同的初值,就可以產(chǎn)生不同的定時(shí)時(shí)間。但是,由于定時(shí)器的最大定時(shí)時(shí)間有限,因此不可能直接用改變的時(shí)間初值來實(shí)現(xiàn)不同節(jié)拍。我們可以設(shè)置一個(gè)中斷計(jì)數(shù)器,通過判別中斷計(jì)數(shù)器的值來控制節(jié)拍時(shí)間的長短。我們將每一音符的時(shí)間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)非械乃谐?shù)排列成一個(gè)表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。節(jié)拍碼節(jié)拍數(shù)11/4拍22/4拍33/4拍41拍51又 1/4

8、拍61又1/2拍82拍A2又 1/2拍C3拍F3又3/4拍表13硬件設(shè)計(jì)3.1單片機(jī)硬件資源的設(shè)計(jì)A口PA0PA7:用于八段數(shù)碼管的顯示??紤]到電路不會(huì)用到太多口,資源配置還比較充裕。故我們采用的是靜態(tài)顯示驅(qū)動(dòng),故需要用到其八個(gè)口。B口PB0-PB7:用以對(duì)四乘四鍵盤掃描信號(hào)的采集以及控制。D口PD5:接相應(yīng)揚(yáng)聲器電路,控制音樂播放。3.2功能模塊硬件設(shè)計(jì)數(shù)碼管模塊:靜態(tài)顯示驅(qū)動(dòng)與單片機(jī)相應(yīng)B口相聯(lián)系。鍵盤模塊:采用紙質(zhì)4乘4鍵盤輸出線與單片機(jī)直接相對(duì)接的方式。揚(yáng)聲器模塊:用擴(kuò)展版來實(shí)現(xiàn)揚(yáng)聲器的功能,并與單片機(jī)PD5口,接地接高等處相連接。4軟件設(shè)計(jì)4.1數(shù)碼管的設(shè)計(jì) 字形hgfedcba共陰

9、極共陽極0001111113FHC0H10000011006HF9H2010110115BHA4H3010011114FHB0H40110011066H99H5011011016DH92H6011100107DH82H70000011107HF8H8011111117FH80H9011011116FH90HA0111011177H868B011111007CH83HC0110100139HC6HD010111105EHA1HE0111100179H86HF0111000171H8EH表2為了獲得0-9十個(gè)不同的字型符號(hào),數(shù)碼管各段所加電平不同,所以IO口輸出的編碼也不同。因此必須建立一個(gè)字型與

10、字段7段碼的編碼表,(見上表2)。有了字段碼對(duì)照表??梢詫?shí)現(xiàn)對(duì)8段碼的譯碼。若要顯示字型1,PA口輸出值為0x06;若要顯示字型A,PA口顯示輸出值0x77。如此,程序中定義了如下數(shù)組:flash unsigned char shu10=0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f通過對(duì)數(shù)組元素,利用一個(gè)變量,在其中因不同狀況而進(jìn)行改變這樣的設(shè)定,實(shí)現(xiàn)實(shí)時(shí)顯示歌曲播放曲目讀取這樣的功能。4.2 鍵盤的設(shè)計(jì)按鍵掃描問題:將全部行線設(shè)置為低電平,然后讀入輸入列線有無低電平出現(xiàn)。如果有低電平出現(xiàn),則說明有按鍵按下,如果讀到的都是高電平,則表示無按

11、鍵按下。在確認(rèn)有按鍵按下后,需要進(jìn)入確定具體哪一個(gè)鍵閉合的過程,依次將行線設(shè)置為低電平,并檢測列線的輸入,進(jìn)而確認(rèn)具體按鍵位置。按鍵的防抖問題:按鍵的抖動(dòng)時(shí)間:520ms,正常時(shí)間:300500ms則需要保證兩次讀鍵值的時(shí)間大于抖動(dòng)時(shí)間,小于最小正常時(shí)間的1/2,取讀鍵值時(shí)間為100ms。保證了在一次按鍵過程中至少可以檢測到2次按鍵閉合,任意兩次按鍵檢測不會(huì)落在1個(gè)抖動(dòng)區(qū)內(nèi)。主要程序如下:switch (key_state)case 0:key_line = 0b00010000;for (i=1; i=4; i+)/ 掃描鍵盤PORTB = key_line;/ 輸出行線電平PORTB =

12、key_line;/ 必須送2次! key_value = Key_mask & PINB; / 讀列電平if (key_value = Key_mask)key_line = 1; / 沒有按鍵,繼續(xù)掃描elsekey_state+;/ 有按鍵,停止掃描break;/ 轉(zhuǎn)消抖確認(rèn)狀態(tài)break; case 1:if (key_value = (Key_mask & PINB)/ 再次讀列電平,switch (key_line | key_value)/ 與狀態(tài)0的相同,確認(rèn)按鍵/ 鍵盤編碼,返回編碼值 case 0b00011110:key_return = K4_1;break;case

13、0b00011101:key_return = K4_2;case 2: PORTB=0b00001111; PORTB=0b00001111; if(Key_mask & PINB) =Key_mask ) key_state=0; break; return key_return; 4.3 音樂播放軟件采用T/C1比較匹配模式。系統(tǒng)時(shí)鐘1Mhz,8分頻。一個(gè)時(shí)鐘周期為1微秒,寄存器OCR1A中為音符的半周期值,所以2次匹配中斷的匹配比較輸出在0C1A上,輸出一個(gè)完整的方波。通過變量記錄中斷的次數(shù),用于控制音符脈沖的各抒,實(shí)際上就是音符輸出的時(shí)間,代表了節(jié)拍的長度。 在T/C1中的OC1A會(huì)

14、自動(dòng)判別整個(gè)音樂是否全部播放完成,如果音樂沒有全部播完,將取出下一個(gè)音符的節(jié)拍和音調(diào)面繼續(xù)播放。利用設(shè)置T/C1技術(shù)脈沖源的方法來啟動(dòng)和停止T/C1的工作。一旦按鍵A鍵播放鍵被按下就會(huì)開始觸發(fā)外部中斷,進(jìn)行工作。B鍵被按下即可暫停工作。再通過揚(yáng)聲器放大電路把它播放出去。D口相應(yīng)初值設(shè)置如下: PORTD=0xFF;DDRD=0x20; / PD5音樂播放輸出OCR0 = 0xF9;/ OCR0 = 0xF9(249),(249+1)/125=2msTCCR0 = 0x0A;/ 內(nèi)部時(shí)鐘,8分頻(1M/8=125KHz),CTC模式 TCCR1A=0x40; TCCR1B=0x08;TIMSK

15、= 0x12;/ 允許T/C1比較匹配A中斷,允許T/C0比較匹配中斷 ;5設(shè)計(jì)體會(huì)通過這次實(shí)踐設(shè)計(jì)活動(dòng)深該體會(huì)到單片機(jī)技術(shù)應(yīng)用領(lǐng)域的廣泛,不僅使我對(duì)學(xué)過的單片機(jī)知識(shí)有了很多的鞏固,同時(shí)也對(duì)單片機(jī)這一門課程產(chǎn)生了更大的興趣。當(dāng)看到自己設(shè)計(jì)的小音樂盒發(fā)聲播放,上面的小女孩旋轉(zhuǎn)的時(shí)候,那種喜悅的感覺不言而喻。在本次課程設(shè)計(jì)過程中,自己懂得單片機(jī)知識(shí)運(yùn)用比較重要,要想把這門課程學(xué)好需要不但課本上的知道,關(guān)鍵還是親手實(shí)踐鍛煉自己的動(dòng)手能力,只有在實(shí)踐中才能夠?qū)W到更多東西,從不知道到知道這個(gè)東西啊,知識(shí)來于課本理論與實(shí)踐相結(jié)合的產(chǎn)物啊,我們只有把理論更好的運(yùn)動(dòng)到實(shí)踐中學(xué)到了真正的知識(shí)經(jīng)過這幾周,我知道書

16、本和實(shí)際操作還是很有差距的,而且自己的動(dòng)手能力還是很差,而且電子這一行還要求的細(xì)心仔細(xì)和耐心,在這三周中暴露出來很多自己的不足,以后要多加練習(xí),多鍛煉自己的這些方面的能力。希望能夠成為更加全面立體的電子類人才。21附錄1:電路原理圖附錄2:源程序#include #include flash unsigned char shu10=0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;flash unsigned int t16 = 0,1908,1700,1516,1433,1276,1136,1012,956,865,759,716,638,5

17、68,506,470;flash unsigned int d16 = 0,52,59,66,70,78,88,99,105,116,132,140,157,176,198,209;flash unsigned char music1150= 5,2,8,2,5,2,4,2,3,2,2,2,1,4, 1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8, 5,2,8,2,5,2,4,2,3,2,5,2,2,4, 4,2,3,2,2,2,6,2,5,4,2,2,3,2,1,8, 5,4,3,2,6,4,8,4,7,4,6,2,7,2,5,4,3,4, 9,2,9,2,9,2,8

18、,2,7,4,6,2,8,2,5,8, 5,4,3,2,6,4,8,4,7,2,6,2,7,2,8,2,9,6, 5,2,6,2,7,2,8,3,8,4,5,4,8,8;flash unsigned char music2100= 5,2,5,2,6,4,5,4,8,4,7,8, 5,2,5,2,6,4,5,4,9,4,8,8, 5,2,5,2,12,4,10,4,8,4,7,4,6,8, 11,2,11,2,10,4,8,4,9,4,8,8 ;flash unsigned char music3100= 1,4,1,4,5,4,5,4,6,4,6,4,5,8, 4,4,4,4,3,4,3,4

19、,2,4,2,4,1,8, 5,4,5,4,4,4,4,4,3,4,3,4,2,8, 5,4,5,4,4,4,4,4,3,4,3,4,2,8, 1,4,1,4,5,4,5,4,6,4,6,4,5,8, 4,4,4,4,3,4,3,4,2,4,2,4,1,8; flash unsigned char music4100=5,2,3,2,5,2,3,2,5,2,3,2,1,4, 2,2,4,2,3,2,2,2,5,8, 5,2,3,2,5,2,3,2,5,2,3,2,1,4, 2,2,4,2,3,2,2,2,1,8, 2,2,2,2,4,2,4,2,3,2,1,2,5,4, 2,2,4,2,3,2

20、,1,2,5,8, 5,2,3,2,5,2,3,2,5,2,3,2,1,4, 2,2,4,2,3,2,2,2,1,8;flash unsigned char music5150=3,2,3,2,4,2,5,2,5,2,4,2,3,2,2,2,1,2,1,2,2,2,3,2,3,2,2,1,2,8, 3,2,3,2,4,2,5,2,5,2,4,2,3,2,2,2,1,2,1,2,2,2,3,2,2,2,1,1,1,8, 2,2,2,2,3,2,1,2,2,2,30,1,4,1,3,2,1,2,2,2,3,1,4,1,3,2,2,2,1,2,2,2,2,4, 3,2,3,2,4,2,5,2,5,2

21、,4,2,3,2,2,2,1,2,1,2,2,2,3,2,2,2,1,1,1,8;flash unsigned char music6100=3,2,3,2,3,4,3,2,3,2,3,4, 3,2,5,2,1,2,2,2, 3,8,4,2,4,2,4,2,4,2,4,2,3,2, 3,2,3,2, 3,2,2,2,2,2,1,2,2,4,5,4, 3,2,3,2,3,4,3,2,3,2,3,4, 3,2,5,2,1,2,2,2,3,8, 4,2,4,2,4,2,4,2, 4,2,3,2,3,2,3,2, 5,2,5,2,3,2,2,2,1,8;flash unsigned char musi

22、c7150=1,2,2,2, 3,2,4,2, 5,2,5,2, 5,1,4,1,3,1, 4,2,4,2, 4,1,3,1,2,1, 1,2,3,2, 5,4, 1,2,2,2, 3,2,4,2, 5,2,5,2, 5,1,4,1,3,1, 4,2,4,2, 4,1,3,1,2,1, 1,2,3,2, 1,4, 6,2,6,2, 6,1,5,1,4,1, 5,2,5,2, 5,1,4,1,3,1, 4,2,4,2, 4,1,3,1,2,1, 1,2,3,2, 5,4, 6,2,6,2, 6,1,5,1,4,1, 5,2,5,2, 5,1,4,1,3,1, 4,2,4,2, 4,1,3,1,2

23、,1,1,2,3,2, 1,4;flash unsigned char music8150=1,4, 1,2,2,2, 3,4, 3,2,4,2, 5,4, 6,2,5,2, 3,8, 5,4, 4,2,3,2,2,8, 4,4, 3,2,2,2, 1,8, 1,4, 1,2,2,2, 3,4, 3,2,4,2, 5,4, 6,2,5,2, 3,8, 5 ,4,4,2,3,2,2,4, 3,2,2,2, 1,16, 5,4, 4,2,3,2, 2,4, 1,2,1,2, 4,4, 3,2,2,2, 1,8,5,4, 4,2,3,2, 2,4, 1,2,1,2, 4,4, 3,2,2,2, 1,

24、8, 1,4, 1,2,2,2, 3,4, 3,2,4,2, 5,4, 6,2,5,2, 3,8, 5 ,4,4,2,3,2,2,4, 3,2,2,2, 1,8 ;flash unsigned char music9200=8,2,8,2,8,2,10,2,13,2,10,2,12,4, 12,2,13,2,12,2,10,2,11,2,10,2,19,4, 9,2,9,2,9,2,11,2,14,2,14,2,13,2,12,2,12,2,12,2,12,2,11,2,7,4,8,4,9,8, 8,2,8,2,8,2,10,2,13,2,10,2,12,4, 12,2,13,2,12,2,1

25、0,2,11,2,10,2,19,4, 9,2,9,2,9,2,11,2,14,2,14,2,13,2,12,2,12,2,12,2,12,2,11,2,7,4,9,4,8,8, 13,4,13,2,12,2,11,1,12,1,13,1,12,2,9,2,10,2,11,2,9,2,12,4, 13,4,12,4,11,8,9,4,14,2,13,2,12,2,13,2,12,2,11,4,12,2,13,2,10,4,9,4,8,8;flash unsigned char max9=128,50,84,96,124,98,140,146,172;int num=0,kai=1,pp;uns

26、igned char note_n=0;unsigned int int_n=1;bit play_on,key_stime_ok;int key_stime_counter;interrupt TIM0_COMP void timer0_comp_isr(void) if (+key_stime_counter =5)key_stime_counter = 0; key_stime_ok = 1;interrupt TIM1_COMPA void timer1_compa_isr(void) if (!play_on) if (-int_n = 0) TCCR1B = 0x08; if (n

27、ote_n maxpp-1) switch (pp) case 1: OCR1A = tmusic1note_n; int_n = dmusic1note_n; note_n+; int_n = int_n * music1note_n*4; note_n+; TCCR1B = 0x09; break; case 2: OCR1A = tmusic2note_n; int_n = dmusic2note_n; note_n+; int_n = int_n * music2note_n*4; note_n+; TCCR1B = 0x09; break; case 3: OCR1A = tmusi

28、c3note_n; int_n = dmusic3note_n; note_n+; int_n = int_n * music3note_n*4; note_n+; TCCR1B = 0x09; break; case 4: OCR1A = tmusic4note_n; int_n = dmusic4note_n; note_n+; int_n = int_n * music4note_n*4; note_n+; TCCR1B = 0x09; break; case 5: OCR1A = tmusic5note_n; int_n = dmusic5note_n; note_n+; int_n

29、= int_n * music5note_n*5; note_n+; TCCR1B = 0x09; break; case 6: OCR1A = tmusic6note_n; int_n = dmusic6note_n; note_n+; int_n = int_n * music6note_n*5; note_n+; TCCR1B = 0x09; break; case 7: OCR1A = tmusic7note_n; int_n = dmusic7note_n; note_n+; int_n = int_n * music7note_n*5; note_n+; TCCR1B = 0x09

30、; break; case 8: OCR1A = tmusic8note_n; int_n = dmusic8note_n; note_n+; int_n = int_n * music8note_n*5; note_n+; TCCR1B = 0x09; break; case 9: OCR1A = tmusic9note_n; int_n = dmusic9note_n; note_n+; int_n = int_n * music9note_n*5; note_n+; TCCR1B = 0x09; break; else play_on = 0; int_n=1; note_n=0; #d

31、efine No_key 17#define K1_11#define K1_22#define K1_33#define K1_44 #define K2_15#define K2_26#define K2_37#define K2_48 #define K3_19#define K3_210#define K3_311#define K3_412#define K4_117#define K4_217#define K4_317#define K4_417#define Key_mask0b00001111unsigned char read_key() static unsigned c

32、har key_state = 0, key_value, key_line; unsigned char key_return = No_key,i;switch (key_state)case 0:key_line = 0b00010000;for (i=1; i=4; i+)/ 掃描鍵盤PORTB = key_line;/ 輸出行線電平PORTB = key_line;/ 必須送2次! key_value = Key_mask & PINB; / 讀列電平if (key_value = Key_mask)key_line = 1; / 沒有按鍵,繼續(xù)掃描elsekey_state+;/

33、有按鍵,停止掃描break;/ 轉(zhuǎn)消抖確認(rèn)狀態(tài)break; case 1:if (key_value = (Key_mask & PINB)/ 再次讀列電平,switch (key_line | key_value)/ 與狀態(tài)0的相同,確認(rèn)按鍵/ 鍵盤編碼,返回編碼值 case 0b00011110:key_return = K4_1;break;case 0b00011101:key_return = K4_2;break; case 0b00011011:key_return = K4_3;break; case 0b00010111:key_return = K4_4;break; ca

34、se 0b00101110:key_return = K3_1;break;case 0b00101101:key_return = K3_2;break; case 0b00101011:key_return = K3_3;break; case 0b00100111:key_return = K3_4;break;case 0b01001110:key_return = K2_1;break; case 0b01001101:key_return = K2_2;break; case 0b01001011:key_return = K2_3;break;case 0b01000111:ke

35、y_return = K2_4;break; case 0b10001110:key_return = K1_1;break; case 0b10001101:key_return = K1_2;break; case 0b10001011:key_return = K1_3;break;case 0b10000111:key_return = K1_4;break; key_state+; elsekey_state-;/ 兩次列電平不同返回狀態(tài)0break;case 2: PORTB=0b00001111; PORTB=0b00001111; if(Key_mask & PINB) =Ke

36、y_mask ) key_state=0; break; return key_return; / Declare your global variables herevoid main(void) PORTA=0x3f; DDRA=0xFF; PORTB=0xFF; DDRB=0xF0; PORTC=0xff; DDRC=0xFF; PORTD=0xFF;DDRD=0x20; / PD5音樂播放輸出OCR0 = 0xF9;/ OCR0 = 0xF9(249),(249+1)/125=2msTCCR0 = 0x0A;/ 內(nèi)部時(shí)鐘,8分頻(1M/8=125KHz),CTC模式 TCCR1A=0x

37、40; TCCR1B=0x08;TIMSK = 0x12;/ 允許T/C1比較匹配A中斷,允許T/C0比較匹配中斷 ACSR=0x80; SFIOR=0x00; #asm(sei) play_on=1; kai=1; pp=0; while (1) num=read_key(); switch(num) case 17: break; case 10: PORTA=0x3f; play_on=1; kai=1; int_n=1; note_n=0; pp=0; break; case 11: play_on=0; TIMSK = 0x12; TCCR1B = 0x09; break; case

38、 12: if(play_on=0) if(kai=0) kai=1; OCR1A = 0; TIMSK = 0x12; TCCR1B = 0x09; else OCR1A = 0; kai=0; TIMSK = 0x02; TCCR1B = 0x08; break; default: pp=num; int_n=1; note_n=0; play_on=1; PORTA=shupp; break; if (key_stime_ok) key_stime_ok = 0; if(play_on=0) TCCR1B = 0x09; else TCCR1B = 0x08; ;g an employm

39、ent tribunal claimEmployment tribunals sort out disagreements between employers and employees.You may need to make a claim to an employment tribunal if: you dont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismis

40、sed unfairly.For more information about dismissal and unfair dismissal, seeDismissal.You can make a claim to an employment tribunal, even if you haventappealedagainst the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation

41、awarded to you as a result of your failure to appeal.Remember that in most cases you must make an application to an employment tribunal within three months of the date when the event you are complaining about happened. If your application is received after this time limit, the tribunal will not usua

42、lly accept it.If you are worried about how the time limits apply to you, take advice from one of the organisations listed underFurther help.Employment tribunals are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation.Mos

43、t people find making a claim to an employment tribunal challenging. If you are thinking about making a claim to an employment tribunal, you should get help straight away from one of the organisations listed underFurther help.If you are being represented by a solicitor at the tribunal, they may ask y

44、ou to sign an agreement where you pay their fee out of your compensation if you win the case. This is known as adamages-based agreement. In England and Wales, your solicitor cant charge you more than 35% of your compensation if you win the case.If you are thinking about signing up for a damages-based agreement, you should make sure youre clear about the terms of the agreement. It might be best to get advice from an experienced adviser, for example, at a Citizens Advice Bureau. To fin

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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)論