Aplicación #11.- Sensor Ultrasonico

Aplicación #11.- Sensor Ultrasonico
La función de esta aplicación es: Medir distancia con el sensor ultrasonico HC-SR04 y
visualizarlo en el LCD utilizando el TIMER0 del microcontrolador como un contador de tiempo para
poder hacer la lectura del pulso que manda el sensor
Nota: El pin ECHO se encuentra en PB0 y el trigger en PB1, los cuales se pueden cambiar a
cualquier otro pin del PIC.
Material utilizado:
*HC-SR04
*LCD 2x16
librerías Activadas:
*LCD
*LCD-Constants
*Conversions
*C_String
Programa en MikroC:
// Conexiones del módulo LCD
sbit LCD_RS at RD5_bit;
sbit LCD_EN at RD4_bit;
sbit LCD_D4 at RD0_bit;
sbit LCD_D5 at RD1_bit;
sbit LCD_D6 at RD2_bit;
sbit LCD_D7 at RD3_bit;
sbit LCD_RS_Direction at TRISD5_bit;
sbit LCD_EN_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD0_bit;
sbit LCD_D5_Direction at TRISD1_bit;
sbit LCD_D6_Direction at TRISD2_bit;
sbit LCD_D7_Direction at TRISD3_bit;
// Final de las conexiones del módulo LCD
unsigned int distancia;
unsigned int SFR04(void);
void main() {
ADCON1 = 0B00001111;
//Todos los pines del Pic son Digitales
T0CON = 0b11000111;
TRISB= 0B00000001;
TRISE= 0B00000000;
LATE = 0B00000111;
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
// Inicialización del visualizador LCD
// Comando LCD (apagar el cursor)
// Comando LCD (borrar el LCD)
Lcd_Out(1,2,"INTESC-MIUVVA");
// Escribir mensaje en la primera línea
delay_ms(1000);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Sensror SFR04");
Lcd_Out(2,1,"Distancia: ");
Lcd_Out(2,15,"cm");
// Comando LCD (apagar el cursor)
// Comando LCD (borrar el LCD)
while(1){
SFR04();
delay_ms(50);
}
}
unsigned int SFR04(void){
unsigned int flanco, muestra;
char txt[7];
LATB.F1=1;
delay_ms(10);
LATB.F1=0;
do {
if(PORTB.F0==1) {
TMR0l=0;
flanco=1;
}
}
while(flanco==0);
do{
if(PORTB.F0==0){
//Disparo de 10ms enable sfr04
//DETECTO FLANCO SUBIDA ECHO PULSE
//DETECTO FLANCO SUBIDA ECHO PULSE
muestra=TMR0l;
flanco=0;
}
}
while(flanco==1);
distancia =((muestra*127)/58);
IntToStr(distancia, txt);
Lcd_Out(2,9,txt);
}
//DISTANCIA EN cm