標(biāo)題:
MSP430控制的DDS輸出波形為正弦波和方波c語言程序
[打印本頁]
作者:
xueer
時(shí)間:
2013-7-14 16:19
標(biāo)題:
MSP430控制的DDS輸出波形為正弦波和方波c語言程序
//***************************************************//
// 子程序說明 //
//***************************************************//
//函數(shù)1: ad9850_reset()
// 復(fù)位ad9850,之后為并口寫入模式
//函數(shù)2: ad9850_reset_serial()
// 復(fù)位ad9850,之后為串口寫入模式
//函數(shù)3: ad9850_wr_parrel(unsigned char w0,double frequence)
// 并口寫ad9850數(shù)據(jù),w0為ad9850中w0的數(shù)據(jù),frequence
// 為寫入的頻率
//函數(shù)4: ad9850_wr_serial(unsigned char w0,double frequence)
// 串口寫ad9850數(shù)據(jù),w0為ad9850中w0的數(shù)據(jù),frequence
// 為寫入的頻率
//需定義的位:
//ad9850_w_clk ;
//ad9850_fq_up ;
//ad9850_rest ;
//ad9850_bit_data ;
//例:
//sbit ad9850_w_clk =P2^2;
//sbit ad9850_fq_up =P2^1;
//sbit ad9850_rest =P2^0;
//sbit ad9850_bit_data =P1^7;
//***************************************************//
// 寫數(shù)據(jù)說明 //
//***************************************************//
//寫數(shù)據(jù)例:
// ad9850_reset()
// wr_lcd02_data(unsigned char x)
// ad9850_wr_parrel(0x01,1000)
// ad9850_wr_serial(0x01,1000)
//***************************************************//
//---------------------------------------------------//
// 程序 //
//---------------------------------------------------//
# include <msp430f149.h>
# include <stdio.h>
#define ad9850_w_clk_High P2OUT|=0x04
#define ad9850_w_clk_Low P2OUT&=~0x04
#define ad9850_fq_up_High P2OUT|=0x02
#define ad9850_fq_up_Low P2OUT&=~0x02
#define ad9850_rest_High P2OUT|=0x01
#define ad9850_rest_Low P2OUT&=~0x01
#define ad9850_bit_data P1OUT
//***************************************************//
// ad9850復(fù)位(并口模式) //
//---------------------------------------------------//
void ad9850_reset()
{
ad9850_w_clk_Low;
ad9850_fq_up_Low;
ad9850_rest_Low;
ad9850_rest_High;
ad9850_rest_Low;
}
//***************************************************//
// ad9850復(fù)位(并口模式) //
//---------------------------------------------------//
void ad9850_reset_serial()
{
ad9850_w_clk_Low;
ad9850_fq_up_Low;
//rest信號(hào)
ad9850_rest_Low;
ad9850_rest_High;
ad9850_rest_Low;
//w_clk信號(hào)
ad9850_w_clk_Low;
ad9850_w_clk_High;
ad9850_w_clk_Low;
//fq_up信號(hào)
ad9850_fq_up_Low;
ad9850_fq_up_High;
ad9850_fq_up_Low;
}
//***************************************************//
// 向ad9850中寫命令與數(shù)據(jù)(并口) //
//---------------------------------------------------//
void ad9850_wr_parrel(unsigned char w0,double frequence)
{
unsigned char w;
long int y;
double x;
//計(jì)算頻率的HEX值
x=4294967295/125;//適合125M晶振
//如果時(shí)鐘頻率不為125MHZ,修改該處的頻率值,單位MHz 。!
frequence=frequence/1000000;
frequence=frequence*x;
y=(double)frequence;
//寫w0數(shù)據(jù)
w=w0;
ad9850_bit_data=w; //w0
ad9850_w_clk_High;
ad9850_w_clk_Low;
//寫w1數(shù)據(jù)
w=(y>>24);
ad9850_bit_data=w; //w1
ad9850_w_clk_High;
ad9850_w_clk_Low;
//寫w2數(shù)據(jù)
w=(y>>16);
ad9850_bit_data=w; //w2
ad9850_w_clk_High;
ad9850_w_clk_Low;
//寫w3數(shù)據(jù)
w=(y>>8);
ad9850_bit_data=w; //w3
ad9850_w_clk_High;
ad9850_w_clk_Low;
//寫w4數(shù)據(jù)
w=(y>>=0);
ad9850_bit_data=w; //w4
ad9850_w_clk_High;
ad9850_w_clk_Low;
//移入始能
ad9850_fq_up_High;
ad9850_fq_up_Low;
}
//***************************************************//
// 測試程序1000Hz //
//---------------------------------------------------//
main()
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR=0XFF;
P2DIR=0XFF;
//---------------------------------------------------//
//并行寫1000Hz程序
ad9850_reset();
ad9850_wr_parrel(0x00,1);
//---------------------------------------------------//
while(1)
{
}
}
復(fù)制代碼
作者:
wuyutian51hei
時(shí)間:
2013-8-22 08:40
看了很不錯(cuò)!可實(shí)用!
作者:
Vijay
時(shí)間:
2016-12-23 12:36
這要用到那幾個(gè)模塊
作者:
風(fēng)蕭嘆
時(shí)間:
2017-4-27 21:22
非常不錯(cuò)!謝謝樓主。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1