电子琴实验
一. 实验目的
利用实验仪上提供的按键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
六. 实验思考题
结合实验仪上的硬件,设计一个可以任意选曲播放的电子音乐盒。
评论
查看更多