標(biāo)題: 基于51單片機(jī)設(shè)計(jì)電子琴的設(shè)計(jì)報(bào)告 [打印本頁(yè)]

作者: cuifuzhang    時(shí)間: 2018-3-29 09:21
標(biāo)題: 基于51單片機(jī)設(shè)計(jì)電子琴的設(shè)計(jì)報(bào)告

電子琴的設(shè)計(jì)

摘 要

隨著社會(huì)的發(fā)展進(jìn)步,音樂(lè)成為我們生活中很重要的一部分,有人曾說(shuō)喜歡音樂(lè)的人不會(huì)向惡。我們都會(huì)抽空欣賞世界名曲,作為對(duì)精神的洗禮。設(shè)計(jì)一個(gè)基于單片機(jī)的簡(jiǎn)易電子琴。電子琴是現(xiàn)代電子科技與音樂(lè)結(jié)合的產(chǎn)物,是一種新型的鍵盤(pán)樂(lè)器。它在現(xiàn)代音樂(lè)扮演著重要角色。單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已融入現(xiàn)代人們的生活中,成為不可替代的一部分。本系統(tǒng)是以51系列單片機(jī)AT89C51為主控制器,附有矩陣鍵盤(pán)、LED顯示管、揚(yáng)聲器組成。系統(tǒng)完成顯示輸入信息、播放相應(yīng)音符等基本功能。本系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等,具有一定的實(shí)用和參考價(jià)值。


目錄

第1章  緒論

1.1 項(xiàng)目設(shè)計(jì)背景意義

1.2  本系統(tǒng)主要研究?jī)?nèi)容

第2章  設(shè)計(jì)方案比較

第3章  硬件電路設(shè)計(jì)

3.1 單片機(jī)最小系統(tǒng)

3.2鍵盤(pán)模塊

3.3 方波發(fā)生模塊

3.4 功率放大發(fā)聲模塊

第4章  軟件設(shè)計(jì)

4.1 軟件結(jié)構(gòu)功能設(shè)計(jì)

4.2 主程序設(shè)計(jì)

4.3 子程序設(shè)計(jì)

第5章  系統(tǒng)調(diào)試

5.1 軟件調(diào)試

5.2 系統(tǒng)聯(lián)調(diào)

結(jié)論

致謝

參考文獻(xiàn)

附錄




煙臺(tái)南山學(xué)院?jiǎn)纹瑱C(jī)原理與接口技術(shù)課程設(shè)計(jì)            


1章  緒論1.1 項(xiàng)目設(shè)計(jì)背景意義
單片微型計(jì)算機(jī)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,屬第四代電子計(jì)算機(jī),它具有高性能、高速度、體積小、價(jià)格低廉、穩(wěn)定可靠、應(yīng)用廣泛的特點(diǎn)。它的應(yīng)用必定導(dǎo)致傳統(tǒng)的控制技術(shù)從根本上發(fā)生變革。因此,單片機(jī)的開(kāi)發(fā)應(yīng)用已成為高科技和工程領(lǐng)域的一項(xiàng)重大課題。
電子琴是現(xiàn)代電子科技與音樂(lè)結(jié)合的產(chǎn)物,是一種新型的鍵盤(pán)樂(lè)器。它在現(xiàn)代音樂(lè)扮演著重要的角色,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實(shí)現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內(nèi)容是用AT89S51單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)電子琴。以單片機(jī)作為主控核心,與鍵盤(pán)、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個(gè)按鍵和揚(yáng)聲器。
本文主要對(duì)使用單片機(jī)設(shè)計(jì)簡(jiǎn)易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來(lái)獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂(lè)。并且本文分別從原理圖,主要芯片,各模塊原理及各模塊的程序的調(diào)試來(lái)詳細(xì)闡述。本系統(tǒng)是簡(jiǎn)易電子琴的設(shè)計(jì),按下鍵盤(pán)矩陣中的按鍵會(huì)使數(shù)碼管顯示當(dāng)前按鍵,揚(yáng)聲器播放器對(duì)應(yīng)的音符。通過(guò)設(shè)計(jì)本系統(tǒng)可了解單片機(jī)的基本功能。對(duì)單片機(jī)的了解有一個(gè)小的飛躍。
1.2 本系統(tǒng)主要研究?jī)?nèi)容
本系統(tǒng)設(shè)計(jì)制作一個(gè)可演奏的電子琴。綜合應(yīng)用了兩項(xiàng)設(shè)計(jì)。
(1)以單片機(jī)為核心設(shè)計(jì)一個(gè)電子琴
(2)要求電子琴具有手動(dòng)彈奏樂(lè)曲和自動(dòng)播放樂(lè)曲兩種功能。在4*4矩陣式鍵盤(pán)上確定琴鍵的音符,音符頻率通過(guò)單片機(jī)內(nèi)部定時(shí)器等元件產(chǎn)生。


