电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章模拟电子技术基于DDS芯片AD9833的音源发生器设计

基于DDS芯片AD9833的音源发生器设计

11-20 17:30:48 | http://www.5idzw.com | 模拟电子技术 | 人气:576
标签:模拟电子技术基础,模拟电子电路,http://www.5idzw.com 基于DDS芯片AD9833的音源发生器设计,http://www.5idzw.com
        mov a,light_o1
        mov r1,#08h
        call out_SPI
        setb CS
        clr SCK
        ret
    out_SPI:
        RLC A
        mov SO,c
        clr  SCK
        setb SCK
        djnz r1,out_SPI
        ret
    程序主体部分中,根据表1将音阶数据定义成一个一维数组:
    code unsigned int music_table[ ]={0x5268,0x5c80,
0x67d3,0x6e00,0x7b78,0x8a97,0x92d5,0xa4d5,0xb8ff,0xcfa7,0xdc00,0xf6f0,};
    主程序的编程框图如图5所示。对AD9833芯片通过写入控制字的方式进行初始化。程序在主循环中运行。主循环对有效按键进行处理,对于有效琴键,调用音阶函数即可。音阶函数如下:
    void play_music(unsigned char nn)
       {
           light_o = 0x20;
           light_o1 = 0x00; //设控制字
            to_9833();
            v_3.cm_int =music_table[nn]; //查音阶表
              light_o = 0x40 | (v_3.cm.cm_0 & 0x3f);
              light_o1 = v_3.cm.cm_1;  
              to_9833();   //设频率字
              light_o = 0x40;
              light_o1 = v_3.cm.cm_0 / 0x40;
              to_9833();  
        }   
    如有音阶2的琴键被按下有效,C语言对调用函数描述为:
    play_music(2);


    程序中还包含按键处理、显示、存储控制等部分,限于篇幅,不再赘述。经实测,本音源发生器产生的各音阶频率与表1设计值一致,频率误差<0.02%,波形则是“纯净”的正弦波。通过功率放大,驱动扬声器发声。
    通常不同乐器发音时,均有不同特征的谐波。常规乐器难以实现只有主音、无谐波成分的音阶,而通过本文DDS芯片设计的音源器,实现了精准的无谐波成分的音阶,有独特的听觉效果。可作为基准音阶,用于各类乐器的校音。

上一页  [1] [2] 

,基于DDS芯片AD9833的音源发生器设计
关于《基于DDS芯片AD9833的音源发生器设计》的更多文章