main
#include "delay.h"
#include "sys.h"
#include "led.h"
#include "usart.h"
#include "adc.h"
#include "key.h"
#include "timer.h"
#define median_filtering_length 3
u16 median_filtering(void);
void display(int ch);
void display1(int ch);
int t=0,t_flag=0,turbidity_flag=0;
float f;
float turbidity,turbidity1;
float purification;
float shi;
int main(void)
{
delay_init();
NVIC_Configuration();
Adc_Init();
uart_init(9600);
GPIOINIT();
TIM3_Int_Init(1999,7199);
while(1)
{
turbidity=Get_Adc(7);
turbidity= turbidity/4096*3.3;
turbidity = turbidity*100/3.3;
if( turbidity > 100) turbidity = 100;
if(KEY1==0)
{
while(KEY1==0);
TIM_Cmd(TIM3, ENABLE);
t_flag=20;
}
if(KEY2==0)
{
while(KEY2==0);
TIM_Cmd(TIM3, ENABLE);
t_flag=40;
}
if(KEY3==0)
{
while(KEY3==0);
TIM_Cmd(TIM3, ENABLE);
t_flag=60;
}
if(t>=t_flag)
{
TIM_Cmd(TIM3, DISABLE);
t=0;t_flag=0;
if(turbidity_flag==1;)turbidity_flag=2;
}
else
{
f=t*(88/t_flag);
shi=f;
turbidity_flag=1;
}
if(turbidity_flag==2)
{
turbidity_flag=0;
delay_ms(1500);
turbidity1=Get_Adc(7);
turbidity1=(float) turbidity1*(3.3/4096);
turbidity1 = turbidity1*100/3.3;
if( turbidity1 > 100) turbidity1 = 100;
purification=1-(12+turbidity-turbidity1-1)/(12+turbidity-turbidity1);
shi=90+purification*100;
}
display((int)shi);
display1((int)t_flag-t);
}
}
void display(int ch)
{
GPIO_WriteBit(GPIOA,GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);
switch(ch/10)
{
case 0:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_14, Bit_SET);break;
case 1:GPIO_WriteBit(GPIOB, GPIO_Pin_9|GPIO_Pin_10, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, Bit_SET);break;
case 3:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_12|GPIO_Pin_13, Bit_SET);break;
case 4:GPIO_WriteBit(GPIOB, GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_12, Bit_SET);break;
case 5:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB,GPIO_Pin_9|GPIO_Pin_12, Bit_SET);break;
case 6:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB,GPIO_Pin_9, Bit_SET);break;
case 7:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, Bit_SET);break;
case 8:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);break;
case 9:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_12, Bit_SET);break;
case 2:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_10|GPIO_Pin_13, Bit_SET);break;
default:break;
}
delay_ms(2);
GPIO_WriteBit(GPIOA,GPIO_Pin_15, Bit_RESET);GPIO_WriteBit(GPIOA, GPIO_Pin_14, Bit_SET);
switch(ch%10)
{
case 0:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_14, Bit_SET);break;
case 1:GPIO_WriteBit(GPIOB, GPIO_Pin_9|GPIO_Pin_10, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, Bit_SET);break;
case 3:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_12|GPIO_Pin_13, Bit_SET);break;
case 4:GPIO_WriteBit(GPIOB, GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_12, Bit_SET);break;
case 5:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB,GPIO_Pin_9|GPIO_Pin_12, Bit_SET);break;
case 6:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB,GPIO_Pin_9, Bit_SET);break;
case 7:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, Bit_SET);break;
case 8:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);break;
case 9:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_12, Bit_SET);break;
case 2:GPIO_WriteBit(GPIOB, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_14, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_10|GPIO_Pin_13, Bit_SET);break;
default:break;
}
delay_ms(2);
}
void display1(int ch)
{
GPIO_WriteBit(GPIOA,GPIO_Pin_12, Bit_RESET);GPIO_WriteBit(GPIOA, GPIO_Pin_13, Bit_SET);
switch(ch/10)
{
case 0:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_SET);break;
case 1:GPIO_WriteBit(GPIOB, GPIO_Pin_2|GPIO_Pin_3, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7, Bit_SET);break;
case 3:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_5|GPIO_Pin_6, Bit_SET);break;
case 4:GPIO_WriteBit(GPIOB, GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5, Bit_SET);break;
case 5:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB,GPIO_Pin_2|GPIO_Pin_5, Bit_SET);break;
case 6:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB,GPIO_Pin_2, Bit_SET);break;
case 7:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_13|GPIO_Pin_6, Bit_SET);break;
case 8:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);break;
case 9:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);break;
case 2:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_3|GPIO_Pin_6, Bit_SET);break;
default:break;
}
delay_ms(1);
GPIO_WriteBit(GPIOA,GPIO_Pin_13, Bit_RESET);GPIO_WriteBit(GPIOA, GPIO_Pin_12, Bit_SET);
switch(ch%10)
{
case 0:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_SET);break;
case 1:GPIO_WriteBit(GPIOB, GPIO_Pin_2|GPIO_Pin_3, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7, Bit_SET);break;
case 3:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_5|GPIO_Pin_6, Bit_SET);break;
case 4:GPIO_WriteBit(GPIOB, GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5, Bit_SET);break;
case 5:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB,GPIO_Pin_2|GPIO_Pin_5, Bit_SET);break;
case 6:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB,GPIO_Pin_2, Bit_SET);break;
case 7:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_13|GPIO_Pin_6, Bit_SET);break;
case 8:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);break;
case 9:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);break;
case 2:GPIO_WriteBit(GPIOB, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7, Bit_RESET);GPIO_WriteBit(GPIOB, GPIO_Pin_3|GPIO_Pin_6, Bit_SET);break;
default:break;
}
delay_ms(1);
}
void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
t++;
}
}