《单片机实验- 电子琴模拟实验.doc》由会员分享,可在线阅读,更多相关《单片机实验- 电子琴模拟实验.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验二十一 电子琴模拟实验一、实验目的1、了解单片机系统发声原理2、进一步熟悉定时器编程方法3、进一步熟悉键盘扫描电路工作原理及编程方法二、实验说明1.利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调。2.定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平.由于定时参数不同,就发出了不同频率的脉冲. 本实验中当有键按下,会发出连续脉冲,直到按键松开,才停止发音。发完后继续检测键盘,如果键还按下,继续发音。各音阶标称频率值:音 阶1234567频率(HZ)261.1293.7329.6349.2392.0440.049
2、3.9三、实验步骤利用实验仪上提供的键盘,使数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音调。用P3.2 口发出音频脉冲,驱动喇叭。1、用8P数据线连接单片机最小应用系统1模块的 P1口到查询式键盘模块KEY1-KEY8口,用二号导线连接单片机最小应用系统1模块INT0(P3.2)口到扬声器模块的输入口。2、用串行数据通信线连接计算机与仿真器,把仿真器插到单片机最小应用系统1模块的锁紧插座中,请注意仿真器的方向:缺口朝上。3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH21_电子琴.ASM”源程序,进行编译,直到编译无误。4、打开模块电源
3、和总电源开关,点击开始调试按钮,点击RUN按钮运行程序。5、实验现象:按查询式键盘的17键,扬声器发出高低不同的声音。四、实验流程图及源程序1、源程序:PULSE EQU 10H ;脉冲PULSECNT EQU 50H ;脉冲计数TONEHIGH EQU 40H ;高音调TONELOW EQU 41H ;低音调TONE EQU 42H ;音调KEYBUF EQU 54HSPEAKER BIT P3.2 ORG 0000H LJMP START ORG 000BH LJMP TIMER0INT ORG 0030HTIMER0INT: PUSH PSW ;定时中断 CLR TR0 MOV TH0,
4、 TONEHIGH MOV TL0, TONELOW SETB TR0 MOV C, PULSE MOV SPEAKER,C CPL PULSE POP PSW RETITONETABLE: DW 64578,64686,64778,64821 DW 64898,64968,65029 TESTKEY: MOV P1, #0FFH MOV A, P1 CPL A ; 读入键状态 RETKEYTABLE:DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH ; 键码定义GETKEY: MOV R6, #10 ACALL DELAY MOV A,P1 CJNE
5、 A, #0FFH, K01 ;确有键按下 LJMP MLOOP K01: MOV R3, #8 ;8个键 MOV R2, #0 ;键码 MOV B, A ;暂存键值 MOV DPTR, #KEYTABLEK02: MOV A, R2 MOVC A, A+DPTR ;从键值表中取键值 CJNE A, B, K04 ;键值比较 MOV A, R2 ;得键码 INC A RETK04: INC R2 ;不相等,到继续访问键值表 DJNZ R3, K02 MOV A, #0FFH ;键值不在键值中,即多键同时按下 LJMP MLOOPDELAY: MOV R7, #0DELAYLOOP: DJNZ
6、R7, DELAYLOOP DJNZ R6, DELAY RETSTART: MOV SP, #70H MOV TMOD, #01 ; TIMER MOV IE, #82H ; EA=1, IT0 = 1 MOV TONE, #0MLOOP: CALL TESTKEY JZ MLOOP CALL GETKEY MOV B, A JZ MLOOP ; = 0, 8 DEC B MOV A, B RL A ; A = A*2 MOV B, A MOV DPTR, #TONETABLE MOVC A, A+DPTR MOV TONEHIGH, A MOV TH0, A MOV A, B INC A
7、MOVC A, A+DPTR MOV TONELOW, A MOV TL0, A SETB TR0 MOV P1,#0FFHWAIT: MOV A, P1 CJNE A, #0FFH, WAIT MOV R6, #10 ACALL DELAY CLR TR0 LJMP MLOOP END2流程图否主程序框图否是是是否开始读入键值用键值查表得到音频相关数据启动定时开始发声1键值7按键已松开检测键输入按音频数据设置定时器关闭定时停止发声定时中断停止计时输出音频脉冲电平(高或低)音频脉冲电平反转保护现场恢复现场中断返回定时中断程序框图五、实验思考题1、请思考实验是怎样在硬件与软件上实现发声的?2、本程序中断子程序的调用是怎样进行的?六、实验电路图本实验用到单片机最小应用系统1模块,查询式键盘模块, 扬声器模块。单片机最小应用系统1模块电路原理参考附录三,查询式模块电路原理参考实验八图8.1,扬声器模块电路原理参考实验三图3.1。