畢業(yè)設(shè)計(論文)用單片機(jī)設(shè)計及制作簡易電子琴_第1頁
畢業(yè)設(shè)計(論文)用單片機(jī)設(shè)計及制作簡易電子琴_第2頁
畢業(yè)設(shè)計(論文)用單片機(jī)設(shè)計及制作簡易電子琴_第3頁
畢業(yè)設(shè)計(論文)用單片機(jī)設(shè)計及制作簡易電子琴_第4頁
畢業(yè)設(shè)計(論文)用單片機(jī)設(shè)計及制作簡易電子琴_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、安徽財經(jīng)大學(xué)信息工程學(xué)院本科畢業(yè)設(shè)計本科畢業(yè)設(shè)計題 目 用單片機(jī)設(shè)計及制作簡易電子琴 學(xué) 院 管理科學(xué)與工程學(xué)院 專 業(yè) 電子信息工程 班 級 071信工(0)班 學(xué) 號 姓 名 指導(dǎo)老師 2011 年 6 月i摘要電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器,它在音樂演奏中已成為不可缺少的一部分。單片機(jī)是一個具有功能強(qiáng)大和編程靈活性的控制器,它已廣泛應(yīng)用于現(xiàn)代人們的生活中,扮演著重要的角色。本設(shè)計主要是使用at89c51單片機(jī)及單片機(jī)c語言,在proteus仿真平臺上實(shí)現(xiàn)以單片機(jī)為核心控制元件的一個具有16個按鍵的電子琴,同時還增加了音樂播放功能。本文中給出了該系統(tǒng)設(shè)計的硬件電

2、路,軟件設(shè)計等。其次,詳細(xì)闡述了程序的各個模塊和實(shí)現(xiàn)過程。本設(shè)計具有硬件電路簡單、功能完善、控制可靠、運(yùn)行穩(wěn)定等特點(diǎn),具有一定的實(shí)用性和參考價值。關(guān)鍵詞: 單片機(jī);電子琴;proteus;c語言abstractorgan music of modern electronic technology combined with the product of a new type of keyboard instruments in its music has become an indispensable part of it. scm is a powerful and programming

3、flexibility of the controller, which has been widely used in modern peoples lives, play an important role. this design mostly using at89c51 microcontroller and the microcontroller c, the proteus simulation platform to achieve a single chip as the core control element of an electronic keyboard with 1

4、6 keys, but also increased the music playback. this paper gives the design of the system hardware and software design. second, detail the various modules of the program and implementation process. this design has a simple hardware circuit, functional, control, reliable, stable performance, practical

5、ity and a certain reference value.keywords : scm;electronic;proteus;c language目錄1 引言11.1目的和意義21.2本系統(tǒng)的主要研究內(nèi)容32 系統(tǒng)分析52.1 系統(tǒng)組成52.2 系統(tǒng)工作原理53 系統(tǒng)硬件設(shè)計63.1 系統(tǒng)硬件總體設(shè)計63.2 at89c51單片機(jī)73.2.1 at89c51簡介73.2.2 at89c51主要特性73.2.3 at89c51管腳說明83.2.4 芯片擦除103.3矩陣式鍵盤的識別和顯示103.3.1.矩陣式鍵盤的結(jié)構(gòu)與工作原理103.3.2矩陣式鍵盤的按鍵識別方法113.3.3鍵盤接

6、口必須具有的4個基本功能123.4 按鍵顯示模塊123.4.1數(shù)碼管的分類123.4.2數(shù)碼管的驅(qū)動方式133.5 功能顯示模塊143.6 音樂播放裝置154 系統(tǒng)軟件設(shè)計194.1 系統(tǒng)整體程序處理流程圖194.2 i/o并行口直接驅(qū)動led顯示204.3音樂播放設(shè)計204.4放歌子程序流程圖215 系統(tǒng)使用說明225.1 系統(tǒng)安裝及配置說明225.1.1系統(tǒng)運(yùn)行環(huán)境225.1.2系統(tǒng)安裝及配置225.2 系統(tǒng)操作說明226 結(jié)論23參考文獻(xiàn)24致謝25附錄26安徽財經(jīng)大學(xué)管理科學(xué)與工程學(xué)院本科畢業(yè)設(shè)計1 引言隨著電子科技的飛速發(fā)展,電子技術(shù)正在逐漸改善著人們的學(xué)習(xí)、生活、工作,因此開發(fā)本系

7、統(tǒng)希望能夠給人們多帶來一點(diǎn)生活上的樂趣?;诋?dāng)前市場上的玩具市場需求量大,其中電子琴就是一個很好的應(yīng)用方面。單片機(jī)技術(shù)使我們可以利用軟硬件實(shí)現(xiàn)電子琴的功能,從而實(shí)現(xiàn)電子琴的微型化,可以用作玩具琴、音樂轉(zhuǎn)盤以及音樂童車等等。并且可以進(jìn)行一定的功能擴(kuò)展。鑒于傳統(tǒng)電子琴可以用鍵盤上的“k0”到“k16”鍵演奏從低so到高do等16個音,從而可以用來彈奏喜歡的樂曲。電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器,它在現(xiàn)代音樂扮演著重要的角色。簡易電子琴是電聲樂隊的中堅力量,常用于獨(dú)奏主旋律并伴以豐富的和聲。還常作為獨(dú)奏樂器出現(xiàn),具有鮮明時代特色。但電子琴的局限性也是十分明顯:旋律與和聲缺乏

