單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易電子琴設(shè)計(jì)_第1頁(yè)
單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易電子琴設(shè)計(jì)_第2頁(yè)
單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易電子琴設(shè)計(jì)_第3頁(yè)
單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易電子琴設(shè)計(jì)_第4頁(yè)
單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易電子琴設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 單 片 機(jī)課 程 設(shè) 計(jì) 課程設(shè)計(jì)名稱(chēng) : 專(zhuān) 業(yè) 班 級(jí) : 學(xué) 生 姓 名 : 學(xué) 號(hào) : 指 導(dǎo) 教 師 : 課程設(shè)計(jì)時(shí)間 : 一、 需求分析1.1課題背景隨著社會(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)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。電子科技也在不斷的前進(jìn),電子技術(shù)正在以不同的方式改變著我們的生活,電子琴設(shè)計(jì)也是

2、希望給人們帶來(lái)一些生活的樂(lè)趣。電子琴可以應(yīng)用在很多方面,比如一些簡(jiǎn)易的玩具上或手機(jī)上。單片機(jī)技術(shù)使我們可以利用軟硬件實(shí)現(xiàn)電子琴的功能,從而實(shí)現(xiàn)電子琴的微型化。本文主要對(duì)使用單片機(jī)設(shè)計(jì)簡(jiǎn)易電子琴進(jìn)行了分析,并介紹了基于單片機(jī)電子琴統(tǒng)硬件組成。利用單片機(jī)產(chǎn)生不同頻率來(lái)獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂(lè)。并且本文分別從原理圖,主要芯片,各模塊原理及各模塊的程序的調(diào)試來(lái)詳細(xì)闡述。1.2 課題設(shè)計(jì)的任務(wù)與主要內(nèi)容本文的主要內(nèi)容是用AT89C51單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)簡(jiǎn)單的電子琴。以單片機(jī)作為主控核心,與鍵盤(pán)、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個(gè)按鍵和揚(yáng)聲器。定時(shí)器

3、按設(shè)置的定時(shí)參數(shù)產(chǎn)生中斷,由于定時(shí)參數(shù)不同,就會(huì)發(fā)出不同頻率的脈沖,不同頻率的脈沖經(jīng)喇叭驅(qū)動(dòng)電路放大濾波后,就會(huì)發(fā)出不同音調(diào)。先根據(jù)要求設(shè)計(jì)硬件電路和編寫(xiě)相應(yīng)的程序,然后進(jìn)行仿真調(diào)試,最后細(xì)心焊接硬件電路圖,將程序烤入芯片中,最終達(dá)到設(shè)計(jì)目的。本系統(tǒng)運(yùn)行穩(wěn)定,其優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,軟件功能完善,控制系統(tǒng)可靠,性?xún)r(jià)比較高等,具有一定的實(shí)用和參考價(jià)值。1.3簡(jiǎn)易電子琴功能概述 單片機(jī)因體積小、功能強(qiáng)、價(jià)格低廉而得到廣泛應(yīng)用。AT89C51單片機(jī)設(shè)計(jì)微型電子琴的方法,僅需AT89C51最小系統(tǒng),擴(kuò)展一組矩陣鍵盤(pán),再接一組發(fā)光二極管用來(lái)指示電子琴的工作狀態(tài)。本系統(tǒng)分為兩個(gè)部分,一個(gè)是音樂(lè),另一個(gè)就是電

4、子琴。1.單片機(jī)并行連接4*4矩陣鍵盤(pán)和一位數(shù)碼管2.利用單片機(jī)內(nèi)部定時(shí)器T0的定時(shí)功能產(chǎn)生音符所對(duì)應(yīng)的音調(diào)3.經(jīng)功率放大器后輸出至音箱4.在彈奏音樂(lè)的同時(shí)將音符顯示與數(shù)碼管5.具備存儲(chǔ)在播放所彈奏的音樂(lè)的功能6.具備示范音樂(lè)播放功能二、 概要設(shè)計(jì)2.1硬件系統(tǒng)的組成嵌入式電路,按鍵電路,LED顯示電路和三個(gè)功能鍵組成,通過(guò)功能鍵可以選擇播放音樂(lè)。(按鍵一:是否錄音;按鍵二:是否播放;按鍵三:復(fù)位鍵) AT89C51 中心控制該系統(tǒng)通過(guò)電子琴按鍵隨意鍵入所要表達(dá)的音符,作為電平送給主體電路,中央處理器通過(guò)識(shí)別,解碼輸出音符,在揚(yáng)聲器中發(fā)出有效的聲音。通過(guò)這樣可以不斷的彈奏音樂(lè)。4*4矩陣鍵盤(pán)晶

