基于51單片機(jī)的電子琴設(shè)計_第1頁
基于51單片機(jī)的電子琴設(shè)計_第2頁
基于51單片機(jī)的電子琴設(shè)計_第3頁
基于51單片機(jī)的電子琴設(shè)計_第4頁
基于51單片機(jī)的電子琴設(shè)計_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、摘 要隨著社會的發(fā)展進(jìn)步,音樂逐漸成為我們生活中很重要的一部分,有人曾說喜歡音樂的人不會向惡。我們都會抽空欣賞世界名曲,作為對精神的洗禮。本論文設(shè)計一個基于單片機(jī)的簡易電子琴。 電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)融入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內(nèi)容是用AT89C51單片機(jī)為核心控制元件,設(shè)計一個電子琴。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有8個按鍵和揚(yáng)聲器。本系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價

2、比較高,具有一定的實(shí)用和參考價值。 關(guān)鍵詞:AT89C51單片機(jī);數(shù)碼管;電子琴目錄1 系統(tǒng)方案設(shè)計11.1 設(shè)計指標(biāo)11.2 系統(tǒng)方案綜述11.3 系統(tǒng)設(shè)計思路12 硬件設(shè)計22.1 電路圖22.2 單片機(jī)AT89C51簡介22.3 單片機(jī)的工作過程42.4 鍵盤電路52.5 顯示電路52.6 聲音電路73 系統(tǒng)軟件設(shè)計73.1延時程序設(shè)計93.2定時器初始化及其中斷函數(shù)93.3示例音樂播放程序103.4單獨(dú)按鍵中斷處理函數(shù)104 實(shí)驗(yàn)結(jié)果與分析104.1 Proteus軟件簡介104.2仿真調(diào)試125 設(shè)計心得136 參考文獻(xiàn)14附錄15附錄A 元件清單、器件識別與檢測15附錄B

3、 程序源代碼161 系統(tǒng)方案設(shè)計1.1 設(shè)計指標(biāo) 設(shè)計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。 演奏時可以選擇是手動演奏(由鍵盤輸入)還是自動演奏已存曲目,并且在演奏完已存曲目后可自動復(fù)位。1.2系統(tǒng)方案綜述從系統(tǒng)實(shí)現(xiàn)的功能上來看,電子琴的設(shè)計主要利用所給鍵盤的1,2,3,4,5,6,7,8八個鍵,能夠發(fā)出八個不同的音調(diào),并且要求按下按鍵發(fā)聲,松開延時一段時間停止,中間再按別的鍵再發(fā)出另外一種音調(diào)的聲音。從系統(tǒng)硬件結(jié)構(gòu)上來看,我們主要使用到AT89C51單片機(jī),復(fù)位電路以及開關(guān)等。將這些硬件電路有機(jī)的結(jié)合起來使之滿足電子琴的實(shí)現(xiàn)硬件需要。從音樂產(chǎn)生的原理方面來看,通過控制單片機(jī)的定

4、時器的定時時間產(chǎn)生不同頻率的音頻脈沖,經(jīng)放大驅(qū)動發(fā)出不同音樂的聲音。用軟件延時來控制發(fā)音時間的長短。把音樂的音符和相應(yīng)的節(jié)拍變換為定時常數(shù)和延時常數(shù),分別來控制定時器產(chǎn)生的脈沖頻率和發(fā)出該音頻脈沖持續(xù)時間。因此,我們可以綜合上述方案設(shè)計原理,從軟件和硬件兩部分進(jìn)行有計劃有步驟的分析和設(shè)計。1.3 系統(tǒng)設(shè)計思路當(dāng)系統(tǒng)掃描到鍵盤上有鍵被按下,則快速檢測是哪一個鍵被按下,然后單片機(jī)的定時器被啟動,發(fā)出一定頻率的脈沖,該頻率的脈沖輸入到蜂鳴器后,就會發(fā)出相應(yīng)的音調(diào),如果在前一個按下的鍵發(fā)聲的同時有另一個鍵被按下,則啟動中斷系統(tǒng),前面鍵的發(fā)音停止,轉(zhuǎn)到后按得鍵的發(fā)音程序,發(fā)出后按的鍵的音調(diào)。這樣,設(shè)計一