8、音量變化,過于協(xié)和、單一;在模仿各類館、弦樂器時,音色還不夠逼真,模仿提琴類樂器的音色時,失真度更大,還需要不斷改進(jìn)。單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內(nèi)容是用at89c51單片機(jī)為核心控制元件,設(shè)計一個電子琴。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個按鍵和揚(yáng)聲器。本文主要對使用單片機(jī)設(shè)計簡易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。并且本文分別從原理圖,主要芯片,各模塊原理及各模塊的程序的調(diào)試

9、來詳細(xì)闡述。一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計數(shù)器t0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。這次的電子琴是由4*4組成16個按鈕矩陣,設(shè)計成16個音。然后再用一個音頻放大模塊來使音樂播出的聲音變大。通過這16個鍵的隨意組合可隨意彈奏想要表達(dá)的音樂,使用很簡單。1.1目的和意義隨著生活水平的提高,在放松自己的同時又能提高各個方面的能力。學(xué)習(xí)和欣賞音樂可以在使人們得到放松的同時,提高人們的精神品質(zhì)和個人

10、素養(yǎng)。當(dāng)代,愛好音樂的年輕人越來越多,有不少人自己練習(xí)彈奏樂器,作為業(yè)余愛好和一種放松的手段,鑒于一些樂器學(xué)習(xí)難度大,需要太多的學(xué)習(xí)時間,且其價格又太過于高昂,使得一部分有這種想法的人不得不放棄這種想法。而一些簡易的電子樂器價格相對便宜,學(xué)習(xí)上手快,價格相對便宜,一般人容易負(fù)擔(dān)的起,能夠滿足一般愛好者的需求。故簡易電子樂器的研制具有一定的社會意義。單片機(jī)是在一塊芯片內(nèi)集成了計算機(jī)的各個功能部件,構(gòu)成一種單片式的微型計算機(jī)。二十世紀(jì)八十年代以來,單片機(jī)的發(fā)展迅速,應(yīng)用不斷深入,新技術(shù)層出不窮。并已廣泛應(yīng)用到人類生活的各個領(lǐng)域,如家電、通訊設(shè)備、玩具、智能卡、汽車及防盜、醫(yī)用保健、儀表、工業(yè)過程控

11、制等,成為當(dāng)今科學(xué)技術(shù)現(xiàn)代化不可缺少的重要工具。之所以以單片機(jī)電子琴為選題,目的在于從日常生活能接觸到的細(xì)微處著手,通過理論與實(shí)踐的結(jié)合,更明確自己的所學(xué)所用,也在實(shí)踐中發(fā)現(xiàn)理論的不足,對目前日益廣泛應(yīng)用的單片機(jī)有了更加理性化和感性化的認(rèn)識,使理論和實(shí)踐相得益彰。通過單片機(jī)電子琴這個選題,更深層次的了解了單片機(jī)技術(shù),以前只是有理論,實(shí)踐的機(jī)會不是很多,在作單片機(jī)電子琴這個選題的過程中,更加熟練的掌握了一些單片機(jī)芯片的應(yīng)用,也解決了很多以前理論和實(shí)踐脫節(jié)的問題,可謂對單片機(jī)的認(rèn)識有了一個小的飛躍。keil是德國開發(fā)的一個51單片機(jī)開發(fā)軟件平臺,最開始只是一個支持c語言和匯編語言的編譯軟件。kei

12、l的vision3可以進(jìn)行純粹的軟件仿真(仿真軟件程序、不接硬件電路),也可以利用硬件仿真器,搭接上單片機(jī)硬件系統(tǒng),在仿真器中載入項(xiàng)目程序后進(jìn)行實(shí)時仿真,在不需要額外的硬件仿真器的條件下,搭接單片機(jī)硬件系統(tǒng)對項(xiàng)目程序進(jìn)行實(shí)時仿真。proteus是英國labcenter electronics公司開發(fā)的多功能eda軟件。proteus是目前較先進(jìn)的單片機(jī)和嵌入式系統(tǒng)的設(shè)計與仿真平臺。它實(shí)現(xiàn)了在計算機(jī)上完成從原理圖與電路設(shè)計、電路分析與仿真、單片機(jī)代碼級調(diào)試與仿真、系統(tǒng)測試與功能驗(yàn)證到形成pcb的完整的電子設(shè)計、研發(fā)過程。由于proteus軟件包逼真、真實(shí)的協(xié)同仿真功能,得到了包括劍橋在內(nèi)的眾多大