5、振產(chǎn)生頻率LED燈的顯示供電復(fù)位電路揚(yáng)聲器,放大音樂(lè)彈奏或播放音樂(lè)圖1 硬件系統(tǒng)總體框圖2.2軟件設(shè)計(jì)流程圖P1圖2 軟件設(shè)計(jì)流程圖2.3工作原理打開(kāi)電子琴電源開(kāi)關(guān)后,電子琴默認(rèn)為彈奏狀態(tài)(錄音LED燈亮表示按鍵彈奏錄音,不亮則普通按鍵彈奏功能),彈奏/播放顯示燈點(diǎn)亮。此時(shí)可以進(jìn)行彈奏音樂(lè),按下矩陣鍵盤(pán)中的任意鍵,揚(yáng)聲器發(fā)相應(yīng)的音調(diào),數(shù)碼管顯示對(duì)應(yīng)的數(shù)字。按下播放按鈕,電子琴處于自動(dòng)播放狀態(tài),彈奏/播放顯示燈不亮,就會(huì)播放剛才彈走過(guò)的音樂(lè),并循環(huán)進(jìn)行播放,如果按下錄音按鍵,將錄音燈滅掉,此時(shí)播放的音樂(lè)改變,播放電子琴內(nèi)置的音樂(lè),并顯示相應(yīng)音符,循環(huán)播放。此時(shí),如果按下復(fù)位鍵,數(shù)碼管顯示0,清楚

6、錄音,此時(shí)系統(tǒng)又處于彈奏狀態(tài)。本設(shè)計(jì)存儲(chǔ)了二首音樂(lè),可循環(huán)播放.(小星星和歡樂(lè)頌)三、 運(yùn)行環(huán)境3.1硬件環(huán)境3.1.1總體設(shè)計(jì)軟件模型連線:P37蜂鳴器P20連接LED0(模式指示燈:彈奏-亮,播放-不亮)P21連接LED1和獨(dú)立開(kāi)關(guān)(錄音指示燈:彈奏保存-亮,彈奏不保存-不亮)P32獨(dú)立按鍵,外部中斷控制復(fù)位鍵P33獨(dú)立按鍵,外部中斷播放/彈奏切換按鍵P1連接數(shù)碼管顯示P0連接矩陣鍵盤(pán)此設(shè)計(jì)模塊實(shí)現(xiàn)的功能有:1.把不同的頻率也就是節(jié)拍的聲音輸入到放大器,播放彈奏的聲音;2.在彈奏音樂(lè)的同時(shí)將音符顯示于數(shù)碼管;3.彈奏音樂(lè)的時(shí)候要將音符輸入到數(shù)碼管;4.播放內(nèi)置儲(chǔ)存的音樂(lè)時(shí)要顯示此時(shí)播放的音

7、樂(lè)音符;5.具備存儲(chǔ)在播放所彈奏的音樂(lè)的功能;6.復(fù)位功能,模式復(fù)位、錄音清楚,數(shù)碼管顯示為0。3.1.2 AT89C51單片機(jī)相關(guān)介紹1)AT89C51簡(jiǎn)介AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱(chēng)單片機(jī)。AT89C51它是一個(gè)低功耗高性能單片機(jī),40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,AT89C51可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。

8、AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖3.2所示。圖3 AT89C51引腳分布圖主要引腳功能: 1、 RST(9):復(fù)位輸入。當(dāng)振蕩器復(fù)位時(shí),要保持RST引腳2個(gè)機(jī)器周期的高電平時(shí)間;2、 XTAL1(19):反向振蕩器放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入; 3、 XTAL2(18):來(lái)自反向振蕩器的輸出;4、 P1口(18):P1口是從內(nèi)部提供上拉電阻器的8位雙向I/O口,P1口緩沖器能接收和輸出4個(gè)TTL門(mén)電流;5、 /:當(dāng)保持低電平時(shí),單片機(jī)只訪問(wèn)外部程序存儲(chǔ)器。為高電平時(shí),單片機(jī)只訪問(wèn)內(nèi)部程序存儲(chǔ)器。2)芯片擦除整個(gè)PEROM陣列和三