5、個時鐘方式的電路來產(chǎn)生11.0592MHZ的振蕩頻率產(chǎn)生時鐘脈沖,一個按鍵電平復(fù)位電路對AT89C51單片機(jī)進(jìn)行復(fù)位,8個開關(guān)分別從P2.0,P2.1,P2.2,P2.3,P2.4,P2.5,P2.6,P2.7輸出,用于產(chǎn)生八個不同頻率的音,一個揚(yáng)聲器電路,從P3.2連接一個開關(guān)播放已存曲目,從P3.3與揚(yáng)聲器之間連接一個上拉電阻和三極管,驅(qū)動揚(yáng)聲器響應(yīng),以此來設(shè)計硬件電路??傮w框圖如圖1-1所示。數(shù)碼管 單片機(jī)鍵盤矩陣 揚(yáng)聲器1-1 總體框圖2 硬件設(shè)計2.1 電路圖硬件電路圖如圖2-1所示。圖2-1電路圖2.2 單片機(jī)AT89C51簡介AT89C51是51系列單片機(jī)的一個型號,它是STC公

6、司生產(chǎn)的。AT89C51是一個低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用STC公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強(qiáng)大的STC89C51單片機(jī)可提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場合。AT89C51有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線,STC89C51可以按照常規(guī)方法進(jìn)行編程,但不可以在線編程(S系列的才支持在

7、線編程)。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本AT89C51有PDIP、PQFP/TQFP及PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求 。其封裝及引腳圖如圖2-2。圖2-2單片機(jī)外封裝及單片機(jī)引腳圖AT89C51具體介紹如下:主電源引腳(2根)VCC(Pin40):電源輸入,接5V電源GND(Pin20):接地線外接晶振引腳(2根)XTAL1(Pin19):片內(nèi)振蕩電路的輸入端XTAL2(Pin20):片內(nèi)振蕩電路的輸出端控制引腳(4根)RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個機(jī)器周期的高電平將使單片機(jī)復(fù)位。ALE

