ultrasonik sensör programı varmı?

Başlatan koordinat, 26 Kasım 2008, 22:51:43

koordinat

elinizde çalışan 628 le veya 877 ile yapılmış devresiyle birlikte ultasonik programı var mı acaba?teşekkürler


koordinat

selam herkese yukarıdaki linkten bulduğum programın yorumları çıkmamış yardım edebilirseniz sevinirim şayet mantığını anlarsam bi yol bulacağımı düşünüyorumm?877 için nereleri değiştirmem gerek?
/*****************************************                                                                                                                                                                                                               /****************************************
*  '´‰¹"gƒZƒ"ƒT‚ğŽg‚Á‚½‹——£Œv
*   ŽÃ³M\Â¬
*    OPAMP1Â¨OPAMP2Â¨COMP1Â¨Timer1'âŽ~
*   ‘—M\Â¬
*    PH1APH2‚É‚æ‚éƒvƒbƒVƒ…ƒvƒ‹
*****************************************/
#include  <16f785.h>
/**** ƒRƒ"ƒtƒBƒMƒ…ƒŒ[ƒVƒ‡ƒ"İ'è ****/
#fuses INTRC_IO,NOWDT,NOPROTECT,PUT,BROWNOUT,MCLR,NOIESO,NOFCMEN
/**** Šî–{İ'è *****/
#use delay(CLOCK = 8000000)
#use FAST_IO(A)
#use FAST_IO(B)
#use FAST_IO(C)
// ƒŒƒWƒXƒ^ƒAƒhƒŒƒXİ'è
#BYTE PWMCON1 = 0x110         // 2ƒtƒF[ƒYPWM
#BYTE PWMCON0 = 0x111
#BYTE PWMCLK  = 0x112
#BYTE PWMPH1  = 0x113
#BYTE PWMPH2  = 0x114
#BYTE OPA1CON = 0x11C         // ƒIƒyƒAƒ"ƒv
#BYTE OPA2CON = 0x11D
/**** ‰tÂ»Â•\ŽÂ¦Â—pİ'è *****/
#define DB7 PIN_A0
#define DB6 PIN_A2
#define DB5 PIN_B6
#define DB4 PIN_A5
#define RS  PIN_C5
#define STB PIN_A4
#include <lcd_lib.c>
/**** 'è"A•Ï"‚Ì'è‹` *****/
float Value;
long TimeOut;
int ErFlag;
char StMsg[] = "Start!";

/*********** main Š֐" **************/
void main(void)
{
   // I/Oİ'è
   set_tris_A(0x0A);
   set_tris_B(0x30);
   set_tris_C(0xCC);
   output_c(0);
   // ƒRƒ"ƒpƒŒ[ƒ^Â‰ÂŠÃºİ'è@o—Í‚È‚µAA1-VREF"ü—Í
   setup_comparator(CP1_A1_VREF | CP1_INVERT);
   // CVREFİ'è@1.25V+5V‚˜(8/32)=2.50V 
   setup_vref(VREF_C1_HIGH | 12);
   // ƒIƒyƒAƒ"ƒvŽg—pİ'è
   OPA1CON = 0x80;
   OPA2CON = 0x80;
   // PWMo—͐İ'è@‘Š•âo—Í 40kHz ƒfƒ…[ƒeƒB50%
   PWMCON1 = 0x40;
   PWMCON0 = 0x30;
   PWMCLK  = 0x78;
   PWMPH1  = 0x00;
   PWMPH2  = 0x0C; 
   // ƒ^ƒCƒ}1Â‰ÂŠÃºİ'è
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
   // ŠJŽnƒÂƒbƒZ[ƒW•\ŽÂ¦
   lcd_init();
   lcd_clear();
   lcd_str(StMsg);
   delay_ms(500);            // 0.5•bŠÔ•\ŽÂ¦
   /********* ƒÂƒCƒ"ƒ‹[ƒv *************/
   while(1)
   {
      ErFlag = 1;            // –³‰ž"šƒtƒ‰ƒOƒZƒbƒg
      TimeOut = 0;            // ‰ž"šŠÄŽÂ‹Âƒ^ƒCƒ}ƒNƒŠƒA
      // Œv‘ªŠJŽnƒÂƒbƒZ[ƒW•\ŽÂ¦
      lcd_cmd(0x80);      
      printf(lcd_data, "Mesure Start!   ");
      // '´‰¹"gƒpƒ‹ƒXo—Í 0.5msecŠÔ
      PWMCON0 = 0xB3;
      delay_us(500);
      PWMCON0 = 0xB0;
      delay_us(500);         // 0.5msec‘Ò‚¿ ŽÂ©ÂŒÃˆÂ‰ž"š‰ñ"ğ
      // ‰ž"šŽžÂŠÃ”Ի'è
      set_timer1(0);         // ŽžÂŠÃ”ƒŠƒZƒbƒg
      while(TimeOut < 6000)      // ‰ž"šŠÄŽÂ‹   
      {
         TimeOut++;         // ŠÄŽÂ‹Âƒ^ƒCƒ}ƒAƒbƒv
         if(C1OUT == 1)      // ‰ž"šƒ`ƒFƒbƒN
         {
            // ‹——£ŒvŽZ@‰¹‘¬@344m/s@20Ž@]‚Á‚Ä 0.068cm/4usec
            // 2msec‚Å‚Í17.2cm-ŽÃ€Â‘ª•âÂ³3cm
            Value = get_timer1();
            Value = 14.2 + (Value * 0.068);
            lcd_cmd(0xC0);
            printf(lcd_data, "L = %3.0f cm     ", Value);
            ErFlag = 0;      // –³‰ž"šƒtƒ‰ƒOƒNƒŠƒA
            delay_ms(500);   // ŒJ‚è•Ô‚µƒ^ƒCƒ}
            TimeOut = 10000;   // ‹­Â§Âƒ^ƒCƒ€ƒAƒEƒg
         }
      }
      
      if(ErFlag)            // –³‰ž"š‚©H
      {
         // –³‰ž"šƒÂƒbƒZ[ƒW•\ŽÂ¦
         lcd_cmd(0x80);      
         printf(lcd_data, "NoAnswer!       ");
         lcd_cmd(0xC0);
         printf(lcd_data, "                ");
         delay_ms(500);      // 0.5•bŠÔ•\ŽÂ¦Â‘҂¿
      }
   }
}