9、個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來(lái)完成。在芯片擦操作中,代碼陣列全被寫(xiě)“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM、定時(shí)器、計(jì)數(shù)器、串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。3.1.3 矩陣式鍵盤(pán)的結(jié)構(gòu)與工作原理矩陣式結(jié)構(gòu)的鍵盤(pán)顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,本系統(tǒng)中的矩陣鍵盤(pán)中,列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)

10、的I/O口作為輸出端,而列線所接的I/O口則作為輸入。當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。圖4 矩陣式鍵盤(pán)3.1.4按鍵顯示模塊1)數(shù)碼管的分類(lèi)本設(shè)計(jì)用的是七段碼??娠@示0-F。按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。1. 共陽(yáng)數(shù)碼管:是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管。共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將

11、所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。2. 共陰數(shù)碼管:在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。2)數(shù)碼管的驅(qū)動(dòng)方式數(shù)碼管的驅(qū)動(dòng)方式分為:靜態(tài)式和動(dòng)態(tài)式兩類(lèi)。1.靜態(tài)顯示驅(qū)動(dòng):靜態(tài)驅(qū)動(dòng)也稱(chēng)直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。優(yōu)點(diǎn)是:編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多。2.動(dòng)態(tài)顯示驅(qū)動(dòng):動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起,另外

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

13、是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。顯示模塊如圖所示。圖5 顯示模塊3.1.5功能顯示燈模塊當(dāng)按下彈奏/播放功能鍵時(shí),LED0燈亮(P20)表示彈奏模式,再次按下LED0熄滅表示播放模式;當(dāng)獨(dú)立開(kāi)關(guān)控制LED1亮?xí)r表示彈奏保存錄音或者播放錄音歌曲,不亮?xí)r則表示彈奏不會(huì)保存錄音或者播放內(nèi)置音樂(lè)。圖6 功能顯示燈模塊3.1.6音樂(lè)播放裝置本次設(shè)計(jì)很簡(jiǎn)陋,沒(méi)有MP3那樣優(yōu)美的音樂(lè),但此次設(shè)計(jì)分成“音調(diào)”和“節(jié)拍”兩部分,聽(tīng)起來(lái)還是不錯(cuò)的。音調(diào):表示一個(gè)音符唱多高的頻率節(jié)拍:表示一個(gè)音符唱多長(zhǎng)的時(shí)間。由于本課程設(shè)計(jì)是由用戶通過(guò)鍵盤(pán)輸入彈奏樂(lè)曲的,所以節(jié)拍由用戶掌握,不由程序控制。因此,我

14、們只需弄清楚音樂(lè)中的音符和對(duì)應(yīng)的頻率,利用單片機(jī)的定時(shí)/計(jì)數(shù)器來(lái)產(chǎn)生方波頻率信號(hào)即可。要產(chǎn)生相應(yīng)的音頻脈沖,只需要計(jì)算出某音頻的周期,再除以2。利用計(jì)數(shù)器計(jì)時(shí)半周期,計(jì)滿時(shí)使P2.0反向,然后重復(fù)計(jì)時(shí)再反向。本例中,單片機(jī)工作在12MHz時(shí)鐘,使用定時(shí)器/計(jì)數(shù)器T0,工作模式為1,改變計(jì)數(shù)初值TH0、TL0就可產(chǎn)生不同頻率的脈沖信號(hào)。例如低3MI音,頻率為330Hz,其周期T=1/f=1/330=3030us,計(jì)數(shù)值N=3030/2=1515,所以每計(jì)數(shù)1515次P2.0反向。計(jì)數(shù)初值T=65536-N=64021。C調(diào)的各音符頻率與計(jì)數(shù)值T的對(duì)照表如下圖所示。表1 C調(diào)各音符頻率與計(jì)數(shù)值T對(duì)

