Ultrasonic Distance Finder By Using 89c51
Bismiallah Hirahman Niraheem
As you see below there are two code one is main code and another is a external function code and this is for serial transmit ...when main code call this function then serial transmission is occur .
Important thing is that i use cyrstal oscillator of 11.0592 Mhz for serial communication ...12Mhz oscillator not worked .
You can Also DOWNLOAD hex File from Link given in the end of this page
Main Code :
#include <AT89X51.h>
#include <stdio.h>
extern void SerialTx(signed int);
sbit Trigger=P1^0;
sbit Eco=P1^1;
sbit Led=P1^2;
void main (void)
{
int c;
unsigned int t;
float s;
float f;
SerialTx(-3); // External Function Call ( board rate 9600 )
TMOD=0x21; //use Timer 1 in mode 2 and Timer 0 in mode 1 , {timer 0 } start and stop from externally
TI=1;
Trigger=0; // Make trigger as output
Eco=1; // Make Eco as Input
while(1)
{
TH0=0xD8; // initialized by 38ms for Eco check
TL0=0xF0;
Trigger=1;
for(c=0;c<1;c++); // From calculation this is Aprox 14 usec delay
Trigger=0;
while(Eco==0){ ; } // Wait until eco = 0
TR0=1;
while(Eco==1) // Wait until eco = 1
{
if(TF0 == 1)
{
printf("Object is out of range...........\n ");
TF0 = 0;
break;
}
}
TR0 = 0;
t = TH0;
t = t<<8;
t = t+TL0;
t = t - 0xD8F0;
Led=~Led;
s=.0165F*t; //formula for coverting into centimeter
f=s*.0300F; //formula for converting into foots
printf("Timer Exact Value = %u \n\n\n" ,t); // Exact value
printf("Counted Distance Value = %f cm \n\n\n " ,s);
printf("Counted Distance Value = %f Foot \n\n\n " ,f); // Calculated Distance
}
}
External Function Serial Transmit SerialTx :
#include <reg51.h>
#include <stdio.h>
void SerialTx(signed int );
void SerialTx(signed int a)
{
TH1=a; //9600 baud rate FD = -3
SCON=0x50;
TR1=1;
}
#include <stdio.h>
void SerialTx(signed int );
void SerialTx(signed int a)
{
TH1=a; //9600 baud rate FD = -3
SCON=0x50;
TR1=1;
}
Electronics Lab Created By Muhammad Irfan
No comments:
Post a Comment