8、/PROG(Pin30):地址鎖存允許信號PSEN(Pin29):外部存儲器讀選通信號EA/VPP(Pin31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令??删幊梯斎?輸出引腳(32根)AT89C52單片機(jī)有4組8位的可編程I/O口,分別為P0、P1、P2、P3口,每個口有8位(8根引腳),共32根。P0口(Pin39Pin32):8位雙向I/O口線,名稱為P0.0P0.7。P1口(Pin1Pin8):8位準(zhǔn)雙向I/O口線,名稱為P1.0P1.7。 P2口(Pin21Pin28):8位準(zhǔn)雙向I/O口線,名稱為P2.0P2.7。 P3口(Pin

9、10Pin17):8位準(zhǔn)雙向I/O口線,名稱為P3.0P3.7。2.3 單片機(jī)的工作過程 單片機(jī)自動完成賦予它的任務(wù)的過程,也就是單片機(jī)執(zhí)行程序的過程,即一條條執(zhí)行的指令的過程,所謂指令就是把要求單片機(jī)執(zhí)行的各種操作用的命令的形式寫下來,這是在設(shè)計人員賦予它的指令系統(tǒng)所決定的,一條指令對應(yīng)著一種基本操作;單片機(jī)所能執(zhí)行的全部指令,就是該單片機(jī)的指令系統(tǒng),不同種類的單片機(jī),其指令系統(tǒng)亦不同。為使單片機(jī)能自動完成某一特定任務(wù),必須把要解決的問題編成一系列指令(這些指令必須是選定單片機(jī)能識別和執(zhí)行的指令),這一系列指令的集合就成為程序,程序需要預(yù)先存放在具有存儲功能的部件存儲器中。存儲器由許多存儲單

10、元(最小的存儲單位)組成,就像大樓房有許多房間組成一樣,指令就存放在這些單元里,單元里的指令取出并執(zhí)行就像大樓房的每個房間的被分配到了唯一一個房間號一樣,每一個存儲單元也必須被分配到唯一的地址號,該地址號稱為存儲單元的地址,這樣只要知道了存儲單元的地址,就可以找到這個存儲單元,其中存儲的指令就可以被取出,然后再被執(zhí)行。程序通常是順序執(zhí)行的,所以程序中的指令也是一條條順序存放的,單片機(jī)在執(zhí)行程序時要能把這些指令一條條取出并加以執(zhí)行,必須有一個部件能追蹤指令所在的地址,這一部件就是程序計數(shù)器PC(包含在CPU中),在開始執(zhí)行程序時,給PC賦以程序中第一條指令所在的地址,然后取得每一條要執(zhí)行的命令,

11、PC在中的內(nèi)容就會自動增加,增加量由本條指令長度決定,可能是1、2或3,以指向下一條指令的起始地址,保證指令順序執(zhí)行。單片機(jī)最小應(yīng)用系統(tǒng)如2-3所示。圖2-3 單片機(jī)最小應(yīng)用系統(tǒng)2.4 鍵盤電路用AT89C51的并行口P1接鍵盤,在數(shù)碼管上顯示每個按鍵的對應(yīng)的音符號。如圖2-4。圖 2-4單片機(jī)與鍵盤的連線圖本實(shí)驗(yàn)還用到單獨(dú)的一個按鍵用于控制播放音樂。該鍵與單片機(jī)的P3.2口連接可見主電路圖單片機(jī)電子琴硬件連接圖。2.5 顯示電路8段LED數(shù)碼管是利用8個LED(發(fā)光二極管)外加一個小數(shù)點(diǎn)的LED組合而成的顯 示設(shè)備,可以顯示09等10個數(shù)字和小數(shù)點(diǎn),使用非常廣泛。這類數(shù)碼管可以分為共陽極與共

12、陰極兩種,共陽極就是把所有LED的陽極連接到共同接點(diǎn)com,而每個LED的陰極分別為a、b、c、d、e、f、g及dp(小數(shù)點(diǎn));共陰極則是把所有LED的陰極連接到共同接點(diǎn)com,而每個LED的陽極分別為a、b、c、d、e、f、g及dp(小數(shù)點(diǎn)),如下圖所示。圖中的8個LED分別與上面那個圖中的ADP各段相對應(yīng),通過控制各個LED的亮滅來顯示數(shù)字,如圖2-5所示。圖2-5 數(shù)碼管共陽極與共陰極原理圖選用單片機(jī)的P0口P0.0到P0.7分別接在LED端的adp上來控制LED各個段碼燈的控制,來實(shí)現(xiàn)數(shù)字,例如要顯示低音符3,只需將共陰極的數(shù)碼管的a、b、e、f接高電平即可顯示“c”共陽極的對應(yīng)的接低

13、電平。這里我們選用共陽極的LED數(shù)碼管,對于中音音符3,則需要將數(shù)碼管的b、c、d、e、g置于低電平。數(shù)碼管就會顯示“3”。具體可參考數(shù)碼管相關(guān)的書籍。LED數(shù)碼管與單片機(jī)連接圖如圖2-6所示。 圖2-6 單片機(jī)與數(shù)碼管連接圖2.6 聲音電路喇叭在數(shù)字電路中的應(yīng)用,可以通過不斷的給喇叭通斷電,使其產(chǎn)生聲音,且通電斷電時間的間隔不同其聲音的音色就不同,所以通過控制通斷時間就可以控制不同的音階產(chǎn)生。 這里我們選用單片機(jī)的P1.0口來控制喇叭的通斷電。一首音樂是由許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同

14、的頻率非常方便,我們可以利用單片機(jī)的定時/計數(shù)器T1來產(chǎn)生這樣方波頻率信號,因此,我們只需將不同的音階對應(yīng)不同頻率的中斷即可。單片機(jī)與喇叭接線圖如圖2-7所示。 圖2-7 單片機(jī)電子琴放音控制系統(tǒng)3 系統(tǒng)軟件設(shè)計一首樂曲是由多個音符構(gòu)成的。每一個音符都對應(yīng)著一個確定的頻率。另外,每一個音符根據(jù)樂曲的要求和設(shè)定一個確定的節(jié)拍。聲音的產(chǎn)生就是是單片機(jī)產(chǎn)生一定的延時,所以延時不同,生成的音樂就不同。我們利用定時器計數(shù)的方式產(chǎn)生延時的效果,就可以將歌曲中每一個音符所對應(yīng)的音率換算成相應(yīng)的計數(shù)初值。然后,將這首樂曲所有音符的計數(shù)初值編成一個表,并把每一個音符的計數(shù)初值。然后,將這首樂曲所有音符的計數(shù)初值

15、編成一個表,并把每一個音符的計數(shù)初值與一個確定的數(shù)字碼來聯(lián)系。這個數(shù)組碼為簡譜碼。這里我們選用播放的歌曲為祝你平安和八月桂花遍地開。軟件設(shè)計流程圖如圖3-1所示。開始 初始化有鍵按下N 單片機(jī)Y延時N確認(rèn)有鍵按下 再次重新掃描 Y鍵盤掃描處理根據(jù)不同的掃描值賦予key根據(jù)key值做相應(yīng)處理 結(jié)束圖3-1 軟件設(shè)計流程圖3.1延時程序設(shè)計 因程序設(shè)計中很多都要用到延時程序所以延時程序用delay()函數(shù)來實(shí)現(xiàn),其程序如下:void Delay_xMs(unsigned int x) unsigned int i,j; for(i=0;i<x;i+) /1ms延時 for(j=0;j<

16、3;j+); 3.2定時器初始化及其中斷函數(shù)/定時器1的初始化void Time1_Init() TMOD=TMOD|0x10; /定時器1,方式1 EA=1; ET1=1; TH1=0xD8; TL1=0xEF;/定時器中斷函數(shù)void Time1_Int() interrupt 3 /外部中斷1 TH1=0xD8; TL1=0xEF; Count+;3.3示例音樂播放程序while(!eg_music)P0=0xc6; /C表示播放示例音樂Time1_Init();Play_Song(0); / 調(diào)用示例音樂函數(shù)TR0=0;3.4單獨(dú)按鍵中斷處理函數(shù)void init_interrupt(

17、void ) interrupt 1TR0=0;TH0=tablekey/256;TL0=tablekey%256;speak=speak;TR0=1;4 實(shí)驗(yàn)結(jié)果與分析4.1 Proteus軟件簡介 Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析各種模擬器件和集成電路,該軟件的特點(diǎn)是:實(shí)現(xiàn)了單片機(jī)仿真和數(shù)字電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生

18、器等。支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時可以觀察各個變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil C51 uVision2等軟件。具有強(qiáng)大的原理圖繪制功能。總之,該軟件是一款集單片機(jī)和電路分析于一身的仿真軟件,功能極其強(qiáng)大。單擊屏幕左下方的“開始”“程序”“Proteus 7.7 Professional

19、” “ISIS 7.1 Professional”,如圖4-1所示。圖4-1 Proteus啟動時的屏幕Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖4-2所示。包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口。圖4-2 Proteus ISIS的工作界面運(yùn)行Proteus程序后,進(jìn)入軟件的主界面。通過左側(cè)工具欄中的P(從庫中選擇元件命令)命令,在Pick Devices 左側(cè)窗口中選擇所需元件的關(guān)鍵字,然后放置元件并調(diào)整方向和位置以及參數(shù)設(shè)置,進(jìn)行連線。最后載入hex文件

20、后可以進(jìn)行模擬仿真,可以全速運(yùn)行也可以單步調(diào)試運(yùn)行。圖4-3 Proteus運(yùn)行按鍵4.2仿真調(diào)試在Proteus中添加單片機(jī)AT89C51,2個100電阻,,2個30pF電容,2個10F電解電容,1個共陽極數(shù)碼管,1個共陽極晶振,10個按鈕開關(guān)和1個揚(yáng)聲器即可得到仿真原理圖。按下按鈕開關(guān)“1”,揚(yáng)聲器發(fā)出do聲,并且數(shù)碼管顯示“1”。如圖4-5示。 圖4-5 按下按鍵1的仿真圖按下按鈕開關(guān)“EG”,揚(yáng)聲器播放示例曲目,并且數(shù)碼管顯示“C”。如圖5-6示。 圖4-6 播放示例曲目的仿真圖5 設(shè)計心得這次創(chuàng)新實(shí)踐周活動加深了我們對單片機(jī)以及C51語言的學(xué)習(xí)與應(yīng)用,不但對單片機(jī)有了較為全面的認(rèn)識,

21、而且相關(guān)的知識也有了足夠的掌握,最重要的還是設(shè)計思維的形成。與此同時,我們還做到對Vision和Proteus兩個軟件更加熟練的應(yīng)用。在之前的學(xué)習(xí)過程中沒有能夠很好的掌握單片機(jī)的學(xué)習(xí),在很多地方還有生疏和遺漏,并且在此次設(shè)計電子琴過程中也遇到困難不能自已獨(dú)立解決。電路初步焊接完成后,發(fā)現(xiàn)揚(yáng)聲器聲音較小,分析原因是P3.3電流太小,無法正常驅(qū)動揚(yáng)聲器。在老師指導(dǎo)下采用了c8550三極管結(jié)合上拉電阻的方式,增大驅(qū)動電流,最終揚(yáng)聲器正常發(fā)聲。這次創(chuàng)新實(shí)踐周活動,增加了自己的編程能力,還提高了自己的動手能力,并且編程的邏輯思維能力也有所加強(qiáng)。通常設(shè)計程序時都是按照先總后分、先分后總的原則來設(shè)計,這樣增

22、強(qiáng)了程序的邏輯性,在設(shè)計時不易出錯而且出錯時易查找。同時我們也深感“認(rèn)真嚴(yán)謹(jǐn)”這個詞的重要性,一點(diǎn)點(diǎn)小的馬虎,便會導(dǎo)致整個程序不能正常運(yùn)行。在今后的學(xué)習(xí)中,我將繼續(xù)保持嚴(yán)謹(jǐn)?shù)膶W(xué)習(xí)態(tài)度。與此同時,在同學(xué)的幫助下,我們更體會到了相互學(xué)習(xí)的重要性??傊?,這次活動讓我們受益匪淺。6 參考文獻(xiàn)1 單片機(jī)的C語言程序設(shè)計與應(yīng)用基于(Proteus仿真)(第2版) 姜志海 趙海雷 陳松 編著 電子工業(yè)出版社2C語言程序設(shè)計(第4版) 潭浩強(qiáng) 編著 清華大學(xué)出版社3基于Proteus的電路及單片機(jī)設(shè)計與仿真(第2版) 周潤景 張麗娜 丁莉 編著 北京航空航天大學(xué)出版社4單片機(jī)系統(tǒng)設(shè)計與仿真基于Proteus

