電子琴實(shí)驗(yàn)
一. 實(shí)驗(yàn)?zāi)康?br>利用實(shí)驗(yàn)儀上提供的按鍵K1~K7 作為電子琴按鍵,控制蜂鳴器發(fā)聲,使用戶了解計(jì)算機(jī)發(fā)聲原理,熟悉定時(shí)器和鍵盤掃描電路的工作原理及編程方法。
二. 實(shí)驗(yàn)設(shè)備及器件
IBM PC 機(jī) 一臺(tái)
DP-51PROC 單片機(jī)綜合仿真實(shí)驗(yàn)儀 一臺(tái)
頻率計(jì) 一臺(tái)
三. 實(shí)驗(yàn)內(nèi)容
1. 編寫一段程序,用P3.3 口控制(輸出7 種音階標(biāo)稱頻率的方波),使B5 區(qū)的蜂鳴器發(fā)出不同的音調(diào)。程序檢測(cè)按鍵的狀態(tài),當(dāng)某一鍵按下時(shí),蜂鳴器發(fā)出對(duì)應(yīng)的音調(diào)。
2. 按照歌曲的音調(diào),使用D1 區(qū)的按鍵K1~K7,彈奏一首簡(jiǎn)單的音樂(lè)。
四. 實(shí)驗(yàn)步驟
1. 用導(dǎo)線將A2 區(qū)P3.3 口(INT1)和B5 區(qū)的BUZZ 接口相連,然后將D1 區(qū)的J53接口和A2 區(qū)的J61 接口一一對(duì)應(yīng)相連。如圖3.4 所示。
2. 編寫按鍵的動(dòng)態(tài)鍵盤掃描程序,根據(jù)不同音階的頻率編寫蜂鳴器的音調(diào)控制程序,然
后完成電子琴的主程序設(shè)計(jì)。
3. 調(diào)試編寫好的程序,使用頻率計(jì)校準(zhǔn)音階的頻率,然后使用鍵盤演奏一段好聽的音
樂(lè)。
五. 實(shí)驗(yàn)參考程序
BUZZ EQU P3.3 ;端口定義
ORG 8000H
LJMP MAIN
ORG 800BH
LJMP INT_T0
ORG 8100H
MAIN:
MOV SP,#60H ;初始化堆棧指針
MOV P1,#0FFH ;設(shè)置P1 口為輸入模式
MOV TMOD,#01H ;設(shè)置定時(shí)器0 為工作模式1
SETB ET0 ;開定時(shí)器0 中斷
SETB EA ;開總中斷
CLR TR0 ;關(guān)閉定時(shí)器0
START:
MOV R0,P1
CJNE R0,#0FFH,KEY1 ;鍵盤掃描
CLR TR0
SJMP START
KEY1:
CJNE R0,#0FEH,KEY2 ;K1 鍵按下
MOV 30H,#0FBH ;設(shè)置音階1
MOV 31H,#0E9H
LJMP SET_TIMER
KEY2:
CJNE R0,#0FDH,KEY3;K2 鍵按下
MOV 30H,#0FCH ;設(shè)置音階2
MOV 31H,#5CH
LJMP SET_TIMER
KEY3:
CJNE R0,#0FBH,KEY4;K3 鍵按下
MOV 30H,#0FCH ;設(shè)置音階3
MOV 31H,#0C1H
LJMP SET_TIMER
KEY4:
CJNE R0,#0F7H,KEY5 ;K4 鍵按下
MOV 30H,#0FCH ;設(shè)置音階4
MOV 31H,#0EFH
LJMP SET_TIMER
KEY5:
CJNE R0,#0EFH,KEY6 ;K5 鍵按下
MOV 30H,#0FDH ;設(shè)置音階5
MOV 31H,#045H
LJMP SET_TIMER
KEY6:
CJNE R0,#0DFH,KEY7;K6 鍵按下
MOV 30H,#0FDH ;設(shè)置音階6
MOV 31H,#92H
LJMP SET_TIMER
KEY7:
CJNE R0,#0BFH,NOKEY;K7 鍵按下
MOV 30H,#0FDH ;設(shè)置音階7
MOV 31H,#0D6H
SET_TIMER:
SETB TR0 ;發(fā)聲
SJMP START
NOKEY:
CLR TR0 ;無(wú)鍵按下
SJMP START
INT_T0: ;T0中斷服務(wù)程序
MOV TH0,30H ;定時(shí)器賦初值
MOV TL0,31H
CPL BUZZ ;輸出方波
RETI
;
END
六. 實(shí)驗(yàn)思考題
結(jié)合實(shí)驗(yàn)儀上的硬件,設(shè)計(jì)一個(gè)可以任意選曲播放的電子音樂(lè)盒。
評(píng)論
查看更多