单片机模拟dds信号发生器
刚开始想用单片机做个频率连续可调的信号发生器,后来就联想到了当时用FPGA做的DDS信号发生器了。然后上网搜资料,哈哈,这个还真有人做过,大概看了一下人家的讲解,就开始干活啦!
DDS信号发生器的频率计算公式如下:
其中fout为输出频率,M为累加器每次的步进值,N为累加器的位数,我这里采用的是unsigned int 16位的累加器。在FPGA系统中这个fc为系统时钟,也就是有源晶振经过分频后的频率。但是在单片机中我们只能用单片机进中断的频率来作为fc。
fc的设置需要注意的是1、进中断的周期要大于中断程序执行的时间 2、进中断的周期也要大于DAC两次写入数据的时间。
我采用的硬件stc12c5a08s2 24m晶振 dac0832
上最终效果图
几个频率的测试波形
10Hz频率测试
正弦波
方波
三角波
锯齿波
制作经历:
昨天用单片机模拟个DDS信号发生器,画了个板子。从开始做板子就各种不顺。。。。。。打印时打印机没墨啦,地线我用的铺铜,悲催的是铺地墨太浅,没法只好拿着油性笔把地线重新描了下。好吧,做板去,腐蚀顺利。然后拿到板子测量电源和地没短路,开始焊接,一切顺利。再次检测电源和地是否短路,万用表讨厌的滴滴声想起来啦。。。。。。啊苍天啊,短路啦,我焊接水平没那么差吧,一个小板子竟然焊短路 啦!好吧开始检查电路,把电源线从头看到尾看不出来短路啊,好吧再看两遍,还是没短路啊。没法开始上刀子割电源线,割了两刀短路范围缩小啦,然后就逮着那一小段电源线左看右看上看下看没短路啊,当时就有点崩溃。然后打开pcb,就沿着这条线对电路,晕死。。。。。。问题是我描地线时把复位按键当做独立按键啦,本来接电源的线硬给画到了地上,割开不短路啦。可是我焊接前测试啦啊,没短路啊亲,怎么突然蹦出来电路缺陷短路啊,见鬼。上电,电源灯不亮。。。。。。赶紧拔下电源,摸摸芯片不热啊,准备好万用表,直接接在单片机的地和vcc上,上电,电压正常,怀疑电源灯电路可能断啦,一摸led焊盘直接翘起来啦,这的归功于那没墨的打印机。然后补线,硬件搞定
下载测试程序,咦,下不进去!我一开始怀疑下载管脚没接紧,我就轻微晃晃它,咦,怎么这么活络,翻过啦瞅瞅,下载的两条插针焊盘全完蛋啦,好吧使用替换法,在其他板子上下载程序试试,可以下进去,片子没问题,然后把片子装到原来那个板子上,检测程序不运行。上示波器测试晶振管脚,没波形,哈哈,问题锁定,晶振没工作。这个晶振是在其他板子上拆的,是不是拆时间长烧坏啦,换晶振,还不工作,好吧,我换30p电容,检测晶振有波形,程序运行,一切搞定!!!
总结越悲催越是小问题不断。。。。。。
注:中间来回拔单片机,一不留神,单片机两根管脚硬生生钻进手指里!
单片机模拟dds信号发生 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)