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