Você está na página 1de 3

#include "EMm47J53_StackConfig.

h"

//========================================================
// Nombre del Programa: Ejemplo ADC
// Autor: Sebastian Augusto Baquero Pea
// UNIVERSIDAD PONTIFICIA BOLIVARIANA
//========================================================

/********************************************************/
/*------- Espacio para declaracion de constantes ------*/
/********************************************************/

#define GLCD_DI PIN_C0 // Data or Instruction input (RS)


#define GLCD_RW PIN_C1 // Read/Write
#define GLCD_E PIN_C2 // Enable
#define GLCD_DB0 PIN_D0 // Data0
#define GLCD_DB1 PIN_D1 // Data1
#define GLCD_DB2 PIN_D2 // Data2
#define GLCD_DB3 PIN_D3 // Data3
#define GLCD_DB4 PIN_D4 // Data4
#define GLCD_DB5 PIN_D5 // Data5
#define GLCD_DB6 PIN_D6 // Data6
#define GLCD_DB7 PIN_D7 // Data7
#define GLCD_CS2 PIN_C7 // Chip Selection 1
#define GLCD_CS1 PIN_E0 // Chip Selection 2
#define GLCD_RST PIN_C6 // Reset

#define IN1 PIN_B3


#define IN2 PIN_B1
#define IN4 PIN_E2
#define IN5 PIN_E1

#define ON 1
#define OFF 0

#define FAST_GLCD
/********************************************************/
/*--- Espacio para declaracion de variables globales --*/
/********************************************************/
char text_glcd[40];
char last_key=0x00;
char last_screen;
char text_glcd1[40];
char text_glcd2[40];
char text_glcd3[40];
char text_glcd4[40];
char text_glcd5[40];
char text_glcd6[40];
char text_glcd7[40];
char text_glcd8[40];
char text_glcd9[40];

unsigned int bandera=0,n=0,rpm,flag,pulso;


int canal1=0,canal0=0,canal2=0,i;
int16 contador=0, contador1=0;
float d1,d2,d3;
int prom,y;
int
hist[60]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};

float calculo;
/********************************************************/
/********************************************************/
/*-------------- Espacio para funciones ---------------*/
/********************************************************/

#include "GLCD_128x64_KS0108.c"
#include <graphics.c>
#include <math.h>

/******************************************************************************/
/******************************************************************************/
/*--------------------- Espacio de codigo principal --------------------------*/
/******************************************************************************/
#zero_ram
void main(){
mcu_init();

char cont[5];

int i,j,dato=0;
// Inicializa microcontrolador
SETUP_ADC_PORTS( sAN0); // Todos los puertos como dgitales
SETUP_ADC(ADC_CLOCK_INTERNAL); // ADC deshabilitado
glcd_init(ON); // Inicializa pantalla GLCD
glcd_fillScreen(OFF);

set_tris_a(0x0f);
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);
set_tris_e(0x00);

delay_ms(100);

sprintf(text_glcd,"Sebastian \n");
glcd_text57(4,4,text_glcd,1,ON);
sprintf(text_glcd,"Arquitectura");
glcd_text57(4,14,text_glcd,1,ON);
delay_ms(300);
glcd_update();

delay_ms(300);
glcd_fillScreen(OFF);
sprintf(text_glcd,"Ejemplo ADC");
glcd_text57(4,24,text_glcd,1,ON);
glcd_update();
delay_ms(300);
contador=0;

SETUP_TIMER_2(T2_DIV_BY_16,7500,1); //cada 1ms hace la interrupcion


SET_TIMER2(0);
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
set_adc_channel(0);
delay_us(20);

while(true){
glcd_fillScreen(OFF);

glcd_rect(90, 0, 125, 7, YES, OFF);


sprintf(text_glcd9,"rpm=%u ",pulso);
glcd_text57(15, 0, text_glcd9, 1, ON);

glcd_update();
delay_ms(280);
glcd_fillScreen(OFF);
}
}

#INT_TIMER2
interr_TIMER2(){
contador++;
canal1=read_adc()*0.012890625;

//condicion para que detecte el pico

if(canal1>2){
contador1++;
if (contador1==1){
rpm++;
}
}
else{
contador1=0;
}
if(contador>=1000){
for(i=0; i<60; i++){
hist[i]=hist[i-1];
}
hist[0]=rpm;
for(i=0; i<60; i++){
pulso=hist[i]+pulso;
}
contador=0;
SET_TIMER2(0);
rpm=0;
}

Você também pode gostar