畢業(yè)設(shè)計(jì)(論文)基于AT89C52單片機(jī)的16鍵簡(jiǎn)易電子琴的設(shè)計(jì)_第1頁
畢業(yè)設(shè)計(jì)(論文)基于AT89C52單片機(jī)的16鍵簡(jiǎn)易電子琴的設(shè)計(jì)_第2頁
畢業(yè)設(shè)計(jì)(論文)基于AT89C52單片機(jī)的16鍵簡(jiǎn)易電子琴的設(shè)計(jì)_第3頁
畢業(yè)設(shè)計(jì)(論文)基于AT89C52單片機(jī)的16鍵簡(jiǎn)易電子琴的設(shè)計(jì)_第4頁
畢業(yè)設(shè)計(jì)(論文)基于AT89C52單片機(jī)的16鍵簡(jiǎn)易電子琴的設(shè)計(jì)_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 緒論 隨著生活水平的提高,在放松自己的同時(shí)又能提高各個(gè)方面的能力。學(xué)習(xí)和欣賞音樂可以在使人們得到放松的同時(shí),提高人們的精神品質(zhì)和個(gè)人素養(yǎng)。當(dāng)代,愛好音樂的年輕人越來越多,有不少人自己練習(xí)彈奏樂器,作為業(yè)余愛好和一種放松的手段,鑒于一些樂器學(xué)習(xí)難度大需要太多的學(xué)習(xí)時(shí)間,且其價(jià)格又太過于高昂,使得一部分有這種想法的人不得不放棄這種想法。而一些簡(jiǎn)易的電子樂器價(jià)格相對(duì)便宜,學(xué)習(xí)上手快,價(jià)格相對(duì)便宜,一般人容易負(fù)擔(dān)的起,能夠滿足一般愛好者的需求。故簡(jiǎn)易電子樂器的研制具有一定的社會(huì)意義。本次課程設(shè)計(jì)主要研究基于at89c52單片機(jī)的16鍵簡(jiǎn)易電子琴的設(shè)計(jì)。1.1 單片機(jī)發(fā)音概述 由于單片機(jī)的強(qiáng)大功能,

2、除了在測(cè)試控制領(lǐng)域中有著廣泛的應(yīng)用外,還有一些而有趣的應(yīng)用。比如,使用單片機(jī)可以驅(qū)動(dòng)蜂鳴器或者揚(yáng)聲器發(fā)出聲音,還可以控制其發(fā)出不同的聲調(diào),從而連接起來構(gòu)成一個(gè)曲子。目前,市場(chǎng)上有很多種音樂模塊或者音樂芯片,可以直接產(chǎn)生各種曲子。但是,這種模塊價(jià)格比較昂貴,電路結(jié)構(gòu)比較復(fù)雜。如果系統(tǒng)中僅需要產(chǎn)生簡(jiǎn)單的音符或者簡(jiǎn)短的曲子,可以使用單片機(jī)配合簡(jiǎn)單的揚(yáng)聲器而產(chǎn)生需要的音樂效果。一般說來,單片機(jī)不像其他專業(yè)樂器那樣能奏出多種音色的聲音,即不包含相應(yīng)幅度的諧波頻率。單片機(jī)演奏的音樂基本都是單音頻率。因此單片機(jī)演奏音樂比較簡(jiǎn)單,只需要清楚“音調(diào)”和“節(jié)拍”。 音調(diào)表示一個(gè)音符唱多高的頻率; 節(jié)拍表示一個(gè)音符

3、唱多長(zhǎng)的時(shí)間。1.1.1 音調(diào)音調(diào)是音樂學(xué)中的名詞,與平時(shí)所說的音高十分相似。在音樂中常把中音c上方的a音定為標(biāo)準(zhǔn)音高,其頻率為 f = 440hz,其余音均與其進(jìn)行比較。 和為兩個(gè)音符,如果兩個(gè)音符的頻率相差一倍時(shí),即時(shí),則稱比高一個(gè)倍頻程。在音樂中音符1(do)與音符之間正好相差一個(gè)倍頻程,在音樂學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度音里,有12個(gè)半音。以1-八音區(qū)為例。12個(gè)半音是:1-#1,#1-2,2-#2,#23,34,4-#4,#45,5-#5,#56,6-#6,#67,7-。由于人耳的聽覺效果,這12個(gè)音節(jié)的分度基本上是以對(duì)數(shù)關(guān)系來劃分的。只要知道了這12個(gè)音符的音高,也就是其基本

