單片機簡易電子琴的設計_第1頁
單片機簡易電子琴的設計_第2頁
單片機簡易電子琴的設計_第3頁
單片機簡易電子琴的設計_第4頁
單片機簡易電子琴的設計_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

...wd...單片機的簡易電子琴的設計本設計核心內容是關于基于AT89C51單片機的簡易電子琴設計。系統由單片機AT89C51、獨立鍵盤模塊、功率放大模塊、揚聲器、數碼管所組成。其軟件局部主要有主程序模塊、播放模塊、按鍵模塊、顯示程序。本設計首先要對AT89C51單片機有一定的認識,繼而按照電子琴功能制作出硬件電路并編寫源程序,最后對其進展仿真調試。系統帶有10個獨立按鍵,其中8個獨立按鍵分別代表8個音符,8個按鍵每個按鍵在數碼管也會對應一個字符來指示用戶所按下的按鍵,還有兩個為功能按鍵按鍵。同時本系統還帶有一個存儲播放音樂的功能,使用者可以通過按下功能按鍵來播放存儲的歌曲,系統會把用戶程序內存儲的音符進展播放,在自動播放的過程中如果按下另外一個功能按鍵則中斷播放歌曲。本次設計的主要優點有硬件電路構造簡單易實現,電子琴所需功能根本具備,系統穩定可靠.關鍵詞:at89c51,電子琴,彈奏