2章 設(shè)計(jì)方案比較
方案一:使用單片機(jī)內(nèi)部定時(shí)器,通過(guò)編程實(shí)現(xiàn)發(fā)出不同頻率方波,產(chǎn)生音階。     
方案二:使用8253作為外部定時(shí)器,通過(guò)編程實(shí)現(xiàn)產(chǎn)生所需頻率的方波。   
通過(guò)對(duì)方案一和方案二的比較可以知道,方案一是通過(guò)使用單片機(jī)內(nèi)部定時(shí)器,以編程實(shí)現(xiàn)方波輸出,優(yōu)點(diǎn)在于外部電路簡(jiǎn)單,程序結(jié)構(gòu)簡(jiǎn)單,缺點(diǎn)在于消耗單片機(jī)資源過(guò)多,不利于優(yōu)化升級(jí);方案二是利用8253來(lái)產(chǎn)生方波,相對(duì)來(lái)說(shuō)這種方案外部電路較為復(fù)雜,程序結(jié)構(gòu)也更為復(fù)雜,優(yōu)點(diǎn)在于占用單片機(jī)資源少,輸出穩(wěn)定,利于擴(kuò)展;故而選擇方案二較好。
鞏固和運(yùn)用所學(xué)課程,理論聯(lián)系實(shí)際,提高分析、解決計(jì)算機(jī)技術(shù)實(shí)際問(wèn)題的獨(dú)立工作能力,通過(guò)對(duì)電子琴的設(shè)計(jì),進(jìn)一步加深對(duì)計(jì)算機(jī)原理以及數(shù)字電路應(yīng)用技術(shù)方面的了解與認(rèn)識(shí),進(jìn)一步熟悉數(shù)字電路系統(tǒng)設(shè)計(jì)、制作與調(diào)試的方法和步驟。鞏固所學(xué)課堂知識(shí),理論聯(lián)系實(shí)際,提高分析、解決計(jì)算機(jī)技術(shù)實(shí)際問(wèn)題的獨(dú)立工作能力。為了進(jìn)一步了解計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)。
隨著基于技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,單片機(jī)技術(shù)在電子信息、通信、自動(dòng)控制用計(jì)算機(jī)等領(lǐng)域的重要性日益突出。作為一個(gè)學(xué)電子信息專業(yè)的學(xué)生,我們必須不斷地了解更多的新產(chǎn)品信息,這就更加要求我們對(duì)其有個(gè)全面的認(rèn)識(shí)。本程序設(shè)計(jì)的是簡(jiǎn)易電子琴的設(shè)計(jì)。可以大大降低了硬件數(shù)字系統(tǒng)設(shè)計(jì)的入門(mén)級(jí)別,讓人感覺(jué)就是C語(yǔ)言的近親。通過(guò)老師的指導(dǎo)和自己的學(xué)習(xí)完成了預(yù)想的功能。

3章  硬件電路設(shè)計(jì)3.1單片機(jī)最小系統(tǒng)
ATC89C51主要特性:  與MCS-51 兼容\8K字節(jié)可編程閃爍存儲(chǔ)器壽命:1000寫(xiě)/擦循環(huán)數(shù)據(jù)保留時(shí)間:10年全靜態(tài)工作:三級(jí)程序存儲(chǔ)器鎖定\512內(nèi)部RAM\32可編程I/O線兩個(gè)16位定時(shí)器/計(jì)數(shù)器\5個(gè)中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時(shí)鐘電路 管腳說(shuō)明:  VCC:供電電壓。 GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:
口管腳 備選功能
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(記時(shí)器0外部輸入)
P3.5 T1(記時(shí)器1外部輸入)
P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)
P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。振蕩器特性:  XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。

