• 大小: 24KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: 其他
  • 标签: AD9859  

资源简介

利用51单片机控制AD9850产生正弦信号,利用矩阵键盘实现实现频率预置,通过LCD1602显示预置频率

资源截图

代码片段和文件信息

# include 
# include 
# include 
sbit ad9850_w_clk    =P2^2;
sbit ad9850_fq_up    =P2^1;  
sbit ad9850_rest     =P2^0; 
sbit ad9850_bit_data =P1^7;
sbit lcden=P2^5;
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
#define uint unsigned int
#define uchar unsigned char
uchar s1s2s3s4s5s6s7s8;
uchar abcdefgh;
unsigned long shu=1000;
uchar numtempweiok;
uchar code table1[]=“freq:sin“;
uchar code table[]=“0123456789“;
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}

void write_data(uchar date)
{

lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}


void ad9850_reset_serial()
{
ad9850_w_clk=0;
ad9850_fq_up=0;

ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;

ad9850_w_clk=0;
ad9850_w_clk=1;
ad9850_w_clk=0;

ad9850_fq_up=0;
ad9850_fq_up=1;
ad9850_fq_up=0;
}

void ad9850_wr_serial(unsigned char w0double frequence)
{
unsigned char iw;
long int y;
double x;

x=4294967295/125;

frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;

w=(y>>=0);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}

w=(y>>8);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}

w=(y>>16);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}

w=(y>>24);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}

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;
}

void keyscan();
void lcd_init();
void display();
void main()
{
ad9850_reset_serial();
ad9850_wr_serial(0x001000);
lcd_init();
while(1)
{
keyscan();
if(wei!=0)
           {
switch(wei)
{
case 1: a=num;s1=a; break;
case 2: b=num;s2=b; break;
case 3: c=num;s3=c; break;
case 4: d=num;s4=d; break;
case 5: e=num;s5=e; break;
case 6: f=num;s6=f; break;
case 7: g=num;s7=g; break;
case 8: h=num;s8=h; break;
}
    }
if(ok)  
{
ok=0;
switch(wei)
{
case 1: shu=s1; break;
case 2: shu=s2+s1*10; break;
case 3: shu=s3+s2*10+s1*100; break;
case 4: shu=s4+s3*10+s2*100+s1*1000; break;
case 5: shu=s5+s4*10+s3*100+s2*1000+s1*10000; break;
case 6: shu=s6+s5*10+s4*100+s3*1000+s2*10000+s1*100000; break;
case 7: shu=s7+s6*10+s5*100+s4*1000+s3*10000+s2*100000+s1*1000000; break;
case 8: shu=s8+s7*10+s6*100+s5*1000+s4*10000+s3*100000+s2*1000000+s1*10000000; break;
}
display();
ad9850_reset_serial();
ad9850_wr_serial(0x00shu);
wei=

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6092  2015-06-29 21:15  AD9850显示+键盘\main.c

     文件      18145  2015-06-29 20:07  AD9850显示+键盘\main.LST

     文件      19296  2015-06-29 20:07  AD9850显示+键盘\main.OBJ

     文件      16863  2015-06-29 20:07  AD9850显示+键盘\pp

     文件       7606  2015-06-29 20:07  AD9850显示+键盘\pp.hex

     文件         38  2015-06-29 20:07  AD9850显示+键盘\pp.lnp

     文件      18827  2015-06-29 20:07  AD9850显示+键盘\pp.M51

     文件        977  2015-06-29 21:21  AD9850显示+键盘\pp.Opt

     文件        170  2015-06-29 21:21  AD9850显示+键盘\pp.plg

     文件       2129  2015-06-26 21:58  AD9850显示+键盘\pp.Uv2

     文件        977  2015-06-29 21:15  AD9850显示+键盘\pp_Opt.Bak

     文件          0  2015-06-26 19:34  AD9850显示+键盘\pp_Uv2.Bak

     目录          0  2015-08-04 09:10  AD9850显示+键盘

----------- ---------  ---------- -----  ----

                91120                    13


评论

共有 条评论

相关资源