标题:
单片机模拟低频DDS信号发生器系统仿真加源程序 DAC0832实现
[打印本页]
作者:
51hei学习技术中
时间:
2017-3-17 23:06
标题:
单片机模拟低频DDS信号发生器系统仿真加源程序 DAC0832实现
给51黑电子论坛的朋友们分享一个用51单片机做的模拟低频DDS信号发生器系统,带proteus仿真工程文件加单片机源程序.
下面是仿真原理图:
0.png
(29.45 KB, 下载次数: 57)
下载附件
2017-3-17 23:00 上传
DDS信号发生器的部分单片机源程序:
#include "sin_dds.h"
uchar i,j;
uint counter,step;
/**************定时器0初始化**********************************/
void Init_Timer0(void)
{
TMOD = (TMOD & 0XF0) | 0X01; //定时器0,方式1
TH0 = 0xff; //定时器初值
TL0 = 0xff;
TR0 =1; //启动定时器0
ET0 =1; //开定时器0中断
}
/*************************主函数*********************************/
main()
{
Init_Timer0(); //定时器0初始化
step=2; //数值采样步数初始化
EA = 1; //CPU开中断
while(1)
{
if(key_up == 0) if(step<4096) step++; //数值采样步数加1,采样频率变高 ,正弦波周期变小
if(key_dw == 0) if(step>1) step--; //数值采样步数减1,采样频率变低 ,正弦波周期变大
while((!key_up)||(!key_dw)); //若有一个键按下去,则正弦波周期始终保持不变
}
}
/******************系统OS定时中断服务***************************/
void OS_Timer0(void) interrupt 1 using 2
{
TH0 = 0xff; //重装定时器初值
TL0 = 0xff;
counter = counter + step; //counter以step的步数递增
dac1=type[(unsigned int)counter>>8]; //当counter加满(256/step)次时,dac1的采样值变化一次
}
复制代码
0.png
(45.44 KB, 下载次数: 74)
下载附件
2017-3-17 23:02 上传
全部资料下载(含仿真工程文件和完整代码):
单片机模拟低频DDS信号发生器系统.rar
(16.78 KB, 下载次数: 108)
2017-3-17 23:03 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
QQ291078365
时间:
2019-5-17 11:51
很棒,非常棒
作者:
wxkn937
时间:
2019-5-17 14:39
非常有帮助 厉害
作者:
1627350311
时间:
2020-6-12 20:28
很好的文章
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1