15、照表音符頻率(HZ)簡(jiǎn)譜碼(T值)音符頻率(HZ)簡(jiǎn)譜碼(T值)低 1 DO26263628# 4 FA#74064860# 1 DO#27763731中 5 SO78464898低 2 RE29463853# 5 SO#83164934# 2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA4406

16、4400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI1967652833.1.7振蕩電路在引腳XTAL1和XTAL2外接晶體振蕩器(簡(jiǎn)稱(chēng)晶振)或陶瓷諧振器,就構(gòu)成了內(nèi)部震蕩方式

17、。由于單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,當(dāng)外接晶振后,就構(gòu)成了自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。晶振通常選用6MHz、12MHz或者24MHz。本設(shè)計(jì)中采用的是12MHz。電容器C1、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般530pF。內(nèi)部振蕩方式所得的時(shí)鐘信號(hào)比較穩(wěn)定,電路中使用較多。振蕩方式如下圖: 圖7 振蕩電路3.1.8控制按鈕電路控制按鈕,控制是彈奏還是演唱(P3.3)以及復(fù)位功能(P3.2)圖8 控制按鈕電路3.1.9揚(yáng)聲器電路圖9 揚(yáng)聲器電路3.2軟件環(huán)境3.2.1 I/O并行口直接驅(qū)動(dòng)LED顯示對(duì)應(yīng)鍵值的顯示:表2 字形碼表及對(duì)應(yīng)的音符00x3f低 5 SO80x7f中 6

18、LA10x06低 6 LA90x6f中 7 SI20x5b低 7 SIA0x77高 1 DO30x4f中 1 DOB0x7c高 2 RE40x66中 2 REC0x39高 3 M50x6d中 3 MD0x5e高 4 FA60x7d中 4 FAE0x79高 5 SO70x07中 5 SOF0x71高 6 LA在本設(shè)計(jì)中,數(shù)碼管的顯示通過(guò) P1=DSY_CODEx這句語(yǔ)言來(lái)查表并輸出,實(shí)現(xiàn)音符的顯示。圖10 LED顯示3.2.2音樂(lè)播放設(shè)計(jì)在音樂(lè)播放程序中用到了兩個(gè)定時(shí)/計(jì)數(shù)器。其中T0用來(lái)產(chǎn)生音調(diào),播放彈奏時(shí)的按鍵音調(diào)聲音,T1用來(lái)播放音樂(lè)。彈奏時(shí)根據(jù)不同的鍵值,調(diào)用不同的音符表中的值,并賦值給

19、定時(shí)器以便產(chǎn)生不同的聲音。下圖為演奏發(fā)聲的流程圖:圖11 演奏發(fā)聲流程圖四、 開(kāi)發(fā)工具和編程語(yǔ)言4.1 開(kāi)發(fā)工具4.1.1 Proteus軟件Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在

20、編譯方面,它也支持IAR、Keil和MATLAB等多種編譯器。Proteus軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:1原理布圖2PCB自動(dòng)或人工布線3SPICE電路仿真革命性的特點(diǎn):1互動(dòng)的電路仿真用戶甚至可以實(shí)時(shí)采用諸如RAM,ROM,鍵盤(pán),馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。2仿真處理器及其外圍電路可以仿真51系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計(jì)開(kāi)發(fā)環(huán)境。4.1

21、.2 Keil軟件1)系統(tǒng)概述Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil 的優(yōu)勢(shì)。下面詳細(xì)介紹Keil C51開(kāi)發(fā)系統(tǒng)各部分功能和使用。2)Keil C51單片機(jī)軟件開(kāi)發(fā)系統(tǒng)的整體結(jié)構(gòu)C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51 for Windows和for Dos的集成開(kāi)發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件

22、可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器如EPROM中。使用獨(dú)立的Keil仿真器時(shí),注意事項(xiàng):*仿真器標(biāo)配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。*仿真器上的復(fù)位按鈕只復(fù)位仿真芯片,不復(fù)位目標(biāo)系統(tǒng)。* 仿真芯片的31腳(/EA)已接至高電平,所以仿真時(shí)只能使用片內(nèi)ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的

