Hello !
HC-SRF04 interfaceing LPC1768 with Timer2
//**************************************** #include "lpc17xx.h" #include "type.h" #include <stdio.h>
#define LCD_LPC1768 #define LCD_PORT_1 #define LCD_RS 4 #define LCD_RW 8 #define LCD_E 9 #define LCD_DB4 10 #define LCD_DB5 14 #define LCD_DB6 15 #define LCD_DB7 16 #include <lcd.h>
#define CPU 72000000 // 72MHZ #define ECHO PORT0.1 #define TRIG PORT0.0
uint32_t S;
void Delay (uint32_t Time) { uint32_t i;
i = 0; while (Time--) { for (i = 0; i < 5000; i++); } }
volatile int T_Counter; float T= 0.0; float d= 0.0; char str[32];
/****************************************************************************** ** Main Function main() vv ******************************************************************************/ int main (void) {
SystemInit();; lcd_init(); lcd_clear(); lcd_gotoxy(1,1); lcd_putsf("HC-SRF04."); //***************************************************** // timer //***************************************************** LPC_SC->PCONP |= 1<<22; LPC_TIM2->TCR = 0x02; LPC_TIM2->CTCR = 0; LPC_TIM2->MR0 = 10000000; LPC_TIM2->MCR = 2; LPC_TIM2->TC = 0x0; LPC_TIM2->PR = 0; //LPC_TIM2->TCR = 0x01; NVIC_EnableIRQ(TIMER2_IRQn);
LPC_GPIO0->FIODIR = 1<<0;
while ( 1 ) { Delay(500); T_Counter = 0; LPC_GPIO0->FIOSET = 1<<0; Delay(10); LPC_GPIO0->FIOCLR = 1<<0;
while(((LPC_GPIO0->FIOPIN>>1)&1) == 0);
LPC_TIM2->TC = 0x0; LPC_TIM2->TCR = 0x01;
while(((LPC_GPIO0->FIOPIN>>1)&1) == 1); S = LPC_TIM2->TC; LPC_TIM2->TCR = 0x02; T = 0; d = 0;
T = (float)T_Counter*(100000.0/18000.0) + (float)S/18000.0; d = (float)T*340.0/2.0;
lcd_gotoxy(1,1); sprintf(str,"T = %2.3f ms ",T); lcd_putsf(str); lcd_gotoxy(2,1); sprintf(str,"d = %2.3f mm ",d); lcd_putsf(str);
} }
void __irq TIMER2_IRQHandler(void) { LPC_TIM2->IR = 0x02; T_Counter++; return;
}
/****************************************************************************** ** End Of File ******************************************************************************/
If you want to donate the code for general use, then you should really have some license line somewhere that tells any limitations on how the code may be used.
Or was there a question hidden there somewhere?