13、學(xué)用戶,作為電子學(xué)或嵌入式系統(tǒng)的課程教學(xué)、實(shí)驗(yàn)和水平考試平臺。利用proteus與keil整合構(gòu)建單片機(jī)虛擬實(shí)驗(yàn)室,為解決電路設(shè)計以及仿真提供了很好的發(fā)展平臺。本設(shè)計是在keil使用89c51單片機(jī)及單片機(jī)c語言,在proteus仿真平臺上實(shí)現(xiàn)基于單片機(jī)的簡易電子琴。對于提高和改進(jìn)電子琴功能的設(shè)計有著重要參考意義。1.2本系統(tǒng)的主要研究內(nèi)容單片機(jī)因體積小、功能強(qiáng)、價格低廉而得到廣泛應(yīng)用。at89c51單片機(jī)設(shè)計微型電子琴的方法,僅需at89c51最小系統(tǒng),擴(kuò)展一組矩陣鍵盤,再接一組發(fā)光二極管用來指示電子琴的工作狀態(tài)。本系統(tǒng)分為兩個部分,一個是音樂,另一個就是電子琴。音樂播放部分:樂音實(shí)際上是有

14、固定周期的信號。本文介紹用at89c51的兩個定時器(如t0,t1)控制,在p3.7腳上輸出方波周期信號,產(chǎn)生樂音,通過矩陣鍵盤按鍵產(chǎn)生不同的音符,由此操作人員可以隨心所欲的彈奏自己所喜愛的樂曲,當(dāng)不想彈奏時通過按放歌鍵可以演奏事先存放在單片機(jī)中的幾首動聽的曲子供消遣。當(dāng)歌曲演奏完時,通過按復(fù)位鍵便可回到初始狀態(tài),這樣就做出了一臺微型電子琴。由于一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計數(shù)器t0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音

15、階對應(yīng)頻率關(guān)系弄正確即可。樂曲中,每一音符對應(yīng)著確定的頻率,我們將每一音符的時間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)非械乃谐?shù)排列成一個表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實(shí)現(xiàn)演奏效果。電子琴彈奏部分:實(shí)際上就是把每個按鍵所對應(yīng)的值經(jīng)過處理后發(fā)給單片機(jī),再在單片機(jī)內(nèi)把數(shù)字當(dāng)作指針指向所對應(yīng)的音符。本設(shè)計要實(shí)現(xiàn)的功能有:由4x4組成16個按鈕矩陣,設(shè)計成16個音??呻S意彈奏想要表達(dá)的音樂。詳細(xì)過程:當(dāng)系統(tǒng)掃描到鍵盤上有鍵子被按下,則快速檢測出是那一個鍵子,然后單片機(jī)的定時器被啟動,發(fā)出一定頻率的脈沖,該頻率的脈沖經(jīng)喇叭驅(qū)動電路放大濾波后,就會發(fā)出相應(yīng)的音調(diào)。假如在前一

16、個按下的鍵發(fā)聲的同時有另一個鍵被按下,則啟用中斷系統(tǒng),前面鍵的發(fā)音停止,轉(zhuǎn)到后按的鍵的發(fā)音程序,發(fā)出后按的鍵的音。2 系統(tǒng)分析2.1 系統(tǒng)組成該系統(tǒng)通過電子琴按鍵隨意鍵入所要表達(dá)的音符,作為電平送給主體電路,中央處理器通過識別,解碼輸出音符,在揚(yáng)聲器中發(fā)出有效的聲音。通過這樣可以不斷的彈奏音樂。嵌入式電路,按鍵電路,led顯示電路和兩個功能鍵組成,通過功能鍵可以選擇播放音樂。其主要模塊由五個部分組成,具體關(guān)系如圖2.1所示。圖2.1 系統(tǒng)組成框圖本系統(tǒng)的電路基本模塊:51單片機(jī)中心、矩陣鍵盤模塊、顯示模塊、發(fā)音模塊、功能選擇模塊。2.2 系統(tǒng)工作原理 工作原理描述如下:打開電子琴電源開關(guān)后,電

17、子琴默認(rèn)為彈奏狀態(tài),彈奏顯示燈點(diǎn)亮,數(shù)碼管顯示為0。按下矩陣鍵盤中的任意鍵,揚(yáng)聲器發(fā)相應(yīng)的音調(diào),數(shù)碼管顯示對應(yīng)的數(shù)字。按下播放按鈕,電子琴處于自動播放狀態(tài),播放顯示燈點(diǎn)亮,此時,按下矩陣鍵盤中的任意鍵,揚(yáng)聲器發(fā)出存儲在單片機(jī)內(nèi)部的對應(yīng)的樂曲,數(shù)碼管顯示對應(yīng)的按鍵數(shù)字。再按彈奏/停止鍵,音樂停止。彈奏顯示燈點(diǎn)亮。此時系統(tǒng)又處于彈奏狀態(tài)。3 系統(tǒng)硬件設(shè)計3.1 系統(tǒng)硬件總體設(shè)計將設(shè)計的電子琴硬件部分進(jìn)行模塊化設(shè)計,主要分以下模塊:(1)矩陣鍵盤模塊:系統(tǒng)采用4*4矩陣鍵盤。(2)顯示模塊:系統(tǒng)采用led顯示管顯示。(3)功能顯示模塊:采用發(fā)光二極管顯示彈奏、播放兩種狀態(tài)。(4)發(fā)音模塊:采用揚(yáng)聲器

