OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3187|回复: 7

中值和算术平均值滤波

[复制链接]

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
发表于 2016-3-23 16:30:29 | 显示全部楼层 |阅读模式
7金钱
/* Includes ------------------------------------------------------------------*/
#include "scm_p3_configs.h"
void zhongzhi();
void pingjunzhi();
uint16_t ResrcData1, ResrcData2;
uint32_t data;
uint16_t redata,sum1,sum2;
//uint16_t reduce;
char value_buf[15],value[5],value_buff[6];
char count,i,j,k,m,n,temp;
uint8_t dat[3] = {0x55, 0x00, 0x00};
int main(void)
{

        Device_Configuration();            
        while (1) {         
//        Delay_us(100000);
//        Delay_us(100000);
        Delay_us(100000);
        pingjunzhi();
                dat[0] = 0xAA;
                dat[1] = (uint8_t)((ResrcData2 >> 8) & 0xff);
                dat[2] = (uint8_t)((ResrcData2 >> 0) & 0xff);
        RS232_SendData(dat, 3);
                   
    }  
}


void zhongzhi(){       
        for (k=0;k<5;k++)        {
        ///////////////////////////////////////////////////////////////       
                for ( count=0;count<15;count++)
                {
                        data = readMax31855Temp(0); //get_ad();
                        redata = (uint16_t)((data >> 16) & 0xffff);//
                        redata = redata/16;
                        if ((redata<0x00c8)&&(redata>0xffce)){//200,-50
                                        value_buf[count] = redata;
                                        //delay();
                                        Delay_us(100);
                                        }

                }
                for (j=0;j<14;j++)
                {
                        for (i=0;i<15-j;i++)
                                {               
                                        if ( value_buf[i]>value_buf[i+1] )
                                                {
                                                        temp = value_buf[i];
                                                        value_buf[i] = value_buf[i+1];
                                                        value_buf[i+1] = temp;
                                                }
                                }
                }
                value[k]=value_buf[7];
                //////////////////////////////////////////////////////////////
        }

        for (j=0;j<4;j++)
                {
                        for (i=0;i<5-j;i++)
                                {               
                                        if ( value[i]>value[i+1] )
                                                {
                                                        temp = value[i];
                                                        value[i] = value[i+1];
                                                        value[i+1] = temp;
                                                }
                                }
                }
                ResrcData1=value[3];

}
//////////////////////////////////////////////////////////////////
void pingjunzhi(){
                for (n=0;n<6;n++){       
               
                        sum1=0,sum2=0;
                        for ( m=0;m<15;m++)
                        {
                                zhongzhi();
                                sum1 = sum1+ResrcData1;
                                Delay_us(100);

                        }
                        value_buff[n]=sum1/15;
                        sum2 = sum2+value_buff[n];
            }
        ResrcData2=sum2/6;
}

最佳答案

查看完整内容[请看2#楼]

你可以说一下代码目的以及问题表现情况,而不是让我们来猜错误
每个人都说我蠢い
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
755
金钱
755
注册时间
2015-9-16
在线时间
94 小时
发表于 2016-3-23 16:30:30 | 显示全部楼层
你可以说一下代码目的以及问题表现情况,而不是让我们来猜错误
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
 楼主| 发表于 2016-3-23 16:31:00 | 显示全部楼层
哪里有逻辑问题
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
 楼主| 发表于 2016-3-23 18:45:28 来自手机 | 显示全部楼层
解决了,手机怎么设置为已解决,
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
 楼主| 发表于 2016-3-23 18:46:08 来自手机 | 显示全部楼层
SeaOverflow 发表于 2016-3-23 17:58
你可以说一下代码目的以及问题表现情况,而不是让我们来猜错误

嗯呢,太急了,没想好,谢谢啦
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2016-3-10
在线时间
18 小时
发表于 2016-3-24 18:33:06 | 显示全部楼层
wuyang 发表于 2016-3-23 18:45
解决了,手机怎么设置为已解决,

解决了希望楼主写一下是怎么解决的,造福后人呀
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-8-1
在线时间
11 小时
 楼主| 发表于 2016-3-26 16:10:22 | 显示全部楼层
小小白兔 发表于 2016-3-24 18:33
解决了希望楼主写一下是怎么解决的,造福后人呀

/* Includes ------------------------------------------------------------------*/
#include "scm_p3_configs.h"
void zhongzhi(void);
void pingjunzhi(void);
uint16_t ResrcData1, ResrcData2;
uint32_t data;
uint16_t redata,sum1,sum2;
//uint16_t reduce;

char count,i,j,k,m,n,temp;
uint8_t dat[3] = {0x55, 0x00, 0x00};
int main(void)
{

        Device_Configuration();            
        while (1) {         
//        Delay_us(100000);
//        Delay_us(100000);
        Delay_us(100);
        pingjunzhi();
                //zhongzhi();
                dat[0] = 0xAA;
                dat[1] = (uint8_t)((ResrcData2 >> 8) & 0xff);
                dat[2] = (uint8_t)((ResrcData2 >> 0) & 0xff);
        RS232_SendData(dat, 3);
                   
    }  
}


void zhongzhi(void){
   
    char value_buf[15],value[5];       
        for (k=0;k<5;k++)        {
        ///////////////////////////////////////////////////////////////       
                for ( count=0;count<15;count++)
                {
                        data = readMax31855Temp(0); //get_ad();
                        redata = (uint16_t)((data >> 16) & 0xffff);//
                        redata = redata/16;
                        USART_SendData(USART232, redata);
                        //if ((redata<0x00c8)&&(redata>0xffce)){//200,-50
                                        value_buf[count] = redata;
                                        //delay();n
                                        Delay_us(10);
                                        //}
                }
                for (j=0;j<14;j++)
                {
                        for (i=0;i<15-j;i++)
                                {               
                                        if ( value_buf>value_buf[i+1] )
                                                {
                                                        temp = value_buf;
                                                        value_buf = value_buf[i+1];
                                                        value_buf[i+1] = temp;
                                                }
                                }
                }
                value[k]=value_buf[7];
                //////////////////////////////////////////////////////////////
                //USART_SendData(USART232, value[k]);
        }

        for (j=0;j<4;j++)
                {
                        for (i=0;i<5-j;i++)
                                {               
                                        if ( value>value[i+1] )
                                                {
                                                        temp = value;
                                                        value = value[i+1];
                                                        value[i+1] = temp;
                                                }
                                }
                }
                ResrcData1=value[3];
        //USART_SendData(USART232, ResrcData1);
}
//////////////////////////////////////////////////////////////////
void pingjunzhi(void){
            char value_buff[6];
            sum2=0;
                for (n=0;n<6;n++){       
               
                        sum1=0;
                        for ( m=0;m<15;m++)
                        {
                                zhongzhi();
                                sum1 = sum1+ResrcData1;
                                Delay_us(10);

                        }
                        value_buff[n]=sum1/15;
                        sum2 = sum2+value_buff[n];
            }
        ResrcData2=sum2/6;
}


那个sum2错了,
每个人都说我蠢い
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2016-3-10
在线时间
18 小时
发表于 2016-3-31 18:33:53 | 显示全部楼层
wuyang 发表于 2016-3-26 16:10
/* Includes ------------------------------------------------------------------*/
#include "scm_p3 ...

赞赞赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 05:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表