|
于51單片機的AD9850控制程序。通過串行數據傳輸,只需四個IO口,相對并行數據傳輸要少7個IO。另外,通過四個獨立按鍵設置輸出頻率值。如果濾波模塊效果好,則輸出40M正弦波波形良好.
全部代碼下載:
AD9850控制程序.rar
(56.46 KB, 下載次數: 80)
2016-10-17 21:13 上傳
點擊文件名下載附件
單片機源程序部分預覽:
- #include <ad9850.h>
- //ad9850復位(串口模式)
- void ad9850_reset_serial()
- {
- ad9850_w_clk=0;
- ad9850_fq_up=0;
- ad9850_rest=0;
- ad9850_rest=1;
- ad9850_rest=0;
- //w_clk信號
- ad9850_w_clk=0;
- ad9850_w_clk=1;
- ad9850_w_clk=0;
- //fq_up信號
- ad9850_fq_up=0;
- ad9850_fq_up=1;
- ad9850_fq_up=0;
- }
- //向ad9850中寫命令與數據(串口)
- void ad9850_wr_serial(uchar w0,double frequence)
- {
- uchar i,w;
- long int y;
- double x;
- //計算頻率的HEX值
- x=4294967295/125;//適合125M晶振,如果時鐘頻率不為125MHZ,修改該處的頻率值,單位MHz !!!
- frequence=frequence/1000000;
- frequence=frequence*x;
- y=frequence;
- //寫w4數據
- w=(y>>=0);
- for(i=0;i<8;i++)
- {
- ad9850_bit_data=(w>>i)&0x01;
- ad9850_w_clk=1;
- ad9850_w_clk=0;
- }
- //寫w3數據
- w=(y>>8);
- for(i=0;i<8;i++)
- {
- ad9850_bit_data=(w>>i)&0x01;
- ad9850_w_clk=1;
- ad9850_w_clk=0;
- }
- //寫w2數據
- w=(y>>16);
- for(i=0;i<8;i++)
- {
- ad9850_bit_data=(w>>i)&0x01;
- ad9850_w_clk=1;
- ad9850_w_clk=0;
- }
- //寫w1數據
- w=(y>>24);
- for(i=0;i<8;i++)
- {
- ad9850_bit_data=(w>>i)&0x01;
- ad9850_w_clk=1;
- ad9850_w_clk=0;
- }
- //寫w0數據
- w=w0;
- for(i=0;i<8;i++)
- {
- ad9850_bit_data=(w>>i)&0x01;
- ad9850_w_clk=1;
- ad9850_w_clk=0;
- }
- //移入始能
- ad9850_fq_up=1;
- ad9850_fq_up=0;
- }
復制代碼
|
|