[PIC] Interface help for Two ultrasonic sensors with pic

Status
Not open for further replies.

kamalkannan12

Newbie level 4
Joined
Jan 4, 2015
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Location
Chennai
Activity points
30
Hi,
I've done interfacing of ultrasonic with pic16f887 . But I can't done coding for two or more ultrasonic with same PIC. Please tell me Some Ideas or sample codes.

Thank you.


My code for single ultrasonic is here:

Code:
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections



char i;                              // Loop variable

  int a,b;
  char txt1[7],txt2[7];

void main()
{
  ANSEL  = 0;                        // Configure AN pins as digital I/O
  ANSELH = 0;

  TRISD=0x80;
  PORTD=0x00;

  Lcd_Init();

  Lcd_Cmd(_LCD_CLEAR);               // Clear display
  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off
  Lcd_Out(1,1,"ULTRASONIC");                 // Write text in first row

  Delay_ms(1000);
  Lcd_Cmd(_LCD_CLEAR);               // Clear display

 T1CON = 0x10;                 //Initialize Timer Module

  while(1)
  {
   TMR1H = 0;
   TMR1L = 0;

   PORTD=0x40;                  // send trigger on D6
   Delay_us(10);              //10uS Delay
   PORTD=0x00;

   while(!((PORTD&0x80)==0x80));           //Waiting for Echo 1
   T1CON=T1CON|0x01;//Set Timer1: Start
   while((PORTD&0x80)==0x80);            //Waiting for Echo1 goes LOW
   T1CON=T1CON&0xFE; //Clear Timer1: Stop


    a = (TMR1L | (TMR1H<<8));   //Reads Timer Value
    a = a/58.82;                //Converts Time to Distance
    a = a + 1;                  //Distance Calibration


  
    if(a>=2 && a<=400)          //Check whether the result is valid or not
    {
     IntToStr(a,txt1);
     Ltrim(txt1);
     Lcd_Out(1,1,"Distance = ");
     Lcd_Out(1,11,txt1);
     Lcd_Out(1,15,"cm");
     Delay_ms(500);
    }
    
    else
    {
    Lcd_Out(2,1,"Out of range");
    }
  }
  
  

}
 
Last edited by a moderator:

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…