📄 xd2008ad_da.h
字号:
/*-------A/D转换函数-------*/
unsigned char adcon(void) //A/D变换函数
{unsigned char i;
unsigned char idata ad;
ADCS=1;CLK=0;ADO=1;
ADCS=0;
ET0=0;
for(i=0;i<8;i++)
{
ad=ad<<1;
CLK=1;delay_s(0x02);
if(ADO==1) ad=ad | 0x01;
else ad=ad | 0x00;
CLK=0;delay_s(0x02);
}
ADCS=1;
ET0=1;
return(ad);
}
void disp_ad(void)
{
unsigned char ad;
ad=adcon();//调用A/D函数
/*------显示参数-----*/
bs=ad/100;
ss=ad%100/10;
gs=ad%10;
qs=0;
pot=0;
}
/*--------D/A转换函数--------*/
void dacon(unsigned int x)
{ unsigned char i;
unsigned int idata y;
y=x & 0x3fff;
y=y<<2;
DACS=1;CLK=0;DAIN=0;
DACS=0;
ET0=0;
for(i=0;i<16;i++)
{
if((y&0x8000)==0x8000) DAIN=1;
else DAIN=0;
CLK=1;delay_s(0x02);
CLK=0;delay_s(0x02);
y=y<<1;
}
DACS=1;
ET0=1;
}
void disp_dacon(void)//显示D/A的数据
{ unsigned int i;
unsigned int idata z;
float vot;
for(i=0;i<1024;i++)
{
dacon(i);//DA转换函数
delay_l(0x500);
vot=(float) i/1024;
vot=4.274*vot;//计算出电压值
z=vot*100;
qs=(unsigned char)(z/1000);
bs=(unsigned char)(z%1000/100);
ss=(unsigned char)(z%100/10);
gs=(unsigned char)(z%10);
pot=1;
printf("\n %f %d",vot);
if(K1==0) goto quit_DA;
led123=~led123;
}
quit_DA:
;
}
void daout_adin(void)//D/A输出A/D输入并显示
{
unsigned int idata i=0;
led123=0x07;
while(1)
{
//for(i=0;i<255;i++)
if(K2==0)
{
speak(0x300);//发声
delay_l(0x1000);//延时
while(K2==0);
i=i+30;
if(i>0x3ff) i=0;
}
dacon(i);//D/A输出X
disp_ad(); //A/D采集并显示
delay_l(0x1000);
led123=~led123;
if(K1==0) goto quit_daad;
}
quit_daad:
speak_2();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -