51单片机和DAC0832制作可调频的信号发生器

要求频率要从100HZ-100KHZ步进可调的正弦波,方波,三角波,但是我做的东西最多就100多HZ,求大神帮帮忙。程序如下:http://pan.baidu.com/s/1dDFuNRz

你的问题很好解释啊!
256个点,DAC0832速率为1us左右,理论上频率可以达到1M/256=3906HZ。
但实际上受器件影响,不一定达到这么高的频率。
不过由于你用的是51单片机,12T的模式,执行指令的速率非常低,所以真正影响频率的首先不是DAC0832,而是单片机。因相对于DAC0832的速率,单片机的速率慢了很多,所以单片机的速率是跟不上DAC0832的。
像你程序中用了这么多if,各种判断,频率的运算,还要加上中断的耗时,必定会将频率降下来了。
12T模式的51,单周期时间为1M,加上这些if啊,运算啊,中断耗时啊,频率一下子就降下来了……
所以,要提高速度,取的波形点降低,没必要高这么多,256太高了。你DAC0832后级做出滤波即可。采样定理不是说了嘛,采样速率只要不小于2倍的信号频率,即可还原出原始波形。理论上波形点只要2点就够了…… 但实际应用中,取16个点,或者32个点,也是足够了…… 拿32个点来说,256/32=8,速度一下子就上升8倍……追问

如果采用8个点的话,具体该怎么改,如果我想实现0.1v的步进幅值调节的话,该怎么做,恳请不吝指教!

追答

1、256个点的你都会了,8个点的你不会?
2、幅度步进,可参考如下两点:
方案1:可以考虑采用DA实现,DA的输出连接运放构成的加法器以实现双极性输出(比如8位DA,当数值大于127时为正,当数值小于127时为负);输出电压幅值的调节控制的是DA输出的最大值,输出波形要根据最大值进行缩放处理;频率的调节可以采用控制一个周期的输出点数。方案2:采用DDS芯片如AD9850,单片机给芯片输入频率,幅值的调节可以考虑采用压控运放,用DA输出控制运放增益。

追问

用8点也是不行,出的是阶梯波,我用ICL8038做了。谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-08
最大600HZ的追问

怎样让频率扩大,我的问题在哪儿呢?

第2个回答  2019-06-22
你首先检查电路接线是否有问题。其次是程序是否正常运行。测试电路的最好办法,是去掉单片机,直接对dac0832的8个数据输入端手动编码,看输出是否按照规律变化,如果这样正常,那就要检查程序。
相似回答