Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stm32f10x.h"
- #include "evbLib.h"
- #include <stdio.h>
- #include <math.h>
- int x=0,y=0;
- void czysc() {
- lcdGoTo(0,0); lcdWrite(" "); //16
- lcdGoTo(1,0); lcdWrite(" "); //16
- lcdGoTo(x,y);
- }
- int main(void) {
- char odczyt[17];
- int ADC_value[100]; // nasza tablica do przyjmowania zmieczonych wartosci z przetwornika ADC
- float napiecie_ADC; // stworzenie wszystkich potrzebnych zmiennych
- float suma_srednia, suma_sredniax, odchylenie;
- float min, max, srednia, sredniax;
- int i;
- ADC_InitTypeDef ADC_InitStruct; //stworzenie zmiennej do naszej struktury inicjujacej
- // wlaczenie taktowania zegara dla przetwornika ADC1
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
- //konfigurowanie przetwornika ADC
- ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;
- ADC_InitStruct.ADC_ScanConvMode=DISABLE;
- ADC_InitStruct.ADC_ContinuousConvMode=ENABLE;
- ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
- ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
- ADC_InitStruct.ADC_NbrOfChannel=1;
- ADC_Init(ADC1, &ADC_InitStruct);
- ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_71Cycles5);
- //wlaczenie ADC
- ADC_Cmd(ADC1, ENABLE);
- ADC_SoftwareStartConvCmd(ADC1, ENABLE);
- while(1) {
- suma_srednia=0; suma_sredniax=0;
- min=5; //dowolna wartosc wieksza od najwiekszego mozliwego do uzyskania pomiaru
- max=0; srednia=0; sredniax=0; odchylenie=0;
- for(i=0;i<100;i++) { // petla zbierajaca wyniki
- ADC_value[i]= ADC_GetConversionValue(ADC1); //wpisywanie w tablice
- }
- for(i=0;i<100;i++) {
- napiecie_ADC=ADC_value[i]*0.0008056640625; // bitowa rozdzielczosc przetwarzania 3,3V/4096 = 0.0008056640625 V
- suma_srednia=suma_srednia+napiecie_ADC;
- if(napiecie_ADC<min) { min=napiecie_ADC; }
- if(napiecie_ADC>max) { max=napiecie_ADC; }
- suma_sredniax=suma_sredniax+napiecie_ADC*napiecie_ADC;
- }
- srednia=suma_srednia/100;
- sredniax=suma_sredniax/100;
- odchylenie=sqrt(100*fabs(sredniax-srednia*srednia)/99);
- sprintf(odczyt,"srednia %.2f V", srednia);
- lcdWrite(odczyt); delayMs(1000); czysc();
- sprintf(odczyt,"minimalna %.2f V", min);
- lcdWrite(odczyt); delayMs(1000); czysc();
- sprintf(odczyt,"maksymalna %.2f V", max);
- lcdWrite(odczyt); delayMs(1000); czysc();
- sprintf(odczyt,"odchylenie %.3f V", odchylenie);
- lcdWrite(odczyt); delayMs(1000); czysc();
- delayMs(1000);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement