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