4、的音樂的頻率,就可以根據(jù)音符之間的倍頻程關(guān)系得到其他音符基本的音調(diào)頻率。知道了一個(gè)音符的頻率后,便可以讓單片機(jī)發(fā)出相應(yīng)的頻率的振蕩信號(hào),從而產(chǎn)生相應(yīng)的音符聲音。常采用的方法是通過單片機(jī)的定時(shí)器進(jìn)行定時(shí)中斷,在中斷服務(wù)子程序中將單片機(jī)上外界揚(yáng)聲器的i/o口來回置高電平或置低電平,從而讓揚(yáng)聲器發(fā)出聲音。為了讓單片機(jī)發(fā)出不同頻率音符的聲音,只需將定時(shí)器預(yù)置不同的定時(shí)值來實(shí)現(xiàn)。 以標(biāo)準(zhǔn)音高a為例:標(biāo)準(zhǔn)音高a的頻率 f=440hz,其對(duì)應(yīng)的周期為: (1-1)因此需要在單片機(jī)i/o口輸出周期為 t=2272us的方波脈沖,如圖1-1所示圖1-1單片機(jī)控制音調(diào)示意圖由上圖可知: 單片機(jī)輸出高電平和低電平信

5、號(hào)均為: (1-2)也就是說,單片機(jī)上定時(shí)器的中斷觸發(fā)時(shí)間為1136us。如果單片機(jī)采用定時(shí)器工作方式1,它以振蕩器的十二分頻信號(hào)為計(jì)數(shù)脈沖。設(shè)外接晶振的振蕩器頻率為f0,則定時(shí)器的預(yù)置初值由下式來確定: (1-3) 式中,count = =65536, 為定時(shí)器待確定的計(jì)數(shù)初值。因此定時(shí)器的高低計(jì)數(shù)器的初值為: (1-4) (1-5)如果單片機(jī)外接12mhz的晶振,則,將t=1136us和代入上面兩式,即可求得標(biāo)準(zhǔn)音高a在單片機(jī)定時(shí)器工作方式1下的定時(shí)器高低計(jì)數(shù)器的初值為: (1-6) (1-7)根據(jù)上面的求法,我們可以求出其他音調(diào)相應(yīng)的計(jì)數(shù)器的預(yù)置初值。在單片機(jī)晶振頻率,定時(shí)器在工作方式1

6、下定時(shí)器計(jì)數(shù)初值見表1-1表1-1晶振頻率定時(shí)器在工作方式1下定時(shí)器計(jì)數(shù)初值表音符頻率/hz計(jì)數(shù)初值音符頻率/hz計(jì)數(shù)初值低1 do26263628# 4 fa #74064860#1 do#27763731中 5 so78464898低2 re29463835# 5 so#83164934#1 re#31163928中 6 la88064968低 3 mi33064021# 6 la#93264994低 4 fa34964013中 7 si98895030#4 fa#37064185高 1 do104665058低5 so39264260# 1 do110965085#5 so4156433

7、1高117565110低 6 la44064400#2 re#124565134#6 la#46664463高 3 mi131865157低7 si49464524高 4 fa139765178中 1 do52364580# 4 fa#148065198# 1 do#55464633高 5 so 156865217中 2 re58764684# 5 so#166165235#2 re#62264732高 6 la176065252中 3 mi65964777# 6 la#186565268中 4 fa69864820高 7 si1967652831.1.2 節(jié)拍在一張完整樂譜開頭,都有如1=c

8、、1=g等等的標(biāo)識(shí)。這里1=c,1=g標(biāo)識(shí)樂譜的曲調(diào),簡(jiǎn)單的說就是跟音調(diào)有關(guān)系;這里的、用來表示節(jié)拍。對(duì)于音符的節(jié)拍,以為例。它表示樂譜中以四分音符為節(jié)拍,每一小節(jié)有三拍。1= g的節(jié)拍示意圖,見圖1-2 在圖中,總共有三拍:1、2為一拍,3、4、5為一拍,6為一拍。從時(shí)長(zhǎng)角度看,1、2的時(shí)長(zhǎng)為四分音的一半,即為八分音符長(zhǎng);3、4的時(shí)長(zhǎng)為八分音符的一半,即為十六分音符長(zhǎng);5的時(shí)長(zhǎng)為四分音符的一半,即為八分音符長(zhǎng);6的時(shí)長(zhǎng)為四分音符長(zhǎng)。1=g圖1-2節(jié)拍示意圖對(duì)于一拍的發(fā)音時(shí)間,如果樂曲沒有特殊說明,一般說來,一拍的時(shí)長(zhǎng)大約為400450ms。如果這里規(guī)定一拍的時(shí)長(zhǎng)為400ms,那么以四分音符為

