首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于DDS芯片AD9833的音源发生器设计
来源:本站整理  作者:佚名  2010-04-08 18:53:53



本设计中,MCU采用51系列芯片,图4是音源器部分的电路原理图。P1.5、P1.6、P1.7分别与AD9833芯片的FSYN、SCLK、SDA相连,MCU通过模拟SPI的时序,对AD9833芯片的各寄存器进行设置。Y2是一个有源晶振,其第3脚输出频率为4.194 304 MHz的信号,提供给AD9833芯片的主频输入端,AD9833芯片产生的信号通过JP3输出,与音频功放电路相连,通过音频功放驱动扬声器发声。


3 软件实现
    本设计中,主频时钟采用4.194 304 MHz。输出频率计算如下:
   
式中,f0为输出频率,fMCLK为主频(4.194 304 MHz),FREQREG为频率寄存器设置的频率字。频率分辨率为1/64=0.015 625 Hz。
    根据上述公式,计算出各音阶对应的频率字参数如表1所示。


    控制程序在Keil uv2环境下开发,程序采用汇编语言和C语言混合编程形式实现。实现时序控制部分采用汇编语言,主体部分则采用C语言进行编程。程序主体部分调用时序控制部分时,通过全局字节变量light_o和light_o1传递数据。
    时序控制部分程序通过模拟SPI接口时序,完成对DDS芯片内部寄存器的设置,具体程序如下(定义部分略):
    to_9833:
        setb SCK
        clr CS  
        mov a,light_o
        mov r1,#08h
        call out_SPI
        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] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:100,359.40000 毫秒