目錄TOC\o"1-3"\h\uHYPERLINK1緒論4HYPERLINK1.1單片機背景4HYPERLINK1.2單片機電子琴應用5HYPERLINK2電子琴方案設計6HYPERLINK2.1設計要求6HYPERLINK2.2電子琴設計方案6HYPERLINK3硬件設計8HYPERLINK3.1單片機8HYPERLINK3.1.1AT89C51簡介8HYPERLINK3.1.2主要的功能特性8HYPERLINK3.1.3I/O端口介紹8HYPERLINK3.1.4定時/計數器的應用8HYPERLINK3.2按鍵設計10HYPERLINK3.3LED數碼管10HYPERLINK3.3.1數碼管的驅動方式10HYPERLINK3.3.2數碼管的選擇11HYPERLINK3.4揚聲器12HYPERLINK4軟件設計14HYPERLINK4.1程序流程圖14HYPERLINK4.2程序語言的選擇14HYPERLINK5仿真調試16HYPERLINK5.1Proteus簡介16HYPERLINK5.2keil簡介與教程16HYPERLINK5.3利用keil與Proteus進展的調試19HYPERLINK6總結與展望22HYPERLINK附錄25HYPERLINK附錄1主要電路原理圖25HYPERLINK附錄2主要程序251緒論1.1單片機背景單片機是經典的嵌入式微控制器〔MicrocontrollerUnit〕,縮寫為MCU,最早是被利用于工業控制領域。因為在工業控制領域單片機有著廣泛的應用,所以誕生了單片機開發板這樣的系統使更多的產品開發人員、業內人士、學生來學習單片機這門技術,其中比照知名的單片機開發板有電子人DZR-01A。單片機是從芯片內部僅有的特殊處理器開展起來的,它最開場的設計思路是將CPU與大量的外圍設備通過一個微處理器集成在一起,從而使得計算機系統變得更迷你,組裝到繁雜的且對體積要求比照小的控制裝備之中更簡單。Zilog公司的Z80便是最早使用這種設計思想做出來的的cpu,自此以后,單片機和計算機CPU的開展便成為了兩個不同的方向。早期的單片機都是8位或4位的,當中做的最好的是英特爾的8031,因為簡單穩定和不錯的性能而獲得了廣闊好評。此后,英特爾又在8031的根基上開展出了MCS-51系列的單片機系統。由于這一單片機系統的簡單可靠,直到現在還在被人們廣泛的使用。隨著技術的開展,工業控制領域的要求越來越高,便出現了16位單片機,但是因為性價比不高所以沒有得到大量的應用。隨著電子消費產品的大開展,單片機技術在90年代后也得到了很大提升。隨著英特爾i960系列和ARM系列的廣泛應用,16位單片機的高端地位也被32位單片機迅速取代,自此32位單片機進入主流市場。同時傳統的8位單片機性能也得到了很大的提升,比80年代的處理能力提升了數百倍。現在,高端的32位單片機主頻已經超越了300MHz,其性能已經相當于90年代中期的專用處理器,而其價格也降低了很多,普通的型號出廠價格只需1美元,最高端的型號的單片機也只要10美元。現在的單片機系統已經不是只在裸機環境下使用和研發,單片機開場廣泛應用海量的專用的嵌入式操作系統。甚至有些作為手機和掌上電腦核心處理的高端單片機已經可以直接應用專用的Windows操作系統和Linux操作系統。對于嵌入式系統來說,單片機比專用處理器更加適合應用,所以它在這方面得到了最多的應用。事實上,單片機這一計算機類別是世界上數量最多的計算機,因為它出現在現代人類生活中所用的幾乎所有機械與電子產品中。電子玩具、家用電器、計算器、、手機、掌上電腦以及鼠標等電腦配件中都會配有1-2塊單片機,個人電腦中也會擁有不少數量的單片機在運作。普通汽車上都會裝備40多塊單片機,而復雜龐大的工業控制系統中甚至會發生數百塊單片機同時運行的情況!單片機相當于把一個復雜的計算機系統濃縮到一個微小的芯片上,它計算機相比只缺少了輸入/輸出設備,所以可以把它看作一個微型的計算機。可以概況的講成:一塊相當于一臺計算機的芯片。它的質量輕、體積小、價格廉價、為開發、應用和學習提供了便利條件。所以,如果你想要了解計算機原理與構造,那么學習使用單片機是最簡單的選擇。1.2單片機電子琴應用而電子琴是大規模集成電路和音樂結合的產物,它因為能模擬各種樂器的音色而受到群眾們喜愛。本設計制作了一種除了有普通電子琴彈奏功能外,還擁有一種存儲播放樂曲功能。本設計是以AT89C51單片機作為一個簡單電子琴系統設計的核心部件,其原理是因為每個表有固定的振動頻率,所以可以利用89C51單片機內部的定時/計數器改變計數值來產生各個音調對應的方波頻率來驅動揚聲器播放出不同音調。這僅僅只是單片機應用的一個點,希望能由點到面,更好的了解和應用單片機技術。2電子琴方案設計2.1設計要求利用AT89C51單片機作為主要控制元件設計一個簡單按鍵式的電子琴系統。要求可以彈奏出8種根本的音調,包括中音段的Do、Re、Mi、Fa、SO、La、Si全部音符和高音Do,彈奏鍵盤的同時揚聲器會產生當前的播放音調,數碼管會顯示出所對應的數字,以便于培養樂感。而且要有一個功能按鍵,按下此按鍵可以自動播放已存儲的歌曲,在自動播放的過程中如果按下停頓鍵則中斷播放歌曲,另外還可適當調節音量的大小。2.2電子琴設計方案電子琴的硬件總體設計框架和系統思路擬采用以下模塊構造,如圖1所示。數碼管數碼管主控模塊主控模塊單片機鍵盤功率放大模塊鍵盤功率放大模塊獨立按鍵〔存儲播放〕獨立按鍵〔存儲播放〕揚聲器圖1系統構造框圖系統由AT89C51單片機、獨立鍵盤、音頻功率放大模塊、揚聲器、數碼管、存儲播放模塊所組成。鍵盤模塊的8個彈奏按鍵分別代表8個音調,使用者按下每個按鍵,單片機就會產生每個音調對應頻率的方波,并且通過音頻功率放大模塊驅動揚聲器發出對應的聲音。用戶按下每個彈奏按鍵時,數碼管也會將每一個對應字形顯示出來。這個電子琴系統還設有存儲播放功能,當用戶按下功能按鍵來切換到特定播放音樂模式時,單片機就會把用戶事先存儲好的樂曲進展播放,在自動播放的過程中如果按下停頓鍵則中斷播放歌曲。本次設計采用AT89C51單片機的兩個定時器〔如T0,T1〕控制頻率,在P1.0引腳上輸出方波周期信號,產生聲音,按下不同的模擬按鍵就會產生不同的音符,所以使用者可以通過本電子琴系統暢所欲為的彈奏自己想要彈的樂曲。因為一首樂曲是由許多不同的音調組成的,而每個音調都有其一一對應著的不同頻率,所以需要組合各個不同的頻率來構成所想要得到的歌曲了。但是對于單片機來說,想要產生不同的頻率非常便捷,因為如果單片機某個引腳輸出的上下電平的頻率和某個音調的頻率一樣,那么在此引腳接上揚聲器就可以發出和此音調一樣的聲音,所以在單片機上想要產生規定頻率的方波信號只要先在某一口線輸出高電平,接著延遲一小段時間輸出低電平,這樣重復循環的輸出信號就會產生一個規定頻率的方波,簡單來說就是通過定時/計數器T0改變輸出信號延遲的時間來改變輸出方波的頻率。因此,想要通過單片機得到一個音調,只要找到這個音調對應頻率即可。而播放歌曲局部,需要在編程的時候將每一音調的時間常數作為一組,延時節拍常數再作為一組,將樂曲中的所有常數按照固定順序排列成一個表,通過循環語句依次播放,就能產生具有一定節奏的音調,就可以實現播放歌曲了。3硬件設計3.1單片機3.1.1AT89C51簡介AT89C51是一種閃速存儲器,內置的高性能CMOS微處理器芯片具有低電壓、低功耗的特點,在其內置的通用的Flash和8位CPU的幫助下,使其功能非常的強大。89c51是用靜態邏輯設計的,跟8051相比,它還帶有省電模式,即休閑方式和掉電方式。它用FlashROM替換了ROM/EPROM,但是芯片外部引腳和指令系統卻是與早期的8051/8751/8031完全兼容。由于內部使用了FlashROM,單片機的開發及應用就別以前更加簡單了。外形及引腳排列如圖2所示。3.1.2主要的功能特性4K字節可編程閃爍存儲器與MCS-51兼容壽命:1000寫/擦循環數據保存時間:10年全靜態工作:0Hz-24Hz三級程序存儲器鎖定128*8位內部RAM32可編程I/O線兩個16位定時器/計數器5個中斷源可編程串行通道低功耗的閑置和掉電模式片內振蕩器和時鐘電路圖2AT89C513.1.3I/O端口介紹P0口:每一個P0接口引腳可以承受8個TTL門電流。它的工作原理是當更改P0口的管腳電平,當P0口的管腳的電平被改寫為1的時候,此時P0口的輸出狀態就被定義為高阻輸出。如果通過端口對單片機的Flash進展編程的時候,P0接口可以作為一個源代碼的輸入端口,就相當于輸入端,而在對單片機的Flash進展校驗的時候,P0接口可以作為一個源代碼的輸出端口,此時P0端口的外部必須接一個上拉電阻。除此之外,P0端口還能夠外部程序數據的儲存器,這時P0引腳的作用與之前的有所不同,其功能被重新定義為數據地址的低8位。P1口:P1口作為一個其內部自帶上拉電阻的一個8位的雙向I/O接口,可以作為一個緩沖器來使用,當它作為緩沖器的時候能夠承受4個TTL門電路的電流緩沖器。而當P1口的管腳的電平被改寫為1的時候,其內部的電平也跟著被拉高,而這個時候,P1口可以作為輸入口來輸入電流。相反,如果當P1口的管腳的電平被改寫為0的時候,P1口可以作為輸出口來輸出電平,這是因為其內部上拉的緣故。P1口還有一種功能就是作為低八位地址接收數據,而在實現這個功能時只有在內部的Flash在進展編程和校驗。P2口:P2口的作用根本和P1口一樣,其內部和P1口一樣,也是一個自帶上拉電阻的8位雙向I/O接口,同樣也可以作為一個緩沖器來使用。與P1口不同的是,P2口在作為緩沖器的時候能夠同時承受或輸出4個TTL門電路的電流緩沖器。跟P1一樣,當P2口的管腳的電平被改寫為1的時候,其內部的電平也跟著被拉高,而這個時候,P2口就作為輸入口來輸入電流。相反,如果當P2口的管腳的電平被改寫為0的時候,P2口就作為輸出口來輸出電平。P3口:P3口管腳的內部也集成了8個同樣擁有上拉電阻功能的雙向I/O接口。其功能大致與P2口、P1口一樣,能夠同時承受或者輸出4個TTL門電流。當P3口的電平被改寫為高電平的時候,其內部的電平會在其內部上拉電阻的作用下變成高電平,當P3口的電平被改寫成低電平的時候,內部電平也被下拉為低電平,這時候的P3口將輸出ILL電流。P3口也可作為特殊功能口,如下所示:

