正弦信号发生器ad9850实际键盘(经典)

loading 分享 2026-9-1 下载文档

P1=(P1<<1)|0x1; }

while((P1&0x0f)!=0x0f) //等待释放 {

P1=0x0f; }

beep=1; }

return keycode; }

/********* 显示数字 *************/ void xianshu(unsigned long a) { unsigned long c,p=0; c=a/1000000000; if(c!=0)

{lcd1602_wrdata(c+0x30); p=1; }

c=(a00000000)/100000000; if(c!=0 || p==1)

{lcd1602_wrdata(c+0x30); p=1; }

c=(a0000000)/10000000; if(c!=0 || p==1)

{lcd1602_wrdata(c+0x30); p=1; }

c=(a000000)/1000000; if(c!=0 || p==1)

{lcd1602_wrdata(c+0x30); p=1; }

c=(a00000)/100000; if(c!=0 || p==1)

{lcd1602_wrdata(c+0x30); p=1;

}

c=(a0000)/10000; if(c!=0 || p==1)

{lcd1602_wrdata(c+0x30); p=1; }

c=(a000)/1000; if(c!=0 || p==1)

{lcd1602_wrdata(c+0x30); p=1; }

c=(a00)/100; if(c!=0 || p==1)

{lcd1602_wrdata(c+0x30); p=1; } c=(a0)/10;

if(c!=0 || p==1)

{lcd1602_wrdata(c+0x30); }

c=a+0x30; lcd1602_wrdata(c); }

/******* 菜单显示子程序 ************/ void xianshi(uchar j)

{ uchar code str[][9]={{\\F \dF\XW\\\\\ uchar i;

unsigned char offset=0x80; lcd1602_clear();

lcd1602_wrcmd(offset+0x00);

lcd1602_wrcmd(offset+0x00); lcd1602_wrdata('-'); lcd1602_wrdata('>');

for(i=0;i<8;i++) lcd1602_wrdata(str[j+0][i]);

lcd1602_wrcmd(offset+0x40); lcd1602_wrdata(' ');

\ lcd1602_wrdata(' ');

for(i=0;i<8;i++) lcd1602_wrdata(str[j+1][i]); }

/*************** AD9850驱动程序 ************/ ad9850(float freq, float dfreq,ulong d4) {

float fw; uchar i,j,temp; uchar s; uchar d[5];

fw=freq*34.359738368*3; //d[4]中存放控制字最高位,即相位控制字 //Freq=MCLK*FW/2^32 d[4]=(unsigned long)(d4/11.25)*8; d[0]=(unsigned long)fw; d[1]=(unsigned long)fw>>8; d[2]=(unsigned long)fw>>16; d[3]=(unsigned long)fw>>24;

load=0; sclk=0; sclk=1; sclk=0; load=1; load=0;

for(i=0;i<5;i++) {

temp=d[i]; for(j=0;j<8;j++) {

sclk=0;

if(temp&1) sdata=1; else sdata=0; sclk=1;

temp=temp>>1; } } load=1; load=0;

lcd1602_clear(); lcd1602_wrdata(' ');

lcd1602_wrdata(' '); lcd1602_wrdata(' '); lcd1602_wrdata(' '); lcd1602_wrdata(' ');

if ((unsigned long)freq00==0 ) {

s='K'; freq=freq/1000;

if ( (unsigned long) freq00==0) {s='M';freq=freq/1000 ; } }

else{ s=' ';} xianshu(freq); lcd1602_wrdata(s); lcd1602_wrdata('H'); lcd1602_wrdata('Z');

lcd1602_wrcmd(0x80+0x40); //换行

if ((unsigned long)dfreq00==0 ) {

s='K'; dfreq=dfreq/1000;

if ( (unsigned long) dfreq00==0) {s='M';dfreq=dfreq/1000 ; } }

else{ s=' ';}

lcd1602_wrdata(0x7e); xianshu(dfreq); lcd1602_wrdata(s); lcd1602_wrdata('H'); lcd1602_wrdata('Z');

lcd1602_wrcmd(0x80+0x4b); //定坐标 控制显示位子 lcd1602_wrdata(0xf2); lcd1602_wrdata(':'); xianshu(d4);

}

/********************** 按键显示数程序 *************************/ ulong dushu()


正弦信号发生器ad9850实际键盘(经典).doc 将本文的Word文档下载到电脑
搜索更多关于: 正弦信号发生器ad9850实际键盘(经典) 的文档
相关推荐
相关阅读