• 单片机音乐的应用


     源:http://blog.163.com/zhaojun_xf/blog/static/3005058020084196558440/

    单片机音乐的应用

    相关知识

        1.要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

        2.利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0TL0以产生不同频率的方法。

        3.例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每计数956次时将I/O反相,就可得到中音DO523Hz)。

        计数脉冲值与频率的关系公式如下:

        N=Fi÷2÷Fr   N:计数值;

                      Fi:内部计时一次为1us,故其频率为12MHz

                      Fr:要产生的频率;

        4.其计数值的求法如下:

          T=65536-N=65536-Fi÷2÷Fr 

        例如:设K=65536F=1000000=Fi=1MHz,求低音DO261MHz)、中音DO523MHz)、高音DO1046MHz)的计数值。

        T=65536-N=65536-Fi÷2÷Fr=65536-1000000÷2÷Fr=65536-500000/Fr

        低音DOT=65536-500000/262=63627

        中音DOT=65536-500000/523=64580

        高音DOT=65536-500000/1047=65059

        5.C调各音符频率与计数值T的对照表如下:

    表1 C调各音符频率与计数值T的对照表

    音符

     

    1DO

    频率(Hz

    简谱码(T值)

    音符

    频率(Hz

    简谱码(T值)

    262

    63628

    #4FA#

    740

    64860

    #1DO#

    277

    63731

    5SO

    784

    64898

    2RE

    #2RE#

    294

    63835

    #5SO#

    831

    64934

    311

    63928

    6LA

    880

    64968

    3M

    330

    64021

    #6

    932

    64994

    4FA

    349

    64103

    7SI

    988

    65030

    #4FA#

    370

    64185

    1DO

    1046

    65058

    5SO

    392

    64260

    #1DO#

    1109

    65085

    #5SO#

    415

    64331

    2RE

    1175

    65110

    6LA

    440

    64400

    #2RE#

    1245

    65134

    #6

    466

    64463

    3M

    1318

    65157

    7SI

    494

    64524

    4FA

    1397

    65178

    1DO

    523

    64580

    #4FA#

    1480

    65198

    #1DO#

    554

    64633

    5SO

    1568

    65217

    2RE

    587

    64684

    #5SO#

    1661

    65235

    #2RE#

    622

    64732

    6LA

    1760

    65252

    3M

    659

    64777

    #6

    1865

    65268

    4FA

    698

    64820

    1967

    65283

    表2 节拍与节拍码对照

      

      

      

      

    1

    1/4

    1

    1/8

    2

    2/4

    2

    1/4

    3

    3/4

    3

    3/8

    4

    1

    4

    1/2

    5

    11/4

    5

    5/8

    6

    11/2

    6

    3/4

    8

    2

    8

    1

    A

    21/2

    A

    11/4

    C

    3

    C

    11/2

    F

    33/4

     

    表3各调1/4节拍的时间设定  各调1/4节拍的时间设定

      

    DELAY

      

    DELAY

    4/4

    125毫秒

    4/4

    62毫秒

    3/4

    187毫秒

    3/4

    94毫秒

    2/4

    250毫秒

    2/4

    125毫秒

    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  节拍值放在R5,决定节拍

             RET

    建立音乐的步骤

        1. 先把乐谱的音符找出,然后建立T值表的顺序。

        2. T值表建立在TABLE1,构成发音符是计数值放在“TABLE”

        3. 简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。

    相关知识:

          每一音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,表2为节拍与节拍码的对照。如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间 。假使1/4拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DEALY时间,其余的节拍就是它的倍数,如表31/41/8节拍的时间设定。

     

     

      

    T

    5

    低音SO

    1

    64260

    6

    低音LA

    2

    64400

    7

    低音TI

    3

    64524

    1

    中音DO

    4

    64580

    2

    中音RE

    5

    64684

    3

    中音MI

    3

    64777

    4

    中音FA

    7

    64820

    5

    中音SO

    8

    64898

    6

    中音LA

    9

    64968

    7

    中音TI

    A

    65030

    1

    高音DO

    B

    65058

    2

    高音RE

    C

    65110

    3

    高音MI

    D

    65157

    4

    高音FA

    E

    65178

    5

    高音SO

    F

    65217

     

    不发音

    0

     

    简谱对应的简谱码、T值、节拍数

    8051播放音乐电路图

    程序:

    C51

            此程序用了外中断INT0,用于换歌曲,当有键按下时,产生中断,奏下一首歌。没有中断时,循环演奏此曲。

      

    汇编程序:

        此程序的思想与上边的C51基本一致,不同的是此程序没有用外中断(INT0)。所以次程序只是音乐演奏的基本程序。还有因为80518位的,而此程序仅用一单元作简谱码指针。所以只能放256个简谱。故不能写太长的歌曲。

       简谱码:

              82H         8对应音符   中音5SO  2对应节拍2/4

              01H         0不发音               1对音节拍1/4

              81H         8对应音符   中音5SO  1对应节拍1/4

              94H         9对应音符   中音6LA  4对应节拍1

              84H         8对应音符   中音5SO  4对应节拍1

        此程序是:T0(P3.4)作为控制门铃的按钮每按一次,歌曲就改变。按完6次,再重复循环。按钮接P3.4

       以上三个程序的原理图基本上是一样的,不同的只是有无按钮和按钮的接法。第一个程序的按钮是接INT0P3.2)。第二个程序无按钮。第三个程序的按钮是接T0P3.4)。别的都是一样的。

    电子琴

     功能说明:

     1. 由4×4组成的16个按钮矩阵,设计成16个音。

                              

    2. 硬件原理图:

    程序:

    实物图: 

  • 相关阅读:
    poj 2778 AC自己主动机 + 矩阵高速幂
    Web Services 指南之:Web Services 综述
    SQL多表连接查询(具体实例)
    HibernateUtil
    哈夫曼编码问题再续(下篇)——优先队列求解
    MySQL Merge存储引擎
    程序的入口及AppDelegate窗体显示原理
    几个免费的DNS地址
    kettle与各数据库建立链接的链接字符串
    【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间
  • 原文地址:https://www.cnblogs.com/LittleTiger/p/3941279.html
Copyright © 2020-2023  润新知