圖3.1 ATC89C51結(jié)構(gòu)圖

單片機(jī)最小系統(tǒng)主要由時(shí)鐘電路和復(fù)位電路組成。
此系統(tǒng)的時(shí)鐘電路設(shè)計(jì)是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。MCS-51內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外晶體諧振器一起構(gòu)成一個(gè)自激振蕩器。外接晶體諧振器以及電容CX1和CX2構(gòu)成并聯(lián)諧振電路,接在放大器的反饋回路中。,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容值約為30μF。
                 

                         圖3.2 時(shí)鐘電路

復(fù)位電路是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的。片內(nèi)復(fù)位電路是復(fù)位引腳RST通過(guò)一個(gè)斯密特觸發(fā)器與復(fù)位電路相連,斯密特觸發(fā)器用來(lái)抑制噪聲,它的輸出在每個(gè)機(jī)器周期的S5P2,由復(fù)位電路采樣一次。

圖3.3  單片機(jī)最小系統(tǒng)原理圖

3.2鍵盤(pán)模塊
HD7279是一片具串行接口的,可同時(shí)驅(qū)動(dòng)8位共陰式數(shù)碼管(或64只獨(dú)立LED)的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)還可以連接多達(dá)64鍵的鍵盤(pán)矩陣,10 單片即可完成LED顯示、鍵盤(pán)接口的全部功能。 HD7279內(nèi)不含有譯碼器,可直接接收BCD碼或16進(jìn)制碼,并同時(shí)具有2種譯碼方式,此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。 HD7279具有片選信號(hào),可方便地實(shí)現(xiàn)多于8位的顯示或多于64鍵的鍵盤(pán)接口。
1主要特性:
(1) 串行接口,無(wú)需外圍元件可直接驅(qū)動(dòng)LED。
(2) 各位獨(dú)立控制譯碼/不譯碼及消隱和閃爍屬性。
(3) (循環(huán))左移/(循環(huán))右移指令
(4) 具有段尋址指令,方便控制獨(dú)立LED
(5) 64鍵鍵盤(pán)控制器,內(nèi)含去抖動(dòng)電路
(6) 有DIP和SOIC兩種封裝形式供選擇
2 引腳說(shuō)明:

表3.17279引腳說(shuō)明

引腳

名稱

說(shuō)明

1,2

VDD

正電源

3,5

NC

無(wú)連接,必須懸空

4

VSS

接地

6

CS

片選輸入端,此引腳為低電平時(shí),可向芯片

發(fā)送指令及讀取鍵盤(pán)數(shù)據(jù)

7

CLK

同步時(shí)鐘輸入端向芯片發(fā)送數(shù)據(jù)及讀取數(shù)據(jù)時(shí),此引腳電平上升沿表示數(shù)據(jù)有效

8

DATA

串行數(shù)據(jù)輸入、輸出端,當(dāng)芯片接收指令時(shí),此引腳為輸入端,當(dāng)讀取鍵盤(pán)數(shù)據(jù)時(shí),此引腳在讀指令最后一個(gè)時(shí)鐘的下降沿變?yōu)檩敵龆?/font>

9

KEY

按鍵有效輸出端,平時(shí)為高電平,當(dāng)檢測(cè)到有效按鍵時(shí),此引腳變?yōu)榈碗娖?/font>

10-16

SG-SA

段9-段a驅(qū)動(dòng)輸出

17

DP

小數(shù)點(diǎn)驅(qū)動(dòng)輸出

18-52

DIG0-DIG7

數(shù)字0-數(shù)字7驅(qū)動(dòng)輸出

26

DLKO

震蕩輸出端

27

RC

RC振蕩連接器

28

RESET

復(fù)位端