23、31腳相連,故該仿真器仍可插入到擴(kuò)展有外部ROM(其CPU的/EA引腳接至低電平)的目標(biāo)系統(tǒng)中使用。3)優(yōu)點(diǎn)1.Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。2.與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再使用C來(lái)開(kāi)發(fā),體會(huì)更加深刻。五、 詳細(xì)設(shè)計(jì)5.1矩陣式鍵盤(pán)的按鍵識(shí)別方法矩陣掃描法:行掃描法 ,是一種最常用的按鍵識(shí)別方法,介紹過(guò)程如下。1、 判斷鍵盤(pán)中有無(wú)鍵按下。將全部行線置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的

24、鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。若所有列線均為高電平,則鍵盤(pán)中無(wú)鍵按下。2、 判斷閉合鍵所在的位置。在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。相關(guān)代碼:P0 = 0xff; Line = 1; Mask = 0x01; for(i=0;i0) num = (Line-1)*4+Col;if(SAVE=0) /保存 ,燈亮savea=num;a+; if(num=0) TR0=0;

25、 SPK=1; /在未按鍵時(shí),防止長(zhǎng)期高電平損壞喇叭 else P1 = CharCodenum-1;High=tabnum-10; Low =tabnum-11;TR0=1;while(1) ScanCode = P0 & 0xf0;if(ScanCode = 0xf0) TR0 = 0;SPK=1;break; Mask =1; Line +; 5.2鍵盤(pán)接口必須具有的4個(gè)基本功能(1) 去抖動(dòng):每個(gè)按鍵在按下或松開(kāi)時(shí),都會(huì)產(chǎn)生短時(shí)間的抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間與鍵的質(zhì)量相關(guān),一般為520mm。所謂抖動(dòng)是指在識(shí)別被按鍵是必須避開(kāi)抖動(dòng)狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開(kāi)狀態(tài)才能保證識(shí)別正確無(wú)誤。(2)

26、 被按鍵識(shí)別:如何識(shí)別被按鍵是接口解決的主要問(wèn)題,一般可通過(guò)軟硬結(jié)合的方法完成。(3)鍵碼產(chǎn)生:為了從鍵的行列坐標(biāo)編碼得到反映鍵功能的鍵碼,一般在內(nèi)存區(qū)中建立一個(gè)鍵盤(pán)編碼表,通過(guò)查表獲得被按鍵的鍵碼。如下為鍵盤(pán)編碼表:unsigned char code tab2= 0x00,0x00, 0xf8,0x8c, 0xf9,0x5b, 0xfa,0x15, 0xfa,0x67, 0xfb,0x04, 0xfb,0x90, 0xfc,0x0c, 0xfc,0x44, 0xfc,0xac, 0xfd,0x09, 0xfd,0x34, 0xfd,0x82, 0xfd,0xc8, 0xfe,0x06, 0

27、xfe,0x22, 0xfe,0x56, 0xfe,0x85, 0xfe,0x9a, 0xfe,0xc1, 0xfe,0xe4, 0xff,0x03;這是個(gè)二維數(shù)組,第一列是高位(THx),第二列是地位(TLx),一共有16行,第一行對(duì)應(yīng)休止符。用AT89C51的并行口P0接44矩陣鍵盤(pán),以P0.0P0.3作輸入線,以P0.4P0.7作輸出線;(4)在數(shù)碼管上顯示每個(gè)按鍵的“0F”序號(hào)。5.3數(shù)碼管的相關(guān)代碼unsigned char code CharCode=0xc0, 0xf9, 0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80, 0x90, 0x88, 0x83,

28、 0xc6,0xa1,0x86,0x8e;5.4 C調(diào)各音符頻率的相關(guān)代碼將數(shù)值轉(zhuǎn)換為16進(jìn)制的數(shù),分成高八位和低八位,我們要為這個(gè)音符建立一個(gè)表格,單片機(jī)通過(guò)查表的方式來(lái)獲得相應(yīng)的數(shù)據(jù)。unsigned char code tab2= 0x00,0x00, 0xf8,0x8c, 0xf9,0x5b, 0xfa,0x15, 0xfa,0x67, 0xfb,0x04, 0xfb,0x90, 0xfc,0x0c, 0xfc,0x44, 0xfc,0xac, 0xfd,0x09, 0xfd,0x34, 0xfd,0x82, 0xfd,0xc8, 0xfe,0x06, 0xfe,0x22, 0xfe,