23、肖婧 編著 北京航空航天大學(xué)出版社附錄附錄A 元件清單、器件識別與檢測表1元件名稱型號主要參數(shù)數(shù)量備注單片機(jī)AT89C514KB,33MHz1電阻RES1002電容CAP30pF2電解電容A700D107M006ATE01810F1數(shù)碼管7SEG-COM-ANODE共陽極1晶振CRYSTAL無1開關(guān)BUTTON無10揚(yáng)聲器SOUNDER無1器件識別與檢測:AT89C51單片機(jī)有4組8位的可編程I/O口,分別為P0、P1、P2、P3:P0口(Pin39Pin32):8位雙向I/O口線,名稱為P0.0P0.7。P1口(Pin1Pin8):8位準(zhǔn)雙向I/O口線,名稱為P1.0P1.7。 P2口(Pi

24、n21Pin28):8位準(zhǔn)雙向I/O口線,名稱為P2.0P2.7。 P3口(Pin10Pin17):8位準(zhǔn)雙向I/O口線,名稱為P3.0P3.7。所用的一般元器件有電阻、電容、開關(guān)、揚(yáng)聲器、數(shù)碼管。晶振是一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。它結(jié)合單片機(jī)內(nèi)部的電路,產(chǎn)生單片機(jī)所必須的時鐘頻率,單片機(jī)的一切指令的執(zhí)行都是建立在這個基礎(chǔ)上的,晶振的提供的時鐘頻率越高,那單片機(jī)的運(yùn)行速度也就越快,一般為6MHZ或12MHZ。而數(shù)碼管LED數(shù)碼管(LED Segment Displays)是由多個發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成

