AD9833产生正弦波,高手能不能帮忙看看程序

chen19890210 2014-02-25 04:47:05
幅度在0~5v可调,频率暂且定为一个。能出来波形就行。
#include<stc12c54.h>
#include<intrins.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int

sbit FSYNC=P2^7;
sbit SCLK=P3^7;
sbit SDATA=P1^0;

uchar WAVE,frequence;

void delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}

void write_ad9833_d16(uint x)
{
int i,w;
SCLK=1;
FSYNC=1;
SDATA=1;
FSYNC=0;
w=x; //写16位数据
for(i=0;i<16;i++)
{
SDATA=w&0x8000; //去频率字的最高位
SCLK=0;
SCLK=1;
w=w<<1; //频率控制字左移一位
}
FSYNC=1;
SCLK=0;
}

void output_Sinusoid(double frequence,uint frequence_SFR,uint WAVE_MODE,uint Phase)
{
int frequence_LSB,frequence_MSB,Phs_data;
double frequence_mid,frequence_DATA;
long int frequence_hex;
//计算频率的16进制值
frequence_mid=268435456/1;
frequence_DATA=frequence;
frequence_DATA=frequence_DATA/1000000;
frequence_DATA=frequence_DATA*frequence_mid;
frequence_hex=frequence_DATA;
frequence_LSB=frequence_hex;
frequence_LSB=frequence_LSB&0x3fff;
frequence_MSB=frequence_hex>>14;
frequence_MSB=frequence_MSB&0x3fff;
Phs_data=Phase|0xC000;
if(frequence_SFR==0)
{
frequence_LSB=frequence_LSB|0x4000;
frequence_MSB=frequence_MSB|0x4000;
write_ad9833_d16(0x0100);
write_ad9833_d16(0x2100);
write_ad9833_d16(frequence_LSB);
write_ad9833_d16(frequence_MSB);
write_ad9833_d16(Phs_data);
//write_ad9833_d16(0x2000);
}
if(frequence_SFR==1)

{
frequence_LSB=frequence_LSB|0x8000;
frequence_MSB=frequence_MSB|0x8000;
write_ad9833_d16(0x0100);

write_ad9833_d16(0x2100);

write_ad9833_d16(frequence_LSB);

write_ad9833_d16(frequence_MSB);

write_ad9833_d16(Phs_data);
//write_ad9833_d16(0x2800);
}
if(WAVE_MODE==0)

{

delayms(100);
write_ad9833_d16(0x2002);

}
if(WAVE_MODE==1)

{
delayms(100);
write_ad9833_d16(0x2028);

}
if(WAVE_MODE==2)

{
delayms(100);
write_ad9833_d16(0x2000);

}
}


void main()
{

output_Sinusoid(5000,0,2,0);
while(1)
{
}
}

...全文
469 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
家菲猫 2014-06-13
  • 打赏
  • 举报
回复
你好,你调出正弦波了吗?

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