鍵盤(pán)模塊主要由鍵盤(pán)串行接口芯片7279擴(kuò)展組成。鍵盤(pán)采用4*4矩陣式,按鍵檢查使用行列掃描方式,行設(shè)置低電平,同時(shí)讀入列狀態(tài),如果列狀態(tài)不是全為1,則此列與行為0相交的鍵就是所按下的鍵。在應(yīng)用過(guò)程中,只需要將7279的CS、CLK、DATA和KEY四個(gè)端口分別連接至單片機(jī)的P1.0、P1.1、P1.2和P1.3即可。當(dāng)全部硬件電路連接好后,按下鍵盤(pán)的按鍵,單片機(jī)將獲得該按鍵的鍵值,通過(guò)軟件編程即可確定所需要的方波頻率值,使8253產(chǎn)生該頻率的方波,經(jīng)由功放電路輸出至喇叭發(fā)聲。
3.3 方波發(fā)生模塊
方波發(fā)生模塊主要由ATC89C51、74LS373、74LS138和8253組成。其中,74LS138的A、B、C口分別連接至AT89C51的P2.5、P2.6和P2.7,E1、E2、E3分別連接至P2.2、P2.3和P2.4口,由譯碼器74LS138的Y5口輸出。由硬件連接可確定端口地址為:0A000H、0A001H、0A002H和0A003H。鎖存器74LS373的D0和D1口分別連接至P0.0和P0.1,Q0和Q1口分別連接至8253的A0和A1口,用于地址鎖存。8253的D0到D7口分別連接至ATC89C52的P0.0至P0.7口,GATE0口持續(xù)接高電平,CLK2處的時(shí)鐘信號(hào)經(jīng)由分頻電路連接至單片機(jī)的讀和寫(xiě),使8253有穩(wěn)定的2MHZ的時(shí)鐘信號(hào)輸入,最后在OUT2口便可產(chǎn)生持續(xù)的方波輸出,頻率則由軟件編程決定。其原理圖如圖3.4所示:

圖3.4 方波發(fā)生模塊原理圖

3.4功率放大發(fā)聲模塊   
功放模塊主要由揚(yáng)聲器和LM386構(gòu)成,OUT2信號(hào)輸出至LM386信號(hào)輸入端,經(jīng)由放大電路放大后輸出至揚(yáng)聲器發(fā)聲。其原理圖如圖3.5所示:

圖3.5 喇叭發(fā)聲模塊原理圖


4章  軟件設(shè)計(jì)4.1軟件結(jié)構(gòu)功能設(shè)計(jì)
軟件部分主要包含:主程序、8253方波發(fā)生子程序、7279初始化子程序、接收發(fā)送字節(jié)子程序、延時(shí)子程序等。 主程序:判斷所讀取的鍵值,并根據(jù)鍵值賦值do、re、mi、fa、sol、la、si、do八個(gè)音節(jié)的頻率。運(yùn)用switch語(yǔ)句,讓所選用的8個(gè)鍵值分別與8個(gè)音階的頻率所對(duì)應(yīng)。8253方波發(fā)生子程序:設(shè)定好8253的控制字,且為方式3工作方式(方波發(fā)生器)。將8個(gè)音節(jié)的8個(gè)不同頻率轉(zhuǎn)換成16進(jìn)制數(shù)后賦值給8253的輸出端口地址后相減,即可。 7279初始化子程序:使片選信號(hào)的上升沿時(shí)刻復(fù)位,使芯片處于上電復(fù)位狀態(tài)。 接收發(fā)送字節(jié)子程序:通過(guò)移位將所需要傳送的字節(jié)存于A中,以便于其它程序進(jìn)行調(diào)用 延時(shí)子程序:通過(guò)for循環(huán)得到延時(shí)子程序。
4.2主程序設(shè)計(jì)
主程序先對(duì)7279進(jìn)行初始化,調(diào)用鍵值讀取子程序,對(duì)讀取的鍵值進(jìn)行判斷是否為預(yù)設(shè)的鍵值,若不是則返回,若是怎進(jìn)入switch語(yǔ)句進(jìn)行賦值。其主框圖
如圖4.1所示:


N


Y


圖4.1   主程序流程框圖

4.3子程序設(shè)計(jì)
方波發(fā)生子程序:對(duì)8253進(jìn)行初始化,控制字賦值,確定工作在方式3,初值送至入口地址。其子程序流程框圖如圖4.2所示: 判斷是否有鍵按下,若有,則發(fā)送讀鍵盤(pán)數(shù)據(jù)指令,并保存鍵值。其子程序流程框圖如圖4.2所示。

                                                N


                          Y


圖4.2  讀鍵值子程序流程框圖