9、節(jié)拍時(shí),四分音符的時(shí)長(zhǎng)為400ms,八分音符的時(shí)長(zhǎng)為200ms,十六分音符的時(shí)長(zhǎng)為100ms。從而,在單片機(jī)上可采用循環(huán)延時(shí)的辦法來實(shí)現(xiàn)控制一個(gè)音符唱多長(zhǎng)時(shí)間。首先要編寫一個(gè)精確的基本時(shí)長(zhǎng)的延時(shí)程序,比如說以八分音符的時(shí)長(zhǎng)為基本延時(shí)時(shí)間,那么對(duì)于一個(gè)音符,如果它是四分音符,只需調(diào)用四次延時(shí)程序,如果它是二分音符,則只需調(diào)用八次延時(shí)程序,以此類推。1.2 本設(shè)計(jì)任務(wù)和主要內(nèi)容本次課程設(shè)計(jì)主要研究基于at89c52單片機(jī)的16鍵簡(jiǎn)易電子琴的設(shè)計(jì)。具體要求實(shí)現(xiàn)以下功能:(1) 按下音符鍵可以發(fā)出相應(yīng)的音符;(2) 播放預(yù)存曲目。2 系統(tǒng)的主要硬件電路的設(shè)計(jì)2.1 單片機(jī)控制系統(tǒng)原理2.1.1 芯片選

10、用 在本次課程設(shè)計(jì)中我采用atmel公司的at89c52單片機(jī)。at89c52是美國(guó)atmel公司生產(chǎn)的低電壓、高性能cmos 8位單片機(jī),片內(nèi)含8kb的可反復(fù)檫寫的程序存儲(chǔ)器和12b的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(ram),器件采用atmel公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng),片內(nèi)配置通用8位中央處理器(cpu)和flash存儲(chǔ)單元,功能強(qiáng)大的at89c52單片機(jī)可靈活應(yīng)用于各種控制領(lǐng)域。at89c52單片機(jī)屬于at89c51單片機(jī)的增強(qiáng)型,與intel公司的80c52在引腳排列、硬件組成、工作特點(diǎn)和指令系統(tǒng)等方面兼容。at89c52引腳圖見圖2-1.圖2-1 at89c

11、52引腳圖其主要功能特性: 兼容mcs51指令系統(tǒng) 8k可反復(fù)擦寫(1000次)flash rom 32個(gè)雙向i/o口 256x8bit內(nèi)部ram 3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷 時(shí)鐘頻率0-24mhz 2個(gè)串行中斷 可編程uart串行通道 2個(gè)外部中斷源 共6個(gè)中斷源 2個(gè)讀寫中斷口線 3級(jí)加密位 低功耗空閑和掉電模式 軟件設(shè)置睡眠和喚醒功能 2.1.2 簡(jiǎn)易電子琴的組成框圖at89c5244矩陣鍵盤發(fā)音電路供電及復(fù)位電路晶振電路 圖2-2 電子琴系統(tǒng)原理框圖2.1.3 簡(jiǎn)易電子琴的proteus總體仿真圖 電子琴的proteus總體仿真圖見圖2-3。按下musickey鍵,系統(tǒng)自動(dòng)播放預(yù)

12、存在內(nèi)存中的曲子,按下reskey鍵,系統(tǒng)復(fù)位,停止播放。按下矩陣鍵盤中的任意鍵,揚(yáng)聲器發(fā)出相應(yīng)的音符。圖2-3 簡(jiǎn)易電子琴的proteus總體仿真圖2.2 單片機(jī)主機(jī)系統(tǒng)電路2.2.1 時(shí)鐘頻率 單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能工作。在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。外部振蕩源電路一般選用石英晶體振蕩器,此電路在加電大約延遲10ms后振蕩器起振,在xtal2引腳產(chǎn)生幅度為3v左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容c1,c2,作用有兩個(gè):一是幫助振蕩器起振;二是對(duì)振蕩器的頻率進(jìn)

