?? main.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 + -