necati

/*****************************************/
#include  <16f785.h>

#fuses INTRC_IO,NOWDT,NOPROTECT,PUT,BROWNOUT,MCLR,NOIESO,NOFCMEN

#use delay(CLOCK = 8000000)
#use FAST_IO(A)
#use FAST_IO(B)
#use FAST_IO(C)

#BYTE PWMCON1 = 0x110        
#BYTE PWMCON0 = 0x111
#BYTE PWMCLK  = 0x112
#BYTE PWMPH1  = 0x113
#BYTE PWMPH2  = 0x114
#BYTE OPA1CON = 0x11C         
#BYTE OPA2CON = 0x11D

#define DB7 PIN_A0
#define DB6 PIN_A2
#define DB5 PIN_B6
#define DB4 PIN_A5
#define RS  PIN_C5
#define STB PIN_A4
#include <lcd_lib.c>

float Value;
long TimeOut;
int ErFlag;
char StMsg[] = "Start!";

/*********** main**************/
void main(void)
{
  
   set_tris_A(0x0A);
   set_tris_B(0x30);
   set_tris_C(0xCC);
   output_c(0);

   setup_comparator(CP1_A1_VREF | CP1_INVERT);
 
   setup_vref(VREF_C1_HIGH | 12);

   OPA1CON = 0x80;
   OPA2CON = 0x80;

   PWMCON1 = 0x40;
   PWMCON0 = 0x30;
   PWMCLK  = 0x78;
   PWMPH1  = 0x00;
   PWMPH2  = 0x0C; 

   setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);

   lcd_init();
   lcd_clear();
   lcd_str(StMsg);
   delay_ms(500);            
   /**********************/
   while(1)
   {
      ErFlag = 1;           
      TimeOut = 0;          
     
      lcd_cmd(0x80);      
      printf(lcd_data, "Mesure Start!   ");
 
      PWMCON0 = 0xB3;
      delay_us(500);
      PWMCON0 = 0xB0;
      delay_us(500);         
   
      set_timer1(0);         
      while(TimeOut < 6000)       
      {
         TimeOut++;          
         if(C1OUT == 1)       
         {
              
             
            Value = get_timer1();
            Value = 14.2 + (Value * 0.068);
            lcd_cmd(0xC0);
            printf(lcd_data, "L = %3.0f cm     ", Value);
            ErFlag = 0;        
            delay_ms(500);   
            TimeOut = 10000;   
         }
      }
      if(ErFlag)            
      {
         
         lcd_cmd(0x80);      
         printf(lcd_data, "NoAnswer!       ");
         lcd_cmd(0xC0);
         printf(lcd_data, "                ");
         delay_ms(500);      
      }
   }
}
[email]entegreterbiyecisi@yahoo.com[/email]

koordinat

necati bey teşekkürler fakat ben programın yorumlarını yazabilirmisiniz diye sormuştum?

yok mu kimse programa yorum yazabilecek?