首页 单片机电子琴设计-论文

单片机电子琴设计-论文

举报
开通vip

单片机电子琴设计-论文单片机电子琴设计-论文 单片机电子琴设计 目 录 电子琴的设计(摘要) ……………………………………………… 3 绪论…………………………………………………………………… 4 一 设计原理 …………………………………………………… 5 二 硬件电路图 …………………………………………………… 6 三 软件设计 ……………………………………………………… 7 (一) 延时程序编写………………………………………………… 11 (二) T值表的建立 ………………………………………………… 12 (三) 键盘扫描程序...

单片机电子琴设计-论文
单片机电子琴设计-论文 单片机电子琴设计 目 录 电子琴的设计(摘要) ……………………………………………… 3 绪论…………………………………………………………………… 4 一 设计原理 …………………………………………………… 5 二 硬件电路图 …………………………………………………… 6 三 软件设计 ……………………………………………………… 7 (一) 延时程序编写………………………………………………… 11 (二) T值表的建立 ………………………………………………… 12 (三) 键盘扫描程序编写 ………………………………………… 13 四 电子琴程序设计 ……………………………………………… 14 五 结束语 …………………………………………………………15 六 参考文献…………………………………………………………16 电子琴设计 摘要:按照设计要求利用单片机设计微型电子琴。完成电路原理图、程序,并进 行分析。 关键词:单片机,电子琴,程序。 1设计原理 乐音实际上是有固定周期的信号,要产生音频脉冲,只要算出某一音频的周期 (1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这个半 周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间对I/O反相,就可以在I/O脚上得到此频率的脉冲。 利用8051(晶振12HZ)的内部定时器使其工作在MODE1下,改变计数值TH0及 TL0以产生不同频率的方法。 例如:要发出中音DO的音,首先知道中音DO的频率是523Hz(查表可以得知),其周期是T=1/523=1912us,因此只要令计数器计时956us/1us=956, 在每计数956次时将I/O反向,就可得到中音DO。 其T值的计算方法如下: T=65536 — N; N= Fi / 2 / Fr; N: 计数值; Fi: 内部计时一次为1us, 故其频率为1MHz; Fr:要产生的频率; 中音DO的T=65536 — 500000/523=64580。 C调各音符频率与T值表 音符 频率(Hz) 简谱码(T值) 音符 频率(Hz) 简谱码(T值) 低 1 DO 262 63628 # 4 FA # 740 64860 # 1 DO # 277 63731 中 5 SO 784 64898 低 2 RE 294 63835 # 5 SO # 831 64934 # 2 RE # 311 63928 中 6 880 64968 低 3 M 330 64021 # 6 # 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA # 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO # 1109 65085 # 5 SO # 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE # 1245 65134 # 6 # 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA # 1480 65198 # 1 DO # 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO # 1661 65235 # 2 RE # 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 # 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 建立音乐的步骤: 1〃 先把乐谱的音符找出,然后按照上表建立T值表的顺序。 2〃 把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。 3〃 简谱码为一个字节,节拍为一个字节,音符的节拍码放在 “TABLE”处。 4〃 节拍时间的设定,如果1拍的时间是0.4秒,1/4拍的时间就是0.1秒,只要设定延时时间就可以求得节拍的时间。假如1/4拍为1DELAY,则1拍应为4DELAY。以此类推。所以只要求得1/4拍的时间DELAY时间,其余的节拍就是它的倍数。 2 硬件电路图 如图,按键1—7表示发中音1—7,按键8表示唱一首完整的歌曲,当在唱歌时 需要进行按键发音则按一下按键9即可。LM386为音频小功放,输出到扬声器。 晶振选择12MZ,采用开关复位方式。LM386功放电路参阅《8051单片机实践与应用》。745 单片机电子琴设计 3 软件设计 1〃延时程序的编写 1/4拍的延时时间=187毫秒,这个时间由歌曲本身来决定,歌曲不同这个1/4 拍的时间也不同,这里1/4拍的时间就取为187毫秒。 DELAY: MOV R7,#02 D2: MOV R4,#187 D3: MOV R3,#248 DJNZ R3,$ DJNZ R4, D3 DJNZ R7, D2 DJNZ R5, DELAY RET R5表示为1/4拍的倍数。 2〃T值表的建立 T值表建立在TABLE1中: TABLE1:DW 63628,63731,63835,63928,64021,64103 DW 64185,64260,64331,64400,64463,64524 DW 64580,64633,64684,64732,64777,64820 DW 64860,64898,64934,64968,64994,65030 DW 65058,65085,65110,65134,65157,65178 DW 65198,65217,65235,65252,65268,65283 3.键盘扫描程序的编写 KEY: MOV R3, #00H /R3中的数表示是那个键按下/ JNB P2.0, LOOP INC R3 JNB P2.1, LOOP INC R3 JNB P2.2, LOOP INC R3 JNB P2.3, LOOP INC R3 JNB P2.4, LOOP INC R3 JNB P2.5, LOOP INC R3 JNB P2.6, LOOP INC R3 JNC P2.7, LOOP SETB F0 /没有键按下则F0=0/ SJMP DO LOOP:CLR F0 /有键按下则F0=1/ DO: NOP RET 此程序可以判断是那个键按下,如果有键按下则F0=0,没有键按下则F0=1。按 键数存放在R3中。这样就可以根据按键来发音了。如果是按键8按下则表示是要唱一首完整的歌曲。可以通过设定中断来实现它。当按键 8按下时产生中断,系统马上响应中断进入中断服务程序,进行查表TABLE可以得到歌曲的简谱码和节拍数然后按照歌曲的规律进行下去,这样就可以唱出一首完整的歌曲了。TABLE表格的建立,,每个音符先编音符码然后编节拍数,音符码和节拍数各占一个字 节。程序如下: ORG 0000H SJMP BEGIN ORG 000BH SJMP TIM0 BEGIN: MOV TMOD, #01H /设TIMER在MODE1/ MOV IE, #82H /中断使能/ REPE: MOV 30H, #00H /取简谱码指针/ NEXT: MOV A, 30H /简谱码指针存入A/ MOV DPTR, #TABLE MOVC A, @A+DPTR MOV R2, A /音符码存入R2中/ CJNE A,#0FFH,GOOT /是否取到了规定的结束 码 “FFH”/ SJMP END0 GOOT: INC 30H MOV A, 30H MOVC A, @A+DPTR MOV R5, A /节拍数存放在R5中/ MOV A, R2 /音符码存入A中/ CJNE A, #24H, SING /取到的音符码是否为“24H”/ CLR TR0 /是,则不发音/ JMP D1 SING: MOV 31H, A /音符码存入31H中/ RL A MOV DPTR, #TABLE1 MOVC A,@DPTR+A /找到TABLE1中对应的T值/ MOV 32H, A /取到T值的高字节存入32H中/ MOV TH0, A MOV A,31H RL A INC A MOVC A,@DPTR+A MOV 33H, A /取到T值的高字节存入33H中/ MOV TL0, A SETB TR0 /启动TIMER0/ D1: CALL DELAY INC 30H SJMP NEXT END0: CLR TR0 SJMP REPE TIM0: PUSH ACC PUSH PSW MOV TH0,32H MOV TL0,33H CPL P1.0 POP ACC POP PSW RETI DELAY: MOV R7,#02 D2: MOV R4,#187 D3: MOV R3,#248 DJNZ R3,$ DJNZ R4, D3 DJNZ R7, D2 DJNZ R5, DELAY RET TABLE1:DW 63628,63731,63835,63928,64021,64103 DW 64185,64260,64331,64400,64463,64524 DW 64580,64633,64684,64732,64777,64820 DW 64860,64898,64934,64968,64994,65030 DW 65058,65085,65110,65134,65157,65178 DW 65198,65217,65235,65252,65268,65283 TABLE: 13H, 02H, 24H, 01H, 13H, 01H, 15H, 04H 13H, 04H, 18H, 04H, 17H, 04H 24H, 04H, 13H, 02H, 24H, 01H, 13H, 01H, 15H, 04H, 13H, 04H, 1AH, 04H 18H, 04H, 24H, 04H, 13H, 02H, 24H, 01H, 13H, 01H, 1FH, 04H, 1CH, 04H 0FFH END 对于不同的歌曲只要根据歌曲来建立TABLE即可。上TABLE表是根据生日快乐歌曲建立的。按键发音的过程,首先进行键盘扫描,判断是那个键按下,记下键数, 存入R3中,然后查表得到相应的T值,并载入到定时器0中同时启动定时器,继续进行键盘扫描,判断是否有键按下,有则表示键一直是按下的,继续发音(因 为扫描的时间很短最多也只有几十微秒,所以可以认为是同一个键按下的)。没 有则进行循环扫描。 ORG 0000H SJMP COOM ORG 000BH SJMP TIMOY COOM: MOV TMOD,#01H MOV IE,#82H L1: CALL KEY JB F0, L1 /没有键按下则继续扫描/ MOV A,R3 CJNE A,#07H, SOPP SJMP ##### /这里是为下面两个程序综合准备/ SOPP: MOV DPTR,#TABLE2 MOVC A,@A+DPTR MOV 35H, A / T值高字节放入35H中/ MOV TH0, A MOV A, R3 RL A INC A MOVC A, @A+DPTR MOV 36H, A / T值高字节放入36H中/ MOV TL0, A SETB TR0 L2: CALL KEY JB F0, L3 SJMP L2 L3: CPL TR0 SJMP L1 KEY: MOV R3, #00H /R3中的数表示是那个键按下/ JNB P2.0, LOOP INC R3 JNB P2.1, LOOP INC R3 JNB P2.2, LOOP INC R3 JNB P2.3, LOOP INC R3 JNB P2.4, LOOP INC R3 JNB P2.5, LOOP INC R3 JNB P2.6, LOOP INC R3 JNC P2.7, LOOP SETB F0 SJMP DO LOOP:CLR F0 单片机电子琴设计 DO: NOP RET TIMOY: PUSH ACC PUSH PSW MOV TH0, #35H MOV TL0, #36H CPL P1.0 POP ACC POP PSW RETI TABLE2: DW 64580, 64684, 64777, 64820, 64898, 64968, 65030 END 只要将这两个程序综合起来就可以完成设计要求了,注意因为在这两个程序分开 考虑的时候都是用定时器0来完成的。而综合起来是只要改变其中一个为定时器 1即可。程序如下: ORG 0000H SJMP BEGIN ORG 000BH LJMP TIM0 ORG 001BH LJMP TIM1 BEGIN: MOV TMOD, #11H MOV IE, #8AH L1: CALL KEY JB F0, L1 /没有键按下则继续扫描/ MOV A,R3 CJNE A,#07H, SOPP SJMP REPE SOPP: MOV DPTR,#TABLE2 MOVC A,@A+DPTR MOV 35H, A / T值高字节放入35H中/ MOV TH1, A MOV A, R3 RL A INC A MOVC A, @A+DPTR MOV 36H, A / T值高字节放入36H中/ MOV TL1, A SETB TR1 L2: CALL KEY JB F0, L3 SJMP L2 L3: CPL TR1 SJMP L1 KEY: MOV R3, #00H /R3中的数表示是那个键按下/ JNB P2.0, LOOP INC R3 JNB P2.1, LOOP INC R3 JNB P2.2, LOOP INC R3 JNB P2.3, LOOP INC R3 JNB P2.4, LOOP INC R3 JNB P2.5, LOOP INC R3 JNB P2.6, LOOP INC R3 JNC P2.7, LOOP SETB F0 SJMP DO LOOP:CLR F0 DO: NOP RET TIM1: PUSH ACC PUSH PSW MOV TH1, #35H MOV TL1, #36H CPL P1.0 POP ACC POP PSW RETI REPE: MOV 30H, #00H /取简谱码指针/ NEXT: MOV A, 30H /简谱码指针存入A/ MOV DPTR, #TABLE MOVC A, @A+DPTR MOV R2, A /音符码存入R2中/ CJNE A,#0FFH,GOOT /是否取到了规定的结束码 “FFH” / SJMP END0 GOOT: INC 30H MOV A, 30H MOVC A, @A+DPTR MOV R5, A /节拍数存放在R5中/ MOV A, R2 /音符码存入A中/ CJNE A, #24H, SING /取到的音符码是否为“24H”/ CLR TR0 /是,则不发音/ JMP D1 SING: MOV 31H, A /音符码存入31H中/ RL A MOV DPTR, #TABLE1 MOVC A,@DPTR+A /找到TABLE1中对应的T值/ MOV 32H, A /取到T值的高字节存入32H中/, 单片机电子琴设计 MOV TH0, A MOV A,31H RL A INC A MOVC A,@DPTR+A MOV 33H, A /取到T值的高字节存入33H中/ MOV TL0, A SETB TR0 /启动TIMER0/ D1: CALL DELAY INC 30H SJMP NEXT END0: CLR TR0 SJMP REPE TIM0: PUSH ACC PUSH PSW MOV TH0,32H POP PSW RETI DELAY: MOV R7,#02 D2: MOV R4,#187 D3: MOV R3,#248 DJNZ R3,$ DJNZ R4, D3 DJNZ R7, D2 DJNZ R5, DELAY RET TABLE1:DW 63628,63731,63835,63928,64021,64103 DW 64185,64260,64331,64400,64463,64524 DW 64580,64633,64684,64732,64777,64820 DW 64860,64898,64934,64968,64994,65030 DW 65058,65085,65110,65134,65157,65178 DW 65198,65217,65235,65252,65268,65283 TABLE: 13H, 02H, 24H, 01H, 13H, 01H, 15H, 04H 13H, 04H, 18H, 04H, 17H, 04H 24H, 04H, 13H, 02H, 24H, 01H, 13H, 01H, 15H 04H, 13H, 04H, 1AH, 04H 18H, 04H, 24H, 04H, 13H, 02H, 24H, 01H, 13H, 01H, 1FH, 04H, 1CH, 04H 0FFH TABLE2: 64580, 64684, 64777, 64820, 64898, 64968, 65030 END 【参考文献】 [1]常青,陈辉煌,孙广富等. 可编程专用集成电路及其应用与设计实践. 国防工业出版社 [2]赵曙光,郭万有等. 可编程逻辑器件原理、开发与应用. 西安电子科技大学出版社 ]范逸之,陈立元. Visual Basic与RS232串行通讯控制. 中国青年出版社. 2002第2版 [6]候伯亨,顾新. VHDL硬件描述语言与数字逻辑电路设计. 西安电子科技大学出版社 结束语 通过这次设计,以及对市场的调查。任何复杂的东西都是由简单的模块构成的, 只要有恒心就能完成任何事情。文中还有不少的欠缺希望老师多多点评
本文档为【单片机电子琴设计-论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_531654
暂无简介~
格式:doc
大小:35KB
软件:Word
页数:0
分类:工学
上传时间:2017-09-27
浏览量:17