1、64968中 7 SI98865030 1.2 实验环境Keil uVision3proteus 71.3 功能设计描述按 k1k7音调输出按一下k8。在按k1k7音频逆向输出先按着k8再+k1键后会在音频输出歌曲,k1键停止1.4 主要知识点Keil uVision3的使用及调试proteus 7的使用及调试定时器、中断、键盘接口 数字电路、模拟电路的相关知识2、实现及编程2.1程序框图)2.2电路原理图2.3程序内容7个音调的产生方法按k2让音调逆向输出如何按k8+k2放出音乐 和如何让音乐停止2.4 汇编源程序BUZZ EQU P2BUZZ1 EQU P1.7ORG 0000HLJMP
2、MAIN ORG 000BHLJMP INT_T0ORG 001BHLJMP TIME1 ORG 8000H MAIN: MOV SP,#90H MOV BUZZ,#0FFH MOV TMOD,#11H SETB ET0 SETB ET1 SETB EA CLR TR0START: MOV R0, BUZZ CJNE R0,#0FFH,KEY1 SJMP STARTKEY1: CJNE R0,#0FEH,KEY2 MOV 30H,#0FBH MOV 31H,#0E9H LJMP SET_TIMERKEY2: CJNE R0,#0FDH,KEY3 MOV 30H,#0FCH MOV 31H,#5
3、CHKEY3: CJNE R0,#0FBH,KEY4 MOV 31H,#0C1HKEY4: CJNE R0,#0F7H,KEY5 MOV 31H,#0EFHKEY5: CJNE R0,#0EFH,KEY6 MOV 30H,#0FDH MOV 31H,#045HKEY6: CJNE R0,#0DFH,KEY7 MOV 31H,#92HKEY7: CJNE R0,#0BFH,KEY8 MOV 31H,#0D6HKEY8: CJNE R0,#7FH,NOKEY LOOP1:MOV R0, BUZZ CJNE R0,#7DH,LOOP LJMP MAIN1 LOOP: CJNE R0,#0FFH,LO
4、OP1 LJMP OSTARTSET_TIMER: SETB TR0NOKEY:INT_T0: MOV TH0,30H MOV TL0,31H CPL BUZZ1 RETI;OSTART: CJNE R0,#0FFH,OKEY1 SJMP OSTARTOKEY1: CJNE R0,#0BFH,OKEY2 LJMP OSET_TIMEROKEY2: CJNE R0,#0DFH,OKEY3OKEY3: CJNE R0,#0EFH,OKEY4OKEY4: CJNE R0,#0F7H,OKEY5OKEY5: CJNE R0,#0FBH,OKEY6OKEY6: CJNE R0,#0FDH,OKEY7OK
5、EY7: CJNE R0,#0FEH,OKEY8OKEY8: CJNE R0,#07FH,ONOKEY LOOP2: CJNE R0,#7DH,LOOP3 LOOP3: CJNE R0,#0FFH,LOOP2 LJMP STARTOSET_TIMER:ONOKEY: ;MAIN1: MOV 40H,#00H NEXT: MOV 41H,R0 ORL 41H ,#0FEH MOV R0,41H CJNE R0,#0FFH,STOP MOV A,40H MOV DPTR,#SONG MOVC A,A+DPTR CJNE A,#00H,PLAY LJMP STOP PLAY: MOV R1,A AN
6、L A,#0FH MOV R2,A MOV A,R1 ANL A,#0F0H CJNE A,#00H,MUSIC CLR TR1 LJMP DELMUSIC:SWAP A DEC A MOV 22H,A ADD A,22H MOV R3,A MOV DPTR,#SONG1 MOVC A,A+DPTR MOV TH1,A MOV 21H,A MOV A,R3 INC A MOV TL1,A MOV 20H,A SETB TR1 DEL: LCALL DELAY INC 40H LJMP NEXTSTOP:TIME1:PUSH ACC PUSH PSW CPL BUZZ1 MOV TL1,20H
7、MOV TH1,21H POP PSW POP ACCDELAY:MOV R7,#02H DELA1:MOV R6,#125DELA2:MOV R5,#248 DJNZ R5,$ DJNZ R6,DELA2 DJNZ R7,DELA1 DJNZ R2,DELAY RETSONG1:DW 64580,64684,64777,64820 DW 64898,64968,65030,64260 DW 64400,64524,65058,63835,64021SONG :月亮代表我的心; DB 02H,82H DB 16H,32H,54H,02H,52H DB 0A6H,32H,54H,02H,52H
8、DB 64H,74H,0B6H,64H DB 52H,5CH,32H,22H DB 16H,12H,14H,32H,22H DB 16H,12H,14H,22H,32H DB 26H,12H,94H,22H,32H DB 2CH DB 32H,52H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 96H,0A2H,96H,82H DB 3CH,54H DB 2CH,02H,82H DB 16H,32H,56H,12H DB 0A6H,32H,56H,52H DB 66H,72H,0B6H,62H DB 62H,52H,58H,32H,22H DB 26H,92H
9、,0A4H,12H,22H DB 1CH DB 00 END 3、调试及测试31调试(按实际做的步奏)如按下k5后显示如下图:k1k7音调输出32测试在proteus环境下点击k1-k7 看看发出的音是不是正确的K8键按后是否音调是逆向的K8+k1是否音乐输出在调试源代码中采用分块测试:音频输出、按键音乐播放最后采用组合调试33出现的问题及解决在做k8按键 检查k到8直到k8放开才跳转 一直出错。原来是忘了继续检测p2口。TMOD设置错误4、课程设计总结4.1 在此设计基础上还可以增加的功能及设计思路 即每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置通过程序来控制,使蜂鸣器发著不同频率的声音,声音延迟延迟一段时间,等到按键放开后,声音停止。然后再继续扫描,看是否有键按下,如此循环下去,即实现基本的琴键功能还可以增加播放下一首的功能。42通过本课程设计的收获及感想 熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。对软件编程、排错调试相关仪器设备的使用技能等方面得到较全面的锻炼和提高。这个课程设计也培养了我们的耐心和毅力,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,由于这个课程设计也使我积累了一些经验,相信这些经验在我以后的学习工作中会有很大的作用
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1