計算機硬件課程設計電子琴設計_第1頁
計算機硬件課程設計電子琴設計_第2頁
計算機硬件課程設計電子琴設計_第3頁
計算機硬件課程設計電子琴設計_第4頁
計算機硬件課程設計電子琴設計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

溫馨提示

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

評論

0/150

提交評論