18、發(fā)音。(5)控制中心模塊:at89c51單片機(jī)。硬件整體電路圖如圖3.1所示。圖3.1 硬件整體電路圖3.2 at89c51單片機(jī)3.2.1 at89c51簡介at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(fperomflash programmable and erasable read only memory)的低電壓,高性能cmos 8位微處理器,俗稱單片機(jī)。at89c51它是一個低功耗高性能單片機(jī),40個引腳,32個外部雙向輸入/輸出(i/o)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,at89c51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程

19、。at89c51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。外形及引腳排列如圖3.2所示。圖3.2 at89c51引腳分布圖3.2.2 at89c51主要特性與mcs-51 兼容 4k字節(jié)可編程閃爍存儲器 壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:10年全靜態(tài)工作:0hz-24mhz三級程序存儲器鎖定1288位內(nèi)部ram32可編程i/o線兩個16位定時器/計數(shù)器5個中斷源 可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時鐘電路3.2.3 at89c51管腳說明vcc:供電電壓。gnd:接地。p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次

20、寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時,p0輸出原碼,此時p0外部必須被拉高。p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時,p1口作為第八位地址接收。 p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當(dāng)p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,

21、且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時接收高八位地址信號和控制信號。p3口:p3口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器

22、件時,要保持rst腳兩個機(jī)器周期的高電平時間。ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。psen:外部程序存儲器的選通信號。在由外部程序存儲器取

23、指期間,每個機(jī)器周期兩次有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的信號將不出現(xiàn)。ea/vpp:當(dāng)保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,將內(nèi)部鎖定為reset;當(dāng)端保持高電平時,此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出。另外,p3口也可作為at89c51的一些特殊功能口,如下所示。l 口管腳 備選功能l p3.0 rxd(串行輸入口)l p3.1 txd(串行輸出口)l p3.2 /int0

24、(外部中斷0)l p3.3 /int1(外部中斷1)l p3.4 t0(記時器0外部輸入)l p3.5 t1(記時器1外部輸入)l p3.6 /wr(外部數(shù)據(jù)存儲器寫選通)l p3.7 /rd(外部數(shù)據(jù)存儲器讀選通)l p3口同時為閃爍編程和編程校驗(yàn)接收一些控制信號。3.2.4 芯片擦除整個perom陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ale管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,at89c51設(shè)有穩(wěn)態(tài)邏輯,可以在零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,cpu停

25、止工作。但ram、定時器、計數(shù)器、串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存ram的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。3.3矩陣式鍵盤的識別和顯示3.3.1.矩陣式鍵盤的結(jié)構(gòu)與工作原理在鍵盤中按鍵數(shù)量較多時,為了減少i/o口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如p1口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采

26、用矩陣法來做鍵盤是合理的。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,本系統(tǒng)中的矩陣鍵盤中,列線通過電阻接正電源,并將行線所接的單片機(jī)的i/o口作為輸出端,而列線所接的i/o口則作為輸入。這樣,當(dāng)按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。矩陣式鍵盤如圖3.3所示。圖3.3 矩陣式鍵盤3.3.2矩陣式鍵盤的按鍵識別方法確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。

27、1、判斷鍵盤中有無鍵按下。將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。2、判斷閉合鍵所在的位置。在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。3.3.3鍵盤接口必須具有的4個基本功能(1)去抖動:每個按鍵在按下或松開時,都會產(chǎn)生短時間的抖動。抖動的持續(xù)時間與鍵的

28、質(zhì)量相關(guān),一般為520mm。所謂抖動是指在識別被按鍵是必須避開抖動狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開狀態(tài)才能保證識別正確無誤。去抖問題可通過軟件延時或硬件電路解決。(2)防串鍵:防串鍵是為了解決多個鍵同時按下或者前一按鍵沒有釋放又有新的按鍵按下時產(chǎn)生的問題。常用的方法有雙鍵鎖定和n鍵輪回兩種方法。雙鍵鎖定,是當(dāng)有兩個或兩個以上的按鍵按下時,只把最后釋放的鍵當(dāng)作有效鍵并產(chǎn)生相應(yīng)的鍵碼。n鍵輪回,是當(dāng)檢測到有多個鍵被按下時,能根據(jù)發(fā)現(xiàn)它們的順序依次產(chǎn)生相應(yīng)鍵的鍵碼。(3)被按鍵識別:如何識別被按鍵是接口解決的主要問題,一般可通過軟硬結(jié)合的方法完成。常用的方法有行掃描法和線反轉(zhuǎn)法兩種。行掃描法的基本思