25、,只需引出它們的各個筆劃,公共電極。LED數(shù)碼管常用段數(shù)一般為7段有的另加一個小數(shù)點(diǎn),還有一種是類似于3位“+1”型。位數(shù)有半位,1,2,3,4,5,6,8,10位等等,LED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽兩類,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。顏色有紅,綠,藍(lán),黃等幾種。附錄B 程序源代碼#include<reg51.h>sbit eg_music=P32; /播放音樂控制位sbit speak=P33; /喇叭控制位int temp,key=16;unsigned char Count;code unsigned char led=0xf9,0xa4

26、,0xb0,0x99,0x92,0x82,0xf8,0x80,0xff;/共陽極數(shù)碼管顯示按鍵號/七個音符的號碼code unsigned int table=63628,63835,64021,64103,64260,64400,64524,64550,64580,64684,64777,64820,64898,64968,65030,65050,65058,65110,65157,65178,65217,65252,65283,65310;/示例音樂 unsigned char code SONG=0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0

27、x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0

28、x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0

29、x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0

30、x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,/祝你平安0x18,0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0

31、x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0

32、x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0

33、x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00, /八月桂花遍地開;/1ms延時子程序void Delay_xMs(unsigned int x) unsigned int i,j; for(i=0;i<x;i+) for(j=0;j<3;j+); /定時器1的初始化void Time1_Init() TMOD=TMOD|0x10; /定時器1,方式1 EA=1

溫馨提示

  • 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

提交評論