13、行微調(diào)。c1,c2的典型值為30pf。 單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號(hào)的周期稱為時(shí)鐘周期。起大小是時(shí)鐘信號(hào)頻率的倒數(shù),常用fosc表示。如時(shí)鐘頻率為12mhz,即fosc=12mhz,則時(shí)鐘周期為1/12s。2.2.2 晶振電路at89c52單片機(jī)的定時(shí)控制功能是用時(shí)鐘電路和振蕩器完成的,而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)中采用內(nèi)部時(shí)鐘方式。單片機(jī)內(nèi)部有一個(gè)反相放大器xtal1、xtal2分別為反相放大器的輸入端和輸出端,外接定時(shí)反饋元件組成振蕩器(內(nèi)部時(shí)鐘方式),產(chǎn)生時(shí)鐘送至單片機(jī)內(nèi)部各元件。時(shí)鐘頻率越高,單片

14、機(jī)控制器的控制節(jié)拍就越快,運(yùn)算速度也就越快。一般來說單片機(jī)內(nèi)部有一個(gè)帶反饋的線性反相放大器,外界晶振(或接陶瓷振蕩器)和電容就可組成振蕩器,如圖2-4所示。加電以后延時(shí)一段時(shí)間(約10ms)振蕩器產(chǎn)生時(shí)鐘,不受軟件控制,圖中x1為晶振,震蕩產(chǎn)生的時(shí)鐘頻率主要由y1確定。電容c1,c2的作用有兩個(gè):一是幫助振蕩器起振,二是對(duì)振蕩器的頻率起微調(diào)作用,典型值為30pf。圖2-4 晶振電路2.2.3 鍵盤掃描在單片機(jī)應(yīng)用中鍵盤用得最多的形式是獨(dú)立鍵盤及矩陣鍵盤,如圖2-5,圖2-6所示。圖2-5 獨(dú)立鍵盤圖2-6 矩陣鍵盤它們各有自己的特點(diǎn),其中獨(dú)立鍵盤硬件電路簡(jiǎn)單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般用在

15、對(duì)硬件電路要求不高的簡(jiǎn)單電路中;矩陣鍵盤與獨(dú)立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨(dú)立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢(shì)得多,因此它更適合于多按鍵電路。本次課程設(shè)計(jì),我采用矩陣式鍵盤電路,這樣可以大大的節(jié)省單片機(jī)i/o的開銷。鍵盤電路見圖2-7:圖2-7 鍵盤電路在按鍵過程中常產(chǎn)生“毛刺” 現(xiàn)象,如圖2-8所示,要消除“毛刺”現(xiàn)象,這里采用最常用的方法,即延時(shí)重復(fù)掃描法,延時(shí)法的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而我們按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后,再延時(shí)一段時(shí)間(10ms20ms)后再判斷此電平是否保持原狀

16、態(tài),如果是則為有效按鍵,否則無效。 圖2-8 “毛刺”現(xiàn)象2.2.4 發(fā)音電路 電子琴發(fā)音電路見圖2-9。圖2-9 電子琴發(fā)音電路2.2.5 供電及復(fù)位電路 電子琴的供電電路和復(fù)位電路見圖2-10。圖2-10 電子琴供電及復(fù)位電路3 系統(tǒng)的軟件設(shè)計(jì)3.1 主程序3.1.1 主程序的流程圖 主程序的程序流程圖見圖3-1.按鍵是否按下開始去抖動(dòng),延時(shí)10ms掃描按鍵位置做一次按鍵處理,播放相應(yīng)的音符或音樂按鍵是否按下圖3-1程序流程圖3.1.2 主程序 keybuf equ 30h sth0 equ 31h stl0 equ 32h temp equ 33h spkequp1.6; 蜂鳴器所在端口

17、org 0000h ljmp start org 0bh ljmp int_t0 ;轉(zhuǎn)定時(shí)器t0中斷服務(wù)程序start:mov tmod,#01h ;選擇定時(shí)器t0工作于方式1setb et0 ;允許t0溢出中斷setb ea wait: mov p2,#0ffh clr p2.4 ;從第四行開始掃描mov a,p2 anl a,#0fh ;屏蔽高四位,高四位為行,低四位為列xrl a,#0fh jz nokey1 ;判斷是否有鍵按下,沒有就跳轉(zhuǎn)lcall dely10ms mov a,p2 ;消除抖動(dòng)和干擾anl a,#0fh xrl a,#0fh jz nokey1 mov a,p2 ;確