7279初始化子程序:發(fā)送復(fù)位指令,子程序返回。其子程序流程框圖如圖4.3所示:發(fā)送一字節(jié)子程序:將所需發(fā)送的字節(jié)帶進(jìn)位左移一位,循環(huán)八次后將所需發(fā)送的字符保存于A中,子程序返回。其子程序流程框圖如圖4.4所示:

                                                                        

                                                                  N

            

                                             Y


圖4.3  7279初始化子程序流程框圖       圖4.4  發(fā)送一字節(jié)子程序流程框


5章 系統(tǒng)調(diào)試5.1 軟件調(diào)試
本次課程設(shè)計(jì)—簡(jiǎn)易電子琴的軟件設(shè)計(jì)我并沒(méi)有運(yùn)用匯編語(yǔ)言,而是運(yùn)用了并沒(méi)有在課程中學(xué)習(xí)的C語(yǔ)言,故在設(shè)計(jì)的時(shí)候遇到較大的困難。主要是對(duì)于初始化方面不熟悉,后通過(guò)上網(wǎng)學(xué)習(xí)及日立電子鐘的設(shè)計(jì)對(duì)單片機(jī)的C程序設(shè)計(jì)運(yùn)用較為熟練。 首先對(duì)于一些需要使用的數(shù)據(jù)類型進(jìn)行定義,如#define uint  unsigned int;后用XBYTE命令對(duì)8253進(jìn)行初始化,用sbit指令對(duì)7279進(jìn)行初始化。 然后編寫(xiě)各子程序,最后編寫(xiě)主程序。 開(kāi)始時(shí)用的是if(!key=**)語(yǔ)句來(lái)進(jìn)行鍵值的判斷,后進(jìn)行單獨(dú)賦值的辦法,但是后來(lái)發(fā)現(xiàn)這樣的語(yǔ)句對(duì)于只有幾個(gè)音階的簡(jiǎn)易電子琴來(lái)說(shuō)還具有可行性,但是對(duì)于音階較多的就顯得太為繁雜了,故后建立數(shù)組,編寫(xiě)了頻率對(duì)照表,運(yùn)用switch語(yǔ)句進(jìn)行鍵值判斷并查表賦值。這樣的設(shè)計(jì)使得此程序的可擴(kuò)展性較強(qiáng)。 運(yùn)用TR0來(lái)控制發(fā)聲。 當(dāng)硬件連接好后,我們把程序燒錄進(jìn)單片機(jī)進(jìn)行初步調(diào)試,發(fā)現(xiàn)沒(méi)有任何反應(yīng),排查后排除了硬件問(wèn)題,然后進(jìn)行了軟件排查。單獨(dú)編寫(xiě)了方波發(fā)生程序,發(fā)現(xiàn)能發(fā)出方波,但是幅度及頻率均與理論值相差巨大。由于硬件排查時(shí)認(rèn)為單片機(jī)及功放兩部分工作正常,為了驗(yàn)證這個(gè)結(jié)論的正確性,我們先在硬件電路上繞過(guò)8253,單片機(jī)輸出直接連接功放模塊,然后改寫(xiě)程序,使用單片機(jī)內(nèi)部中斷,發(fā)現(xiàn)一切工作正常,且可在7279鍵盤(pán)上彈奏音樂(lè)。此結(jié)果直接證明之前問(wèn)題出在8253的論斷完全正確,也間接證明程序的編寫(xiě)基本沒(méi)有問(wèn)題。后為了證明程序編寫(xiě)的正確性,我們把自己程序里的一些初始化數(shù)值進(jìn)行了更改,達(dá)到與別組硬件匹配后,把自己的程序燒錄進(jìn)別組的硬件中,發(fā)現(xiàn)可以工作。
5.2 系統(tǒng)聯(lián)調(diào)
經(jīng)硬件檢測(cè),程序調(diào)試后,將程序下載到單片機(jī),按下所設(shè)置的鍵,與設(shè)計(jì)要求相比對(duì),揚(yáng)聲器可正常發(fā)出中音8音階,運(yùn)用示波器檢查,8音階頻率稍有誤差,基本與理論值相同,達(dá)到要求,結(jié)果在誤差范圍之內(nèi)。根據(jù)樂(lè)譜彈奏,可彈奏出正常樂(lè)曲。 后期,對(duì)程序進(jìn)行了升級(jí),加入了節(jié)奏控制(以按鍵時(shí)間長(zhǎng)短來(lái)控制延時(shí)長(zhǎng)短),建立了樂(lè)曲頻率數(shù)組,可播放數(shù)組中所存樂(lè)曲。此次簡(jiǎn)易電子琴設(shè)計(jì)完成。系統(tǒng)調(diào)試圖5.1所示。

