計(jì)算機(jī)硬件課程設(shè)計(jì)電子琴設(shè)計(jì)_第1頁(yè)
計(jì)算機(jī)硬件課程設(shè)計(jì)電子琴設(shè)計(jì)_第2頁(yè)
計(jì)算機(jī)硬件課程設(shè)計(jì)電子琴設(shè)計(jì)_第3頁(yè)
計(jì)算機(jī)硬件課程設(shè)計(jì)電子琴設(shè)計(jì)_第4頁(yè)
計(jì)算機(jī)硬件課程設(shè)計(jì)電子琴設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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)介

計(jì)算硬件基礎(chǔ)課程設(shè)計(jì)————摘要計(jì)算機(jī)硬件技術(shù)基礎(chǔ)課程設(shè)計(jì)電子琴設(shè)計(jì) 學(xué)院名稱:自動(dòng)化學(xué)院學(xué)院名稱:自動(dòng)化學(xué)院專(zhuān)業(yè):自動(dòng)化專(zhuān)業(yè)班級(jí):********學(xué)號(hào):2011****姓名:****學(xué)號(hào):2011****姓名:******學(xué)號(hào):2011****姓名:******學(xué)號(hào):2011****姓名:****評(píng)分:教師:****計(jì)算硬件基礎(chǔ)課程設(shè)計(jì)————*************************-5-2軟件設(shè)計(jì)總體方案及流程圖2.1鍵盤(pán)掃描程序:檢測(cè)是否有鍵按下,有鍵按下則記錄按下鍵的鍵值,并跳轉(zhuǎn)至功能轉(zhuǎn)移程序;無(wú)鍵按下,則返回鍵盤(pán)掃描程序繼續(xù)檢測(cè)。2.2功能轉(zhuǎn)移程序:對(duì)檢測(cè)到得按鍵值進(jìn)行判斷,是琴鍵則跳轉(zhuǎn)至琴鍵處理程序,是功能鍵則跳轉(zhuǎn)至相應(yīng)的功能程序,我們?cè)O(shè)計(jì)的功能程序有兩種,即音色調(diào)節(jié)功能和自動(dòng)播放樂(lè)曲功能。2.3琴鍵處理程序:根據(jù)檢測(cè)到得按鍵值,查詢音律表,給計(jì)時(shí)器賦值,使發(fā)出相應(yīng)頻率的聲音。2.4自動(dòng)播放歌曲程序:檢測(cè)到按鍵按下的是自動(dòng)播放歌曲功能鍵后執(zhí)行該程序,電子琴會(huì)自動(dòng)播放事先已經(jīng)存放好的歌曲,歌曲播放完畢之后自動(dòng)返回至鍵盤(pán)掃描程序,繼續(xù)等待是否有鍵按下。2.5簡(jiǎn)要流程圖圖1簡(jiǎn)要流程圖2.6簡(jiǎn)要流程圖(子程序)圖2簡(jiǎn)要流程圖(子程序)3硬件電路介紹3.18255A簡(jiǎn)介8255A是一種使用單一的+5V電源、40引腳雙列直插式的大規(guī)模集成電路芯片,并且是一種通用可編程并行I/O接口芯片。8255內(nèi)部有3個(gè)8位的輸入、輸出數(shù)據(jù)端口,即A口,B口和C口。它們均可通過(guò)編程設(shè)定為輸入、輸出,且都有數(shù)據(jù)鎖存功能。C口可通過(guò)編程分為2個(gè)4位的輸入/輸出口,每個(gè)4位口均可單獨(dú)設(shè)定為輸入口或輸出口,用于傳送數(shù)據(jù)。且根據(jù)其控制字的不同,8255有三種不同的工作方式,方式0,方式1,方式2。在本次設(shè)計(jì)中8255采用方式0:基本輸入輸出方式。圖38255A的方式控制字3.28254簡(jiǎn)介8254是可編程定時(shí)器/計(jì)數(shù)器。每個(gè)8254芯片有3個(gè)獨(dú)立的16位計(jì)數(shù)器通道,每個(gè)計(jì)數(shù)器有6種工作方式,都可以按二進(jìn)制或十進(jìn)制計(jì)數(shù)。8254的方式控制字有兩個(gè),一個(gè)用來(lái)設(shè)置計(jì)數(shù)器的初值,稱為控制字。另一個(gè)用來(lái)設(shè)置讀回命令,稱為讀回控制字。這兩個(gè)控制字共用一個(gè)地址,由標(biāo)識(shí)位來(lái)區(qū)分??刂谱指袷饺缦聢D圖48254的方式控制字3.3鍵盤(pán)簡(jiǎn)介利用8255C口作為按鍵接入口,形成4×4組成16個(gè)按鍵矩陣,如下圖所示圖5鍵盤(pán)接線圖3.4揚(yáng)聲器控制模塊該揚(yáng)聲器控制模塊由揚(yáng)聲器、與門(mén)、放大器組成,與門(mén)將來(lái)自8255和8254的信號(hào)相與后經(jīng)放大器、濾波電容送到揚(yáng)聲器。圖6揚(yáng)聲器模塊電路圖3.5系統(tǒng)電路圖圖7系統(tǒng)電路圖3.6實(shí)物電路圖接線PC4-PC7接鍵盤(pán)列信號(hào),PC0-PC3接鍵盤(pán)行圖8電子琴實(shí)物接線圖3.7按鍵操作說(shuō)明通過(guò)8255進(jìn)行鍵盤(pán)掃描獲取按鍵信息,根據(jù)所按的鍵1~7來(lái)對(duì)應(yīng)不同的音調(diào)以及兩個(gè)開(kāi)關(guān)k1、k2來(lái)控制音階,并定義初始為中音,并且當(dāng)K1為1,K2為0的時(shí)候?yàn)榈鸵?,K2為1,K1為0的時(shí)候?yàn)楦咭?,其他情況均視作中音。D鍵為播放/暫停鍵,E鍵終止。4總結(jié)為期2周的實(shí)習(xí)結(jié)束了,我們很好的完成了設(shè)計(jì)任務(wù)。期間,我們學(xué)到了很多寶貴的經(jīng)驗(yàn)和相關(guān)的計(jì)算機(jī)硬件技術(shù)知識(shí)。在這次的計(jì)算機(jī)硬件技術(shù)基礎(chǔ)課程設(shè)計(jì)中,匯編語(yǔ)言程序的編寫(xiě)以及原理圖的設(shè)計(jì)占了很重要的部分。對(duì)于零散的單元,通過(guò)硬件電路搭建、編程、調(diào)試,才能形成一個(gè)完整的系統(tǒng)。我們必須深入到工程實(shí)踐中,畢竟實(shí)踐出真知。同時(shí),在本次課程設(shè)計(jì)中,我們還必須將書(shū)本中的知識(shí)很好的應(yīng)用到實(shí)踐中去。經(jīng)過(guò)課程設(shè)計(jì),在查閱資料的過(guò)程中,學(xué)習(xí)了基于8254、8255來(lái)進(jìn)行實(shí)物設(shè)計(jì),將所學(xué)真正地應(yīng)用實(shí)踐之中,這對(duì)于以后的學(xué)習(xí)和工作都有很大的益處。在設(shè)計(jì)的過(guò)程中,也遇到了一些困難,比如開(kāi)始的時(shí)候,由于音頻的計(jì)算不準(zhǔn)確,導(dǎo)致彈奏的出來(lái)的聲音很刺耳,在解決問(wèn)題的過(guò)程中,對(duì)于音頻有了深刻的認(rèn)識(shí),在后期,在增加功能模塊時(shí),由于程序存在的缺陷花費(fèi)了大量的時(shí)間來(lái)調(diào)試程序和硬件電路?,F(xiàn)在課程設(shè)計(jì)要結(jié)束了,但它的影響卻留存長(zhǎng)久,它讓我們自己動(dòng)手,品嘗成功的喜悅,激發(fā)了我們對(duì)實(shí)踐的興趣和熱情,在很大程度上鼓舞了我們的學(xué)習(xí)決心,增強(qiáng)了我們的自信心,讓我們以更大的勇氣面對(duì)以后的學(xué)習(xí)和人生。通過(guò)這次課程設(shè)計(jì),我深刻的認(rèn)識(shí)到了,理論知識(shí)和實(shí)踐相結(jié)合是教學(xué)環(huán)節(jié)中相當(dāng)重要的一個(gè)環(huán)節(jié),只有這樣才能提高我們的實(shí)際操作能力,并且從中培養(yǎng)我們獨(dú)立思考、用于克服困難、團(tuán)隊(duì)協(xié)作的精神。5附錄5.1心得體會(huì)5.1.1心得體會(huì)(****):開(kāi)學(xué)第一周就進(jìn)入到計(jì)算機(jī)硬件的課程設(shè)計(jì)之中,由于我平時(shí)喜愛(ài)音樂(lè),所以這次計(jì)算機(jī)硬件課程設(shè)計(jì)我們組做的是“電子琴”這個(gè)項(xiàng)目,并且由我擔(dān)任組長(zhǎng)。剛拿到這個(gè)課題的時(shí)候,感覺(jué)還是比較簡(jiǎn)單,因?yàn)檫@個(gè)項(xiàng)目只需要通過(guò)按鍵并且配合8255,8254放出對(duì)應(yīng)的頻率并且驅(qū)動(dòng)揚(yáng)聲器即可。所以大體的思路還是比較清晰,但是,當(dāng)我們實(shí)際著手開(kāi)始干這個(gè)項(xiàng)目的時(shí)候,還是需要注意很多細(xì)節(jié)的。由于我和組上另外一個(gè)同學(xué)負(fù)責(zé)編程,除了要設(shè)計(jì)基本功能以外,必須要考慮到擴(kuò)展功能的設(shè)計(jì),滿足基本功能的前提下,要為擴(kuò)展功能留下足夠的空間,舉個(gè)例子,我們這個(gè)電子琴的設(shè)計(jì)要用到4X4的鍵盤(pán),對(duì)于鍵盤(pán)的行信號(hào)和列信號(hào)的處理,就有一個(gè)值得注意的地方,最開(kāi)始我寫(xiě)程序的時(shí)候,我將列信號(hào)接入第5片8255的A口,將行信號(hào)接入第5片8255的C口,按照理論上來(lái)說(shuō),這樣寫(xiě)沒(méi)有什么問(wèn)題,但是這里有一個(gè)小問(wèn)題,光是我的鍵盤(pán),我就占用了2個(gè)口,如果需要擴(kuò)展的話,也許我的口就不夠用。所以程序優(yōu)化,是我們這幾天考慮的一個(gè)非常重要的問(wèn)題。另外,由于我們電子琴設(shè)計(jì)到3組音高,即低音,中音和高音,所以設(shè)計(jì)的時(shí)候需要設(shè)計(jì)一個(gè)切換開(kāi)關(guān),剛開(kāi)始設(shè)計(jì)的時(shí)候我們是用的ABC按鍵作為低音,中音和高音的切換開(kāi)關(guān)。即A按鍵為低音鍵,B按鍵做為中音鍵,C按鍵做為高音鍵,按下對(duì)應(yīng)的按鍵然后再按1234567就能發(fā)出不同音高的音。但是實(shí)際的電子琴中,低音和高音要做到無(wú)縫對(duì)接,也就是說(shuō)同樣是一個(gè)1.要在低音,中音,高音之間自由切換。考慮到這一點(diǎn),我們又對(duì)程序做了進(jìn)一步的優(yōu)化。其實(shí),這次的課程設(shè)計(jì)對(duì)我最大的一個(gè)考驗(yàn),就是要學(xué)會(huì)用如何利用捷徑,這個(gè)電子琴如果不用表,或者一些循環(huán)功能的話,一字一眼的寫(xiě),也能做,但是可能代碼段要寫(xiě)幾百行,但是我們用了查表和一些適當(dāng)?shù)难h(huán)后,100來(lái)行就可以完成了。而且可讀性和可更改性也大大增強(qiáng)。另外,通過(guò)這個(gè)課程設(shè)計(jì),我還有一點(diǎn)體會(huì),就是做軟件和硬件綜合這種情況,一定要從實(shí)際出發(fā),這個(gè)功能實(shí)用不實(shí)用,是否是人性化的。這一定非常重要,只有注重細(xì)節(jié),盡把各種情況都考慮到,才能做出比較完善的產(chǎn)品。5.1.2心得體會(huì)(****):我們小組這次硬件課設(shè)的題目是做一個(gè)有聲電子琴,利用的是硬件實(shí)驗(yàn)室的實(shí)驗(yàn)機(jī)器來(lái)完成該次課設(shè),在這次課程設(shè)計(jì)中我主要參與的是部分程序的編輯,程序的優(yōu)化,以及調(diào)試工作。根據(jù)這次所給的實(shí)驗(yàn)設(shè)備,我們大致的確定了整個(gè)有聲電子琴的發(fā)聲原理,通過(guò)8255進(jìn)行鍵盤(pán)掃描獲取按鍵信息,根據(jù)所按的鍵1~7來(lái)對(duì)應(yīng)不同的音調(diào)以及兩個(gè)開(kāi)關(guān)k1、k2來(lái)控制音階,將對(duì)應(yīng)的計(jì)數(shù)初值送給8254這樣在對(duì)應(yīng)的時(shí)鐘頻率下,8254就會(huì)輸出我們所想要的頻率的信號(hào),將這個(gè)信號(hào)傳給外接的小喇叭的電路板上與門(mén)的一個(gè)輸入口,再給一個(gè)發(fā)聲使能信號(hào)到與門(mén)另一個(gè)輸入口,將與門(mén)的輸出經(jīng)過(guò)放大電路送給小喇叭實(shí)現(xiàn)發(fā)聲。根據(jù)有聲電子琴的工作原理,便可以對(duì)8255的接口進(jìn)行分配,其中C口進(jìn)行鍵盤(pán)掃描B口送發(fā)聲使能信號(hào),A口讀音階變換的信號(hào)。這樣1~7這七個(gè)按鍵每個(gè)按鍵將會(huì)對(duì)應(yīng)高中低三個(gè)不同的音階,意味對(duì)應(yīng)三個(gè)不同的計(jì)數(shù)初值,為了使程序段顯得精簡(jiǎn),所以在程序的最開(kāi)始建立了三個(gè)表對(duì)應(yīng)著不同的三個(gè)不同音階的各個(gè)音的計(jì)數(shù)初值,用查表的方式來(lái)獲取相應(yīng)的計(jì)數(shù)初值。在調(diào)試的基本功能的過(guò)程中,主要出現(xiàn)的問(wèn)題是由于實(shí)驗(yàn)軟件不支持?jǐn)?shù)據(jù)段的定義,所以存放計(jì)數(shù)初值的三個(gè)表需要在程序段里中建立;還有就是為了使得在按著某一個(gè)發(fā)聲鍵的同時(shí)還能改變音階,就放棄了原本通過(guò)A、B、C三個(gè)按鈕來(lái)切換音階的方案,改用K1和K2兩個(gè)開(kāi)關(guān)來(lái)完成,并定義初始為中音,并且當(dāng)K1為1,K2為0的時(shí)候?yàn)榈鸵簦琄2為1,K1為0的時(shí)候?yàn)楦咭簦渌闆r均視作中音。在完成基礎(chǔ)功能之后我們便考慮加入拓展功能,即播放一段已經(jīng)保存了的曲調(diào),為了使得程序段簡(jiǎn)單明了適用范圍廣,首先我們必須得將曲子中的各種信息進(jìn)行量化。對(duì)此主要分為兩個(gè)部分,一個(gè)是發(fā)聲的時(shí)間信息,一個(gè)是所發(fā)聲音的音調(diào)也就是頻率信息也可以說(shuō)是對(duì)應(yīng)的計(jì)數(shù)初值,我們用16位來(lái)表示一個(gè)音符的信息,其中高八位的用來(lái)存放時(shí)間信息,具體為調(diào)用延時(shí)程序的次數(shù),當(dāng)其為00時(shí)表示曲子已經(jīng)播放結(jié)束;低八位用來(lái)存放對(duì)應(yīng)的計(jì)數(shù)初值,當(dāng)高八位不為00,低八位為00時(shí)代表著休止符。我們用SI來(lái)指向這個(gè)表,用以讀取表內(nèi)的信息,當(dāng)暫停的時(shí)候SI的值保持不變,當(dāng)停止的時(shí)候SI會(huì)被重置。總體來(lái)說(shuō)這次的課程設(shè)計(jì)內(nèi)容并不困難,當(dāng)然在這次的課程設(shè)計(jì)中我也鞏固了之前所學(xué)的硬件知識(shí),鞏固了用匯編語(yǔ)言編程的能力,將理論運(yùn)用到實(shí)際中,一定程度培養(yǎng)了我的動(dòng)手能力和發(fā)現(xiàn)問(wèn)題解決問(wèn)題的能力。5.1.3心得體會(huì)(****):我們組在這一次的的課程設(shè)計(jì)中選擇的課題是有聲電子琴設(shè)計(jì)。開(kāi)始拿到這個(gè)任務(wù)的時(shí)候腦子里是比較茫然的,因?yàn)椴恢涝搹氖裁吹胤饺胧郑粌H要通過(guò)芯片和代碼讓喇叭發(fā)聲,還要能完整播放出一首歌曲,這個(gè)挑戰(zhàn)確實(shí)不小。理清思路后,我們自己根據(jù)所選課題查資料,了解電子琴的發(fā)音原理,發(fā)現(xiàn)一首音樂(lè)是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了。當(dāng)然對(duì)于8254來(lái)說(shuō),產(chǎn)生不同的頻率非常方便,我們可以利用8254的定時(shí)/計(jì)數(shù)器來(lái)產(chǎn)生這樣方波頻率信號(hào)。整理出程序設(shè)計(jì)的大概思路。然后,根據(jù)思路,寫(xiě)程序。因?yàn)樵瓉?lái)對(duì)中斷那部分掌握的不是很好,通過(guò)這次設(shè)計(jì),大家仔細(xì)閱讀了教科書(shū),鞏固了中斷的內(nèi)容并對(duì)其又有了新的認(rèn)識(shí)。對(duì)簡(jiǎn)易電子琴的課程設(shè)計(jì),不僅將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且還學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新,是要我們學(xué)會(huì)將理論很好地聯(lián)系實(shí)際,并不斷地去開(kāi)動(dòng)自己的大腦,做自己力所能及的,別人卻沒(méi)想到的事。不斷地戰(zhàn)勝別人,超越前人。同時(shí),更重要的是,我在這一設(shè)計(jì)過(guò)程中,學(xué)會(huì)了堅(jiān)持不懈,不輕易言棄。設(shè)計(jì)過(guò)程,也好比是我們?nèi)祟?lèi)成長(zhǎng)的歷程,常有一些不如意,也許這就是在對(duì)我們提出了挑戰(zhàn),勇敢過(guò),也戰(zhàn)勝了,勝利的鐘聲也就一定會(huì)為我們而敲響。