18、定有鍵按下以后的處理anl a,#0fh cjne a,#0eh,nk1 ;是否為第四行第一列的鍵被按下mov keybuf,#0 ;保存列號(hào)ljmp dk1 nk1:cjne a,#0dh,nk2 mov keybuf,#1 ljmp dk1 nk2:cjne a,#0bh,nk3 mov keybuf,#2 ljmp dk1 nk3:cjne a,#07h,nk4 mov keybuf,#3 ljmp dk1 nk4:nop dk1: ;第四行的處理mov a,keybuf mov dptr,#table movc a,a+dptr mov p0,a mov a,keybuf mov b,

19、#2 ;table1以字保存,所以散轉(zhuǎn)mul ab mov temp,a mov dptr,#table1 movc a,a+dptr mov sth0,a ;送入高字節(jié)mov th0,a inc temp mov a,temp movc a,a+dptr mov stl0,a ;送入低字節(jié)mov tl0,a setb tr0 dk1a:mov a,p2 ;判斷按鍵是否松開anl a,#0fh xrl a,#0fh jnz dk1a clr tr0 nokey1: mov p2,#0ffh clr p2.5 mov a,p2 anl a,#0fh xrl a,#0fh jz nokey2 lc

20、all dely10ms mov a,p2 anl a,#0fh xrl a,#0fh jz nokey2 mov a,p2 anl a,#0fh cjne a,#0eh,nk5 mov keybuf,#4 ljmp dk2 nk5:cjne a,#0dh,nk6 mov keybuf,#5 ljmp dk2 nk6:cjne a,#0bh,nk7 mov keybuf,#6 ljmp dk2 nk7:cjne a,#07h,nk8 mov keybuf,#7 ljmp dk2 nk8:nop dk2: mov a,keybuf mov dptr,#table movc a,a+dptr mo

21、v p0,a mov a,keybuf mov b,#2 mul ab mov temp,a mov dptr,#table1 movc a,a+dptr mov sth0,a mov th0,a inc temp mov a,temp movc a,a+dptr mov stl0,a mov tl0,a setb tr0 dk2a:mov a,p2 anl a,#0fh xrl a,#0fh jnz dk2a clr tr0 nokey2: mov p2,#0ffh clr p2.6 mov a,p2 anl a,#0fh xrl a,#0fh jz nokey3 lcall dely10m

22、s mov a,p2 anl a,#0fh xrl a,#0fh jz nokey3 mov a,p2 anl a,#0fh cjne a,#0eh,nk9 mov keybuf,#8 ljmp dk3 nk9:cjne a,#0dh,nk10 mov keybuf,#9 ljmp dk3 nk10:cjne a,#0bh,nk11 mov keybuf,#10 ljmp dk3 nk11:cjne a,#07h,nk12 mov keybuf,#11 ljmp dk3 nk12:nop dk3: mov a,keybuf mov dptr,#table movc a,a+dptr mov p

23、0,a mov a,keybuf mov b,#2 mul ab mov temp,a mov dptr,#table1 movc a,a+dptr mov sth0,a mov th0,a inc temp mov a,temp movc a,a+dptr mov stl0,a mov tl0,a setb tr0 dk3a:mov a,p2anl a,#0fh xrl a,#0fh jnz dk3a clr tr0 nokey3: mov p2,#0ffh clr p2.7 mov a,p2 anl a,#0fh xrl a,#0fh jz nokey4 lcall dely10ms mo

24、v a,p2 anl a,#0fh xrl a,#0fh jz nokey4 mov a,p2 anl a,#0fh cjne a,#0eh,nk13 mov keybuf,#12 ljmp dk4 nk13:cjne a,#0dh,nk14 mov keybuf,#13 ljmp dk4 nk14:cjne a,#0bh,nk15 mov keybuf,#14 ljmp dk4 nk15:cjne a,#07h,nk16 mov keybuf,#15 ljmp dk4 nk16:nop dk4: mov a,keybuf mov dptr,#table movc a,a+dptr mov p