29、想是,由程序?qū)︽I盤逐行掃描,通過檢測到的列輸出狀態(tài)來確定閉合鍵,為此,需要設(shè)置入口、輸出口一個,該方法在微機(jī)系統(tǒng)中被廣泛使用。線反轉(zhuǎn)法的基本思想是通過行列顛倒兩次掃描來識別閉合鍵,為此需要提供兩個可編程的雙向輸入/輸出端口。(4)鍵碼產(chǎn)生:為了從鍵的行列坐標(biāo)編碼得到反映鍵功能的鍵碼,一般在內(nèi)存區(qū)中建立一個鍵盤編碼表,通過查表獲得被按鍵的鍵碼。用at89c51的并行口p0接44矩陣鍵盤,以p0.0p0.3作輸入線,以p0.4p0.7作輸出線;在數(shù)碼管上顯示每個按鍵的“0f”序號。3.4 按鍵顯示模塊3.4.1數(shù)碼管的分類數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極

30、管單元(多一個小數(shù)點(diǎn)顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(com)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極com接到+5v,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(com)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極com接到地線gnd上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。3.4.2數(shù)碼管

31、的驅(qū)動方式數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。靜態(tài)顯示驅(qū)動:靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機(jī)的i/o端口進(jìn)行驅(qū)動,或者使用如bcd碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點(diǎn)是編程簡單,顯示亮度高,缺點(diǎn)是占用i/o端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5840根i/o端口來驅(qū)動,實(shí)際應(yīng)用時必須增加譯碼驅(qū)動器進(jìn)行驅(qū)動,增加了硬件電路的復(fù)雜性。動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃a,

32、b,c,d,e,f,g,dp的同名端連在一起,另外為每個數(shù)碼管的公共極com增加位選通控制電路,位選通由各自獨(dú)立的i/o線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通com端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的com端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為12ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定

33、的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的i/o端口,而且功耗更低。顯示模塊如圖3.4所示。圖3.4 顯示模塊3.5 功能顯示模塊當(dāng)按下彈奏/停止功能鍵時,d1燈點(diǎn)亮,此時,電子琴系統(tǒng)處于彈奏狀態(tài);當(dāng)按下播放鍵時,d2燈點(diǎn)亮,此時,電子琴系統(tǒng)處于自動播放內(nèi)置音樂狀態(tài)。此系統(tǒng)的功能顯示模塊如圖3.5所示。圖3.5 功能顯示模塊3.6 音樂播放裝置一般說來,單片機(jī)演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能像電子琴那樣能演奏出多種音色的聲音。因此單片機(jī)奏樂只需弄清楚兩個概念即可,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個音符唱多高的頻率,節(jié)拍表示一

34、個音符唱多長的時間。在音樂中所謂“音調(diào)”,其實(shí)就是我們常說的“音高”。在音樂中常把中央c上方的a音定為標(biāo)準(zhǔn)音高,其頻率f=440hz。當(dāng)兩個聲音信號的頻率相差一倍時,也即f2=2f1時,則稱f2比f1高一個倍頻程, 在音樂中1(do)與,2(來)與正好相差一個倍頻程,在音樂學(xué)中稱它相差一個八度音。在一個八度音內(nèi),有12個半音。以1i八音區(qū)為例,12個半音是:11、12、22、23、34、44,45、5一5、56、66、67、7i。這12個音階的分度基本上是以對數(shù)關(guān)系來劃分的。如果我們只要知道了這十二個音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。知道了

35、一個音符的頻率后,若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當(dāng)計時終止后就將p3.7反相,然后重復(fù)計時再反相。就可在p3.7引腳上得到此頻率的脈沖。為了讓單片機(jī)發(fā)出不同頻率的聲音,我們只需將定時器預(yù)置不同的定時值就可實(shí)現(xiàn)。利用at89c51的內(nèi)部定時器使其工作計數(shù)器模式(mode1)下,改變計數(shù)值th0及tl0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523hz,其周期t1/5231912s,因此只要令計數(shù)器計時956s/1s956,每計數(shù)956次時將i/o反相,就可得到中音do(523hz)。計數(shù)脈沖值與頻率的關(guān)

36、系式是: nfi2fr 式中,n是計數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12mhz時,其頻率為1mhz);fr是想要產(chǎn)生的頻率。其計數(shù)初值t的求法如下:t65536n65536fi2fr例如:設(shè)k65536,fi1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的計數(shù)值。t65536n65536fi2fr6553610000002fr65536500000/fr低音do的t65536500000/26263628中音do的t65536500000/52364580高音do的t65536500000/104665058單片機(jī)12mhz晶振,高中低音符與計數(shù)t0相關(guān)

37、的計數(shù)值如表2所示。表2 音符頻率表音符頻率(hz)簡譜碼(t值)音符頻率(hz)簡譜碼(t值)休止00中 4 fa69864820低1 do26263628中 5 so78464898低2 re29463835中 6 la88064968低 3 m33064021中 7 si98865030低 4 fa34964103高 1 do104665058低 5 so39264260高 2 re117565110低 6 la44064400高 3 m131865157低 7 si49464524高 4 fa139765178中 1 do52364580高 5 so156865217中 2 re587

