設(shè)計(jì)了一個(gè)以AT89S52為主控核心的電子琴系統(tǒng),系統(tǒng)由單片機(jī)AT89S52、獨(dú)立按鍵模塊、功率放大模塊、揚(yáng)聲器、數(shù)碼管組成,用C語(yǔ)言編寫(xiě)了51程序,該系統(tǒng)可以實(shí)現(xiàn)按鍵彈奏音樂(lè)和存儲(chǔ)播放功能。該系統(tǒng)可以主要優(yōu)點(diǎn)有硬件電路結(jié)構(gòu)簡(jiǎn)單易實(shí)現(xiàn),電子琴所需功能基本具備,系統(tǒng)穩(wěn)定可靠。缺點(diǎn)是音量調(diào)節(jié)大小不明顯,可加入多首音樂(lè)或者按鍵選擇音樂(lè)的功能。
目 錄
1. 設(shè)計(jì)背景
1.1單片機(jī)背景
1.2單片機(jī)電子琴應(yīng)用
2.設(shè)計(jì)方案
3. 方案實(shí)施
3.1硬件設(shè)計(jì)
3.1.1總體電路設(shè)計(jì)
3.1.2單片機(jī)簡(jiǎn)介
3.1.3按鍵設(shè)計(jì)
3.1.4LED數(shù)碼管
3.1.5揚(yáng)聲器
3.1.6電源電路
3.1.7時(shí)鐘電路
3.2軟件設(shè)計(jì)
3.3仿真與調(diào)試
3.3.1仿真軟件介紹
3.3.2仿真結(jié)果
4. 結(jié)果與結(jié)論
4.1實(shí)現(xiàn)的功能
4.2設(shè)計(jì)結(jié)論
5. 收獲與致謝
6. 參考文獻(xiàn)
7. 附件
1. 設(shè)計(jì)背景 1.1單片機(jī)背景 單片機(jī)是經(jīng)典的嵌入式微控制器(Microcontroller Unit),縮寫(xiě)為MCU,最早是被利用于工業(yè)控制領(lǐng)域。因?yàn)樵诠I(yè)控制領(lǐng)域單片機(jī)有著廣泛的應(yīng)用,所以誕生了單片機(jī)開(kāi)發(fā)板這樣的系統(tǒng)使更多的產(chǎn)品開(kāi)發(fā)人員、業(yè)內(nèi)人士、學(xué)生來(lái)學(xué)習(xí)單片機(jī)這門(mén)技術(shù),其中比較出名的單片機(jī)開(kāi)發(fā)板有電子人DZR-01A。單片機(jī)是從芯片內(nèi)部?jī)H有的特殊處理器發(fā)展起來(lái)的,它最開(kāi)始的設(shè)計(jì)思路是將CPU與大量的外圍設(shè)備通過(guò)一個(gè)微處理器集成在一起,從而使得計(jì)算機(jī)系統(tǒng)變得更迷你,組裝到繁雜的且對(duì)體積要求比較小的控制裝備之中更簡(jiǎn)單。Zilog公司的Z80便是最早使用這種設(shè)計(jì)思想做出來(lái)的的cpu,自此以后,單片機(jī)和計(jì)算機(jī)CPU的發(fā)展便成為了兩個(gè)不同的方向。 單片機(jī)相當(dāng)于把一個(gè)復(fù)雜的計(jì)算機(jī)系統(tǒng)濃縮到一個(gè)微小的芯片上,它計(jì)算機(jī)相比只缺少了輸入/輸出設(shè)備,所以可以把它看作一個(gè)微型的計(jì)算機(jī)。可以概況的講成:一塊相當(dāng)于一臺(tái)計(jì)算機(jī)的芯片。它的質(zhì)量輕、體積小、價(jià)格便宜、為開(kāi)發(fā)、應(yīng)用和學(xué)習(xí)提供了便利條件。所以,如果你想要了解計(jì)算機(jī)原理與結(jié)構(gòu),那么學(xué)習(xí)使用單片機(jī)是最簡(jiǎn)單的選擇。 1.2單片機(jī)電子琴應(yīng)用 電子琴是大規(guī)模集成電路和音樂(lè)結(jié)合的產(chǎn)物,它因?yàn)槟苣M各種樂(lè)器的音色而受到群眾們喜愛(ài)。本設(shè)計(jì)制作了一種除了有普通電子琴?gòu)椬喙δ芡?還擁有一種存儲(chǔ)播放樂(lè)曲功能。本設(shè)計(jì)是以AT89S52單片機(jī)作為一個(gè)簡(jiǎn)單電子琴系統(tǒng)設(shè)計(jì)的核心部件,其原理是因?yàn)槊總(gè)表有固定的振動(dòng)頻率,所以可以利用89S52單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器改變計(jì)數(shù)值來(lái)產(chǎn)生各個(gè)音調(diào)對(duì)應(yīng)的方波頻率來(lái)驅(qū)動(dòng)揚(yáng)聲器播放出不同音調(diào)。這僅僅只是單片機(jī)應(yīng)用的一個(gè)點(diǎn),希望能由點(diǎn)到面,更好的了解和應(yīng)用單片機(jī)技術(shù)。 2.設(shè)計(jì)方案 2.1方案一:采用CPLD外接揚(yáng)聲器、鍵盤(pán)、數(shù)碼管等。 8個(gè)譯碼輸出顯示的數(shù)碼管,以顯示目標(biāo)芯片的32 位輸出信號(hào),且8個(gè)發(fā)光管也能顯示目標(biāo)器件的8位輸出信號(hào)。時(shí)鐘為50MHz ,輸出接揚(yáng)聲器。 具體過(guò)程:主系統(tǒng)可由兩個(gè)模塊組成:當(dāng)系統(tǒng)檢測(cè)到有按鍵按下時(shí),對(duì)應(yīng)音符的頻率由模塊1獲得,這是一個(gè)數(shù)控分頻器。由其clk端輸入一具有較高頻率的信號(hào),分頻后輸出。 音符的持續(xù)時(shí)間須根據(jù)樂(lè)曲的速度及每個(gè)音符的節(jié)拍數(shù)決定,模塊2的功能是為模塊1提供決定所發(fā)音的分頻預(yù)置值,而此數(shù)在模塊1輸入口停留的時(shí)間即為此音符的節(jié)拍值。 2.2方案二:采用單片機(jī)外接揚(yáng)聲器、鍵盤(pán)、數(shù)碼管等。 采用AT89S52單片機(jī)的兩個(gè)定時(shí)器(如T0,T1)控制頻率,在P1.0引腳上輸出方波周期信號(hào),產(chǎn)生聲音,按下不同的模擬按鍵就會(huì)產(chǎn)生不同的音符,所以使用者可以通過(guò)本電子琴系統(tǒng)暢所欲為的彈奏自己想要彈的樂(lè)曲。 具體過(guò)程:當(dāng)系統(tǒng)掃描到鍵盤(pán)上有鍵子被按下,則快速檢測(cè)出是那一個(gè)鍵子,然后單片機(jī)的定時(shí)器被啟動(dòng),發(fā)出一定頻率的脈沖,該頻率的脈沖經(jīng)喇叭驅(qū)動(dòng)電路放大濾波后,就會(huì)發(fā)出相應(yīng)的音調(diào)。。如果在前一個(gè)按下的鍵發(fā)聲的同時(shí)有另一個(gè)鍵被按下,則啟用中斷系統(tǒng),前面鍵的發(fā)音停止,轉(zhuǎn)到后按的鍵的發(fā)音程序,發(fā)出后按鍵的音。 2.3方案對(duì)比 對(duì)比兩套方案各有優(yōu)缺點(diǎn),方案一采用CPLD,工作速度快,系統(tǒng)穩(wěn)定,效果好,但是其價(jià)格昂貴;而方案二在設(shè)計(jì)這樣小型電子方面,無(wú)論是效果還是工作速度與方案一相差不大,而且價(jià)格較為便宜。因此,選擇方案二即單片機(jī)加外設(shè)的方式設(shè)計(jì)該系統(tǒng)比較好。 3. 方案實(shí)施 3.1硬件設(shè)計(jì) 3.1.1總體電路設(shè)計(jì) 由AT89S52單片機(jī)、獨(dú)立鍵盤(pán)、音頻功率放大模塊、揚(yáng)聲器、數(shù)碼管、存儲(chǔ)播放模塊所組成。
圖1 系統(tǒng)結(jié)構(gòu)框架 3.1.2單片機(jī)簡(jiǎn)介 AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。另外,AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。 
圖2 AT89S52 3.1.3按鍵設(shè)計(jì) 本設(shè)計(jì)共含有10個(gè)按鍵,其中8個(gè)按鍵分別接著P2.0~P2.7引腳,代表著8個(gè)音符。當(dāng)按下這八個(gè)按鍵其中一個(gè)按鍵時(shí),數(shù)碼管也會(huì)顯示一個(gè)與音調(diào)對(duì)應(yīng)的數(shù)字來(lái)指示用戶所按下的按鍵。而另外兩個(gè)按鍵為功能按鍵,按下可播放已存儲(chǔ)的歌曲,另一個(gè)按下可中斷播放音樂(lè)。這兩個(gè)功能按鍵連接著的引腳分別是P3.2、P3.3。如圖3所示。 
圖3按鍵圖 3.1.4LED數(shù)碼管 由于本次設(shè)計(jì)需要的單片機(jī)I/O端口不多,所以數(shù)碼管顯示方式采用了靜態(tài)顯示驅(qū)動(dòng),數(shù)碼管將直接由單片機(jī)I/O端口驅(qū)動(dòng), 又因?yàn)長(zhǎng)ED數(shù)碼管是電流控制元件,所以使用時(shí)要上一個(gè)加限流電阻。數(shù)碼管顯示是通過(guò)單片機(jī)查表得出編碼,然后單片機(jī)再驅(qū)動(dòng)端口決定數(shù)碼管顯示的數(shù)字,按鍵與數(shù)碼管顯示程序的一致性就是這么實(shí)現(xiàn)的。連接在P0.1-P0.3,4個(gè)引腳上,并加一個(gè)排阻。如圖4所示。
圖4數(shù)碼管與單片機(jī)的連接圖 3.1.5揚(yáng)聲器 揚(yáng)聲器采用兩個(gè)三極管來(lái)放大音頻,串連著一個(gè)可調(diào)節(jié)電阻,用來(lái)調(diào)節(jié)聲音大小,整個(gè)模塊由單片機(jī)P1.0引腳控制。如圖5所示。 
圖5揚(yáng)聲器的連接圖 3.1.6電源電路 經(jīng)由電解電容和非極性電容構(gòu)成的濾波網(wǎng)絡(luò)和三端穩(wěn)壓器LM7805的穩(wěn)壓作用后,輸出+5V的直流電壓。 圖6電源電路圖 3.1.7時(shí)鐘電路 時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常用的時(shí)鐘電路有兩種方式,一種是內(nèi)部時(shí)鐘方式,另一種是外部時(shí)鐘方式。 AT89C51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,圖9是AT89S51內(nèi)部時(shí)鐘方式的電路,C1和C2的典型值通常選擇為30pF,石英晶體常選6MHz或12MHz的。本設(shè)計(jì)采用內(nèi)部時(shí)鐘方式做時(shí)鐘電路
圖7時(shí)鐘電路圖 3.2軟件設(shè)計(jì) 本設(shè)計(jì)的基本流程是對(duì)初始化的單片機(jī)進(jìn)行鍵盤(pán)掃描,判斷其有無(wú)按鍵按下,若有則需要繼續(xù)判斷按鍵的類(lèi)別,判斷它是功能選擇鍵還是獨(dú)立鍵盤(pán)上的音調(diào)鍵,若是獨(dú)立鍵盤(pán),則通過(guò)P1.0發(fā)生頻率播放音調(diào),通過(guò)P0顯示數(shù)碼管數(shù)字。若是功能選擇鍵,則播放程序儲(chǔ)存好的音樂(lè)歌曲,然后檢測(cè)是否按下中斷鍵,若是則停止播放,不是則一直播放到結(jié)束。此設(shè)計(jì)使用的語(yǔ)言選擇中,匯編語(yǔ)言是面向特定機(jī)型的需要,在不同的計(jì)算機(jī)指令系統(tǒng)上和不同的微控制器上,指令結(jié)構(gòu)有著云泥之別,就算指令大同小異,它也不能夠移植。C語(yǔ)言是一種高級(jí)語(yǔ)言,可以結(jié)構(gòu)化編程,還可以 移植。使用標(biāo)準(zhǔn)C語(yǔ)言的程序編程,完全可以不作任何修改就能夠移植到不同的系統(tǒng)平臺(tái)上;谝陨蠈(duì)比,本設(shè)計(jì)系統(tǒng)更適合C語(yǔ)言來(lái)進(jìn)行編程。 3.3仿真與調(diào)試 3.3.1仿真軟件介紹 Proteus是英國(guó)著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái)。 3.3.2仿真結(jié)果 利用Proteus仿真軟件將Keil軟件中的C語(yǔ)言程序?qū)敕抡骐娐分,燈泡D1亮,按下播放鍵,單片機(jī)存儲(chǔ)的音樂(lè)可自動(dòng)播放,按下停止鍵,音樂(lè)播放停止。復(fù)位鍵按下后,系統(tǒng)復(fù)位,八個(gè)按鍵可隨按鍵者隨意按下彈奏音樂(lè),同時(shí)數(shù)碼管顯示相對(duì)應(yīng)的節(jié)奏。
圖6仿真結(jié)果圖 4. 結(jié)果與結(jié)論 4.1實(shí)現(xiàn)的功能 根據(jù)功能需求與電路結(jié)構(gòu)得知,當(dāng)開(kāi)關(guān)按下時(shí),將可有其連接的輸入口讀取到低電平,再次制作的一個(gè)八鍵的電子琴,若按下S1,則發(fā)出中音DO,如按下S2,則發(fā)中Re,以此類(lèi)推,按下的同時(shí)數(shù)碼管顯示相對(duì)應(yīng)的數(shù)字。此外,該電子琴不僅可以自己彈奏也可自動(dòng)播放所存儲(chǔ)的音樂(lè),數(shù)碼管顯示相對(duì)應(yīng)的音符。 4.2設(shè)計(jì)結(jié)論 本設(shè)計(jì)利用AT89S52單片機(jī)設(shè)計(jì)一個(gè)簡(jiǎn)易電子琴,具備電子琴的基本功能,分析了利用單片機(jī)簡(jiǎn)易電子琴設(shè)計(jì)的基本原理,并介紹了AT89S52單片機(jī)設(shè)計(jì)的電子琴統(tǒng)硬件系統(tǒng)。改變AT89S52的定時(shí)器里面的特殊功能寄存器TH0及TL0在模式1下的計(jì)數(shù)值,便會(huì)產(chǎn)生不同方波頻率,然后通過(guò)揚(yáng)聲器產(chǎn)生對(duì)應(yīng)的音調(diào)。最終將編寫(xiě)的源程序轉(zhuǎn)換為機(jī)器碼導(dǎo)入單片機(jī)芯片,仿真調(diào)試運(yùn)行后,就可以實(shí)現(xiàn)利用按鍵彈奏想要的歌曲。與此同時(shí)仿真調(diào)試軟件用的是protues,源程序編譯軟件用的是keil,所以對(duì)這兩款軟件的掌握熟練度也增加了許多。 5. 收獲與致謝 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問(wèn)題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過(guò)程,隨著科學(xué)技術(shù)發(fā)展的日新月異,大規(guī)模芯片已經(jīng)成為當(dāng)今計(jì)算機(jī)運(yùn)用中空前活躍的領(lǐng)域,在生活中可以說(shuō)是無(wú)處不在。以此作為二十一世紀(jì)的大學(xué)生來(lái)說(shuō)掌握開(kāi)發(fā)技術(shù)是十分重要的。 通過(guò)本次實(shí)驗(yàn),我不僅可以鞏固以前學(xué)過(guò)的知識(shí),如數(shù)電知識(shí),系統(tǒng)設(shè)計(jì)和C語(yǔ)言,而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到的知識(shí),如實(shí)踐經(jīng)驗(yàn)和操作技巧。我懂得了理論與實(shí)踐相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,光看書(shū)部進(jìn)行相關(guān)的聯(lián)系是行不通的,只有把所學(xué)的理論知識(shí)與實(shí)踐結(jié)合起來(lái),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考能力。在此次電子琴設(shè)計(jì)中也讓我學(xué)會(huì)了Proteus和Keil這兩個(gè)軟件的基本應(yīng)用,多掌握了兩門(mén)技術(shù),對(duì)自己以后要做此方面的設(shè)計(jì)打下了基礎(chǔ)。于此同時(shí)也讓我知道了,做任何事情都要學(xué)會(huì)團(tuán)隊(duì)合作要多學(xué)多問(wèn),知道請(qǐng)教,不能自己一味悶頭去做,應(yīng)該多請(qǐng)教老師和同伴的意見(jiàn)和建議。在設(shè)計(jì)過(guò)程難免會(huì)遇到各種各樣的問(wèn)題,同時(shí)在設(shè)計(jì)的的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前學(xué)過(guò)的知識(shí)理解的不夠深刻,掌握的不夠牢固,通過(guò)這次課程設(shè)計(jì)之后,把以前學(xué)過(guò)的知識(shí)重新溫故,全部整合,進(jìn)一步深刻理解。我們要學(xué)會(huì)學(xué)習(xí)的能力,能夠舉一反三,觸類(lèi)旁通,這樣對(duì)自己以后的發(fā)展有很大的幫助,因此我們需要在學(xué)習(xí)中學(xué)習(xí),在實(shí)踐中找出答案!
7. 附件 仿真圖如下: 
電路圖如下: 
PCB圖如下: 
實(shí)物圖如下: 
代碼如下:
- #include "reg51.h"
- #define shumaguan P0 //定義數(shù)碼管段碼輸出
- sbit LED =P1^1 ;
- sbit SPK =P1^0 ;
- sbit K1= P3^2;
- sbit K2= P3^3; //定義方波輸出口
-
- unsigned int tone1,tone2;
- /*****標(biāo)準(zhǔn)音符表*****/
- //用于使定時(shí)器初值變化以產(chǎn)生相應(yīng)頻率的定時(shí)
- unsigned char code yinfu[]={0xfb,0xe9, //Do
- 0xfc,0x5c, //Re
- 0xfc,0xc1, //Mi
- 0xfc,0xef, //Fa
- 0xfd,0x45, //So
- 0xfd,0x92, //La
- 0xfd,0xd0, //Si
- 0xfd,0xee, //Do#
- 0x00,0x00 //音符之間的間隔,只要間隔時(shí)間小于65ms時(shí),
- //喇叭不會(huì)發(fā)出聲音,用作拍子之間的短暫停頓
- };
-
- /*****生日快樂(lè)歌音調(diào)表*****/
- unsigned char code shengri_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代表不發(fā)聲,即停頓;數(shù)字即為音調(diào)
- };
-
- /*****生日快樂(lè)歌節(jié)拍表*****/
- unsigned char code shengri_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 //節(jié)拍,即tone表各音調(diào)的延時(shí)
- };
-
-
- /*****15ms延時(shí)子程序,用于節(jié)拍*****/
- void delay(void)
- {
- unsigned char n=15;
- while(n--)
- {
- unsigned char i;
- for(i=0;i<125;i++);
- }
- }
-
- /*****定時(shí)器0初始化*****/
- void initTimer(void)
- {
- TMOD=0x01; //定時(shí)器0,工作方式1;定時(shí)器1,工作方式1
- TH0=tone1;
- TL0=tone2;
- }
-
- /*****定時(shí)器0中斷服務(wù)程序*****/
- void timer0(void) interrupt 1
- {
- TH0=tone1;
- TL0=tone2;
- SPK=~SPK; //取反,以產(chǎn)生方波
- }
-
- /*****演奏子程序1*****/
- void play1(void)
- {
- unsigned char m=0;
- unsigned char s;
- unsigned char a=1;
- while(1)
- {
- EA=0;
- LED=0;
- a=shengri_tone[m]; //取音符
- shumaguan=a;
- s=shengri_beat[m]; //取節(jié)拍
- tone1=yinfu[2*a-2];
- tone2=yinfu[2*a-1];
- EA=1;
- while(s--)
- {
-
- delay();
- }
-
- if((!K1)||(!K2)) //發(fā)現(xiàn)按鍵,立即退出播放
- {
- EA=0;SPK=0;shumaguan=0xff; m=34; //改過(guò)已
- return;
- }
- else
- LED=1;
- m++;
- if(m>=33) return; //數(shù)值是shengri相關(guān)表中的元素?cái)?shù)量
- }
-
- }
-
- /*****按鍵檢測(cè)*****/
- void check_key(void)
- {
- P2=0xff;
- P3=0xff; //設(shè)置為輸入狀態(tài)
- switch(P2) //檢測(cè)按鍵,輸出數(shù)碼管、載入定時(shí)器初值、允許中斷
- {
- case 0xfe:shumaguan=0xf9;tone1=0xfb;tone2=0xe9;EA=1;break;
- case 0xfd:shumaguan=0xa4;tone1=0xfc;tone2=0x5c;EA=1;break;
- case 0xfb:shumaguan=0xb0;tone1=0xfc;tone2=0xc1;EA=1;break;
- case 0xf7:shumaguan=0x99;tone1=0xfc;tone2=0xef;EA=1;break;
- case 0xef:shumaguan=0x92;tone1=0xfd;tone2=0x45;EA=1;break;
- case 0xdf:shumaguan=0x82;tone1=0xfd;tone2=0x92;EA=1;break;
- case 0xbf:shumaguan=0xf8;tone1=0xfd;tone2=0xd0;EA=1;break;
- case 0x7f:shumaguan=0x80;tone1=0xfd;tone2=0xee;EA=1;break;
- default: EA=0;SPK=0;shumaguan=0xff;//沒(méi)有鍵按下則關(guān)閉中斷和數(shù)碼管 // 改過(guò)已
- }
- switch(P3)
- {
- case 0xfb:play1();break;
-
- }
- }
-
- /*****主程序*****/
- void main(void)
- {
- initTimer();
- shumaguan=0xff;
- TR0=1;
- ET0=1;
- SPK=0;
- while(1)
- {
- check_key();
- }
- }
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
基于51單片機(jī)的簡(jiǎn)易電子琴設(shè)計(jì).doc
(5.11 MB, 下載次數(shù): 73)
2019-1-26 19:02 上傳
點(diǎn)擊文件名下載附件
基于51單片機(jī)的簡(jiǎn)易電子琴設(shè)計(jì) 下載積分: 黑幣 -5
|