25、0,a mov a,keybuf mov b,#2 mul ab mov temp,a mov dptr,#table1 movc a,a+dptr mov sth0,a mov th0,a inc temp mov a,temp movc a,a+dptr mov stl0,a mov tl0,a setb tr0 dk4a:mov a,p2 anl a,#0fh xrl a,#0fh jnz dk4a clr tr0 nokey4:jnb p1.0,musicljmp wait music:movr3,#00hnext:mova,r3movdptr,#table2movca,a+dptrj

26、zmusicmovr7,aincr3mova,r3movca,a+dptrmovr2,aacallsongincr3sjmpnext3.2 歌曲播放子程序;= 歌曲播放子程序 =song:mova,r2; 取出節(jié)拍rlajnzkeepmova,#01hkeep:movr2,arepeat:acalleighthdjnzr2,repeatret3.3 產(chǎn)生1/8拍延時(shí)子程序;= 產(chǎn)生1/8拍延時(shí)子程序 =eighth:mova,r7; 查表取出廷時(shí)參數(shù),保存到r4movdptr,#delay_tmovca,a+dptrmovr4,amova,r7; 查表取出1/8拍周期數(shù),保存到r5movdpt

27、r,#s_paramovca,a+dptrmovr5,anextcyc:acallsounddjnzr5,nextcycret3.4 發(fā)音子程序;= 發(fā)聲子程序 =sound:setbspkacallsdelayclrspkacallsdelayret3.5 延時(shí)子程序;= 延時(shí)子程序 =sdelay:mova,r4; 廷時(shí)值在r4內(nèi)movr0,axl2:movr1,#03hdl1:nopdjnzr1,dl1djnzr0,xl2ret3.6 1/8拍周期表;= 1/8拍周期表 =s_para:ds1dhdb15h,16h,00db19h,00h,1ch,00h,1fh,21h,00h,25hd

28、b00h,29h,2ch,00h,31h,34h,37h,00hdb3eh,41h,00h,49h,00h,52h,57h,00hdb62h3.7 延時(shí)參數(shù)表;= 延時(shí)參數(shù)表 =delay_t:ds1dhdb7eh,77h,00hdb6ah,00h,5eh,00h,54h,4fh,00h,46hdb00h,3fh,3bh,00h,35h,32h,2fh,00hdb2ah,27h,00h,23h,00h,1fh,1dh,0c0hdb1ah3.8 10ms延時(shí)子程序;= 10ms延時(shí)子程序 =dely10ms: mov r6,#10 d1: mov r7,#248 djnz r7,$ djnz r

29、6,d1 ret3.9 中斷服務(wù)子程序;= 中斷服務(wù)子程序 =int_t0: mov th0,sth0 mov tl0,stl0 cpl p1.6 reti3.10 音符參數(shù)表;= 音符參數(shù)表=table: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h db 7fh,6fh,77h,7ch,39h,5eh,79h,71h3.11 計(jì)數(shù)器初值表;= 計(jì)數(shù)器初值表=table1: dw 64021,64103,64260,64400 dw 64524,64580,64684,64777 dw 64820,64898,64968,65030 dw 65058,65110,65

30、157,651783.12 預(yù)存歌曲表;= 預(yù)存歌曲表 =table2:dw2202h,2902h,2902h,2902h,2906h,2702h; dw2502h,2702h,2502h,2402h,2208h;dw2e02h,2e02h,2e02h,2e02h,2e06h,2c02h;dw2902h,2c02h,2d02h,2a02h,2908h;dw2902h,2e02h,2e02h,2c02h,2906h,2702h;dw2502h,2702h,2502h,2402h,2206h,1d02h;dw1d02h,2502h,2502h,2402h,2206h,2902h;dw2702h,2

31、502h,2402h,2002h,2208h;dw0000h;end4 結(jié) 束 語 單片機(jī)作為一門軟硬件相結(jié)合的學(xué)科,讓許多像我這樣的非電子專業(yè)的學(xué)生頭疼不已。起初,我也屬于一個(gè)比較“怕硬”的計(jì)算機(jī)學(xué)生,由于大一大二的數(shù)電模電沒學(xué)好,所以一提到硬件方面的東西,我就覺得頭疼。最初聽余老師講的單片機(jī)的課的時(shí)候,屬于余老師每問必倒的學(xué)生之一。因此,最初對(duì)于這門課并沒有多少興趣。最初從指令系統(tǒng),尋址方式,到單片機(jī)的內(nèi)部資源,一點(diǎn)概念都沒有。雖然每次課都看著大屏幕,聽著老師講課,但還是覺得整門課聽的比較吃力。我覺得單片機(jī)作為微型計(jì)算機(jī)的一種,必然和計(jì)算機(jī)有一定的共性。后來有一段時(shí)間,我在課余的時(shí)間去旁聽