38、64684高 6 la176065252中 3 m65964777高 7 si196765283我們要為這個音符建立一個表格,單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)。uint code tab=0,63628,63835,64021,64103,64260,64400,64524, 64580,64684,64777,64820,64898,64968,65030, 65058,65110,65157,65178,65217,65252,65283音符的節(jié)拍我們可以舉例來說明。在一張樂譜中,我們經(jīng)常會看到這樣的表達(dá)式,如1=c 、1=g 等等,這里1=c,1=g表示樂譜的曲調(diào), 、就是用來表示節(jié)

39、拍的。以為例加以說明,它表示樂譜中以四分音符為節(jié)拍,每一小結(jié)有三拍。比如:其中1 、2 為一拍,3、4、5為一拍,6為一拍,共三拍。1 、2的時長為四分音符的一半,即為八分音符長,3、4的時長為八分音符的一半,即為十六分音符長,5的時長為四分音符的一半,即為八分音符長,6的時長為四分音符長。一般說來,如果樂曲沒有特殊說明,一拍的時長大約為400500ms 。我們以一拍的時長為400ms為例,則當(dāng)以四分音符為節(jié)拍時,四分音符的時長就為400ms,八分音符的時長就為200ms,十六分音符的時長就為100ms??梢?,在單片機(jī)上控制一個音符唱多長可采用循環(huán)延時的方法來實(shí)現(xiàn)。首先,我們確定一個基本時長的

40、延時程序,比如說以十六分音符的時長為基本延時時間,那么,對于一個音符,如果它為十六分音符,則只需調(diào)用一次延時程序,如果它為八分音符,則只需調(diào)用二次延時程序,如果它為四分音符,則只需調(diào)用四次延時程序,依次類推。音樂的音拍,以一個節(jié)拍為單位(c調(diào)),如表3所示。 表3 曲調(diào)值表曲調(diào)值delay曲調(diào)值delay調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3/494ms調(diào)2/4250ms調(diào)2/4125ms通過上面關(guān)于一個音符音調(diào)和節(jié)拍的確定方法,我們就可以在單片機(jī)上實(shí)現(xiàn)演奏音樂了。具體的實(shí)現(xiàn)方法為:將樂譜中的每個音符的音調(diào)及節(jié)拍變換成相應(yīng)的音調(diào)參數(shù)和節(jié)拍參數(shù),將他們做成數(shù)據(jù)表格,存放在存儲器

41、中,通過程序取出一個音符的相關(guān)參數(shù),播放該音符,該音符唱完后,接著取出下一個音符的相關(guān)參數(shù),如此直到播放完畢最后一個音符,根據(jù)需要也可循環(huán)不停地播放整個樂曲。音樂播放裝置的工作原理:當(dāng)打開電子琴電源后,按下彈奏按鈕,再按下矩陣鍵盤任意鍵,揚(yáng)聲器發(fā)出對應(yīng)的單個音調(diào);若按下歌曲選擇按鈕,再按矩陣鍵盤任意鍵,揚(yáng)聲器便發(fā)出存儲在單片機(jī)內(nèi)的對應(yīng)的一段音樂。發(fā)聲裝置如圖3.6所示。圖3.6 發(fā)聲裝置4 系統(tǒng)軟件設(shè)計4.1 系統(tǒng)整體程序處理流程圖系統(tǒng)整體程序處理流程圖4.1所示。圖4.1 整體程序處理流程圖在電子琴開始工作時,系統(tǒng)默認(rèn)電子琴處于彈奏狀態(tài),歌曲選擇功能鍵的目的是賦予矩陣鍵盤第二功能,即對系統(tǒng)內(nèi)

42、置的歌曲進(jìn)行選擇,在放歌時能且只能通過彈奏/停止鍵來結(jié)束放歌,選歌時必須先按下歌曲選擇功能鍵,在通過矩陣鍵盤來選擇和切換曲目。4.2 i/o并行口直接驅(qū)動led顯示把“at89c51”區(qū)域中的p2.0/a8p2.7/a15端口用8芯排線連接到一位數(shù)碼管的ah端口上;要求:p2.0/a8與a相連,p2.1/a9與b相連,p2.2/a10與c相連,p2.7/a15與h相連。表1 字形碼表及對應(yīng)的音符00x3f低 5 so80x7f中 6 la10x06低 6 la90x6f中 7 si20x5b低 7 sia0x77高 1 do30x4f中 1 dob0x7c高 2 re40x66中 2 rec0

43、x39高 3 m50x6d中 3 md0x5e高 4 fa60x7d中 4 fae0x79高 5 so70x07中 5 sof0x71高 6 la在本設(shè)計中,數(shù)碼管的顯示通過 p2=dsy_codek這句語言來查表并輸出,實(shí)現(xiàn)音符的顯示。4.3音樂播放設(shè)計在音樂播放程序中用到了兩個定時/計數(shù)器。其中t0用來產(chǎn)生音符頻率,t1用來產(chǎn)生音拍。音樂播放流程圖如圖4.2所示。圖4.2 音樂播放流程圖4.4放歌子程序流程圖放歌子程序流程圖如下圖4.3所示。圖4.3 放歌子程序流程圖該程序?qū)崿F(xiàn)的是單首曲目循環(huán)播放,無法在程序內(nèi)部實(shí)現(xiàn)歌曲的切換。只能通過外部功能鍵來實(shí)現(xiàn)曲目及功能的切換,是該電子琴設(shè)計的一個

