版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 微機(jī)原理課程設(shè)計(jì)——設(shè)計(jì)簡易電子琴</p><p> 本實(shí)驗(yàn)是利用微機(jī)原理試驗(yàn)箱、8255芯片、8254芯片、鍵盤、揚(yáng)聲器等硬件設(shè)備,設(shè)計(jì)簡易電子琴。</p><p> 首先利用了編程程序,編輯了8255芯片控制字, 對其進(jìn)行初始化,使其工作在方式0,即基本輸入輸出狀態(tài),
2、將8255的A端口設(shè)置為輸出,C端口進(jìn)行,經(jīng)CPU運(yùn)算后, 輸出到8254芯片中,由此實(shí)現(xiàn)對其的初始化。</p><p> 將8254芯片設(shè)置為工作在方式3,即輸出對稱方波狀態(tài)。A端口為輸入,“OUT”指令可將輸出對應(yīng)一定頻率的方波送到揚(yáng)聲器中,由此實(shí)現(xiàn)發(fā)聲。本實(shí)驗(yàn)通過頻率大小控制發(fā)出聲音的高低,通過對延時(shí)程序的調(diào)用控制發(fā)出聲音的長短。</p><p> 并通過所編程序?qū)崿F(xiàn)對鍵盤的重復(fù)
3、掃描,重而可以彈奏多個(gè)音符的試驗(yàn)?zāi)康摹?lt;/p><p> 關(guān)鍵詞 8254芯片 8255芯片 電子發(fā)聲元件 鍵盤</p><p><b> 目 錄</b></p><p> 摘要……….…………………………………………….….……………………………………1</p><p> 目錄……………………………
4、……………………………………………………………… 2</p><p> 1. 實(shí)驗(yàn)內(nèi)容......................…………….…………….…………..……………………………3</p><p> 2. 實(shí)驗(yàn)要求......................…………….…………….………………………………………..3</p><p> 3. 工作原理
5、…………………………….…....……….....……………………………………3</p><p> 3.1 按鍵部分…………………………….…....……….....……………………………….3</p><p> 3.2 發(fā)聲部分…………………………………………………………………………...…3</p><p> 4. 程序流程圖………..….……………………
6、.………………………….…..….…….…….4</p><p> 4.1 按鍵部分 ………………………………………………………………………….....4</p><p> 4.2 發(fā)聲部分…………………………………………………………………………...…5</p><p> 5. 硬件連接圖及音符頻率……………………….…………………………...……………..
7、6</p><p> 6. 芯片簡介……………...…………………………….…………………………...………...7</p><p> 6.1 8254芯片簡介…………………………………………………………………………7</p><p> 6.2 8255芯片簡介…………………………………………………………………………8</p><p>
8、 7. 程序代碼………………………………………………………………………………….10</p><p> 7.1 按鍵部分代碼…………………………………………………………………….…10</p><p> 7.2 發(fā)聲部分代碼…………………………………………………………………...…...14</p><p> 8. 鍵盤與數(shù)碼顯示管工作原理…………………
9、…………...……………………………...17</p><p> 總結(jié)……………………………………………………………………………………………...18</p><p> 致謝……………..………………….……………………..…….…………...………………….19</p><p> 參考文獻(xiàn)……………..…………….…………………..….…..……………….…
10、…………….20</p><p><b> 正文</b></p><p><b> 1. 實(shí)驗(yàn)內(nèi)容:</b></p><p> 利用定時(shí)/計(jì)數(shù)器8254實(shí)現(xiàn)音樂演奏。</p><p> 2 實(shí)驗(yàn)要求:(1)配合延時(shí)和控制程序控制揚(yáng)聲器發(fā)聲(演奏音樂)。</p><p>
11、; ?。?)把鍵盤當(dāng)作電子琴按鍵進(jìn)行演奏。</p><p><b> 3 工作原理</b></p><p><b> 3.1 按鍵部分</b></p><p> 本程序是通過并行接口芯片8255對鍵盤進(jìn)行掃描(對于鍵盤單元的工作原理見正文第9點(diǎn)),將8255芯片的PA0—PA4,PC0—PC4它們分別與鍵盤傷的X1
12、—X4,Y1—Y4相連, 根據(jù)控制字81H,決定工作在方式0,A端口和B端口輸出,C端口輸入,由其C口將按鍵情況輸入到CPU中,在CPU中進(jìn)行一系列運(yùn)算,通過定時(shí)器8254將不同頻率的波形經(jīng)OUTO輸入到揚(yáng)聲器中,從而實(shí)現(xiàn)揚(yáng)聲器的發(fā)音。 </p><p> 本實(shí)驗(yàn)中8254的工作方式為方式3 ,輸出的波形為對稱方波。由于系統(tǒng)中8254的CLK端已固定接好頻率為1MHZ的方波信號(hào),所以要控制其輸出端OUT0輸出不
13、同的頻率只要根據(jù)通過寫入不同的計(jì)數(shù)初值就能實(shí)現(xiàn)。 </p><p><b> 公式為:</b></p><p> CLK0端的輸入頻率/OUT0端的輸出頻率=計(jì)數(shù)初值N</p><p> 通過頻率的大小控制音階的不同,通過延時(shí)程序控制發(fā)音的長短,由此達(dá)到實(shí)驗(yàn)要求。 </p><p><b> 3.2 發(fā)
14、聲部分:</b></p><p> 發(fā)生部分由8254完成:一個(gè)音符對應(yīng)一個(gè)頻率,將對應(yīng)一個(gè)音符頻率的方波通到揚(yáng)聲器上,就可以發(fā)出這個(gè)音符的聲音。將一段樂曲的音符對應(yīng)頻率的方波依次送到揚(yáng)聲器,就可以演奏出這段樂曲。利用8254的方式3—“方波發(fā)生器”,將相應(yīng)一種頻率的計(jì)數(shù)初值寫入計(jì)數(shù)器,就可產(chǎn)生對應(yīng)頻率的方波。計(jì)數(shù)初值的計(jì)算如下:</p><p> 計(jì)數(shù)初值 = 輸入時(shí)鐘
15、÷ 輸出頻率</p><p> 例如輸入時(shí)鐘采用1MHz,要得到800Hz的頻率,計(jì)數(shù)初值即為1000000÷800。音符與頻率對照關(guān)系如表1所示。對于每一個(gè)音符的演奏時(shí)間,可以通過軟件延時(shí)來處理。首先確定單位延時(shí)時(shí)間程序(根據(jù)CPU的頻率不同而有所變化)。然后確定每個(gè)音符演奏需要幾個(gè)單位時(shí)間,將這個(gè)值送入DL中,調(diào)用DALLY子程序即可。</p><p><b
16、> 4 程序流程圖</b></p><p><b> 4.1 按鍵部分</b></p><p><b> 4.2 發(fā)聲部分</b></p><p> 5 硬件連接圖及音符頻率</p><p><b> 6 芯片簡介</b></p>&
17、lt;p> 6.1 8254芯片簡介</p><p> D0-D7雙向數(shù)據(jù)線,用以傳送數(shù)據(jù)和控制字。計(jì)數(shù)器的計(jì)數(shù)值亦通過此數(shù)據(jù)總線進(jìn)行讀寫。</p><p> CS輸入信號(hào),低電平有效。作為片選。</p><p> RD讀控制信號(hào),低電平有效。</p><p> WR寫控制信號(hào),低電平有效</p><p&
18、gt; A0、A1為8254的內(nèi)部計(jì)數(shù)器和一個(gè)控制寄存器的編碼選擇信號(hào)</p><p> CLK0是每個(gè)計(jì)數(shù)器的時(shí)鐘輸入端。計(jì)數(shù)器對此時(shí)鐘信號(hào)進(jìn)行計(jì)數(shù)。CLK最高頻率可達(dá)2MHZ。</p><p> GATE0-GATE2門控制信號(hào),即計(jì)數(shù)器的控制輸出信號(hào),用來控制計(jì)數(shù)器的工作。</p><p> OUT0-OUT2計(jì)數(shù)器輸出信號(hào),用來產(chǎn)生不同方式工作時(shí)的輸
19、出波形</p><p> 9) 8254具有3個(gè)獨(dú)立的16位計(jì)數(shù)器,6種不同的工作方式。計(jì)數(shù)寄存器用來寄存計(jì)數(shù)初值,計(jì)數(shù)工作單元為16位減1計(jì)數(shù)器,它的初值便是計(jì)數(shù)寄存器內(nèi)容,計(jì)數(shù)單元對CLK脈沖計(jì)數(shù),每出現(xiàn)一個(gè)CLK脈沖,計(jì)數(shù)器減1,當(dāng)CLK端出現(xiàn)了規(guī)定個(gè)數(shù)的脈沖時(shí),OUT輸出一個(gè)脈沖信號(hào)。</p><p> 10) 本實(shí)驗(yàn)中,我們用到的引腳有:D0-D7、
20、A0-A1、WR、RD、CS、CLK0、GATE0、OUT0等;設(shè)定工作在方式3用來產(chǎn)生方波、應(yīng)用計(jì)數(shù)器0。</p><p> 表1 8254的方式控制字格式</p><p> 表2 8254讀出控制字格式</p><p> 表3 8254狀態(tài)字格式</p><p> 6.2 8255芯片簡介</p><p
21、> D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。</p><p> PA0~PA7:端口A輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器。</p><p> PB0~PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器, 一個(gè)8位的輸入輸出緩
22、沖器。</p><p> PC0~PC7:端口C輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口。</p><p> CS:片選信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊。&
23、lt;/p><p> RD:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。</p><p> WR:寫入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),允許CPU將數(shù)據(jù)或控制字寫入8255。</p><p> RESET:復(fù)位輸入線,當(dāng)該輸入端外于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I
24、/O口均被置成輸入方式。</p><p> A1、A0:端口地址總線,8255中有端口A、B、C和一個(gè)內(nèi)部控制字寄存器,共4個(gè)端口,由A0、A1輸入地址信號(hào)來尋址。</p><p> 10) 本實(shí)驗(yàn)用到的引腳有PA0-PA3、PC0-PC3、D0-D7、A0、A1、WR、RD、CS 、和GND ;設(shè)定工作在方式0,A口輸出、B口輸出、C口低4位輸入。 </p>
25、<p> 8255內(nèi)部結(jié)構(gòu)及引腳</p><p> 表4 8255 工作方式控制字圖</p><p><b> 7 程序代碼</b></p><p> 7.1 按鍵部分代碼</p><p> MY8255_A EQU 0600H</p><p> MY8255_
26、B EQU 0602H</p><p> MY8255_C EQU 0604H </p><p> MY8255_MODE EQU 0606H</p><p> MY8254_MODE EQU 06C6H</p><p> MY8254_A E
27、QU 06C0H ;進(jìn)行宏定義</p><p> MYDATA SEGMENT</p><p> CHUSHU DW 441D,495D,556D,589D,661D,742D,833D,882D,221D,248D,278D,294D,330D,371D,416D,-1D</p><p> MYDATA
28、ENDS ;建立數(shù)據(jù)段 MYDATA</p><p> MYCODE SEGMENT ;建立數(shù)據(jù)段 MYCODE</p><p> ASSUME CS:MYCODE,DS:MYDATA</p><p> START: MOV AX,MYDATA<
29、/p><p> MOV DS,AX ;實(shí)現(xiàn)段寄存器DS的初始化</p><p> MOV DX,MY8255_MODE </p><p> MOV AL,81H</p><p> OUT DX,AL ;寫8255芯片的控制字,實(shí) </p
30、><p> ;現(xiàn)工作在方式0,A端口和B端口輸出,C端口輸入</p><p> MOV DX,MY8254_MODE</p><p> MOV AL,36H</p><p> OUT DX,AL ;使8254工作在方式3,A</p><p> ;口輸入,運(yùn)用計(jì)數(shù)器
31、0,以二進(jìn)制方式進(jìn)行</p><p> BEGIN: CALL CCSCAN ;調(diào)用掃描子程序</p><p> JNZ NUM1 ;有鍵按下時(shí)跳到NUM1</p><p> JMP BEGIN ;沒鍵按下時(shí)循環(huán)執(zhí)行</p><p&
32、gt;<b> ; BEGIN</b></p><p> ;========================================</p><p><b> ;確定按下鍵的位置</b></p><p> ;========================================</p>
33、<p> NUM1: CALL CCSCAN</p><p> JNZ NUM2 ;有鍵按下時(shí)跳到NUM2 </p><p> JMP BEGIN ;沒鍵按下時(shí)循環(huán)執(zhí)行BEGIN</p><p> NUM2: MOV CH,0FEH
34、 ;確定按下鍵在第一列</p><p> MOV CL,00H ;將CL清零</p><p> COLUM: MOV AL,CH</p><p> MOV DX,MY8255_A ;將8255的A口地址賦給DX</p>&
35、lt;p> OUT DX,AL ;將CPU中的AL值送到8255</p><p> ;的A口中,即送到x1、x2、</p><p><b> ;x3、x4中</b></p><p> MOV DX,MY8255_C ;將8255的C口地址賦給D
36、X</p><p> IN AL,DX ;將C口的值送到AL中 </p><p> L1: TEST AL,01H ;檢驗(yàn)按下鍵是否在L1</p><p> JNZ L2 ;不是L1則跳到L2<
37、/p><p> MOV AL,00H ;為了后面用來與CHUSHU</p><p><b> ;數(shù)據(jù)段中數(shù)對應(yīng)</b></p><p> JMP KCODE ;強(qiáng)制跳轉(zhuǎn)到KCODE</p><p> L2: TE
38、ST AL,02H ;檢驗(yàn)按下鍵是否在L2 </p><p> JNZ L3 ;不是L2則跳到L3</p><p> MOV AL,04H ;為了后面用來與CHUSHU</p><p><b&
39、gt; ;據(jù)段中數(shù)對應(yīng)。</b></p><p> JMP KCODE ;強(qiáng)制跳轉(zhuǎn)到KCODE</p><p> L3: TEST AL,04H ;檢驗(yàn)按下鍵是否在L23</p><p> JNZ L4
40、 ;不是L3則跳到L4</p><p> MOV AL,08H ;為了后面用來與CHUSHU數(shù)據(jù)段中數(shù)對應(yīng)</p><p> JMP KCODE ;強(qiáng)制跳轉(zhuǎn)到KCODE</p><p> L4:
41、 TEST AL,08H ;檢驗(yàn)按下鍵是否在L4 </p><p> JNZ NEXT ;不是L4則跳到NEXT</p><p> MOV AL,0CH ;為了后面用來與CHUSHU</p><p>
42、<b> ;據(jù)段中數(shù)對應(yīng)。</b></p><p> KCODE: ADD AL,CL ;實(shí)現(xiàn)AL與CL的無進(jìn)位加法</p><p> MOV DL,2H </p><p> MUL DL
43、 ;將AL乘以2結(jié)果保存到AX中</p><p> PLAY: LEA SI,CHUSHU ;使SI指向CHUSHU的首地址</p><p> ADD SI,AX ;通過SI加AX 實(shí)現(xiàn)指針SI的移動(dòng)</p><p> MOV DX,0FH
44、 </p><p> MOV AX,4240H ;被除數(shù)為0F4240H</p><p> DIV WORD PTR[SI] ;除數(shù)為SI所指的數(shù)據(jù)</p><p> MOV DX,MY8254_A ;將8255的A口地址賦給DX
45、</p><p> OUT DX,AL ;輸出商的低4位</p><p><b> MOV AL,AH</b></p><p> OUT DX,AL ;輸出商的高4位</p><p> MOV CX,
46、8H ;輸入計(jì)數(shù)值CX</p><p> NEXT3: CALL DALLY ;調(diào)用延時(shí)子程序DALLY</p><p> CALL DALLY</p><p> CALL DALLY</p><p> CALL DALLY</p&
47、gt;<p> CALL DALLY</p><p> LOOP NEXT3 ;CX不為0重復(fù)執(zhí)行NEXT3 </p><p> MOV DX,0FH </p><p> MOV AX,4240H
48、 ;被除數(shù)為0F4240H</p><p> MOV SI ,30D </p><p> DIV WORD PTR[SI] ;除數(shù)為SI=30所指的數(shù)據(jù)</p><p> MOV DX,MY8254_A ;將8255的A口地址賦給DX</p&g
49、t;<p> OUT DX,AL </p><p> MOV AL,AH </p><p> OUT DX,AL ;實(shí)現(xiàn)靜音,結(jié)束一個(gè)音符的發(fā)音</p><p> JMP BEGIN
50、 ;跳轉(zhuǎn)到BEGIN,重復(fù)掃描</p><p> NEXT: INC CL ;使CL加1,為了后面用來與CHUSHU 數(shù)</p><p> ;據(jù)段中數(shù)對應(yīng) </p><p> MOV AL,CH </p>
51、<p> TEST AL,08H </p><p> JZ KERR ;無鍵按下時(shí)跳轉(zhuǎn)到KERR</p><p> ROL AL,1D ;向左移位</p><p><b> MOV CH,A
52、L</b></p><p> JMP COLUM ;強(qiáng)制跳轉(zhuǎn)到COLUM</p><p> KERR: JMP BEGIN ;跳到BEGIN重新開始掃描</p><p> ;====================================
53、====</p><p><b> ;鍵盤掃描子程序</b></p><p> ;========================================</p><p> CCSCAN: MOV AL,00H</p><p> MOV DX,MY8255_A </p><p>
54、 OUT DX,AL ;使8255芯片A端口輸出</p><p> ;為0,既使x1、x2、x3、 </p><p><b> ;X4為0</b></p><p> MOV DX,MY8255_C </p><p> IN AL,DX
55、 ;將從C端口輸入的y1、y2、y3、y4送到AL中</p><p> NOT AL ;將AL取反</p><p> AND AL,0FH ;將AL前4位清零</p><p><b> RET</b></
56、p><p> ;========================================</p><p><b> ;延時(shí)子程序</b></p><p> ;========================================</p><p> DALLY: PUSH CX
57、 ;將CX壓棧</p><p> MOV CX,000FH </p><p> T1: MOV AX,0009FH</p><p> T2: DEC AX ;使AX減1</p><p
58、> JNZ T2 ;AX不為0重復(fù)T2</p><p> LOOP T1 ;CX不為0重復(fù)T1</p><p> POP CX ;將CX出棧</p><p><b&g
59、t; RET</b></p><p> MYCODEENDS ;代碼段定義結(jié)束</p><p> END START ;程序結(jié)束</p><p> 7.2 發(fā)聲部分代碼</p><p&g
60、t;<b> ; 端口定義</b></p><p> IOY3EQU 06C0H</p><p> IOY1EQU 0640H</p><p> MY8254_COUNT0EQU IOY3+00H ;8254計(jì)數(shù)器0端口地址</p><p> MY8254_COUNT1EQU IOY3+02
61、H ;8254計(jì)數(shù)器1端口地址</p><p> MY8254_COUNT2EQU IOY3+04H ;8254計(jì)數(shù)器2端口地址</p><p> MY8254_MODEEQU IOY3+06H ;8254控制寄存器端口地址</p><p> MY8255_AEQU IOY1+00H ;8255輸入輸出0端口地址</p>
62、<p> MY8255_BEQU IOY1+02H ;8255輸入輸出1端口地址</p><p> MY8255_CEQU IOY1+04H ;8255輸入輸出2端口地址</p><p> MY8255_MODEEQU IOY1+06H ;8255控制寄存器端口地址</p><p> STACK1SEGMENT STAC
63、K</p><p> DW 256 DUP(?)</p><p> STACK1ENDS</p><p> DATASEGMENT </p><p> FREQ_LIST DW 330,393,525,661, 661,700,589, 589,786,495,525</p>
64、<p> DW 661,700,786,525,525,589, 661,393,525,661, 661,700,589</p><p> DW 589,786,495,525, 661,700,786,525,525,589, 525,0</p><p> TIME_LIST DB 4, 4, 4, 4, 12
65、, 4, 16, 8, 4, 4, 16</p><p> DB 4, 4, 4, 4, 8, 8, 16, 4, 4, 4, 12, 4, 16 </p><p> DB 8, 4, 4, 16, 4, 4, 4, 4, 8, 8, 16</p><
66、p><b> DATAENDS</b></p><p> CODESEGMENT</p><p> ASSUME CS:CODE,DS:DATA</p><p> START:MOV AX,DATA</p><p><b> MOV DS,AX</b></p>
67、<p> MOV DX,MY8254_MODE</p><p> ;ASSUME CS:CODE,DS:DATA</p><p> ;初始化8254工作方式</p><p> MOV AL,36H ;定時(shí)器0、方式3</p><p><b> OUT DX,AL</b&
68、gt;</p><p> MOV DX, MY8255_MODE ;初始化8255</p><p> MOV AL, 90H ;A口輸入,B口輸出</p><p> OUT DX, AL</p><p> XIE: MOV DX, MY8255_A</p><
69、p> IN AL, DX</p><p> MOV DX, MY8255_B</p><p> OUT DX, AL</p><p> CALL DALLY</p><p> CMP AL,01H</p><p><b> JZ BEGIN</b></p>&
70、lt;p><b> JMP BEGIN</b></p><p> BEGIN:MOV SI,OFFSET FREQ_LIST ;裝入頻率表起始地址</p><p> MOV DI,OFFSET TIME_LIST ;裝入時(shí)間表起始地址</p><p><b> JMP PLAY</b><
71、;/p><p> PLAY:MOV DX,0FH ;輸入時(shí)鐘為1MHz,1M = 0F4240H </p><p> MOV AX,4240H </p><p> DIV WORD PTR [SI] ;取出頻率值計(jì)算計(jì)數(shù)初值,0F4240H / 輸出頻率 </p>
72、<p> MOV DX,MY8254_COUNT0</p><p> OUT DX,AL ;裝入計(jì)數(shù)初值</p><p><b> MOV AL,AH</b></p><p><b> OUT DX,AL</b></p><p> MOV
73、DL,[DI] ;取出演奏相對時(shí)間,調(diào)用延時(shí)子程序 </p><p> CALL DALLY</p><p><b> ADD SI,2</b></p><p><b> INC DI</b></p><p> CMP WORD PTR [SI],0
74、 ;判斷是否到曲末?</p><p><b> JE XIE</b></p><p><b> JMP PLAY</b></p><p> DALLYPROC ;延時(shí)子程序</p><p> D0:MOV CX,0010H<
75、/p><p> D1:MOV BX,0FF0H</p><p> D2:DEC BX</p><p><b> JNZ D2</b></p><p><b> LOOP D1</b></p><p><b> DEC DL</b></
76、p><p><b> JNZ D0</b></p><p><b> RET</b></p><p> DALLYENDP</p><p><b> CODEENDS</b></p><p><b> END START</b&
77、gt;</p><p> 8 鍵盤與數(shù)碼顯示管工作原理 </p><p><b> (L4)Y4</b></p><p><b> 如圖 </b></p><p><b> (L3)Y3 </b></p><p> X組對應(yīng)8255芯片的A
78、口(X值為0)</p><p><b> (L2)Y2</b></p><p> Y組對應(yīng)8255芯片的C口(Y值為1) </p><p><b> (L1)Y1</b></p><p><b> 。</b></p><p&g
79、t; X1 X2 X3 X4 </p><p> 當(dāng)有鍵按下時(shí),該鍵的X、Y接觸,Y值變?yōu)?,改變了輸入8255芯片C</p><p> 口的數(shù)值,從而與程序中的L1,L2,L3,L4對應(yīng),確定按鍵位置。實(shí)現(xiàn)通過改</p><p> 變鍵盤輸入來改變8254輸出頻率,實(shí)現(xiàn)揚(yáng)聲器發(fā)音。</p><p> 總
80、 結(jié)</p><p> 隨著科技的進(jìn)步微機(jī)的應(yīng)用已經(jīng)很多,由傳統(tǒng)的物理實(shí)現(xiàn)轉(zhuǎn)變到軟件實(shí)現(xiàn),而且起精確程度也大大的提高,且實(shí)現(xiàn)方法也越來越簡單。這些則是由匯編語言程序來實(shí)現(xiàn)的。在這里是在學(xué)完了《微型計(jì)算機(jī)原理及應(yīng)用》,然后進(jìn)行的課程設(shè)計(jì),充分發(fā)揮了我的思維,學(xué)有所用,將學(xué)到的知識(shí)真正轉(zhuǎn)化到了實(shí)際之中。先畫出硬件設(shè)計(jì)圖,這個(gè)過程是基礎(chǔ),然后是流程圖,這個(gè)是重點(diǎn),流程圖的完成后在依據(jù)流程圖進(jìn)行程序的編寫。&l
81、t;/p><p> 通過對電子琴程序設(shè)計(jì)的匯編實(shí)現(xiàn),對硬件特別是8254、8255并行口的原理和實(shí)現(xiàn)都有了很深的了解。更加深了對匯編語言的使用.</p><p> 以前接觸的那些程序都是很短、很基礎(chǔ)的,但是在課程設(shè)計(jì)中碰到的那些需要很多代碼才能完成的任務(wù)。所以在編寫程序之前必須有一個(gè)完整清晰的思路設(shè)計(jì)好各個(gè)模塊所實(shí)現(xiàn)的功能。</p><p> 其次,以前對于編程工
82、具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上機(jī)的實(shí)踐,對于怎么去排錯(cuò)、查錯(cuò),怎么去看每一步的運(yùn)行結(jié)果,怎么去了解每個(gè)寄存器的內(nèi)容以確保程序的正確性上都有了很大程度的提高。</p><p> 在完成我的設(shè)計(jì)的作品的時(shí)候,的的確確發(fā)生了很多問題,比如兩個(gè)題目是否都要做,做哪個(gè)?放棄哪個(gè)?但是最后我們決定挑戰(zhàn)一下,兩個(gè)題目都做!還有更具體的問題比如說發(fā)聲單元發(fā)聲不規(guī)律,或者不發(fā)聲,發(fā)聲無節(jié)奏等等,但是我秉著穩(wěn)扎穩(wěn)打
83、的態(tài)度,對每一句匯編語言進(jìn)行修正,和同組的同學(xué)進(jìn)行討論,最終將發(fā)聲單元完善,做到能夠自動(dòng)播放音樂,我們組重新編寫了曲目,使我們各自有各自的曲目,不重復(fù)。</p><p> 致 謝</p><p> 通過這次課程設(shè)計(jì)我們學(xué)到了不少東西,真正認(rèn)識(shí)到了微機(jī)原理的重要性,了解到了CPU,8255、8254等芯片功能的強(qiáng)大。真正的運(yùn)用自己的雙手,完成了上大學(xué)以來的第一個(gè)運(yùn)用微機(jī)原
84、理試驗(yàn)箱設(shè)計(jì)而成的作品,收獲頗多!</p><p> 當(dāng)然,在設(shè)計(jì)的過程中我們遇到了很多的困難 。然而我們用耐心的去克服,用信心去解決。并且在解決問題的過程中,學(xué)到了很多實(shí)際的知識(shí),很多是書本上學(xué)不到的,加深了我們對微機(jī)原理應(yīng)用的認(rèn)識(shí)。</p><p> 以前的上機(jī)課上,我們所應(yīng)用的程序都是很簡單的編程,實(shí)現(xiàn)的功能都比較簡單,而本次課設(shè)要求我們掌握的知識(shí)比較綜合,從分析到編程,再到連線
85、,完完全全是一個(gè)獨(dú)立系統(tǒng)的過程。所以,在編制程序時(shí)遇到很多困難。 </p><p> 在解決問題時(shí)我們還體會(huì)到充分的調(diào)用用周圍的資源是多么的重要。我們的一些問題都是自己首先通過查書查資料,通過圖書館,通過網(wǎng)絡(luò)來解決的,最后,在還沒有解決的情況下,再去問曲老師。這不僅培養(yǎng)了自己的解決問題的能力,同時(shí),又熟悉了如何利用周邊的資源快速有效的去解決問題。 給我最深刻的是作程序的要能夠沉的住氣,要有耐性! </p&
86、gt;<p> 一周的課程設(shè)計(jì)雖然短暫,但是我們?nèi)牡赝度肫渲?,養(yǎng)成了一種敢于鉆研敢于創(chuàng)新的習(xí)慣,學(xué)會(huì)了靜心鉆研,與同組同學(xué)相互合作,如此才能把程序設(shè)計(jì)的更加完整,更加新穎!</p><p> 通過課程設(shè)計(jì),讓我在課本的基礎(chǔ)上,更深入的了解了各種芯片的用法和程序的完成過程,調(diào)試方法及技巧 。可以說是收益匪淺!</p><p> 最后,衷心的謝謝曲樂聲老師對我們的耐心指導(dǎo)
87、,讓我們能夠順利的邁進(jìn)微機(jī)原理科學(xué)的殿堂,我相信我們會(huì)受益終生?。?!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 王惠中. 微機(jī)原理及應(yīng)用.武漢:武漢大學(xué)出版社,2011</p><p> [2] 鄒逢興. 微型計(jì)算機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo). 北京:清華大學(xué)出版社,2009</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)----電子琴
- 微機(jī)原理課程設(shè)計(jì)--電子琴設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---電子琴設(shè)計(jì)
- 《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)--簡易電子琴設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)電子琴
- 簡易電子琴課程設(shè)計(jì)
- 簡易電子琴課程設(shè)計(jì)
- 簡易電子琴課程設(shè)計(jì)
- 簡易電子琴課程設(shè)計(jì) (2)
- 課程設(shè)計(jì)報(bào)告--- 簡易電子琴
- 微機(jī)原理課程設(shè)計(jì)---計(jì)算機(jī)仿真電子琴
- 微機(jī)原理課程設(shè)計(jì)--計(jì)算機(jī)仿真電子琴
- 課程設(shè)計(jì)---簡易電子琴設(shè)計(jì)與制作
- 電子琴及電子播放器-微機(jī)原理課程設(shè)計(jì)報(bào)告
- fpga課程設(shè)計(jì)報(bào)告--簡易電子琴的設(shè)計(jì)
- 微機(jī)系統(tǒng)與接口課程設(shè)計(jì)-電子琴
- 單片機(jī)課程設(shè)計(jì)簡易電子琴
- 簡易電子琴單片機(jī)課程設(shè)計(jì)
- 簡易電子琴單片機(jī)課程設(shè)計(jì)
- 模電課程設(shè)計(jì)——簡易電子琴制作
評論
0/150
提交評論