在這次設(shè)計(jì)過(guò)程中,我們發(fā)現(xiàn)做事情需要綜合運(yùn)用知識(shí)的,要體會(huì)到學(xué)以致用、突出自己勞動(dòng)成果的喜悅心情,從中發(fā)現(xiàn)自己平時(shí)學(xué)習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補(bǔ)。理論結(jié)合實(shí)際,思想依靠操作。我們學(xué)習(xí)的理論知識(shí)需要加以運(yùn)用到實(shí)際才算學(xué)成。

通過(guò)這次課程設(shè)計(jì),我們鞏固和加強(qiáng)了計(jì)算機(jī)硬件技術(shù)基礎(chǔ)理論知識(shí),了解了電子產(chǎn)品的研發(fā)過(guò)程,掌握了電路的調(diào)試方法及故障排除方法。在整個(gè)設(shè)計(jì)過(guò)程中,我非常感謝我的老師,我的同伴,還有陌生的網(wǎng)友,他們給了我許多指導(dǎo)性的意見(jiàn)。最后,感謝學(xué)校能給我們提供這樣的機(jī)會(huì),讓我們把理論與實(shí)際結(jié)合,加強(qiáng)了動(dòng)手能力。本次課程設(shè)計(jì)必將成為自己以后學(xué)習(xí)道路上的寶貴的實(shí)踐經(jīng)驗(yàn)。5.1.4心得體會(huì)(****)這次計(jì)算機(jī)硬件技術(shù)課程設(shè)計(jì)我們小組所選的題目是“電子琴”,小組成員由我、****和****組成,****和****作為主力,****和****作為輔助,大家齊心協(xié)力最終提前高效地完成了課程設(shè)計(jì)。計(jì)算機(jī)技術(shù)的飛速發(fā)展,加快了人類(lèi)進(jìn)入信息社會(huì)的步伐,改變了世界,改變了人們的工作、學(xué)習(xí)和生活,對(duì)社會(huì)發(fā)展產(chǎn)生了廣發(fā)而深遠(yuǎn)的影響。計(jì)算機(jī)技術(shù)在其他領(lǐng)域中的應(yīng)用,極大地促進(jìn)了個(gè)學(xué)科的發(fā)展。有效掌握計(jì)算機(jī)技術(shù)保證了我們可以掌握最先進(jìn)、最有效的研究開(kāi)發(fā)手段,并影響我們所從事學(xué)科的發(fā)展。因此,計(jì)算機(jī)技術(shù)基礎(chǔ)是我們工科大學(xué)生必須掌握的、最重要的基礎(chǔ)之一。我們都知道,當(dāng)物體振動(dòng)時(shí),能夠發(fā)出聲音。振動(dòng)的頻率不同,聲音的音調(diào)就不同。在電子琴里,雖然沒(méi)有振動(dòng)的弦、簧、管等物體,但是可以通過(guò)相關(guān)的硬件和程序便可以產(chǎn)生相應(yīng)的音階。此次,我們的電子琴設(shè)置了三組音階,每組七個(gè),兩個(gè)轉(zhuǎn)換開(kāi)關(guān),分別在低、中、高三組音階里面進(jìn)行切換。同時(shí)增加了功能,內(nèi)置了歌曲,可以進(jìn)行自動(dòng)播放和暫停等功能。回顧此次計(jì)算機(jī)硬件課程設(shè)計(jì),我感觸很多,的確,從選題到定稿,從理論到實(shí)踐,在將近兩個(gè)星期的日子里,大家付出了很多,但是大家都相互學(xué)習(xí)到了很多東西。同時(shí)不僅鞏固了以前所學(xué)到的東西,還學(xué)習(xí)到了很多書(shū)本上沒(méi)有的東西。通過(guò)這次課程設(shè)計(jì),使我懂得了理論與實(shí)踐相結(jié)合的重要性,理論是實(shí)踐的基礎(chǔ),實(shí)踐是理論的應(yīng)用,只有兩者的完美結(jié)合,才能將所學(xué)真正地應(yīng)用于社會(huì)生活,并為社會(huì)服務(wù),從而不斷提高自己的實(shí)際動(dòng)手能力和思維創(chuàng)新能力。在設(shè)計(jì)過(guò)程中,也遇到了不少困難,但是大家都很努力地查資料,學(xué)習(xí),和其他同交流,并最終解決問(wèn)題。在這次課程設(shè)計(jì)中,確實(shí)我做的工作比較少,的確,我對(duì)這計(jì)算機(jī)硬件技術(shù)掌握地不是很好,我很感激我的組員沒(méi)有拋棄我,雖然有些東西我不懂,他們還是很耐心給我講解,能幫助他們做的就是收集資料和撰寫(xiě)報(bào)告。在這兩周的實(shí)習(xí)期間,也增進(jìn)了我們的交流,增進(jìn)了我們的友誼,我們是一個(gè)整體,可以相互學(xué)習(xí),相互支持,在此,我對(duì)我的隊(duì)員表示感謝,另外也感謝那些給我們幫助的同學(xué)和老師。5.2程序.486CTRL_8254EQU30CH;8254宏定義CUNT0EQU300HCUNT1EQU304HCTRL_8255EQU32CH;8255宏定義PORTAEQU320HPORTBEQU324HPORTCEQU328HCODESEGMENTUSE16ASSUMECS:CODEORG2000HBEG:JMPSTARTTABLE1DB180,160,142,134,120,107,95TABLE2DB90,80,71,67,60,53,48TABLE3DB45,40,36,34,30,27,24;建立"低""中""高"三組音階數(shù)據(jù)段TABLE4DW016BH,015FH,035AH,015FH,025AH,0247H,065FH,018EH,018EH,036BH,0178H,026BH,025AH,0678H,028EH,DW0386H,018EH,0286H,025AH,048EH,0100H,015AH,015AH,015AH,035FH,017FH,027FH,025FH,045FH,0100H,DW016BH,015FH,035AH,015FH,025AH,0247H,065FH,018EH,018EH,036BH,0178H,026BH,025AH,0678H,01A0H,DW018EH,0286H,015AH,025FH,035AH,0250H,0147H,055AH,015AH,015FH,026BH,025FH,0271H,066BH,0000H;“預(yù)置歌曲《天空之城》所用音符表”START:;初始化8255和8254LEABX,TABLE2LEASI,TABLE4MOVDX,CTRL_8255MOVAL,91H;PC4-PC7接鍵盤(pán)列信號(hào),PC0-PC3接鍵盤(pán)行信號(hào)OUTDX,ALMOVDX,CTRL_8254MOVAL,56HOUTDX,ALKSCAN:MOVAH,0EFH;鍵盤(pán)從Q0列開(kāi)始掃描NXTCOL:MOVAL,AHMOVDX,PORTCOUTDX,AL;送出列信號(hào)MOVDX,PORTCINAL,DX;讀入行信號(hào)ANDAL,0FHCMPAL,0FHJNZFNDKEY;有鍵按下ROLAH,1;調(diào)整列信號(hào)JCNXTCOLJMPKSCAN;沒(méi)有按鍵按下,等待掃描FNDKEY:MOVCL,AHANDCL,0F0H;以列信號(hào)為低4位,行信號(hào)為高4位,形成按鍵特征值ORCL,ALCALLDLYS0JMPPANJIANDLYS0PROC;按鍵延時(shí)PUSHCXMOVCX,8FHDLYS0_AGN:NOPLOOPDLYS0_AGNPOPCXRETDLYS0ENDPPANJIAN:CMPCL,0EDH;看是否是數(shù)字鍵1按下JZFASHENG1CMPCL,0EBH;看是否是數(shù)字鍵2按下JZFASHENG2CMPCL,0E7H;看是否是數(shù)字鍵3按下JZFASHENG3CMPCL,0DEH;看是否是數(shù)字鍵4按下JZFASHENG4CMPCL,0DDH;看是否是數(shù)字鍵5按下JZFASHENG5CMPCL,0DBH;看是否是數(shù)字鍵6按下JZFASHENG6CMPCL,0D7H;看是否是數(shù)字鍵7按下JZFASHENG7CMPCL,7DH;D預(yù)置歌曲播放/暫停JZYUZHICMPCL,7BH;E終止歌曲JZCHONGZHIJMPKSCANXIE_CUNT1:MOVDX,PORTA;檢查音階A口的PA.0和PA.1接開(kāi)關(guān),PA.0為1的時(shí)候代表低音,PA.1為1的時(shí)候代表高音其他情況均視為中音INAL,DXANDAL,0FHCMPAL,01HJZDIYINCMPAL,02HJZGAOYINJMPZHONGYINXIE_CUNT2:MOVDX,CUNT1;取對(duì)應(yīng)的計(jì)數(shù)初值送給8254MOVAL,AHXLATOUTDX,ALMOVDX,PORTB;給8254與門(mén)送高電平MOVAL,0FFHOUTDX,ALJMPKEYUPFASHENG1:MOVAH,00HJMPXIE_CUNT1FASHENG2:MOVAH,01HJMPXIE_CUNT1FASHENG3:MOVAH,02HJMPXIE_CUNT1FASHENG4:MOVAH,03HJMPXIE_CUNT1FASHENG5:MOVAH,04HJMPXIE_CUNT1FASHENG6:MOVAH,05HJMPXIE_CUNT1FASHENG7:MOVAH,06HJMPXIE_CUNT1DIYIN:LEABX,TABLE1JMPXIE_CUNT2ZHONGYIN:LEABX,TABLE2JMPXIE_CUNT2GAOYIN:LEABX,TABLE3JMPXIE_CUNT2KEYUP:MOVAL,0;檢查按鍵是否彈起MOVDX,PORTCOUTDX,AL;送出列信號(hào)INAL,DX;讀入行信號(hào)ANDAL,0FHCMPAL,0FHJNZXIE_CUNT1;檢查音階是否改變MOVDX,PORTBMOVAL,00HOUTDX,ALJMPKSCANYUZHI:CALLKEYUPC;判斷按鍵是否彈起CALLBOYIN;調(diào)用播放音樂(lè)子程序CALLKEYUPC;判斷按鍵是否彈起JMPKSCANCHONGZHI:LEASI,TABLE4JMPKSCANKEYUPCPROC;判斷按鍵是否彈起子程序PUSHAXMOVDX,PORTCMOVAL,00HOUTDX,ALKPAG:INAL,DXANDAL,0FHCMPAL,0FHJNZKPAGPOPAXRETKEYUPCENDPBOYINPROC;播放音樂(lè)子程序PUSHAXPUSHCXBOYIN_BG:MOVAX,[SI];將SI指向的值賦給AX,AH存放該音響的時(shí)間信息,AL存放該音響的頻率信息CMPAH,00H;判斷音樂(lè)是否播完(人為設(shè)定當(dāng)AH為00H時(shí)為音樂(lè)結(jié)束)JZBOYIN_WCMOVCX,0MOVCL,AHCMPAL,00H;判斷該音是否為休止符(人為設(shè)定當(dāng)AL為00H且AH不為0時(shí)為休止符)JZXIUZHIMOVDX,CUNT1;送計(jì)數(shù)初值OUTDX,ALMOVDX,PORTBMOV

溫馨提示

  • 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)論