版權(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ì)名稱 : 專 業(yè) 班 級(jí) : 學(xué) 生 姓 名 : 學(xué) 號(hào) : 指 導(dǎo) 教 師 : 課程設(shè)計(jì)時(shí)間 : 1 需求分析1.1 課題設(shè)計(jì)目的及其意義隨著社會(huì)的發(fā)展進(jìn)步,人們的生活水平也逐步提高,音樂(lè)已經(jīng)成為了我們生活中很重要的一部分,在工作和學(xué)習(xí)之余,欣賞音樂(lè)不僅使身心得到放松,同時(shí)也提高人們的精神品質(zhì)和個(gè)人素養(yǎng)。當(dāng)代,愛(ài)好音樂(lè)的年輕人越來(lái)越多,也有不少人自己練習(xí)彈奏樂(lè)器,作為業(yè)余愛(ài)好和一種放松的手段,鑒于一些樂(lè)器學(xué)習(xí)難度大需花費(fèi)太多精力,且其價(jià)格太過(guò)于高昂,使得一部分有這種想法的人不得不放棄這種想法,而電子琴又是一種新型的鍵盤樂(lè)器,它是現(xiàn)代電子科技與音樂(lè)結(jié)合的產(chǎn)物
2、,價(jià)格相對(duì)便宜,能夠滿足一般愛(ài)好者的需求,因此,在現(xiàn)代音樂(lè)中扮演著重要的角色。 故簡(jiǎn)易電子琴的研制具有一定的社會(huì)意義。單片機(jī)(單片微型計(jì)算機(jī))是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,具有高性能、高速度、體積小、價(jià)格低廉、穩(wěn)定可靠等特點(diǎn)。單片機(jī)的應(yīng)用相當(dāng)廣泛,從平常的家用電器到航空航天系統(tǒng)和國(guó)防軍事、尖端武器都能找到它的身影。因此,單片機(jī)的開(kāi)發(fā)應(yīng)用已成為高科技和工程領(lǐng)域的一項(xiàng)重大課題。1.2 課題設(shè)計(jì)的任務(wù)與主要內(nèi)容以51系列單片機(jī)AT89C51為主控制器,附有矩陣鍵盤、LED顯示管、揚(yáng)聲器組成。系統(tǒng)完成顯示輸入信息、播放相應(yīng)音符等基本功能?;疽螅海?)鍵盤矩陣識(shí)別。即矩陣掃描,顯示當(dāng)前按鍵。 (2
3、)不同頻率音符播放??梢酝ㄟ^(guò)按鍵控制24種發(fā)音,完成低音、中音、高音功能切換。 (3)具備示范音樂(lè)播放功能,示范音樂(lè)數(shù)量2 - 3首;擴(kuò)展要求:(根據(jù)情況自行選擇,可提高課程設(shè)計(jì)驗(yàn)收分?jǐn)?shù))(1)通過(guò)LCD屏顯示音樂(lè)名稱。(2)動(dòng)態(tài)顯示音樂(lè)音高(低音、中音、高音)及當(dāng)前按鍵音的符號(hào)。(3) 具有記憶功能,能記憶上次停電后的音高。要求 :驗(yàn)收可用proteus軟件模擬驗(yàn)證,或?qū)嵨矧?yàn)證更佳設(shè)計(jì)思路:先根據(jù)要求設(shè)計(jì)硬件電路和編寫相應(yīng)的程序,然后進(jìn)行軟件仿真調(diào)試,最后具體實(shí)現(xiàn)的功能:按下音符鍵可以發(fā)出相應(yīng)的音符。2 概要設(shè)計(jì)2.1概要分析 樂(lè)音聽(tīng)起來(lái)有的高、有的低,這就叫做音高。音高是由發(fā)聲物體振動(dòng)頻率
4、的高低決定的,頻率高聲音就高,頻率低聲音就低。音持續(xù)時(shí)間的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。一首音樂(lè)是由許多不同的音符組成的,而每個(gè)音符對(duì)應(yīng)著不同的頻率,這樣就可以利用不同的頻率組合,加以拍數(shù)對(duì)應(yīng)的延時(shí),構(gòu)成音樂(lè)。如果單片機(jī)要自己播放音樂(lè)就必須考慮到節(jié)拍的設(shè)置。對(duì)于AT80C51而言要產(chǎn)生一定頻率的方波一般是先將某口線輸出高電平,延遲一段時(shí)間后再輸出低電平。通過(guò)改變延遲時(shí)間可以改變單片機(jī)的輸出頻率。單片機(jī)的延時(shí)主要有兩種方式,即軟件延時(shí)和使用定時(shí)/計(jì)數(shù)器延時(shí)。其中軟件延時(shí)不是很精確,而電子琴電路由于每個(gè)音符的頻率值要求比較嚴(yán)格,因此我們選用定時(shí)/計(jì)數(shù)器延時(shí)。由于本課程設(shè)計(jì)是由用戶
5、通過(guò)鍵盤輸入彈奏樂(lè)曲的,所以節(jié)拍由用戶掌握,不由程序控制。因此,我們只需弄清楚音樂(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)的各音
6、符頻率與計(jì)數(shù)值T的對(duì)照表如表1所示。表1 C調(diào)各音符頻率與計(jì)數(shù)值T對(duì)照表音符頻率(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
7、#41564331高 2 RE117565110低 6 LA44064400# 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 SI1967652832.2 簡(jiǎn)易電子琴基本原理及其框圖1、
8、 基本思想: 簡(jiǎn)易的電子琴系統(tǒng)主要是采用AT89C51單片機(jī),單片機(jī)工作于12MHZ的時(shí)鐘頻率,使用其定時(shí)/計(jì)數(shù)器T0,工作模式為1,設(shè)計(jì)4*4鍵盤矩陣,設(shè)置成16個(gè)音,可隨意彈奏想要表現(xiàn)的音樂(lè),因?yàn)閱纹瑱C(jī)產(chǎn)生的音頻脈沖沒(méi)有足夠的驅(qū)動(dòng)能力,所以用三極管放大電路實(shí)現(xiàn)音頻的放大,保證揚(yáng)聲器能產(chǎn)生所要實(shí)現(xiàn)的音符聲音。2、硬件框圖: 圖1 硬件框圖3、 軟件設(shè)計(jì)流程圖: 本設(shè)計(jì)采用AT89C51單片機(jī)作為核心處理器件,按下復(fù)位鍵,進(jìn)入初始化,調(diào)用鍵盤掃面子程序,獲得鍵值,查詢音階表,獲取定時(shí)初值,向喇叭輸入相應(yīng)頻率的脈沖驅(qū)動(dòng),發(fā)出相應(yīng)的音調(diào),若按鍵沒(méi)有釋放,則一直發(fā)聲;若按鍵松開(kāi),則停止發(fā)聲。當(dāng)讀到結(jié)
9、束符時(shí),停止播放音樂(lè)。 具體軟件流程圖如下: 1)中斷服務(wù)子程序流程圖: 圖2:中斷服務(wù)子程序流程圖 2)主程序流程圖: 圖3:主程序流程圖3 運(yùn)行環(huán)境和編程語(yǔ)言 運(yùn)行環(huán)境:裝有PROTUS、keil軟件的計(jì)算機(jī) 編程語(yǔ)言:C語(yǔ)言4 詳細(xì)設(shè)計(jì)4.1系統(tǒng)的硬件結(jié)構(gòu)4.1.1 硬件總體構(gòu)架硬件電路的設(shè)計(jì)主要包括芯片89C51,、4*4鍵盤電路、振蕩電路、復(fù)位電路及音頻電路組成。簡(jiǎn)易電子琴硬件電路圖:圖4:硬件電路圖4.1.2 單片機(jī)89C51的簡(jiǎn)介AT89C51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可
10、反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。AT89S51具有如下特點(diǎn):40個(gè)引腳,4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。 此外,AT
11、89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。該系列單片機(jī)引腳與封裝如下圖所示:圖5:?jiǎn)纹瑱C(jī)引腳與封裝主要引腳功能: 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
12、口(18):P1口是從內(nèi)部提供上拉電阻器的8位雙向I/O口,P1口緩沖器能接收和輸出4個(gè)TTL門電流;5、 /:當(dāng)保持低電平時(shí),單片機(jī)只訪問(wèn)外部程序存儲(chǔ)器。為高電平時(shí),單片機(jī)只訪問(wèn)內(nèi)部程序存儲(chǔ)器。4.1.3鍵盤電路模塊鍵盤是最常用的單片機(jī)輸入設(shè)備,大致可以分為獨(dú)立連接式鍵盤和矩陣式。獨(dú)立連接式鍵盤是最簡(jiǎn)單的鍵盤電路,每個(gè)鍵獨(dú)立接入一根數(shù)據(jù)線。這種鍵盤結(jié)構(gòu)簡(jiǎn)單,使用方便,但是占用的I/O口線較多。矩陣式鍵盤由行線和列線組成,按鍵位于行列的交叉點(diǎn)上,行列式鍵盤可節(jié)省I/O口,適合按鍵數(shù)較多的場(chǎng)合。所以本設(shè)計(jì)的4*4鍵盤采用矩陣式鍵盤。圖6:矩陣式鍵盤硬件連接4.1.4 振蕩電路模塊單片機(jī)的時(shí)鐘信號(hào)
13、用來(lái)提供單片機(jī)內(nèi)各種位操作的時(shí)間基準(zhǔn),時(shí)鐘信號(hào)通常有兩種電路形式得到:內(nèi)部振蕩方式和外部振蕩方式。在引腳XTAL1和XTAL2外接晶體振蕩器(簡(jiǎn)稱晶振)或陶瓷諧振器,就構(gòu)成了內(nèi)部震蕩方式。由于單片機(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:振蕩電路硬件連接4.1.5 復(fù)位電路復(fù)位操作完成單片機(jī)內(nèi)電路的初始化,是單片機(jī)從一種確定的狀態(tài)開(kāi)始運(yùn)
14、行。當(dāng)單片機(jī)的復(fù)位引腳RET出現(xiàn)5ms以上的高電平時(shí),單片機(jī)就完成了復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài),而無(wú)法執(zhí)行程序。因此要求單片機(jī)復(fù)位后能脫離復(fù)位狀態(tài)。根據(jù)應(yīng)用要求,復(fù)位操作通常有2種基本形式:上電復(fù)位、開(kāi)關(guān)復(fù)位。上電復(fù)位要求接通電源后,自動(dòng)實(shí)現(xiàn)復(fù)位操作。開(kāi)關(guān)復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,如果發(fā)生死機(jī),用按鈕開(kāi)關(guān)操作使單片機(jī)復(fù)位。上電后,由于電容要充電,是RST持續(xù)一段時(shí)間高電平時(shí)間。當(dāng)單片機(jī)已經(jīng)在運(yùn)行之中時(shí),按下復(fù)位鍵也能使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電且開(kāi)關(guān)復(fù)位的操作。通常選擇C=1030uF,R=101k常用的復(fù)位電路如下圖所示: 圖
15、8:復(fù)位電路在單片機(jī)啟動(dòng)后,電容C兩端的電壓持續(xù)充電為5V,這是時(shí)候10K電阻兩端的電壓接近于0V,RST處于低電平所以系統(tǒng)正常工作。當(dāng)按鍵按下的時(shí)候,開(kāi)關(guān)導(dǎo)通,這個(gè)時(shí)候電容兩端形成了一個(gè)回路,電容被短路,所以在按鍵按下的這個(gè)過(guò)程中,電容開(kāi)始釋放之前充的電量。隨著時(shí)間的推移,電容的電壓從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個(gè)時(shí)候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機(jī)系統(tǒng)自動(dòng)復(fù)位。4.1.6 音頻放大電路模塊使用PNP管來(lái)放大,其中發(fā)射極接5V電源,集電極接喇叭,電路中的電容是用來(lái)隔離直流電用的。PNP管放大原理:當(dāng)PNP管的
16、VC<VB<VE時(shí),使得集電結(jié)反偏,發(fā)射結(jié)正偏時(shí),管子的發(fā)射極電流流入管子,基極電流和集電極電流流出管子,且集電極電流跟基極電流之間成關(guān)系,三極電流滿足IE=IB+IC=IB(1+·IB)。即,基極電流可以控制集電極電流,這種控制作用就稱為管子的放大作用。本課程設(shè)計(jì)的音頻放大電路圖(三極管型號(hào)為9015):圖9:音頻放大電路圖4.2 系統(tǒng)軟件的設(shè)計(jì)#include<reg52.h> #define uchar unsigned char#define D 2/leduchar code tab=0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7
17、d,0x07,0x7f;sbit led0 = P24;sbit led1 = P25;sbit led2 = P26;sbit led3 = P27;/蜂鳴器sbit SPK = P23;/矩陣鍵盤 P1uchar Timer0_H,Timer0_L,Time;/*-音樂(lè)數(shù)據(jù)表-*/code unsigned char mother= 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1, 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1, 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,
18、3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 ;code unsigned char songbie=5, 2, 2, 3, 2, 1, 5, 2, 1, 1, 3, 4, 6, 2, 2, 1, 3, 1, 6, 2, 1, 5, 2, 4,0, 0, 0;code unsigned char xiaoxingxing=1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2, 6,2,2, 5,2,4,4,2,2,
19、 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4, 0,0,0;code unsigned char FREQH=/ 音階頻率表 高八位 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; code unsigned char FREQL= / 音階頻率表 低八位 0x42,0xC1,0
20、x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ; void DelayUs2x(unsigned char t) while(-t);/*-大延時(shí)-*/void DelayMs(unsigned char t) while(t-) /大致延時(shí)1mS DelayUs2x(245); DelayUs2x(245); uchar yinjie;
21、/用來(lái)設(shè)定演奏時(shí)的音階高低,1234uchar temp;/用來(lái)控制led變化的速度void Time_init()/定時(shí)器初始化TMOD |= 0x01; /置定時(shí)器0工作方式1EA = 1; /打開(kāi)全局中斷ET0 = 1; /打開(kāi)定時(shí)0中斷void delays(unsigned char t)/節(jié)拍延時(shí)函數(shù) unsigned char i;for(i=0;i<t;i+) DelayMs(250); TR0=0; /關(guān)閉定時(shí)器0void delay(unsigned char t)/節(jié)拍延時(shí)函數(shù) unsigned char i;for(i=0;i<t;i+) DelayMs(2
22、50);void Song()/歌曲處理函數(shù) TH0=Timer0_H;/賦值定時(shí)器時(shí)間,決定頻率 TL0=Timer0_L; TR0=1; /打開(kāi)定時(shí)器 delays(Time); /延時(shí)所需要的時(shí)間 void play(unsigned char *music,uchar len) /音樂(lè)演奏函數(shù) unsigned char k,i; i=0; while(i<len) k=musici+7*musici+1-1;/去音符振蕩頻率所需數(shù)據(jù) Timer0_H=FREQHk; Timer0_L=FREQLk; Time=musici+2; /節(jié)拍時(shí)長(zhǎng) i=i+3; Song(); voi
23、d main()Time_init(); /定時(shí)器及外部中斷初始化P0 = tab0;P3 = tab0;while(1)/*-矩陣鍵盤掃描-*/switch(yinjie)case 0: P0 = tab0;break;case 1: P0 = tab1;break;case 2: P0 = tab2;break;case 3: P0 = tab3;break;/*-檢測(cè)第一行-*/P1=0xfe;/if(P1!=0xfe)/temp=P1;switch(temp)case 0xee: P3 = tab1;Timer0_H = FREQH1+yinjie*7-1;Timer0_L = FRE
24、QL1+yinjie*7-1;TH0 = Timer0_H;TL0 = Timer0_L;TR0 = 1;break;case 0xde:P3 = tab2;Timer0_H = FREQH2+yinjie*7-1;Timer0_L = FREQL2+yinjie*7-1;TH0 = Timer0_H;TL0 = Timer0_L;TR0 = 1;break;case 0xbe:P3 = tab3;Timer0_H = FREQH3+yinjie*7-1;Timer0_L = FREQL3+yinjie*7-1;TH0 = Timer0_H;TL0 = Timer0_L;TR0 = 1;bre
25、ak;case 0x7e:P3 = tab4;Timer0_H = FREQH4+yinjie*7-1;Timer0_L = FREQL4+yinjie*7-1;TH0 = Timer0_H;TL0 = Timer0_L;TR0 = 1;break;while(!(P1 = 0xfe);delay(D);while(!(P1 = 0xfe);TR0 = 0;/*-檢測(cè)第二行-*/P1=0xfd;if(P1!=0xfd)temp=P1;switch(temp)case 0xed:P3 = tab5;Timer0_H = FREQH5+yinjie*7-1;Timer0_L = FREQL5+yi
26、njie*7-1;TH0 = Timer0_H;TL0 = Timer0_L;TR0 = 1;break;case 0xdd:P3 = tab6;Timer0_H = FREQH6+yinjie*7-1;Timer0_L = FREQL6+yinjie*7-1;TH0 = Timer0_H;TL0 = Timer0_L;TR0 = 1;break;case 0xbd:P3 = tab7;Timer0_H = FREQH7+yinjie*7-1;Timer0_L = FREQL7+yinjie*7-1;TH0 = Timer0_H;TL0 = Timer0_L;TR0 = 1;break;cas
27、e 0x7d:P3 = tab0;yinjie+;if(yinjie = 4)yinjie = 0;break;while(!P1 = 0xfd);delay(D);while(!P1 = 0xfd);TR0 = 0; /*-檢測(cè)第三行-*/P1=0xfb; if(P1!=0xfb)temp=P1;switch(temp)case 0xeb:P3 = tab1;play(mother,100);play(songbie,27);break;case 0xdb:P3 = tab2;play(songbie,27);break;case 0xbb:P3 = tab3;play(songbie,27
28、);break;case 0x7b:P3 = tab4;play(mother,100);break;while(!P1 = 0xfb);delay(D);while(!P1 = 0xfb);TR0 = 0;/*-檢測(cè)第四行-*/P1=0xf7;if(P1!=0xf7)temp=P1;switch(temp)case 0xe7:P3 = tab5;play(xiaoxingxing,45);break;case 0xd7:P3 = tab6;play(xiaoxingxing,45);break;case 0xb7:P3 = tab7;play(xiaoxingxing,45);break;c
29、ase 0x77:P3 = tab8;play(xiaoxingxing,45);break;while(!(P1 = 0xf7);delay(D);while(!(P1 = 0xf7);TR0 = 0;/定時(shí)器0中斷void TIM0_ISR() interrupt 1 TR0=0; SPK=!SPK; TH0=Timer0_H; TL0=Timer0_L; TR0=1; 5 測(cè)試結(jié)果及調(diào)試分析 這里我們使用Proteus軟件進(jìn)行仿真,仿真電路圖如下:(當(dāng)我們按鍵時(shí)如果成功就會(huì)聽(tīng)到我們想要的音樂(lè))
30、 系統(tǒng)的軟件調(diào)試借助于TKS仿真器,在進(jìn)行系統(tǒng)軟件的連續(xù)調(diào)試之前要先進(jìn)行軟件的初調(diào),就是要使各個(gè)子程序模塊運(yùn)行正確,程序的運(yùn)行流程正確。軟件調(diào)試主要分以下幾個(gè)步驟進(jìn)行:功能子程序的調(diào)試。在調(diào)試功能子程序時(shí),許多參數(shù)都是未知的,要根據(jù)其所需的條件,給出假定的數(shù)據(jù),使其運(yùn)行,如果能完成預(yù)定的處理功能或與手工計(jì)算的結(jié)果相符,就說(shuō)明該子程序己調(diào)試通過(guò)。調(diào)試時(shí)由小到大,由里到外。通調(diào)時(shí),也是假定一些數(shù)據(jù)、參數(shù)和初始條件,然后運(yùn)行程序。當(dāng)運(yùn)算結(jié)果與手工計(jì)算的結(jié)果相同時(shí),該算法子程序則調(diào)試完成,反之,就要進(jìn)行相應(yīng)的修改。其它子程序的調(diào)試同理;程序流程的調(diào)試。序流程的調(diào)試主要是查看程序運(yùn)行的步驟是否正確,在某時(shí)刻程序運(yùn)行所處的位置是否正確,是否能正確運(yùn)行各個(gè)中斷服務(wù)程序。在各個(gè)中斷服務(wù)子程序設(shè)置斷點(diǎn),然后運(yùn)行程序,查看程序是否能運(yùn)行到所有的斷點(diǎn),若所有斷點(diǎn)都能運(yùn)行
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年數(shù)字圖書館建設(shè)運(yùn)營(yíng)合同
- 2024年度跨境電商平臺(tái)運(yùn)營(yíng)合作合同
- 2024年數(shù)據(jù)中心的租賃與運(yùn)營(yíng)合同
- 2024年房地產(chǎn)買賣合同協(xié)議全面解析
- DB4114T 192-2023 白術(shù)主要病蟲害防治技術(shù)規(guī)程
- DB4105T 204-2022 大蒜套種朝天椒栽培技術(shù)規(guī)程
- 2024年教育投資與融資合同范本
- 押題10工業(yè)背景探究和區(qū)域工業(yè)發(fā)展-備戰(zhàn)2023年高考地理之考前押大題(原卷版)
- 2024年數(shù)據(jù)存儲(chǔ)場(chǎng)地租賃協(xié)議
- 2024年建筑工程施工合同:精準(zhǔn)協(xié)作指南
- 【外科學(xué)】微創(chuàng)外科技術(shù)-課件
- 護(hù)理管理制度-課件
- 2023年人民法院電子音像出版社招聘筆試模擬試題及答案解析
- 教育學(xué)和教育心理學(xué)試題庫(kù)含答案解析背誦版
- 黃梅戲《打豬草》-對(duì)花課件
- 工程項(xiàng)目資源管理講義課件
- 《月光下的中國(guó)》朗誦稿
- 步長(zhǎng)腦心通產(chǎn)品資料科室會(huì)專家講座
- 建筑防火知識(shí)課件
- 《微生物學(xué)檢驗(yàn)》案例解析
- 根的構(gòu)造課件
評(píng)論
0/150
提交評(píng)論