44、缺憾。相信如果有更多的時間來進(jìn)行調(diào)試和設(shè)計,這個設(shè)計會更加好。5 系統(tǒng)使用說明5.1 系統(tǒng)安裝及配置說明5.1.1系統(tǒng)運(yùn)行環(huán)境支持proteus和keil u v3運(yùn)行的操作系統(tǒng)為:windows 98/me/2000/xp,該軟件對pc硬件要求不高,當(dāng)前主流機(jī)器配置都可以滿足它的運(yùn)行要求,本系統(tǒng)所實(shí)用安裝軟件為proteus 7.4,實(shí)驗(yàn)過程中該軟件運(yùn)行流暢,反應(yīng)迅速。5.1.2系統(tǒng)安裝及配置步驟一:安裝proteus軟件。步驟二:安裝keil軟件。步驟三:keil和proteus的配置因?yàn)槔胟eil和proteus的結(jié)合可以搭建我們自己的仿真平臺,所以我們還需要安裝vdmagdi.exe

45、驅(qū)動。為了讓系統(tǒng)運(yùn)行起來,我們需要做一些配置工作,具體工作如下:(1)首先啟動proteus,打開要仿真的工程文件,然后配置proteus軟件,選擇“debug”“use remote debug monitor”。(2)調(diào)出編輯at89c51屬性的對話框,將其程序文件設(shè)置為空。(3)keil uv3的設(shè)定,首先啟動proteus仿真項(xiàng)目對應(yīng)的keil中的工程。(4)在工程工作區(qū)選中“target1”,并右擊選中“options for target target1”。選中“output”中“creat hex fi”和“debug”中“use remote debug monitor”。5.

46、2 系統(tǒng)操作說明熟悉keil集成開發(fā)環(huán)境和proteus仿真軟件的使用,完成兩個軟件的聯(lián)機(jī)調(diào)試。6 結(jié)論將程序?qū)隺t89c51芯片,調(diào)試成功后,可任意彈奏自己想要的旋律。本課題通過制作電子琴,將幾個模塊很好的融合起來,對使用單片機(jī)設(shè)計簡易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。說明一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,于是我們可以利用單片機(jī)的定時/計數(shù)器t0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)

47、系弄正確即可,然后我們利用功放電路來將音樂聲音放大,同時通過顯示模塊來確知自己所彈的音符。通過這次課程設(shè)計,我感覺收獲了很多:首先,通過實(shí)踐,加深對單片機(jī)系列知識及其系統(tǒng)的認(rèn)識。這個設(shè)計題目并不是新的,但從中能體現(xiàn)到一個系統(tǒng)開發(fā)設(shè)計的過程,足于讓我們受益。第二,通過設(shè)計學(xué)習(xí)到了很多軟件的使用。本次設(shè)計,軟件部分用到了protues進(jìn)行硬件設(shè)計,用keil進(jìn)行程系編譯,用protel進(jìn)行制板。第三,提高了自己的動手能力。動手在一定程度上反映了一個人的能力,作為當(dāng)代大學(xué)生,社會要求的我們不是只能說而不能做的人才;作為安徽財經(jīng)大學(xué)的一員,“三能”人才標(biāo)準(zhǔn)更讓我清醒地認(rèn)識到,實(shí)際動手能力無比重要。從這

48、次實(shí)物制作中,我的動手能力提高了。感謝我們的朱老師教育了我們單片機(jī)相關(guān)知識。 本設(shè)計還可以擴(kuò)展其他功能,比如記憶功能,即可以存儲彈奏者所彈奏的音樂且保存,待彈奏完后播放給彈奏者聽。還可以做得更加娛樂一點(diǎn),增加一些彩燈使彩燈隨著音調(diào)變化而產(chǎn)生不同的樣式。參考文獻(xiàn)1 徐惠民,安德寧.單片微型計算機(jī)原理、接口及應(yīng)用.第二版 m, 北京:北京郵電大學(xué)出版社,20002 劉樂喜.微機(jī)計算機(jī)接口技術(shù)及應(yīng)用.華中科技大學(xué)出版社.2005.083 謝嘉奎.電子線路(線性部分).高等教育出版社.2004.044 潭浩強(qiáng).c語言程序設(shè)計.清華大學(xué)出版社.2005.075 李群芳,肖看.單片機(jī)原理、接口及應(yīng)用嵌入式