32、了幾堂韓建民老師的計(jì)算機(jī)組成原理,對(duì)計(jì)算機(jī)的指令系統(tǒng)和尋址方式有了點(diǎn)認(rèn)識(shí),再回過頭來看單片機(jī)的指令系統(tǒng)的時(shí)候覺得慢慢的有頭緒了,不再像原先那樣摸不著頭腦。實(shí)驗(yàn)課做實(shí)驗(yàn)的時(shí)候也不再像之前那樣呆在實(shí)驗(yàn)室不知道該干什么。當(dāng)我第一次在試驗(yàn)儀上成功的調(diào)試出三角波的程序,看到示波器上的三角波圖形,突然覺得單片機(jī)也是蠻有意思的,那種感覺就像第一次用c-free第一次在計(jì)算機(jī)上編寫出第一個(gè)“hello world”程序一樣。之后也就開始慢慢加緊補(bǔ)前面落下的知識(shí)。到要做課程設(shè)計(jì)的時(shí)候,發(fā)現(xiàn)依然學(xué)到用時(shí)方恨少,到圖書館里借書,上網(wǎng)查資料,費(fèi)了不少勁才完成這次課程設(shè)計(jì),雖然做的蠻吃力的,但通過這次課程設(shè)計(jì)我比較好的

33、對(duì)指令系統(tǒng),內(nèi)部資源和人機(jī)交互的知識(shí)大體復(fù)習(xí)了一遍,發(fā)現(xiàn)了不少缺漏,很好的補(bǔ)缺補(bǔ)漏了一遍。因?yàn)槠綍r(shí)時(shí)間沒合理的安排和利用,課程設(shè)計(jì)到了最后這一周才完成,可能有不少缺漏或者錯(cuò)誤,希望老師加以批評(píng)指正。在此,我要對(duì)要求我們做這次課程設(shè)計(jì)的余老師致以衷心的感謝,因?yàn)橛嗬蠋熃o了我一次難得的鍛煉的機(jī)會(huì)。最后,我還要感謝韓建民老師和電子071的張琦同學(xué),他們?cè)啻尾粎捚錈┑貫槲医獯鹆瞬簧僖苫?,使我在?duì)指令系統(tǒng)的理解上少走了不少彎路。 參考文獻(xiàn)1 張?chǎng)?華臻,陳書謙.單片機(jī)原理與應(yīng)用.m.電子工業(yè)出版社,2009.6 2 肖婧.單片入門與趣味實(shí)驗(yàn)設(shè)計(jì)m.北京航空航天大學(xué)出版社,2008.43 陳明熒.805

34、1單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材m.清華大學(xué)出版社,2004.34 趙建領(lǐng).51系列單片機(jī)開發(fā)寶典m.電子工業(yè)出版社,2007.45 求是科技.8051系列單片機(jī)c程序設(shè)計(jì)完全手冊(cè)m.人民郵電出版社,2006.46 樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例m.北京航空航天大學(xué)出版社,2003.37 侯媛彬等,凌陽單片機(jī)原理及其畢業(yè)設(shè)計(jì)精選 2006年,科學(xué)出版社 8 羅亞非,凌陽十六位單片機(jī)應(yīng)用基礎(chǔ)2003年 北京航空航天大學(xué)出版社 9 北京北陽電子有限公司,061a凌陽單片機(jī)及其附帶光盤2003年 10張毅剛等, mcs-51單片機(jī)應(yīng)用設(shè)計(jì),哈工大出版社,2004年第2版 11霍孟友等,單片機(jī)原理與應(yīng)

35、用,機(jī)械工業(yè)出版社,2004.1 12霍孟友等,單片機(jī)原理與應(yīng)用學(xué)習(xí)概要及題解,機(jī)械工業(yè)出版社,2005.3 13許泳龍等,單片機(jī)原理及應(yīng)用,機(jī)械工業(yè)出版社,2005.1 外文資料descriptionthe at89c51 is a low-power, high-performance cmos 8-bit microcomputer with 4k bytes of flash programmable and erasable read only memory (perom). the device is manufactured using atmels high-density n

