電子琴實驗
一. 實驗?zāi)康?br>利用實驗儀上提供的按鍵K1~K7 作為電子琴按鍵,控制蜂鳴器發(fā)聲,使用戶了解計算機發(fā)聲原理,熟悉定時器和鍵盤掃描電路的工作原理及編程方法。
二. 實驗設(shè)備及器件
IBM PC 機 一臺
DP-51PROC 單片機綜合仿真實驗儀 一臺
頻率計 一臺
三. 實驗內(nèi)容
1. 編寫一段程序,用P3.3 口控制(輸出7 種音階標(biāo)稱頻率的方波),使B5 區(qū)的蜂鳴器發(fā)出不同的音調(diào)。程序檢測按鍵的狀態(tài),當(dāng)某一鍵按下時,蜂鳴器發(fā)出對應(yīng)的音調(diào)。
2. 按照歌曲的音調(diào),使用D1 區(qū)的按鍵K1~K7,彈奏一首簡單的音樂。
四. 實驗步驟
1. 用導(dǎo)線將A2 區(qū)P3.3 口(INT1)和B5 區(qū)的BUZZ 接口相連,然后將D1 區(qū)的J53接口和A2 區(qū)的J61 接口一一對應(yīng)相連。如圖3.4 所示。
2. 編寫按鍵的動態(tài)鍵盤掃描程序,根據(jù)不同音階的頻率編寫蜂鳴器的音調(diào)控制程序,然
后完成電子琴的主程序設(shè)計。
3. 調(diào)試編寫好的程序,使用頻率計校準(zhǔ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è)置定時器0 為工作模式1
SETB ET0 ;開定時器0 中斷
SETB EA ;開總中斷
CLR TR0 ;關(guān)閉定時器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 ;無鍵按下
SJMP START
INT_T0: ;T0中斷服務(wù)程序
MOV TH0,30H ;定時器賦初值
MOV TL0,31H
CPL BUZZ ;輸出方波
RETI
;
END
六. 實驗思考題
結(jié)合實驗儀上的硬件,設(shè)計一個可以任意選曲播放的電子音樂盒。
評論
查看更多