Пример #1
0
//中位值:变化慢的数据(温度/液位等)若干值排序的中位(有效克服因偶然因素引起的波动(脉冲)干扰)
//流量、速度等快速作用不佳
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];
}
Пример #2
0
 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]);
//		 }
	
	 }
 }