基于单片机的电子音乐门铃设计说明书内容摘要:

特别适用于电池供电的场合。 本实验采用 LM386 的封装形式 8 引线双列直插式。 软 件设计 音乐符设计 首先建立音乐,把音乐的音符找出。 建立各个音符的定时常数 T 值表,编写程序时我们把 T 值表按顺序建立在“ TABLE”栏。 每个发音符使用一个字节,字节的位(简谱码)代表音符的节拍。 如果 1 拍为 秒, 4 分之一秒就是 秒。 只要设定延时时间就求得节拍的时间。 假设 4 分之一为 1DELAY,则一拍应为4DELAY,依次类推。 所以只要求出 4 分之一的 DELAY 时间。 其余的节拍就是它的倍数。 4 分之一拍的延时在此我们设为 125ms,节拍码如表: 表 1 音符对应的简谱码、频率、定时 常数 音符 简谱码 频率( Hz) 定时常数( T) 低SO 1 392 64260 低LA 2 440 64400 电子音乐门铃的设计 9 低TI 3 494 64524 中DO 4 523 64580 中RE 5 587 64684 中MI 6 659 64777 中FA 7 698 64820 中SO 8 784 64898 中LA 9 880 64968 中TI A 988 65030 高DO B 1046 65058 高RE C 1175 65110 高MI D 1318 65157 高FA E 1397 65178 高SO F 1568 65217 不发音 0 表2 节拍码及节拍数 节拍码 节拍数 1 1/4拍 2 2/4拍 3 3/4拍 4 1拍 5 1又1/4拍 6 1又1/2拍 8 2拍 A 2又1/2拍 C 3拍 F 3又3/4拍 程序设计: 本系统采用 MCS51 汇编语言编程。 软件程序由主程序、定时器 TO 中断服务程序和延时子程序组成。 系统初始化后,系统扫描按键 ( 口的电平 )判断是否有键按下,有键按下 时,根据按下键的次数,向音频字符码指针赋以不同歌曲的地址,通过定时器 TO 中断子程序使 口输出相应频率的音频脉冲,以达到发声目的。 主程序流程图如图 3 所示。 程序流程图如下图 3 所示: 电子音乐门铃的设计 10 ( 1) N Y 图 3 程序流程图 仿真界面图 仿真界面图如下图 4: 主程序开始 初始化变量 初始化定时器 等待按键, 是否有按键 演奏乐曲 电子音乐门铃的设计 11 图 4 仿真界面 编程如下: MAIN: ORG 00H ; 主程序的起始地址 JMP START ; 跳至主程序 ORG 0BH ; TIMER0中断起始地址 LJMP TIM0 ; 跳至 TIMER0中断子程序 START: MOV TMOD, 00000001B ; 设 TIMER0在 MODE1 MOV IE, 10000010B ; 中断使能 JB , $ ; 第一次按 T0。 CALL DELAY1 ; 消除抖动 JNB , $ ; T0放开。 MOV 31H, 00 ; 按 T0计数指针初始值为 00H START0: MOV 30H, LOW SONG ; 取简谱码指针(第 1首) NEXT: MOV A, 30H MOV DPTR, TABLE MOVC A, @A+DPTR ; 至相关页取码 MOV R2, A ; 低 4位为音符的节拍 JZ END0 ; 检查简谱码是否已结束(有无 00。 ) ANL A, 0FH ; 取节拍(低 4位 ) MOV R5, A ; 存入 R5节拍的时间 MOV A, R2 SWAP A ANL A, 0FH ; 取音频值 (高 4位 ) 电子音乐门铃的设计 12 JNZ SING ; 是否为 0,是 0则不发音 CLR TR0 JMP D1 SING: DEC A ; 因 0不列入 MOV 22H, A ; 存入( 22H ) RL A ; 乘 2 MOV DPTR, TABLE MOVC A, @A+DPTR ; 至 TABLE取码,取 T的值 MOV TH0, A ; 取到的高位字节才存入 TH0 MOV 21H, A ; 取到的高位字节存入( 21H) MOV A, 22H ; 在载入取到的音符码 RL A ; 乘 2 INC A ; 加 1 MOVC A, @A+DPTR ; 至 TABLE取相对的低位字节计数值 MOV TL0, A ; 取到的低位字节存入 TL0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。