📄 ad.c
字号:
#include <reg52.H>
#include<absacc.h>
#include <math.h>
extern void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
unsigned int getdata;
unsigned int ad_cun[9];//[9];
sbit ST=P2^5;
sbit OE=P2^6;
sbit EOC=P2^7;
void delay1(void) { unsigned char i;
for(i=255;i>0;i--); }
unsigned int get_ad( )
{
unsigned char i,j;
ST=0;
for(i=0;i<100;i++){;}
ST=1;
for(j=0;j<100;j++){;}
ST=0;
// while(EOC==0);
OE=1;
P3=0xff;
getdata=P3;
OE=0;
return(getdata);
}
unsigned int ad_caiyang(void) //AD采集
{
unsigned char count,i,j;
unsigned int temp;
for ( count=0;count<9;count++)
{
ad_cun[count] = get_ad();
delay1();
}
for (j=0;j<8;j++)
{
for (i=0;i<9-j;i++) //中值滤波
{
if ( ad_cun[i]>ad_cun[i+1] )
{
temp = ad_cun[i];
ad_cun[i] = ad_cun[i+1];
ad_cun[i+1] = temp;
}
}
}
ad_cun[4]=ad_cun[4]*12/255; //数字量转化为模拟量
return(ad_cun[4]);//ad_cun[4];
}
unsigned int ad_vio(unsigned int a) //Vio计算
{
unsigned int advio;
advio=a*10;
return(advio);
}
void ad_xianshi(unsigned int m)
{ unsigned char code zhifu[]={"Vio(mv):"};
unsigned int a;
unsigned char idata ad[4];
ad[0]=m/1000+0x30;
a=m%1000;
ad[1]=a/100+0x30;
a=a%100;
ad[2]=a/10+0x30;
a=a%10;
//if(a==0)
//ad[3]=a+0x30-0x08;
ad[3]=a+0x30;
Display_num(zhifu,1,1,8);
Display_num(ad,2,4,4);
/*Display_num(&ad1,2,4,1);
Display_num(&ad2,2,5,1);
Display_num(&ad3,2,6,1);
Display_num(&ad4,2,7,1);*/
delay1();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -