//中位值:变化慢的数据(温度/液位等)若干值排序的中位(有效克服因偶然因素引起的波动(脉冲)干扰) //流量、速度等快速作用不佳 char filter() { char value_buf[N];//温度数组 char count,j,i,temp; for(count = 0;count<N;count++) { value_buf[count] = get_ad();//这里获取温度值 delay();//延时值设定 } for(j=0;j<N-1;j++)//冒泡排序 { for(i=0;i<N-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; } } } return value_buf[(N-1)/2]; }
void main() { float adc_a; float adc_data; int i = 0, k = 0; char send_flag = 0;//1 发送成功 0 重发 // Ds1302Init(); //ds1302初始化函数,更改时间需要用到此函数 inituart(); init_adc(); delayms(1); lcdinit(); charsend("AT+CLTS=1\r\n"); delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200); delayms(200);delayms(200);delayms(200);delayms(200);delayms(200); time_a();//时钟初始化 delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200); delayms(200);delayms(200);delayms(200);delayms(200); delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200); delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200);delayms(200); while (1) { while (clk_count_last != clk_count) { if (gprs_allow_flag == 1) { delayms(100); gprs_allow_flag = 0; rec_fin = 0; time_a();//时钟初始化 delayms(200);delayms(200);delayms(200);delayms(200);delayms(200); time_a();//时钟初始化 delayms(200);delayms(200);delayms(200);delayms(200); charsend("AT+CIPSEND=183\r\n"); delayms(100); charsend("POST /data HTTP/1.1\r\nHost:121.40.171.93\r\nContent-Length:87\r\nAuthorization:Basic dGVzdDp0ZXN0\r\n\r\n"); charsend(http_post); } if (gprs_fin_flag == 1&& gprs_fin_flag_2 == 1) { gprs_fin_flag = 0; e_gprs = 0; //互斥访问 charsend("ok2222222222222222"); } if (gprs_fin_flag == 1 && gprs_fin_flag_1 == 1) { gprs_fin_flag = 0; e_gprs = 0; //互斥访问 charsend("ok11111111"); } clk_count_last = clk_count + 1; } clk_count_last = clk_count + 1; clk_count_last = clk_count_last % 600; //datasend( get_ad()); // http_post[54] = (int)chao_data_avg_s % 10 + 48; //传感器数据存在http_post // http_post[53] = (int)chao_data_avg_s / 10 % 10 + 48; // http_post[51] = (int)chao_data_avg_s / 100 % 10 + 48; // http_post[50] = (int)chao_data_avg_s / 100 % 10 + 48; kDisplayListChar(1, 1, myitoa((int)get_ref(),4), 4); kDisplayListChar(1, 2, "13", 6); chao_data[data_count%12] = get_ad(); ///1024* 5 tan_data[data_count%12] = get_ref(); data_count++; data_count=data_count%12; temper = ReadTemperature(); kDisplayListChar(3, 4, strcat(myitoa(temper / 10, 2), "."), 3); kDisplayListChar(5, 4, myitoa(temper % 10, 1), 1); // Ds1302ReadTime(); //时间显示 // time_formchar(time_char); // /******************************************** // adc_data=get_ad(); //这两句是接压力传感器的处理函数 // range=(adc_data-0x00BD)*0.6; // //*********************************************/ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // if (clk_count % 600 % 60 == 0) //每分钟 // { // // split(chao_data, 0, 11); // split(tan_data, 0, 11); // chao_data_avg[data_count_avg%10] = average1(chao_data, 4, 7); // tan_data_avg[data_count_avg%10] = average1(tan_data, 4, 7); // data_count++; // data_count_avg=data_count_avg%10; // // datasend(chao_data_avg[data_count_avg%10]); // } } }