P3.0串行輸入口

P3.1串行輸出口

P3.2外部中斷0

P3.3外部中斷1

P3.4T0外部輸入

P3.5T1外部輸入

P3.6外部數據存儲器寫選通

P3.7外部數據存儲器讀選通3.1.4定時/計數器的應用AT89C51單片機內部有兩個定時/計數器,它們實際上是個16位加1計數裝置。它對片內振蕩器輸出的脈沖計數時稱為定時器,對外部脈沖信號計數時稱為計數器。當對單片機片內振蕩器輸出的脈沖計數時,每隔一個機器周期定時器就加1計數值,當計數值計滿溢出時計數完畢并通知單片機。改變AT89C51的定時器里面的特殊功能存放器TH0及TL0在模式1下的計數值,便會產生不同方波頻率,然后通過揚聲器產生對應的音調。例如,需要頻率為1046Hz時,其周期為T=1/1046=956μs,因此只要令定時/計數器計數956/2=478次,相應的取反輸出也是478次,就可得到高音DO〔1046Hz〕。

脈沖計數值與頻率的關系式為:QUOTE〔3-1〕此式中,N是計數值;fi是單片機計數頻率〔采用12MHz晶振時,經12分頻后其輸出頻率為1MHz〕;fr為所需要轉換的頻率。其計數初值T的求法如下:〔3-2〕公式中K為單片機的定時/計數器在模式1下的最大計數值,即K=2^16=65536;所以可以根據這個公式算出T值:〔3-3〕例如,中音DO的fr為523,那么它的計數值就為T=65536-500000/523=64580QUOTE從網上查閱到各音調對應的頻率,并通過計算解出T值,最后得到下表:表SEQ表\*ARABIC1各音調頻率〔HZ〕與計數值T的對照表音調頻率T值中1DO52364580中2RE58764633中3MI65964732中4FA69864820中5SO78464898中6LA88064968中7SI96865030高1DO104665058所以可設置定時器初值變化以產生相應頻率的定時unsignedcharcodeyinfu[]={0xfb,0xe9,//Do0xfc,0x5c,//Re0xfc,0xc1,//Mi0xfc,0xef,//Fa0xfd,0x45,//So0xfd,0x92,//La0xfd,0xd0,//Si0xfd,0xee,//Do#0x00,0x00//音調間的間隔}而歌曲的節拍局部,采用了一個15MS的延時,對它進展循環來到達節拍的作用。3.2按鍵設計本設計共含有10個按鍵,其中8個按鍵分別接著P2.0~P2.7引腳,代表著8個音符。當按下這八個按鍵其中一個按鍵時,數碼管也會顯示一個與音調對應的數字來指示用戶所按下的按鍵。而另外兩個按鍵為功能按鍵,按下可播放已存儲的歌曲,另一個按下可中斷播放音樂。這兩個功能按鍵連接著的引腳分別是P3.2、P3.3。如圖3所示。圖3鍵位圖3.3LED數碼管3.3.1數碼管的驅動方式假設要使數碼管正常發光,就必須使用驅動電路來驅動數碼管的各段發光二極管,然后通過不同的組合得到想要的數字。而數碼管的驅動方式又可以分為兩種,分別是靜態式和動態式。

①靜態顯示驅動:靜態驅動也被叫作為直流驅動。直流驅動是指每一段數碼管都由一個單片機的輸入/輸出接口執行驅動,也可以用像BCD碼二-十進制譯碼器這樣的譯碼執行驅動。直流驅動的優點是二極管發光高而穩定,編寫程序容易,缺點為占用輸入/輸出接口多,比方要驅動四個數碼管靜態顯示就需要4×8=32根輸入/輸出端口來驅動〔一個89C51單片機的輸入/輸出接口也就才32個!〕,所以一般實際應用時都是以增加譯碼器來驅動,以防止單片機的I/O端口不夠用這個為難局面。

②動態顯示驅動:在單片機應用中數碼管的顯示方式普遍采用動態顯示,動態顯示驅動是將數碼管的"a,b,c,d,e,f,g,dp"8個字段的同極端都連接在一起,并且為數碼管的公共極增加一個位選通控制電路,位選通控制電路由本身獨立的輸入/輸出口線控制,當全部數碼管都接收到經由單片機控制輸出的數字時,控制數碼管顯示的數字是取決于單片機對位選通控制電路接地端電路的控制,因此需要某個數字的時候,只要將該位數碼管的位選通開啟就會亮,而沒有開啟位選通的數碼管字段就不會亮。通過對各個數碼管的接地端的分時輪流控制,各個數碼管也會被分時輪流受控顯示數碼管狀態,這就是動態顯示驅動。在動態驅動過程中,每段數碼管的亮燈時間為1~2ms,因為發光二極管的余暉效應與人的視覺暫留現象,所以各段數碼管盡管實際上并非是同時點亮,但只要給出非常快的速度來掃射,人們所看到的東西就是一組穩定的數據,而且不會出現一閃一閃的感覺,所以動態顯示實際上出來的成效和靜態顯示是差不多的,還能夠節省很多的輸入/輸出端口。3.3.2數碼管的選擇通過以上了解,由于本次畢業設計需要的單片機I/O端口不多,所以數碼管顯示方式采用了靜態顯示驅動,數碼管將直接由單片機I/O端口驅動,又因為LED數碼管是電流控制元件,所以使用時要上一個加限流電阻。數碼管顯示是通過單片機查表得出編碼,然后單片機再驅動端口決定數碼管顯示的數字,按鍵與數碼管顯示程序的一致性就是這么實現的。連接在P0.1-P0.3,4個引腳上,并加一個排阻。如圖4所示。圖4數碼管與單片機的連接圖

3.4揚聲器揚聲器采用兩個三極管來放大音頻,串連著一個可調節電阻,用來調節聲音大小,整個模塊由單片機P1.0引腳控制。如圖5所示圖5揚聲器的連接圖4軟件設計4.1程序流程本設計的根本流程是對初始化的單片機進展鍵盤掃描,判斷其有無按鍵按下,假設有則需要繼續判斷按鍵的類別,判斷它是功能選擇鍵還是獨立鍵盤上的音調鍵,假設是獨立鍵盤,則通過P1.0發生頻率播放音調,通過P0顯示數碼管數字。假設是功能選擇鍵,則播放程序儲存好的音樂歌曲,然后檢測是否按下中斷鍵,假設是則停頓播放,不是則一直播放到完畢。程序流程圖如圖6。初始化初始化鍵盤掃描有無鍵按下播放音符,顯示數字送入P0,P1.0P0,P1.0播放音樂,顯示數字功能選擇鍵鍵值獨立鍵盤鍵值Y識別按鍵N中斷鍵停頓播放YN圖6程序流程圖4.2程序語言的選擇對于匯編語言來說,它是面向特定機型的需要,在不同的計算機指令系統上和不同的微控制器上,指令構造有著云泥之別,就算指令大同小異,它也不能夠移植。一條指令就對應一個機器碼,每一步執行什么動作都很清楚,并且程序大小和堆棧調用情況都容易控制,調試起來也比照方便。掌握匯編語言程序并不簡單,因為它需要讀透各個存放器的說明以及微控制器的指令手冊。簡而言之,匯編語言的優點就是編寫代碼實時性強,程序執行效率高,缺點是不簡潔,可讀性差,移植性差。對于C語言來說,它是一種高級語言,可以構造化編程,還可以移植。使用標準C語言的程序編程,完全可以不作任何修改就能夠移植到不同的系統平臺上。標準C語言在嵌入式等的微控制芯片上也很少需要修改,而且程序上手簡單,內容易懂。總的來說,C語言編寫程序構造清晰明了,具有很好的移植性,也很容易進展維護和修改。基于以上比照,本設計系統更適合C語言來進展編程。5仿真調試5.1Proteus簡介Proteus(海神)的ISIS是一款Labcenter出品的EDA工具軟件,可以仿真各種EDA工具軟件的電路和IC,并支持仿真單片機及其外圍器件,元件庫齊全,使用簡單,是不可多得的專業的單片機軟件仿真系統。

Proteus具備普遍EDA工具軟件的功能,比方:1.原理布圖2.PCB自動或人工布線3.SPICE電路仿真革命性的特點1.互動的電路仿真用戶甚至可以實時采用諸如ROM,RAM,馬達,鍵盤,LCD,LED,AD/DA,局部IIC器件,局部SPI器件。2.仿真處理器及其外圍電路由于PROTEUS能夠進展仿真調試,擁有著實驗室無法比照的元器件庫,因而也成為了學生們課程設計、畢業設計的一款重要軟件,同時也培養學生實踐與創造精神。5.2keil簡介與教程單片機開發過程中除了要畫硬件電路圖外,程序編譯也是它必不可少的一個環節,所以在這里往往需要使用到將源程序轉換為機器碼傳送給單片機的匯編軟件。隨著科學技術的進步,像C語言、C++這樣的高級語言也漸漸地代替了匯編語言的作用,單片機程序編譯的軟件也在一直進步,Keil便是現在最普遍使用的MCS-51單片機程序編譯的軟件。Keil具有一個全面的開發環境,其中包括宏匯編、實時操作系統、C編譯器、工程管理器、庫管理和調試器等等功能。Keil幾乎是使用C語言編程的不二之選,即使使用的不是C語言,而是利用用匯編語言來編程,其簡單易用的集成系統和實用的軟件仿真調試工具也會讓你事半功倍。KEIL使用教程如下:第一步,翻開下載完成的KEIL軟件。如圖7圖7第二步,選擇菜單欄上的project的newproject,然后命名并選擇自己想要保存電腦哪個文件夾的位置,如圖8圖8第三步,在Atmel里面選擇AT89C51,并點擊確定,如圖9圖9第四步,選擇菜單欄里File的Newfile,另存文件的時候文件名名后綴需加.c,如圖10圖105.3利用keil與Proteus進展的調試使用步驟:翻開keil,建設工程,輸入程序編譯和生成hex文件,如圖11所示圖11keil編譯3.翻開Proteus,設計硬件電路圖,見圖12圖12硬件電路圖4.導入hex文件,見圖13圖8-3導入hex文件將鼠標放在單片機上,右擊然后選擇編輯屬性,接著就會彈出圖13中的對話框,再尋找需要的HEX文件位置,比方圖中導入dzq.hex文件。5.點擊面板左下角的,開場調試6總結與展望本設計利用AT89C51單片機設計一個簡易電子琴,具備電子琴的根本功能,分析了利用單片機簡易電子琴設計的根本原理,并介紹了AT89C51單片機設計的電子琴統硬件系統。改變AT89C51的定時器里面的特殊功能存放器TH0及TL0在模式1下的計數值,便會產生不同方波頻率,然后通過揚聲器產生對應的音調。最終將編寫的源程序轉換為機器碼導入單片機芯片,仿真調試運行后,就可以實現利用按鍵彈奏想要的歌曲。附錄附錄1主要電路原理圖附錄2主要程序#include"reg51.h"#defineshumaguanP0//定義數碼管段碼輸出sbitLED=P1^1;sbitSPK=P1^0;sbitK1=P3^2;sbitK2=P3^3;//定義方波輸出口unsignedinttone1,tone2;/*****標準音符表*****///用于使定時器初值變化以產生相應頻率的定時unsignedcharcodeyinfu[]={0xfb,0xe9,//Do0xfc,0x5c,//Re0xfc,0xc1,//Mi0xfc,0xef,//Fa0xfd,0x45,//So0xfd,0x92,//La0xfd,0xd0,//Si0xfd,0xee,//Do#0x00,0x00//音符之間的間隔,只要間隔時間小于65ms時,//喇叭不會發出聲音,用作拍子之間的短暫停頓};/*****生日快樂歌音調表*****/unsignedcharcodeshengri_tone[]={1,0,1,2,1,4,3,0,1,0,1,2,1,5,4,0,1,0,1,8,6,4,3,2,0,7,0,7,6,4,5,4,0//0代表不發聲,即停頓;數字即為音調};/*****生日快樂歌節拍表*****/unsignedcharcodeshengri_beat[]={24,1,24,48,48,48,72,5,24,1,24,48,48,48,72,5,24,1,24,48,48,48,48,72,5,24,1,24,48,48,48,72,5//節拍,即tone表各音調的延時};/*****15ms延時子程序,用于節拍*****/voiddelay(void){unsignedcharn=15;while(n--){unsignedchari;for(i=0;i<125;i++);}}/*****定時器0初始化*****/voidinitTimer(void){TMOD=0x01;//定時器0,工作方式1;定時器1,工作方式1TH0=tone1;TL0=tone2;}/*****定時器0中斷服務程序*****/voidtimer0(void)interrupt1{TH0=tone1;TL0=tone2;SPK=~SPK;//取反,以產生方波}/*****演奏子程序1*****/voidplay1(void){ unsignedcharm=0;unsignedchars;unsignedchara=1;while(1){EA=0;LED=0;a=shengri_tone[m];//取音符shumaguan=a;s=shengri_beat[m];//取節拍tone1=yinfu[2*a-2];tone2=yinfu[2*a-1];

溫馨提示

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

評論

0/150

提交評論