圖5.1  系統(tǒng)調(diào)試圖


結(jié)論
在方案一的調(diào)試中遇到以下幾個(gè)問(wèn)題: 1. 發(fā)聲頻率有誤差:運(yùn)用示波器觀察,對(duì)根據(jù)公式更改參數(shù)達(dá)到要求。 2. 按鍵與設(shè)定音階不符:檢查程序?yàn)閟witch語(yǔ)句case設(shè)置偏差。 經(jīng)調(diào)試后,程序運(yùn)行正確,達(dá)到設(shè)計(jì)要求。 后期課程設(shè)計(jì)結(jié)束后自己增加了鎖定功能,自動(dòng)播放功能。
總的來(lái)說(shuō),本次的簡(jiǎn)易電子琴設(shè)計(jì)不是很成功,因?yàn)闀r(shí)間關(guān)系,最終沒(méi)能找出預(yù)先設(shè)計(jì)中的問(wèn)題,最后只能通過(guò)更改設(shè)計(jì)來(lái)實(shí)現(xiàn)目的。但是也收獲頗多;首先我主要負(fù)責(zé)軟件的編寫(xiě),使我對(duì)單片機(jī)的C程序設(shè)計(jì)從無(wú)到有,從不會(huì)到會(huì),深入的了解了單片機(jī)程序設(shè)計(jì)中匯編與C兩種語(yǔ)言的優(yōu)劣點(diǎn),使我以后設(shè)計(jì)程序時(shí)對(duì)語(yǔ)言的選擇有了一個(gè)清醒的認(rèn)識(shí)。進(jìn)而發(fā)現(xiàn)問(wèn)題就要解決問(wèn)題,在這次解決問(wèn)題中發(fā)現(xiàn)了自己很多不懂得知識(shí),為了解決問(wèn)題自己去找資料學(xué)習(xí),并且在老師的指導(dǎo)下學(xué)會(huì)了如何有條理的去排查問(wèn)題以及如何去驗(yàn)證自己的猜測(cè)。 特別是在我所主要負(fù)責(zé)的程序方面,在一次次的驗(yàn)證中不斷編寫(xiě)各種功能的程序,從剛開(kāi)始的什么都不懂,經(jīng)常要自己上網(wǎng)找資料學(xué)習(xí),都后來(lái)在編寫(xiě)程序中總能有各種奇思妙想,經(jīng)常能有一些讓自己都經(jīng)不住感嘆的構(gòu)思,對(duì)C語(yǔ)言有一種得心應(yīng)手的感覺(jué)。自己在這之中編寫(xiě)了很多各種功能的程序,如對(duì)電子琴進(jìn)行鎖定,錄制等功能。 最后,雖說(shuō)這次的課程設(shè)計(jì)結(jié)果不是很成功,但是過(guò)程中的收獲卻是相當(dāng)多的。

致謝
我做課程設(shè)計(jì)的每個(gè)階段,從選題到查閱資料,設(shè)計(jì)要求的確定,中期報(bào)告的修改,后期格式調(diào)整等各個(gè)環(huán)節(jié)中都給予了我悉心的指導(dǎo)。這兩個(gè)周以來(lái),董老師不僅在學(xué)業(yè)上給我以精心指導(dǎo),同時(shí)還在思想給我以無(wú)微不至的關(guān)懷,在此謹(jǐn)向董老師致以誠(chéng)摯的謝意和崇高的敬意。
  同時(shí),本篇課程設(shè)計(jì)的寫(xiě)作也得到了王雪珂、孫元龍等同學(xué)的熱情幫助。感謝在整個(gè)課程設(shè)計(jì)期間和我密切合作的同學(xué),和曾經(jīng)在各個(gè)方面給予過(guò)我?guī)椭幕锇閭,在此,我再一次真誠(chéng)地向幫助過(guò)我的老師和同學(xué)便是感謝!



完整的Word格式文檔51黑下載地址:
電子琴設(shè)計(jì).docx (234.87 KB, 下載次數(shù): 65)







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1