49、系統(tǒng)技術(shù)基礎(chǔ).清華大學(xué)出版社.2005.036 馮博琴.微型計算機(jī)原理與接口技術(shù).清華大學(xué)出版社.20047 長德,李華,李東.mcs51/98系列單片機(jī)原理與應(yīng)用.機(jī)械工業(yè)出版社.19978 李群芳,張士軍,黃建.單片微型計算機(jī)原理與接口技術(shù).電子工業(yè)出版社.20029 石東海等.單片機(jī)數(shù)據(jù)通信技術(shù)從入門到精通.西安電子科技大學(xué)出版社.200210 馮建華,趙亮編.單片機(jī)應(yīng)用系統(tǒng)設(shè)計與產(chǎn)品開發(fā)m. 北京:人民郵電出版社,2004.1111 劉午平,幸坤濤.小家電與洗衣機(jī)修理從入門到精通m.北京:國防工業(yè)出版社,2004.6.12 王曉明.電動機(jī)的單片機(jī)控制m.北京:航天航空大學(xué)出版社,200

50、2.513 曾璐,李明.基于at89c52單片機(jī)的洗衣機(jī)智能控制系統(tǒng)j. 家電科技, 2007.0214 傅豐林,陳建編.低頻電子線路m.北京:高等教育出版社,200615 蔣力培.單片微機(jī)系統(tǒng)實(shí)用教程 m.北京:機(jī)械工業(yè)出版社, 2004致謝值此論文完成之際,謹(jǐn)向給予我指導(dǎo)、關(guān)心和幫助的老師、同學(xué)、朋友、親人表示最衷心的感謝。首先,要特別感謝我的指導(dǎo)老師朱其祥老師。 老師在我畢業(yè)論文的撰寫過程中,給我提供了極大的幫助和指導(dǎo)。從開始選題到中期修正,再到最終定稿, 老師給我提供了許多寶貴建議。老師淵博的專業(yè)知識,嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作作風(fēng),誨人不倦的高尚師德,樸實(shí)無華、平易近人的人格魅力

51、對我影響深遠(yuǎn)。不僅使我樹立了遠(yuǎn)大的學(xué)術(shù)目標(biāo)、掌握了基本的研究方法,還使我明白了許多待人接物與為人處世的道理。其次,要感謝所有曾經(jīng)給我們071信工0班任課的老師,老師們教會我的不僅僅是專業(yè)知識,更多的是對待學(xué)習(xí)、對待生活的態(tài)度。第三,感謝我的父母親,你們是我力量的源泉,只要有你們,不管面對什么樣的困難,我都不會害怕,謝謝你們對我的支持與鼓勵!再次,感謝我的室友及其他好友,因?yàn)橛心銈兊膸椭?,我的論文得以順利完成。感謝你們,大學(xué)四年給我了那么多的幫助與鼓勵,在我不開心的時候,總能讓我開心起來。不會忘記,大學(xué)四年里我們一起度過的歡樂時光,那些開心的日子,總是那么令人難以忘懷。最后對老師,同學(xué)和家人再次

52、致以我最衷心的感謝!教導(dǎo)過我的老師,你們的人格魅力永記我心間。身邊的同學(xué)和朋友,有你們,我的大學(xué)才算完整。寢室的好友,你們的天賦猶如上天恩賜,有了你們我的生活更加精彩。感謝那些同做畢業(yè)設(shè)計的戰(zhàn)友,那段光輝歲月不管成敗,友情最可貴。附錄本設(shè)計完整程序如下:#include #include #include #include #define uchar unsigned char#define uint unsigned intuchar sth0; /定時器計數(shù)初值uchar stl0; bit fy=0; /放樂曲時fy=1, 電子琴彈奏時fy=0uchar song_index=0,ton

53、e_index=0; /放音樂的參數(shù)uchar k, key;sbit spk=p37;sbit led1=p10;sbit led2=p11;uchar code dsy_code= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;uchar code song100= /任意選幾首音樂的旋律10,16,10,9,10,9,10,10,9,6,8,10,9,9,8,6,8,9,10,12,9,10,13,12,5,9,8,9,8,6,8,9,10,12,9,10,13,12,

54、10,9,10,9,8,12,13,10,6,10,9,9,8,10,12,15,12,13,12,13,12,10,10,12,12,10,12,13,15,16,15,12,10,9,12,10,10,10,12,15,12,13,15,16,15,12,10,12,15,13,10,-1,8,9,10,8,8,9,10,8,10,11,12,10,11,12,12,13,12,11,10,8,12,13,12,11,10,8,8,12,8,8,12,8,-1,3,2,1,3,2,1,1,2,3,2,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,1,1,-1,10,10,10,9,10,9,10,9,9,6,6,7,8,9,8,7,6,5,6,-1,10,10,10,9,10,13,12,13,12,12,9,9,10,11,12,11,10,9,8,10,10,-1,13,14,13,12,12,10,12,10,12,9,13,12,10,9,10,10,-1,9,13,13,13,8,13,13,13,13,14,15,14,13,14,13,14,10,10,-1,13,14,13,12,12,10,12,10,12,13,14,13,14,13,14,10,-1,9,13,13,13,8,13,13,13,

溫馨提示

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

評論

0/150

提交評論