版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理與接口技術(shù)課程設(shè)計(jì) 題 目_基于8086電子琴的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名 專(zhuān)業(yè)班級(jí) 12級(jí)計(jì)算機(jī)科學(xué)與技術(shù)一班 學(xué) 號(hào) 院 (系) 信息工程 指導(dǎo)教師 完成時(shí)間 2015 年 1 月 11 日 目 錄1 引言12 設(shè)計(jì)方案與論證332.2 方案二3483 設(shè)計(jì)原理及功能說(shuō)明993.1.1 8253簡(jiǎn)介103.1.2 8255簡(jiǎn)介123.2 軟件143.2.1 設(shè)計(jì)實(shí)驗(yàn)總流程圖143.2.2 設(shè)計(jì)子程序流程圖154 調(diào)試與結(jié)果測(cè)試174.1 硬件調(diào)試174.2 軟件調(diào)試204.3測(cè)試方案和測(cè)試結(jié)果225 總結(jié)23參考文獻(xiàn)26附錄1:總體電路原理圖27附錄2:元器件清單28附錄3:源代碼291
2、 引言隨著電子技術(shù)的發(fā)展,計(jì)算機(jī)在現(xiàn)代科學(xué)技術(shù)的發(fā)展中起著越來(lái)越重要作用。多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)、智能信息處理技術(shù)、自適用控制技術(shù)、數(shù)據(jù)挖掘與處理技術(shù)等都離不開(kāi)計(jì)算機(jī)。本次課程設(shè)計(jì)是基于微機(jī)原理與接口技術(shù)的簡(jiǎn)單應(yīng)用。微機(jī)技術(shù)目前運(yùn)用最廣泛的就是單片機(jī)。單片機(jī)是隨著大規(guī)模集成電路的出現(xiàn)極其發(fā)展,將計(jì)算機(jī)的CPU、RAM、ROM定時(shí)/計(jì)數(shù)器和多種I/O接口集成在一片芯片上,形成了芯片級(jí)的計(jì)算機(jī),因此單片機(jī)早期的含義稱(chēng)為單片微型計(jì)算機(jī)。它擁有優(yōu)異的性?xún)r(jià)比、集成度高、體積小、可靠性高、控制功能強(qiáng)、低電壓、低功耗的顯著優(yōu)點(diǎn).主要應(yīng)用于智能儀器儀表、工業(yè)檢測(cè)控制、機(jī)電一體化等方面,并且取得了顯著的成果。單片
3、機(jī)控制通用MIDI音源模塊制作制作出的電子琴,結(jié)構(gòu)簡(jiǎn)單,可靠性高,并且價(jià)格低廉,具有實(shí)用的價(jià)值。這種電子琴能夠支持單音和復(fù)音彈奏,如果與高品質(zhì)的音源芯片連接,音質(zhì)更可與高檔電子琴相媲美。手機(jī)中通用的音樂(lè)芯片構(gòu)成音源模塊,效果不錯(cuò),價(jià)格更低廉,如韓國(guó)產(chǎn)的QS6400 等,這些芯片的驅(qū)動(dòng)要復(fù)雜一些,需要對(duì)芯片進(jìn)行初始化設(shè)置。此外還有音樂(lè)盒、附有生日歌的生日卡片等等。所以利用微機(jī)制作的簡(jiǎn)易電子琴在我們的日常生活中隨處可見(jiàn)1。微機(jī)原理簡(jiǎn)易電子琴設(shè)計(jì)主要是通過(guò)對(duì)電子琴主體部分的電路進(jìn)行模仿設(shè)計(jì),達(dá)到電子琴固有的基本功能,故叫簡(jiǎn)易電子琴。利用定時(shí)器可發(fā)出不同頻率的方波,不同頻率的方波經(jīng)喇叭就會(huì)發(fā)出不同音調(diào)
4、。其次,定時(shí)器按設(shè)置的定時(shí)參數(shù)產(chǎn)生中斷,這一次中斷發(fā)出脈沖低電平,下一次反轉(zhuǎn)發(fā)出脈沖高電平,由于定時(shí)參數(shù)不同,就發(fā)出不同頻率的方波2,本設(shè)計(jì)中按鍵一次,會(huì)發(fā)出方波,松開(kāi)后隨之延時(shí),但在延時(shí)的期間繼續(xù)檢測(cè)按鍵,若此時(shí)又有鍵被按下,若被按下的仍為原鍵則聲音不變,否則鍵盤(pán)會(huì)譯出被按下的另一個(gè)鍵的音調(diào)。本次課程設(shè)計(jì)的目的是通過(guò)D/A轉(zhuǎn)換器產(chǎn)生摸擬信號(hào),使PC機(jī)作為簡(jiǎn)易電子琴。其主要任務(wù)有以下幾點(diǎn):基于8086系統(tǒng);使用計(jì)算機(jī)的數(shù)字鍵1、2、3、4、5、6、7、8作為電子琴的按鍵,按下即可發(fā)出相應(yīng)的音階;音階通過(guò)揚(yáng)聲器發(fā)出聲音。本次設(shè)計(jì)通過(guò)8255和8253來(lái)實(shí)現(xiàn)電子琴模擬,主要可以分成兩部分,分別為輸
5、入部分和發(fā)音部分。輸入部分:主要是由8255和8個(gè)常開(kāi)型開(kāi)關(guān)來(lái)完成。發(fā)音部分:CUP通過(guò)對(duì)定時(shí)器8253的通道2進(jìn)行編程,使其I/O寄存器接收一個(gè)控制聲音頻率的16位計(jì)數(shù)值,端口61H的最低位控制通道2門(mén)控的開(kāi)斷,以產(chǎn)生特殊的音響3。本文用到的是8253的方式3方波發(fā)生器。通過(guò)課程設(shè)計(jì)使學(xué)生更進(jìn)一步掌握微機(jī)原理及應(yīng)用課程的有關(guān)知識(shí),提高應(yīng)用微機(jī)解決問(wèn)題的能力,加深對(duì)微機(jī)應(yīng)用的理解。通過(guò)查閱資料,結(jié)合所學(xué)知識(shí)進(jìn)行軟、硬件的設(shè)計(jì),使學(xué)生初步掌握應(yīng)用微機(jī)解決問(wèn)題的步驟及方法。為以后學(xué)生結(jié)合專(zhuān)業(yè)從事微機(jī)應(yīng)用設(shè)計(jì)奠定基礎(chǔ)。2 設(shè)計(jì)方案與論證首先利用了編程程序,編輯8255芯片控制字, 對(duì)其進(jìn)行
6、初始化,使其工作在方式0,即基本輸入輸出狀態(tài),將8255的A端口設(shè)置為輸出,C端口進(jìn)行,經(jīng)CPU運(yùn)算后, 輸出到8254芯片的A端口中,由此實(shí)現(xiàn)對(duì)其的初始化。將8254芯片設(shè)置為工作在方式3,即輸出對(duì)稱(chēng)方波狀態(tài)。A端口為輸入,“OUT”指令可將輸出對(duì)應(yīng)一定頻率的方波送到揚(yáng)聲器中,由此實(shí)現(xiàn)發(fā)聲4。本實(shí)驗(yàn)頻率大小控制發(fā)出聲音的高低,通過(guò)對(duì)延時(shí)程序的調(diào)用控制發(fā)出聲音的長(zhǎng)短。并通過(guò)所編程序?qū)崿F(xiàn)對(duì)鍵盤(pán)的重復(fù)掃描,從而可以彈奏多個(gè)音符的試驗(yàn)?zāi)康摹?.2 方案二8253的CLK0接1MHz時(shí)鐘,GATE0接+5V,OUT0接8255的PA0,K8跳線連接喇叭,使用匯編語(yǔ)言設(shè)計(jì)一個(gè)運(yùn)行于計(jì)算機(jī)的電子
7、琴程序,程序應(yīng)實(shí)現(xiàn)彈奏功能。其中彈奏:用戶(hù)每按一琴鍵彈奏相應(yīng)音符;軟件預(yù)想功能為:按數(shù)字18為彈奏功能,按下即發(fā)出相應(yīng)的音階。按鍵發(fā)音,當(dāng)從鍵盤(pán)上敲擊18時(shí),音響發(fā)出哆、唻、咪、發(fā)、嗦、啦、唏、唗的音節(jié)。對(duì)比方案一,其實(shí)兩個(gè)方案差不多,但是我對(duì)于8254不熟悉,所以最終決定此方案為我選擇的最佳方案,并附上本次設(shè)計(jì)的設(shè)計(jì)框圖如圖2-1所示:系統(tǒng)總線8255芯片鍵盤(pán)8253芯片揚(yáng)聲器發(fā)聲圖2-1 設(shè)計(jì)框圖電子琴的設(shè)計(jì)實(shí)際上就是要設(shè)計(jì)一個(gè)程序,能夠通過(guò)該程序控制PC機(jī)內(nèi)揚(yáng)聲器的發(fā)聲規(guī)律,按下相應(yīng)的按鍵后,揚(yáng)聲器能發(fā)出指定頻率的聲音。PC機(jī)內(nèi)的揚(yáng)聲器是通過(guò)并行接口芯片8255和定時(shí)芯片8253來(lái)控制發(fā)
8、音的。在本次課程設(shè)計(jì)中,分析和確定程序總體設(shè)計(jì)目標(biāo):電子琴基本功能后,將總體目標(biāo)確定為連接電路與編程來(lái)實(shí)現(xiàn)功能。程序設(shè)計(jì)的思路按以下順序進(jìn)行:(1) 分析與確定程序總體設(shè)計(jì)目標(biāo);通過(guò)D/A轉(zhuǎn)換器產(chǎn)生摸擬信號(hào),使PC機(jī)作為簡(jiǎn)易電子琴。其總體原理圖如圖2-2所示:圖2-2 總體原理圖(2)按照電路圖連接實(shí)驗(yàn)箱,如圖2-3所示:圖2-3 電路連接圖(3)編寫(xiě)源程序,進(jìn)行調(diào)試,包括: 發(fā)音部分功能實(shí)現(xiàn)由更件的連接形式可知,揚(yáng)聲器的開(kāi)斷是由8255的PB0和PB1以及8253通道2同時(shí)控制的,PB0和PB1同時(shí)為高電平時(shí),揚(yáng)聲器開(kāi),有一個(gè)為低電平時(shí),揚(yáng)聲器關(guān)斷,又知8255 B口地址為61H,
9、8253通道2地址為42H,控制口地址為43H。具體程序編寫(xiě)5如下: 8253初始化程序段: mov al,10110110b ;選擇8253的通道2,并設(shè)置為工作方式3out 43h,al mov ax,bxout 42h,al ;將計(jì)數(shù)初值的低8位寫(xiě)入計(jì)數(shù)通道m(xù)ov al,ahout 42h,al ;將計(jì)數(shù)初值的高8位寫(xiě)入計(jì)數(shù)通道開(kāi)揚(yáng)聲器程序段:in al,61h ;讀入B口數(shù)據(jù)or al,03h ;將PB0 和PB1置1out 61h,al ;將設(shè)置好的數(shù)據(jù)送回B口關(guān)揚(yáng)聲器程序段:in al,61h ;讀入B口數(shù)據(jù) and al,0fch ;將PB0 和PB1置0out 61h,a ;將
10、設(shè)置好的數(shù)據(jù)送回B口彈奏功能的實(shí)現(xiàn) 當(dāng)按鍵為數(shù)字1-8時(shí),選擇彈奏功能,通過(guò)對(duì)按鍵的判斷,求得其偏移地址,然后通過(guò)查表得其相應(yīng)頻率值,再由上述計(jì)算計(jì)數(shù)初值的方法求得計(jì)數(shù)初值,然后將計(jì)數(shù)初值送人8253的通道2,最后調(diào)用發(fā)音子程序即實(shí)現(xiàn)彈奏功能。具體程序段如下:sub al,31h ;求偏移量 shl al,1 mov bl,al ;保存偏移量 mov bh,0 mov ax,num1 ;計(jì)算計(jì)數(shù)初值 mov dx,num2 div word ptrtab+bx mov bx,ax ;保存計(jì)數(shù)初值延時(shí)功能的實(shí)現(xiàn)當(dāng)彈奏完音樂(lè)之后,調(diào)用延時(shí)子程序,音樂(lè)延時(shí)播放。具體程序段6如下:delay proc
11、 near ;延時(shí)子程序ccc:mov bx,offset timemov dx,io8253b ;置8253通道0為方式0工作mov al,10hout dx,almov dx,io8255b ;設(shè)8255A口輸入mov al,9bhout dx,almov al,num ;取相應(yīng)的時(shí)間常數(shù)xlatmov dx,io8253aout dx,al ;向8253通道0輸出kkk:mov dx,io8255ain al,dx ;從8255A口讀一字節(jié)test al,01 ;判PA0口是否為1jz kkk ;若不為1,則轉(zhuǎn)KKKret ;子程序返回delay endp(1)對(duì)于一個(gè)特定的D/A轉(zhuǎn)換接
12、口電路CPU執(zhí)行一條輸出指令將數(shù)據(jù)送入D/A即可在其輸出端得到一定的電壓輸出。給D/A轉(zhuǎn)換器輸入按正弦規(guī)律變化的數(shù)據(jù),在其輸出端即可產(chǎn)生正弦波。對(duì)于音樂(lè),每個(gè)音階都有確定的頻率,如表2-1所示: 表2-1 各音階標(biāo)稱(chēng)頻率表音階12345678頻率(單位:Hz)對(duì)應(yīng)num取值(us)120106948979706359以 18 接 8255 的 A 口做為電子琴的鍵盤(pán)分別輸入哆、唻、咪、發(fā)、嗦、啦、唏、唗 的音,以 8255 的 B 口作為輸出。用 8253 定時(shí)器產(chǎn)生頻率控制揚(yáng)聲器發(fā)聲。 以 8255 接八個(gè)開(kāi)關(guān)18,做電子琴按鍵輸入。 以 8253 控制揚(yáng)聲器,發(fā)出相應(yīng)的音階。 要求:1發(fā)
13、哆的音 2發(fā) 唻的音 293.7Hz 3發(fā)咪的音 4發(fā)發(fā)的音 349.2Hz 5發(fā)嗦的音 392.0Hz 6發(fā)啦的音 7發(fā)唏的音 493.9Hz 8發(fā)唗的音(2)產(chǎn)生一個(gè)正弦波的數(shù)據(jù)可取32個(gè)(小于亦可),不同頻率的區(qū)別,可通過(guò)調(diào)節(jié)向D/A轉(zhuǎn)換器輸出數(shù)據(jù)的時(shí)間間隔,例如:發(fā)"1"頻率為,周期為,輸出數(shù)據(jù)的時(shí)間間隔為。定時(shí)時(shí)間可以由8253配合8255來(lái)實(shí)現(xiàn)。按下某鍵后發(fā)音時(shí)間的長(zhǎng)短可以由發(fā)出的正弦波的個(gè)數(shù)多少來(lái)控制。3 設(shè)計(jì)原理及功能說(shuō)明通過(guò)8255 和8253來(lái)實(shí)現(xiàn)電子琴模擬,主要可以分成兩部分,分別為輸入部分和發(fā)音部分。 輸入部分:主要是由8255 和8 個(gè)常開(kāi)型開(kāi)關(guān)來(lái)
14、完成。 發(fā)音部分:CUP 通過(guò)對(duì)定時(shí)器的通道2 進(jìn)行編程,使其I/O寄存器接收一個(gè)控制聲音頻率的16位計(jì)數(shù)值,端口61H的最低位控制通道2門(mén)控的開(kāi)斷,以產(chǎn)生特殊的音響。 當(dāng)通道2用于發(fā)聲時(shí),采用的是方式3,在方式3下,輸出線為“1”和為“0”的時(shí)間各占計(jì)數(shù)時(shí)間的一半,因而產(chǎn)生一系列間隔均勻的脈沖。從定時(shí)器輸出的方波信號(hào),經(jīng)功率放大和濾波后驅(qū)動(dòng)揚(yáng)聲器。送到揚(yáng)聲器的信號(hào)還受到了從并行接口芯片8255(端口地址為61H)來(lái)的雙重控制,端口61H的最低位控制通道2的門(mén)控開(kāi)斷,以產(chǎn)生特殊的音頻信號(hào)端口61H的PB1位和定時(shí)器的輸出信號(hào)同時(shí)作為與門(mén)的輸入,PB0和PB1位可由程序決定為0還是為1。顯然只有
15、PB0和PB1都是1時(shí),才能使揚(yáng)聲器發(fā)出聲音。控制音長(zhǎng)的時(shí)間可以簡(jiǎn)單地通過(guò)反復(fù)執(zhí)行指令來(lái)得到。 3.1.1 8253簡(jiǎn)介(1)基本介紹8253芯片是常用的可編程計(jì)數(shù)器,在微機(jī)中有著極其重要的作用。常用于事件計(jì)數(shù)器,單穩(wěn)態(tài)觸發(fā)器,分頻器,方波發(fā)生器,硬件觸發(fā)的單脈沖發(fā)生器等。計(jì)數(shù)器/定時(shí)器8253包括3個(gè)獨(dú)立的16位計(jì)數(shù)器通道,而每個(gè)計(jì)數(shù)器都有6種工作方式,可以按二進(jìn)制或十進(jìn)制(BCD碼)進(jìn)行計(jì)數(shù)。本文用到的是8253的方式3方波發(fā)生器來(lái)實(shí)現(xiàn)了簡(jiǎn)易電子琴的設(shè)計(jì)。(2)工作原理8253芯片中有3個(gè)計(jì)數(shù)通道,稱(chēng)為通道0,1,2,它們與外部電路相連的信號(hào)線有3根:CLK,GATE,OUT,CLK是脈沖
16、輸入端,GATE是門(mén)控信號(hào),OUT是輸出信號(hào),計(jì)數(shù)器工作在減1狀態(tài)。其內(nèi)部結(jié)構(gòu)圖,方式控制字格式,如圖3-1,圖3-2所示。其中當(dāng)計(jì)數(shù)器工作在方式3時(shí),輸出信號(hào)為方波信號(hào)。內(nèi)部總線A1GATE0CLK0OUT0GATE1CLK1OUT1GATE2CLK2OUT2D0-D7計(jì)數(shù)器0計(jì)數(shù)器2計(jì)數(shù)器1控制寄存器A0數(shù)據(jù)總線緩沖器R/W邏輯電路圖3-1 8253內(nèi)部結(jié)構(gòu)圖D7D6D5D4D3D2D1D0計(jì)數(shù)器選擇00 計(jì)數(shù)器001計(jì)數(shù)器110 計(jì)數(shù)器211 不用00 計(jì)數(shù)器鎖存01 讀寫(xiě)低8位10 讀寫(xiě)高8位11 讀寫(xiě)16位工作方式選擇000 方式0001 方式1×10 方式2×1
17、1 方式3100 方式4101 方式5計(jì)數(shù)方式0 二進(jìn)制1 BCD計(jì)數(shù)圖3-2 8253控制字格式PC機(jī)內(nèi)8253的通道0,通道1,通道2,控制口的端口地址分別為:40H,41H,42,43H。因?yàn)閾P(yáng)聲器是由通道2來(lái)控制的,故應(yīng)選擇通道2,工作方式選為方式3,輸出的信號(hào)則為方波信號(hào)。(3)8253的工作方式3方波發(fā)生器其特點(diǎn)是:輸出為周期性的方波。若計(jì)數(shù)值為 N,則輸出方波的周期是 N 個(gè) CLK 脈沖的寬度;寫(xiě)入控制字后,輸出將變?yōu)楦唠娖剑?dāng)寫(xiě)入計(jì)數(shù)初值后,就開(kāi)始計(jì)數(shù),輸 出仍為高電平; 當(dāng)計(jì)數(shù)到初值的一半時(shí), 輸出變?yōu)榈碗娖剑?直至計(jì)數(shù)到 0, 輸出又變?yōu)楦唠娖?,重新開(kāi)始計(jì)數(shù);若計(jì)數(shù)值為偶
18、數(shù),則輸出對(duì)稱(chēng)方波;如果計(jì)數(shù)值為奇數(shù),則前(N+1)/2 個(gè) CLK 脈沖期間輸出為高電平,后(N-1)/2 個(gè) CLK 脈沖期間輸出為低電 平;GATE 信號(hào)能使計(jì)數(shù)過(guò)程重新開(kāi)始,GATE=1 允許計(jì)數(shù),GATE=0 禁止計(jì)數(shù)。 停止后 OUT 將立即變高電平,當(dāng) GATE 再次變高以后,計(jì)數(shù)器將自動(dòng)裝入 計(jì)數(shù)初值,重新開(kāi)始計(jì)數(shù)。3.1.2 8255簡(jiǎn)介(1)基本介紹按功能可把8255分為三個(gè)邏輯電路部分。即:口電路、總線接口電路和控制邏輯電路。8255共有三個(gè)8位口,其中A口和B口是單純的數(shù)據(jù)口,供數(shù)據(jù)I/O使用。而C口則既可以作數(shù)據(jù)口,又可以作控制口使用,用于實(shí)現(xiàn)A口和B口的控制功能。
19、(2)工作原理8255的內(nèi)部結(jié)構(gòu)圖如圖3-3所示,它有3個(gè)數(shù)據(jù)端口,分為兩組,A組由A口和C口高四位組成,B組由B口和C口低四位組成。其方式控制字如圖3-4所示。圖3-3 8255內(nèi)部結(jié)構(gòu)圖圖3-4 8255方式控制字方式控制字的特征位D0D7D6D5D4D3D2D1 1 A組工作方式0 0方式00 1方式11 ´方式2B組工作方式0方式01方式1A口輸入/輸出1輸入0輸出PC7PC4輸入/輸出1輸入0輸出B口輸入/輸出1輸入0輸出PC3PC0輸入/輸出1輸入0輸出PC機(jī)內(nèi)8255的A口,B口,C口和控制口的端口地址分別為:60H,61H,62H,63H。3.2 軟件3.2.1 設(shè)計(jì)
20、實(shí)驗(yàn)總流程圖結(jié)合實(shí)驗(yàn)指導(dǎo)書(shū)的程序,實(shí)現(xiàn)簡(jiǎn)單的電子琴功能。電子琴主程序流程圖如圖3-5所示:開(kāi)始鍵盤(pán)讀入一個(gè)字符是ESC鍵嗎?YNN返回DOS是數(shù)字18鍵嗎?Y求出音階值保存賦相應(yīng)頻率值延時(shí)圖3-5 電子琴主程序流程圖3.2.2 設(shè)計(jì)子程序流程圖(1)發(fā)音子程序本子程序?qū)崿F(xiàn)放音功能。首先從鍵盤(pán)讀出一個(gè)字符,判斷,如果是ESC鍵,返回DOS,如果不是,判斷,如果鍵碼不是18,即仍然處于音階輸入準(zhǔn)備狀態(tài),如果是,即求出音階值保存,取60次32個(gè)正弦波數(shù)據(jù),播放32個(gè)數(shù)據(jù),組成一個(gè)正弦波。播放60次后,然后判斷是否有按鍵,如果有就進(jìn)入死循環(huán),直到下次按鍵為止。在彈奏時(shí)都需調(diào)用發(fā)音子程序,發(fā)音子程序的作
21、用是控制揚(yáng)聲器的發(fā)音,其流程圖如圖3-6所示:8253初始化開(kāi)揚(yáng)聲器延時(shí)關(guān)揚(yáng)聲器返回圖3-6 發(fā)音子程序流程圖(2)彈奏子程序當(dāng)按鍵為1-8時(shí),調(diào)用演奏子程序。演奏子程序的流程圖如下圖3-7所示:查表得相應(yīng)頻率計(jì)算計(jì)數(shù)初值返回調(diào)用發(fā)音子程序圖3-7 演奏子程序的流程圖(3)延時(shí)子程序當(dāng)彈奏完音樂(lè)之后,音樂(lè)延時(shí)播放。延時(shí)子程序的流程圖如下圖3-8所示:取出音階值求出8253定時(shí)時(shí)間常數(shù)(計(jì)數(shù)器初值)8253初始化為方式0設(shè)置8253A口輸入PA0為1嗎?嗎?Y子程序返回 N圖3-8 延時(shí)子程序的流程圖4 調(diào)試與結(jié)果測(cè)試4.1 硬件調(diào)試?yán)脤?shí)驗(yàn)板上的8253計(jì)數(shù)/定時(shí)器和8255并行接口,定時(shí)器8
22、253利用工作方式3產(chǎn)生一定頻率信號(hào),通過(guò)可編程的并行外圍接口芯片8255控制頻率信號(hào)的斷。8255的B口設(shè)置為輸出,8255的B口的低兩位用來(lái)控制揚(yáng)聲器驅(qū)動(dòng),當(dāng)輸出端口的PB0位為“1”或?yàn)椤?”時(shí),將使控制驅(qū)動(dòng)器的與門(mén)電路接通或關(guān)閉使8253所發(fā)出的音頻信號(hào)能到達(dá)驅(qū)動(dòng)器或被阻斷。這樣通過(guò)控制PB0的變化,可使揚(yáng)聲器接通和斷開(kāi),控制揚(yáng)聲器是否能發(fā)出聲音。此外,通過(guò)控制PB0的通斷時(shí)間,就能發(fā)出不同的音長(zhǎng)。8255的PB1位為“1”時(shí),控制8253定時(shí)器產(chǎn)生驅(qū)動(dòng)揚(yáng)聲器發(fā)聲的音頻信號(hào),該位為“0”則不發(fā)信號(hào)。8253有三個(gè)定時(shí)器,分為0號(hào)、1號(hào)和2號(hào)定時(shí)器,驅(qū)動(dòng)揚(yáng)聲器的是2號(hào)定時(shí)器,該定時(shí)器工作
23、在方式3,是一個(gè)頻率發(fā)生器,它負(fù)責(zé)向揚(yáng)聲器發(fā)送指定頻率的脈沖信號(hào)。當(dāng)8255的PB0和PB1都為1時(shí),8253發(fā)出指定頻率的聲音信號(hào)的前提下,聲音信號(hào)過(guò)與門(mén)到達(dá)驅(qū)動(dòng)器驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。連接簡(jiǎn)易電子琴系統(tǒng)的電路圖如圖4-1所示圖4-1 電子琴系統(tǒng)的電路圖將實(shí)驗(yàn)箱與微型計(jì)算機(jī)保持串口通訊成功。將匯編程序代碼輸入微型計(jì)算機(jī)進(jìn)行硬件調(diào)試。4.2 軟件調(diào)試把彈奏功能的程序代碼輸入微型計(jì)算機(jī);代碼:data segmentioportequ 0d400h-0280hio8253aequ ioport+280hio8253bequ ioport+283hio8255aequ ioport+288hio8255
24、bequ ioport+28bhio0832aequ ioport+290hdata1 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h;正弦波數(shù)據(jù)time db 120,106,94,89,79,70,63,59;發(fā)不同音時(shí)8253的計(jì)數(shù)器初值msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0
25、ah,'$'num db ?;num為8253計(jì)數(shù)器初值的序號(hào)data endscode segment assume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset msgmov ah,9int 21h ;顯示提示信息sss:mov ah,7int 21h ;從鍵盤(pán)接收字符,不回顯cmp al,1bhje exit ;若為ESC鍵,則轉(zhuǎn)EXITcmp al,31hjl ssscmp al,38hjg sss ;若不在'1'-'8'之間轉(zhuǎn)ssssub al,31hmov num,al
26、;求出相應(yīng)的時(shí)間常數(shù)的序號(hào)mov cx,60 ;取60次32個(gè)正弦波數(shù)據(jù)ddd:mov si,0lll:mov al,data1si;取正弦波數(shù)據(jù)mov dx,io0832aout dx,al;放音call delay ;調(diào)延時(shí)子程序inc sicmp si,32;是否取完32個(gè)數(shù)據(jù)jl lll;若沒(méi)有,則繼續(xù)loop ddd;總循環(huán)次數(shù)60是否完,沒(méi)有,則繼續(xù)jmp sssexit:mov ah,4chint 21hdelay proc near ;延時(shí)子程序ccc:mov bx,offset timemov dx,io8253b ;置8253通道0為方式0工作mov al,10hout d
27、x,almov dx,io8255b ;設(shè)8255A口輸入mov al,9bhout dx,almov al,num ;取相應(yīng)的時(shí)間常數(shù)xlatmov dx,io8253aout dx,al ;向8253通道0輸出kkk:mov dx,io8255ain al,dx ;從8255A口讀一字節(jié)test al,01 ;判PA0口是否為1jz kkk ;若不為1,則轉(zhuǎn)KKKret;子程序返回delay endpcode endsend start與硬件相結(jié)合進(jìn)行修改調(diào)試,運(yùn)行程序后,顯示如下界面,等待輸入字符,如圖4-2所示:圖4-2 運(yùn)行界面從鍵盤(pán)上敲擊18時(shí),音響發(fā)出哆、唻、咪、發(fā)、嗦、啦、唏、
28、唗的音節(jié),則調(diào)試成功。如表4-1所示:表4-1 測(cè)試表 測(cè)試方案 測(cè)試結(jié)果啟動(dòng)程序,出現(xiàn)按鍵提示,按下18鍵機(jī)內(nèi)/實(shí)驗(yàn)儀發(fā)出相應(yīng)的音階改變開(kāi)關(guān)狀態(tài),按18鍵對(duì)應(yīng)發(fā)出相應(yīng)的音階“彈琴”發(fā)出優(yōu)美旋律按下ESC鍵退出程序5 總結(jié)在為期一周的微機(jī)原理課程設(shè)計(jì)中,我學(xué)會(huì)了制做項(xiàng)目的一般步驟。第一部是硬件設(shè)計(jì)主要是實(shí)現(xiàn)控制對(duì)象與被控制對(duì)象之間的聯(lián)系。第二步就是軟件設(shè)計(jì),就是要完成各個(gè)可編程芯片與CPU之間的數(shù)據(jù)傳送和各個(gè)進(jìn)程的邏輯順序。在本次設(shè)計(jì)中對(duì)硬件要求就要熟練掌握可編程器件8255A和8253的應(yīng)用。對(duì)軟件設(shè)計(jì)就要熟練掌握匯編語(yǔ)言。由于時(shí)間限制的問(wèn)題和硬件的局限性也只能將電子琴的功能簡(jiǎn)易化。另外,我
29、從中學(xué)到了許多從課本上學(xué)不到的東西,鍛煉了自己編程的能力,最后程序運(yùn)行時(shí)能夠?qū)崿F(xiàn)目標(biāo),我感到很有成就感,從中也獲得了很多樂(lè)趣,當(dāng)然,最重要的是加深了我對(duì)課本理論知識(shí)的理解。當(dāng)剛看到這個(gè)課設(shè)題目時(shí),我感到無(wú)從下手,因?yàn)槲叶疾恢繮C機(jī)的內(nèi)部具體結(jié)構(gòu),從理論課上只是了解了CPU的結(jié)構(gòu)和工作原理,以及幾個(gè)接口芯片的工作原理,還有匯編語(yǔ)言的一些基本指令。但我沒(méi)有被嚇到,我冷靜下來(lái)思考后,發(fā)現(xiàn)其本質(zhì)就是控制PC機(jī)內(nèi)揚(yáng)聲器的發(fā)音,通過(guò)查閱資料我了解了PC機(jī)內(nèi)揚(yáng)聲器的電路連接形式,發(fā)現(xiàn)它是由接口芯片8255和8253共同控制的,8255的PB0作為8253通道2的門(mén)信號(hào),而8255的PB1和8253通道2的
30、輸出相與后的信號(hào)作為揚(yáng)聲器的驅(qū)動(dòng)信號(hào),了解了其內(nèi)部接線方式后,思路也就有了,要想讓揚(yáng)聲器發(fā)聲,8255的PB0和PB1必須同時(shí)為高電平,其中之一為低電平時(shí),揚(yáng)聲器就不能發(fā)聲,而發(fā)聲的音調(diào)則可通過(guò)改變8253的計(jì)數(shù)初值來(lái)實(shí)現(xiàn),接下來(lái)的任務(wù)就是通過(guò)編程來(lái)控制8255和8253,從而間接地控制揚(yáng)聲器的發(fā)聲規(guī)律,而8255和8253這兩個(gè)接口芯片在理論課上都已介紹過(guò),對(duì)其工作原理和編程方法都有一定的了解,看到這些熟悉的內(nèi)容時(shí),我淡定了很多。有了思路之后,我并沒(méi)有急著寫(xiě)程序,因?yàn)槲覒岩墒遣皇敲颗_(tái)PC機(jī)的揚(yáng)聲器接線方式都是這樣的,所以我開(kāi)始只編了一段控制揚(yáng)聲器發(fā)音的程序,來(lái)看看程序運(yùn)行時(shí)揚(yáng)聲器到底發(fā)不發(fā)音
31、,結(jié)果發(fā)聲了,這讓我很驚喜,也很有動(dòng)力,更加激發(fā)了我的興趣,接下來(lái)我就開(kāi)始編寫(xiě)實(shí)現(xiàn)指定功能的程序了,首先是最簡(jiǎn)單的彈奏功能,通過(guò)對(duì)按鍵的判斷來(lái)發(fā)出相應(yīng)頻率的聲音,因?yàn)橐袛喟存I,所以很自然地就想到了CMP指令,在計(jì)算計(jì)數(shù)初值時(shí),因?yàn)橐玫较鄳?yīng)音符的頻率,所以需要將按鍵轉(zhuǎn)換為音符的頻率,我開(kāi)始想用書(shū)上常見(jiàn)的XLAT換碼指令7,但AL存放的數(shù)最大為128,很明顯容量不夠,于是我采用了基址+變址的尋址方法,在編程的過(guò)程中,由于要程序?qū)崿F(xiàn)多個(gè)功能,所以用子程序的結(jié)構(gòu)會(huì)比較方便,需要完成某個(gè)功能時(shí),只需調(diào)用相應(yīng)子程序就可以了,這樣會(huì)使得程序的結(jié)構(gòu)清楚明了。在完成基本功能后,我還試著加上一些附加功能,比如
32、延時(shí),變調(diào),通過(guò)我的不斷嘗試,終于把延時(shí)功能實(shí)現(xiàn)了,但變調(diào)功能沒(méi)能像預(yù)期的那樣??傊?,這次課程設(shè)計(jì)讓我學(xué)到了許多從課本上學(xué)不到的知識(shí),加深了對(duì)理論知識(shí)的理解,激發(fā)了我對(duì)匯編語(yǔ)言的興趣。上理論課時(shí),只是老師講,我們聽(tīng),那些指令讓我感到很枯燥,因?yàn)椴恢浪降子惺裁醋饔?,而這次課程設(shè)計(jì)剛好把這些指令應(yīng)用到了實(shí)際中來(lái),加深了對(duì)各種指令功能的理解,最后功能實(shí)現(xiàn)時(shí),感到很有成就感,覺(jué)得匯編語(yǔ)言很神奇,激發(fā)了我對(duì)它的興趣。參考文獻(xiàn)1專(zhuān)著.M.北京.清華大學(xué)出版社,20043專(zhuān)著.李芷.微機(jī)原理與接口技術(shù)M.電子工業(yè)出版社,2002 4專(zhuān)著.宋杰等.微機(jī)原理與接口技術(shù)課程設(shè)計(jì)M.機(jī)械工業(yè)出版社,20055專(zhuān)
33、著.小捷. 匯編語(yǔ)言程序設(shè)計(jì)(第二版)M.西安電子科技大學(xué)出版社,20036專(zhuān)著.錢(qián)曉捷.匯編語(yǔ)言程序設(shè)計(jì)(第二版)M.電子工業(yè)出版社,20037專(zhuān)著.楊立,鄧振杰等.微型計(jì)算機(jī)原理與接口技術(shù)(第二版)M.中國(guó)鐵道出版社,2006 附錄1:總體電路原理圖附錄2:元器件清單(1)計(jì)時(shí)器8253(2)并行控制器8255A(3)實(shí)驗(yàn)臺(tái) 附錄3:源代碼data segmentioportequ 0d400h-0280hio8253aequ ioport+280hio8253bequ ioport+283hio8255aequ ioport+288hio8255bequ ioport+28bhio0832
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋買(mǎi)賣(mài)合同貸款的審批流程3篇
- 旅游公司導(dǎo)游領(lǐng)隊(duì)勞動(dòng)合同模板3篇
- 擺脫責(zé)任書(shū)負(fù)擔(dān)3篇
- 旅游產(chǎn)品經(jīng)理雇傭合同3篇
- 旅游巴士租用合同
- 文藝演出化妝造型協(xié)調(diào)合同3篇
- 方居間合同工作范文3篇
- 工業(yè)設(shè)備拆除合同3篇
- 城市生態(tài)修復(fù)工程合同
- 學(xué)校運(yùn)動(dòng)場(chǎng)照明施工協(xié)議
- 2024年大學(xué)經(jīng)濟(jì)管理學(xué)院招聘考試題及答案
- 《2023版CSCO鼻咽癌診療指南》解讀課件
- 靜配中心述職報(bào)告
- 智能建造施工技術(shù) 課件全套 王春林 項(xiàng)目1-11 智能建造施工概論- 外墻保溫與建筑施工碳排放計(jì)算
- T31SAMA 005-2024 增材制造 金屬粉末床熔融制造操作安全要求
- 動(dòng)火作業(yè)管理規(guī)定
- DL∕T 248-2012 輸電線路桿塔不銹鋼復(fù)合材料耐腐蝕接地裝置
- 結(jié)構(gòu)設(shè)計(jì)原理練習(xí)題及答案
- 國(guó)標(biāo)《電化學(xué)儲(chǔ)能電站檢修試驗(yàn)規(guī)程》
- 天津市長(zhǎng)期護(hù)理保險(xiǎn)護(hù)理服務(wù)項(xiàng)目和標(biāo)準(zhǔn)
- 2011年1月自考03706思想道德修養(yǎng)與法律基礎(chǔ)試題及答案含解析
評(píng)論
0/150
提交評(píng)論