⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 ad1543的驱动程序!!!!!已经通过调试的!!请放心使用!
💻 C
字号:
#include "reg51.h"
#include "string.h"
#include "intrins.h"
#include "stdio.h"
#include "math.h"

#define uchar unsigned char
#define uint  unsigned int

extern uint read1543(uchar port);
extern void send(uchar ad,uchar da);

uchar code tab2[10]={0xfa,0x30,0xe9,0xf1,0x33,0xd3,0xdb,0x70,0xfb,0xf3};

//uint data_buf[12];

//uchar code jqxs[12]={1,2,3,4,5,6,7,8,9,10,11,12};  //加权系数
//uchar code sum_jqxs=1+2+3+4+5+6+7+8+9+10+11+12;         //系数和

void delay(uint);
//uint filter_min_data(uchar N);   //中位值滤波
//uint filter_jiaquan(uchar N);    //加权滤波
//uint filter_min_ave(uchar N);      //中位值平均滤波

void main(void)
{
  // unsigned long  data_buf[8];
  uchar dis_buf[4];
  unsigned long  sum=0,voltage=0; 
  uchar i;
  send(0x0c,0x01);send(0x0a,0x07);send(0x0b,0x07);send(0x09,0x00);
  send(0x01,0x00);send(0x02,0xfa);send(0x03,0x00);send(0x04,0x00);
  send(0x05,0xfa);send(0x06,0xfa);send(0x07,0x00);send(0x08,0x00);
  while(1)
  {
    /*for(i=0;i<16;i++)                  //求平均值滤波
	 {
	  data_buf=read1543(0x00);
	  sum=sum+data_buf;
	 }
	sum>>=4;*/
  /* for(i=0;i<8;i++)                 
	{
	 data_buf[i]=read1543(0x00);
 	 delay(100);
	}
	for(i=0;i<8;i++)
	{
	 sum+=data_buf[i];
	}
	sum>>=3;
   /*sum=filter_min_data(11);*/  //中值滤波
   /*sum=filter_jiaquan(12); */  //加权平均滤波   效果极差,发生了错误
   //sum=filter_min_ave(4);
    sum=read1543(0x00);
	sum=sum*500000;
    voltage=sum>>10;
	
	dis_buf[0]=voltage/100000;voltage=voltage%100000;
	dis_buf[1]=voltage/10000;voltage=voltage%10000;
    dis_buf[2]=voltage/1000;voltage=voltage%1000;
	dis_buf[3]=voltage/100;
	send(0x03,(tab2[dis_buf[0]]|0x04));
	send(0x04,tab2[dis_buf[1]]);
	send(0x08,tab2[dis_buf[2]]);
	send(0x06,tab2[dis_buf[3]]);
   delay(1000);
  }
}
void delay(uint de)
{
  uint x,y;
  for(x=0;x<120;x++)
   {for(y=0;y<de;y++);}
}
/*中值滤波*/
/*uint filter_min_data(uchar N)
{
 uchar i,j;
 uint temp;

 for(j=0;j<N-1;j++)
 {
  for(i=0;i<N-1;i++)
  {
   if(data_buf[i]>data_buf[i+1])
	{
	 temp=data_buf[i];
	 data_buf[i]=data_buf[i+1];
	 data_buf[i]=temp;
	}
  }
 }
 return data_buf[(N-1)/2];
}*/
/*加权滤波*/
/*uint filter_jiaquan(uchar N)
{
  uchar i;
  unsigned long value_buf;
  for(i=0;i<N;i++)
  {
    value_buf+=data_buf[i]*jqxs[i];
  }
  return(uint)(value_buf/sum_jqxs);
}*/
/*中位值平均滤波*/
/*uint filter_min_ave(uchar N)
{
  uchar i,j,x;
  uint temp,value_buf;

  for(j=0;j<N-1;j++)
  {
    for(i=0;i<N-1;i++)
    {
      if(data_buf[i]>data_buf[i+1])
	   {
	    temp=data_buf[i];
	    data_buf[i]=data_buf[i+1];
	    data_buf[i]=temp;
	   }
    }
  }
  for(x=1;x<N-1;x++)
  {
   value_buf+=data_buf[x];
  }
  return(uint)(value_buf/(N-2));
}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -