Преглед изворни кода

电表最后一位显示问题。

liyi пре 1 година
родитељ
комит
234749125e

+ 1 - 1
control/voltmeter/ADC/adc.c

@@ -54,7 +54,7 @@ void AdcInit(void)
 	rcu_periph_clock_enable(RCU_GPIOA);
 	rcu_periph_clock_enable(RCU_DMA);
 	rcu_periph_clock_enable(RCU_ADC);
-	rcu_adc_clock_config(RCU_ADCCK_APB2_DIV6);
+	rcu_adc_clock_config(RCU_ADCCK_APB2_DIV8);
 	gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, U_max | U_min | I_max | I_min);
 	adc_deinit();
 	ADC_dma_config();

+ 4 - 4
control/voltmeter/DISPLAY/display.c

@@ -281,8 +281,8 @@ void display_num_list(uint8_t *list,float num)
 void display_voltage(float num_f,float num_i)
 {
 	int i, t;
-	uint8_t num[8] = {0};
-	uint8_t channel[8] = {0};
+	uint8_t num[9] = {0};
+	uint8_t channel[9] = {0};
 	display_num_list(num,num_i);
 	display_num_list(&num[4],num_f);
 
@@ -324,11 +324,11 @@ void display_voltage(float num_f,float num_i)
 	
 //	for(t=0;t < 10;t++)
 //	{
-		for(i = 0; i < 8;i++)
+		for(i = 0; i < 9;i++)
 		{
 			if(channel[i] == 0)
 				show_num(i,num[i]);
-			for(int j = 0; j <4000;j++);
+			for(int j = 0; j <1000;j++);
 		}
 //	}
 }

+ 0 - 1
control/voltmeter/DISPLAY/display.h

@@ -12,6 +12,5 @@ void display_voltage(float num_f,float num_i);
 //void display_voltage(float num_f);
 void display_current(float current);
 
-
 #endif
 

+ 47 - 15
control/voltmeter/TIMER/timer.c

@@ -86,27 +86,59 @@ void TIMER14_IRQHandler(void)
   {
     timer_interrupt_flag_clear(TIMER14, TIMER_INT_FLAG_UP);       //清除定时器更新中断标志
   }
-//	adc_original_value[0] = adc_channel_sample_V_P();
-//	adc_original_value[1] = adc_channel_sample_V_S();
-//	adc_original_value[2] = adc_channel_sample_I_P();
-//	adc_original_value[3] = adc_channel_sample_I_S();
-	if(adc_original_value[0]>0x20 )
-		voltage_s[index] = adc_original_value[0] -5;
-	else
-		voltage_s[index] = 0;
-	if(adc_original_value[2] > 0x10 )
-		current_s[index++] = adc_original_value[2]-4;
-	else
-		current_s[index++] = 0;
+	
+	if((adc_original_value[0] - adc_original_value[1]) >= 0x10)
+	{
+		voltage_s[index] = adc_original_value[0] - adc_original_value[1]-5;
+	}else
+	{
+		voltage_s[index] = 0;  
+	}
+	
+	if((adc_original_value[2] - adc_original_value[3]) >= 0x4)
+	{
+		current_s[index] = adc_original_value[2] - adc_original_value[3]-3;
+	}else
+	{
+		current_s[index] = 0;  
+	}
+//	if(adc_original_value[0] > adc_original_value[1])
+//	{
+//		if(adc_original_value[0] - adc_original_value[1] >= 10)
+//			voltage_s[index] = adc_original_value[0] - adc_original_value[1] - 5;
+//		else
+//			voltage_s[index] = 0;
+//		//voltage_s[index] = voltage_s[index] > 20 ? voltage_s[index]- 5: 0;
+//	}else
+//	{
+//		voltage_s[index] = 0;
+//	}
+//	if(adc_original_value[2] > adc_original_value[3])
+//	{
+//		if(adc_original_value[2] - adc_original_value[3] >= 4)
+//			current_s[index] = adc_original_value[2] - adc_original_value[3] -4;
+//		else
+//			current_s[index] = 0;
+//		//current_s[index] = current_s[index] > 10 ? current_s[index]- 4: 0;
+//	}else
+//	{
+//		current_s[index] = 0;
+//	}
+	index++;
+//	if(adc_original_value[0]>0x20 )
+//		voltage_s[index] = adc_original_value[0] -5;
+//	else
+//		voltage_s[index] = 0;
+//	if(adc_original_value[2] > 0x10 )
+//		current_s[index++] = adc_original_value[2]-4;
+//	else
+//		current_s[index++] = 0;
 	if(index == 200)
 	{
 		index = 0;
 		ADC_TimerDisable();		//close timer and calculate
 		read_flag = 1;
 	}
-	//adc_channel_sample()
-	//read_flag = 1;
-	//ADC_TimerDisable();
 }
 
 void TIMER15_IRQHandler(void)