29、0x56, 0xfe,0x85, 0xfe,0x9a, 0xfe,0xc1, 0xfe,0xe4, 0xff,0x03;5.5 放歌子程序放歌子程序設(shè)計(jì)類(lèi)似于音樂(lè)播放,將每個(gè)音調(diào)循環(huán)播放出來(lái)。if(MODE=1)/播放模式 ,燈不亮if(SAVE=1)/保存燈不亮,播放內(nèi)置音樂(lè)SPK = 1;/P1 = CharCodeSongTone_Index;dis = SongTone_Index; High = tabSongTone_Index0;Low = tabSongTone_Index1;TR1 = 1;delay1(6000*PaiTone_Index);/取音節(jié)TR1 = 0;SPK=

30、1;/if(Tone_Index+1)%7)=0)delay1(1000);/else delay1(400);Tone_Index+;if(Tone_Index=sizeof(Song) Tone_Index =0;if(SAVE=0)/保存燈亮,播放錄制的音樂(lè)Tone_Index =0;SPK = 1;for(j=0;ja;j+) /P1 = CharCodesavej-1;dis = savej-1;High = tabsavej-10;Low = tabsavej-11;TR1 = 1;delay1(6000);/取音節(jié)TR1 = 0;SPK=1;delay1(1000);if(MOD

31、E!=1&a=0)break;5.6 內(nèi)置歌曲子程序unsigned char code Song=8,8,12,12,13,13,12, 11,11,10,10,9,9,8,12,12,11,11,10,10,9, 12,12,11,11,10,10,9,8,8,12,12,13,13,12, 11,11,10,10,9,9,8,/小星星10,10,11,12,12,11,10,9,8,8,9,10,3,2,2,10,10,11,12,12,11,10,9,8,8,9,10,9,8,8,9,9,10,8,9,10,11,10,8,9,10,11,10,8,8,9,12,10,10,11,12

32、,12,11,10,9,8,8,9,10,9,8,8/歡樂(lè)頌;六、 系統(tǒng)調(diào)試6.1硬件調(diào)試硬件調(diào)試主要是針對(duì)單片機(jī)部分進(jìn)行調(diào)試。在上電前,先確保電路中不在斷路或短路情況,這一工作是整個(gè)調(diào)試工作的第一步,也是非常重要的一個(gè)步驟。在這部分調(diào)試中主要使用的工具是萬(wàn)用表,用來(lái)完成檢測(cè)電路中是否存在斷路或者短路情況等。注意焊點(diǎn)之間,確保焊點(diǎn)沒(méi)有短接在一起,同時(shí)注意焊點(diǎn)的美觀,確保沒(méi)有開(kāi)路以及短路的現(xiàn)象出現(xiàn)。在確保硬件電路正常,無(wú)異常情況(斷路或短路)方可上電調(diào)試,上電調(diào)試的目的是檢驗(yàn)電路是否接錯(cuò),同時(shí)還要檢驗(yàn)原理是否正確,在本次設(shè)計(jì)中,上電調(diào)試主要鍵盤(pán)單片機(jī)控制部分、數(shù)碼管點(diǎn)亮部分和音頻轉(zhuǎn)換電路硬件調(diào)試。1、數(shù)碼管LED電路調(diào)試:接通電源,隨機(jī)按下按鈕可以看到數(shù)碼管顯示數(shù)字。2、鍵盤(pán)單片機(jī)控制部分調(diào)試:上電后,隨機(jī)按動(dòng)鍵盤(pán)可以發(fā)現(xiàn)各個(gè)按鍵對(duì)應(yīng)的音正確。6.2軟件調(diào)試調(diào)試主要方法和技巧:通常一個(gè)調(diào)試程序應(yīng)該具備至少四種性能:跟蹤、斷點(diǎn)、查看變量、更改數(shù)值。整個(gè)程序是一個(gè)主程序調(diào)用各個(gè)子程序?qū)崿F(xiàn)功能的過(guò)程,要使主程序和整個(gè)程序都能平穩(wěn)運(yùn)行,各個(gè)模塊的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論