ad9850c语言编程,AD9850与单片机波形生成程序及设计资料下载
//***************************************************//
//函數1:? ?? ?? ???ad9851_reset()? ?? ?? ?? ?? ?? ???//
//函數2:? ?? ?? ???ad9851_reset_serial()? ?? ?? ?? ? //
//函數3:? ?? ?? ???ad9851_wr_parrel(unsigned char w0,double frequence)//
//函數4:? ?? ?? ???ad9851_wr_serial(unsigned char w0,double frequence)//
//版本:? ?? ?? ?? ???V1.1? ?? ?? ?? ?? ?? ?? ?? ?? ? //
//***************************************************//
//? ?? ?? ?? ?? ?? ?子程序說明? ?? ?? ?? ?? ?? ?? ???//
//***************************************************//
//函數1:??ad9851_reset()
//? ?? ???復位ad9851,之后為并口寫入模式
//函數2:??ad9851_reset_serial()
//? ?? ???復位ad9851,之后為串口寫入模式
//函數3:??ad9851_wr_parrel(unsigned char w0,double frequence)
//? ?? ???并口寫ad9851數據,w0為ad9851中w0的數據,frequence
//? ?? ???為寫入的頻率
//函數4:??ad9851_wr_serial(unsigned char w0,double frequence)
//? ?? ???串口寫ad9851數據,w0為ad9851中w0的數據,frequence
//? ?? ???為寫入的頻率
//需定義的位:
//ad9851_w_clk? ? ;
//ad9851_fq_up? ? ;
//ad9851_rest? ???;
//ad9851_bit_data ;
//例:
//sbit ad9851_w_clk? ? =P2^2;
//sbit ad9851_fq_up? ? =P2^1;
//sbit ad9851_rest? ???=P2^0;
//sbit ad9851_bit_data =P1^7;
//***************************************************//
//? ?? ?? ?? ?? ???寫數據說明? ?? ?? ?? ?? ?? ?? ?? ?//
//***************************************************//
//寫數據例:
//? ?? ? ad9851_reset()
//? ?? ? wr_lcd02_data(unsigned char x)
//? ?? ? ad9851_wr_parrel(0x01,1000)
//? ?? ? ad9851_wr_serial(0x01,1000)
//***************************************************//
//---------------------------------------------------//
//? ?? ?? ?? ?? ?? ? 程序? ?? ?? ?? ?? ?? ?? ?? ?? ? //
//---------------------------------------------------//
# include
# include
# include
sbit ad9851_w_clk? ? =P2^2;??//P2.2口接AD9851的w_clk腳/PIN7
sbit ad9851_fq_up? ? =P2^1;??//P2.1口接AD9851的fq_up腳/PIN8
sbit ad9851_rest? ???=P2^0;??//P2.0口接AD9851的rest腳/PIN12
sbit ad9851_bit_data =P1^7;??//P1.7口接AD9851的D7腳/PIN25
//P1為8位數據口
//***************************************************//
//? ?? ?? ?? ???ad9851復位(并口模式)? ?? ?? ?? ?? ???//
//---------------------------------------------------//
void ad9851_reset()
{
ad9851_w_clk=0;
ad9851_fq_up=0;
//rest信號
ad9851_rest=0;
ad9851_rest=1;
ad9851_rest=0;
}
//***************************************************//
//? ?? ?? ?? ???ad9851復位(并口模式)? ?? ?? ?? ?? ???//
//---------------------------------------------------//
void ad9851_reset_serial()
{
ad9851_w_clk=0;
ad9851_fq_up=0;
//rest信號
ad9851_rest=0;
ad9851_rest=1;
ad9851_rest=0;
//w_clk信號
ad9851_w_clk=0;
ad9851_w_clk=1;
ad9851_w_clk=0;
//fq_up信號
ad9851_fq_up=0;
ad9851_fq_up=1;
ad9851_fq_up=0;
}
//***************************************************//
//? ?? ?? ? 向ad9851中寫命令與數據(并口)? ?? ?? ?? ? //
//---------------------------------------------------//
void ad9851_wr_parrel(unsigned char w0,double frequence)
{
unsigned char w;
long int y;
double x;
//計算頻率的HEX值
x=4294967295/180;//適合180M晶振/180為最終時鐘頻率(或30M六倍頻)
//如果時鐘頻率不為180MHZ,修改該處的頻率值,單位MHz !!!
frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;
//寫w0數據
w=w0;
P1=w;? ?? ?//w0
ad9851_w_clk=1;
ad9851_w_clk=0;
//寫w1數據
w=(y>>24);
P1=w;? ?? ?//w1
ad9851_w_clk=1;
ad9851_w_clk=0;
//寫w2數據
w=(y>>16);
P1=w;? ?? ?//w2
ad9851_w_clk=1;
ad9851_w_clk=0;
//寫w3數據
w=(y>>8);
P1=w;? ?? ?//w3
ad9851_w_clk=1;
ad9851_w_clk=0;
//寫w4數據
w=(y>>=0);
P1=w;? ?? ?//w4
ad9851_w_clk=1;
ad9851_w_clk=0;
//移入始能
ad9851_fq_up=1;
ad9851_fq_up=0;
}
//***************************************************//
//? ?? ?? ? 向ad9851中寫命令與數據(串口)? ?? ?? ?? ? //
//---------------------------------------------------//
void ad9851_wr_serial(unsigned char w0,double frequence)
{
unsigned char i,w;
long int y;
double x;
//計算頻率的HEX值
x=4294967295/180;//適合180M晶振/180為最終時鐘頻率(或30M六倍頻)
//如果時鐘頻率不為180MHZ,修改該處的頻率值,單位MHz??!!!
frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;
//寫w4數據
w=(y>>=0);
for(i=0;i<8;i++)
{
ad9851_bit_data=(w>>i)&0x01;
ad9851_w_clk=1;
ad9851_w_clk=0;
}
//寫w3數據
w=(y>>8);
for(i=0;i<8;i++)
{
ad9851_bit_data=(w>>i)&0x01;
ad9851_w_clk=1;
ad9851_w_clk=0;
}
//寫w2數據
w=(y>>16);
for(i=0;i<8;i++)
{
ad9851_bit_data=(w>>i)&0x01;
ad9851_w_clk=1;
ad9851_w_clk=0;
}
//寫w1數據
w=(y>>24);
for(i=0;i<8;i++)
{
ad9851_bit_data=(w>>i)&0x01;
ad9851_w_clk=1;
ad9851_w_clk=0;
}
//寫w0數據
w=w0;
for(i=0;i<8;i++)
{
ad9851_bit_data=(w>>i)&0x01;
ad9851_w_clk=1;
ad9851_w_clk=0;
}
//移入始能
ad9851_fq_up=1;
ad9851_fq_up=0;
}
//***************************************************//
//? ?? ?? ?? ?? ?? ? 測試程序1000Hz? ?? ?? ?? ?? ?? ?//
//---------------------------------------------------//
main()
{
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
//---------------------------------------------------//
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
總結
以上是生活随笔為你收集整理的ad9850c语言编程,AD9850与单片机波形生成程序及设计资料下载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Golang在阿里巴巴调度系统Sigma
- 下一篇: ILSSI认证|六西格玛绿带、黑带证书|