找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2101|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)+AD9851模塊頻率數(shù)據(jù)沒有寫進(jìn)去?附源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:499266 發(fā)表于 2019-7-17 09:02 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
問題描述:按照賣家提供的51單片機(jī)程序基礎(chǔ)上,把程序移植到自己的51單片機(jī)上,寫數(shù)據(jù)方式也是根據(jù)AD9851模塊的工作時序圖來寫的,但是問題來了:現(xiàn)在不論是我怎樣修改頻率,出來的波形都不是標(biāo)準(zhǔn)正弦波,而且頻率在示波器上一直顯示50hz不變,四個通道都是一樣(如附圖1)昨天晚上我想了一下,懷疑是數(shù)據(jù)沒有寫進(jìn)去,但是本人還不會看數(shù)據(jù)有沒有寫進(jìn)去(只會簡單使用debug,但是用debug好像也沒啥用,編譯環(huán)境用的keil5)。求助問題:1、請問各位大神知道為什么會出現(xiàn)這種情況?除了是數(shù)據(jù)沒寫進(jìn)去之外,還有其他可能問題嗎?(模塊硬件應(yīng)該沒問題)
                  2、請問怎么看我的數(shù)據(jù)有沒有寫進(jìn)去?


現(xiàn)將代碼貼至如下:


# include <reg51.h>
# include <stdio.h>
# include <intrins.h>
sbit ad9850_w_clk    =P1^4;  
sbit ad9850_fq_up    =P1^3;  
sbit ad9850_rest     =P1^2;  


//***************************************************//
//              ad9850復(fù)位(并口模式)                 //
//---------------------------------------------------//
void ad9850_reset()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信號
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
}

//***************************************************//
//          向ad9850中寫命令與數(shù)據(jù)(并口)             //
//---------------------------------------------------//
void ad9850_wr_parrel(unsigned char w0,double frequence)
{
unsigned char w;
long int y;
double x;
//計算頻率的HEX值
x=4294967295/156.25;//適合125M晶振
//如果時鐘頻率不為125MHZ,修改該處的頻率值,單位MHz 。。
frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;
//寫w0數(shù)據(jù)
w=w0;   
P0=w;      //w0
ad9850_w_clk=1;
ad9850_w_clk=0;
//寫w1數(shù)據(jù)
w=(y>>24);
P0=w;      //w1
ad9850_w_clk=1;
ad9850_w_clk=0;
//寫w2數(shù)據(jù)
w=(y>>16);
P0=w;      //w2
ad9850_w_clk=1;
ad9850_w_clk=0;
//寫w3數(shù)據(jù)
w=(y>>8);
P0=w;      //w3
ad9850_w_clk=1;
ad9850_w_clk=0;
//寫w4數(shù)據(jù)
w=(y>>=0);
P0=w;      //w4
ad9850_w_clk=1;
ad9850_w_clk=0;
//移入始能
ad9850_fq_up=1;
ad9850_fq_up=0;
}

//***************************************************//
//                   測試程序1000Hz                  //
//---------------------------------------------------//
void main()
{

//---------------------------------------------------//
//并行寫5000Hz程序
ad9850_reset();
ad9850_wr_parrel(0x00,15000000);
//---------------------------------------------------//

}


波形圖.jpg (48.35 KB, 下載次數(shù): 64)

輸出問題波形

輸出問題波形

9851并行時序圖.png (36.35 KB, 下載次數(shù): 73)

AD9851并行時序圖

AD9851并行時序圖

ad9851模塊測試程序(51單片機(jī)).rar

27.2 KB, 下載次數(shù): 16

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表