今天下午没事,把前几天焊好的ad9850写了个程序来测试下,起初搞了半天频率计读数乱跑,以为是程序错了,结果搞了半天是频率计的灵敏度不够(用的电池估计没电),再就是ad9850可能输出的幅度不够,没有示波器,只能用频率计看用pl-600收音机的ssb来听,感觉还将就。以下是测试程序,用的100mhz晶体,输出7.050mhz频率。
//ad9850 100mhz晶体 输出7.050mhz调试程序
//头文件:
#include "reg51.h"
sbit w_clk=p2^7;
sbit fq_ud=p2^6;
sbit k=p3^7;//手动装载
//函数声明:
void delay_ms (unsigned int a); //延时子函数,
void main(void)
{
w_clk=0;
fq_ud=0;
while(1)
{
if (k==0)
{
p0=0x00;
delay_ms (100);
w_clk=1;
delay_ms (100);
w_clk=0;//送w0
delay_ms (100);
p0=0x12;
delay_ms (100);
w_clk=1;
delay_ms (100);
w_clk=0;//送w1
delay_ms (100);
p0=0x0c;
delay_ms (100);
w_clk=1;
delay_ms (100);
w_clk=0;//送w2
delay_ms (100);
p0=0x49;
delay_ms (100);
w_clk=1;
delay_ms (100);
w_clk=0;//送w3
delay_ms (100);
p0=0xba;
delay_ms (100);
w_clk=1;
delay_ms (100);
w_clk=0;//送w4
delay_ms (100);
delay_ms (100);
fq_ud=1;
delay_ms (100);
fq_ud=0;}
}
}
//延时子函数,参数范围 0-65536,int为两个字节
void delay_ms (unsigned int a){
unsigned int i;
while( a-- != 0){
for(i = 0; i < 100; i++);
}
}