36、onvolatile memory technology and is compatible with the industry-standard mcs-51 instruction set and pinout. the on-chip flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory programmer. by combining a versatile 8-bit cpu with flash on a monolithic chip

37、, the atmel at89c51 is a powerful microcomputer which provides a highly-flexible and cost-effective solution to many embedded control applications.function characteristicthe at89c51 provides the following standard features: 4k bytes of flash, 128 bytes of ram, 32 i/o lines, two 16-bit timer/counters

38、, a five vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator and clock circuitry. in addition, the at89c51 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. the idle mode stops the cpu while

39、allowing the ram, timer/counters, serial port and interrupt system to continue functioning. the power-down mode saves the ram contents but freezes the oscillator disabling all other chip functions until the next hardware reset.pin descriptionvcc:supply voltage.gnd:ground.port 0:port 0 is an 8-bit op

40、en-drain bi-directional i/o port. as an output port, each pin can sink eight ttl inputs. when 1s are written to port 0 pins, the pins can be used as highimpedance inputs.port 0 may also be configured to be the multiplexed loworder address/data bus during accesses to external program and data memory.

41、 in this mode p0 has internal pullups.port 0 also receives the code bytes during flash programming,and outputs the code bytes during programverification. external pullups are required during programverification.port 1port 1 is an 8-bit bi-directional i/o port with internal pullups.the port 1 output

42、buffers can sink/source four ttl inputs.when 1s are written to port 1 pins they are pulled high by the internal pullups and can be used as inputs. as inputs,port 1 pins that are externally being pulled low will source current (iil) because of the internal pullups.port 1 also receives the low-order a

43、ddress bytes during flash programming and verification.port 2port 2 is an 8-bit bi-directional i/o port with internal pullups.the port 2 output buffers can sink/source four ttl inputs.when 1s are written to port 2 pins they are pulled high by the internal pullups and can be used as inputs. as inputs

44、,port 2 pins that are externally being pulled low will source current, because of the internal pullups.port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses. in this application, it uses strong inter

45、nal pullupswhen emitting 1s. during accesses to external data memory that use 8-bit addresses, port 2 emits the contents of the p2 special function register.port 2 also receives the high-order address bits and some control signals during flash programming and verification.port 3port 3 is an 8-bit bi

46、-directional i/o port with internal pullups.the port 3 output buffers can sink/source four ttl inputs.when 1s are written to port 3 pins they are pulled high by the internal pullups and can be used as inputs. as inputs,port 3 pins that are externally being pulled low will source current (iil) becaus

47、e of the pullups.port 3 also serves the functions of various special features of the at89c51 as listed below:port 3 also receives some control signals for flash programming and verification.rstreset input. a high on this pin for two machine cycles while the oscillator is running resets the device.al

48、e/progaddress latch enable output pulse for latching the low byte of the address during accesses to external memory. this pin is also the program pulse input (prog) during flash programming.in normal operation ale is emitted at a constant rate of 1/6 the oscillator frequency, and may be used for ext

49、ernal timing or clocking purposes. note, however, that one ale pulse is skipped during each access to external data memory.if desired, ale operation can be disabled by setting bit 0 of sfr location 8eh. with the bit set, ale is active only during a movx or movc instruction. otherwise, the pin is wea

50、kly pulled high. setting the ale-disable bit has no effect if the microcontroller is in external execution mode.psenprogram store enable is the read strobe to external program memory.when the at89c51 is executing code from external program memory, psen is activated twice each machine cycle, except t

51、hat two psen activations are skipped during each access to external data memory.ea/vppexternal access enable. ea must be strapped to gnd in order to enable the device to fetch code from external program memory locations starting at 0000h up to ffffh. note, however, that if lock bit 1 is programmed,

52、ea will be internally latched on reset.ea should be strapped to vcc for internal program executions.this pin also receives the 12-volt programming enable voltage(vpp) during flash programming, for parts that require12-volt vpp.xtal1input to the inverting oscillator amplifier and input to the interna

53、l clock operating circuit.xtal2output from the inverting oscillator amplifier.oscillator characteristicsxtal1 and xtal2 are the input and output, respectively,of an inverting amplifier which can be configured for use as an on-chip oscillator, as shown in figure 1.either a quartz crystal or ceramic resonator may be used. to drive the device from an external clock source, xtal2 should be left unconnected while xtal1 is drive

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論