اطلاعیه

Collapse
No announcement yet.

راه اندازی ds1307 و دوربین

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راه اندازی ds1307 و دوربین

    سلام دوستان
    من دارم روی ی پروژه برای کارشناسی ام کار میکنم که اونم راه اندازی دوربین ov7670 است
    توی ی تاپیک در همین فروم دربارش بحث شده اما اشکال من رفع نشد

    چون این دوربین با i2c به میکرو وصل میشه من دارم برنامه ی i2c رو خودم دستی توی کد ویژن مینویسم و برای اینکه از برنامم مطمئن شم
    از سنسور ds1307 که از همین پروتوکل استفاده میکنه ، استفاده میکنم

    من در شبیه سازی تونستم این سنسور رو راه اندازی کنم اما سخت افزاری نه

    میشه کمکم کنید
    برنامم هم در ادامه ضمیمه کردم

    کد:
    /*****************************************************
    Chip type        : ATmega32
    Program type      : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model      : Small
    External RAM size    : 0
    Data Stack size     : 256
    *****************************************************/
    
    #include <mega32.h>
    #include <delay.h>
    #include <stdio.h>
    #include <string.h>
    
    #asm
     .equ __lcd_port=0x1B;
    #endasm
    #include <lcd.h>
    
     #define SCL PORTB.0
     #define SDA PORTB.1
     
    void itoc_write (char ad1,char ad2)
    {
    int ii;
    char komaki;
     // PORTB.0=0;
      DDRB.0=1;    //OUTPUT
      DDRB.1=1;
    //  PORTB.0=0;
    //  delay_us(5);
     // SCL=1;
      PORTB.1=1;  // SDA=1; 
      delay_us(25);
      PORTB.0=1; // SCL=1; 
      delay_us(25);
      PORTB.1=0; // START CONDITION 
      delay_us(25);
      
      
      PORTB.0=0; // SCL=0 
      
      delay_us(10);
       
      komaki=0xD0; 
      for(ii=0;ii<8;ii++)
        {
        if((komaki&0x80)!=0) PORTB.1=1;
          else  PORTB.1=0;
        delay_us(25);
        PORTB.0=1; //SCL=1
        delay_us(25);
        komaki=komaki<<1;
        PORTB.0=0;
        }  
         delay_us(25);
        DDRB.1=0; 
      //   PORTB.1=1;
        PORTB.0=1; //SCL=1
        delay_us(25);
        // PORTB.1=1;
    //    PORTB.0=0; 
    //    delay_us(5);
    //    while(PINB.1==1);
        PORTB.0=0;
        DDRB.1=1;
        delay_us(40);
        
      komaki=ad1; 
      for(ii=0;ii<8;ii++)
        {
        if((komaki&0x80)!=0) PORTB.1=1;
          else  PORTB.1=0;
        delay_us(25);
        PORTB.0=1; //SCL=1
        delay_us(25);
        komaki=komaki<<1;
        PORTB.0=0;
        }
         delay_us(25);
        DDRB.1=0; 
      //  PORTB.1=1;
        PORTB.0=1; //SCL=1
        delay_us(25);
        // PORTB.1=1;
    //    PORTB.0=0; 
    //    delay_us(5);
    //    while(PINB.1==1);
        PORTB.0=0;
        DDRB.1=1;
        delay_us(40);
    
     
        komaki=ad2; 
        for(ii=0;ii<8;ii++)
          {
          if((komaki&0x80)!=0) PORTB.1=1;
            else  PORTB.1=0;
          delay_us(25);
          PORTB.0=1; //SCL=1
          delay_us(25);
          komaki=komaki<<1;
          PORTB.0=0;
          } 
           delay_us(25);
        DDRB.1=0; 
      //  PORTB.1=1;
        PORTB.0=1; //SCL=1
        delay_us(25);
        // PORTB.1=1;
    //    PORTB.0=0; 
    //    delay_us(5);
     //    while(PINB.1==1);
        PORTB.0=0;
        DDRB.1=1;
        delay_us(40);
          
        
    
      
    
     PORTB.1=0;
     delay_us(25);
     PORTB.0=1;
     delay_us(25);
     PORTB.1=1;  // STOP 
     delay_us(40);
     
                        
      
    }
    
    
    char itoc_read(char ad1)
    {
    int ii;
    char komaki;
      DDRB.0=1;  
      DDRB.1=1;
      PORTB.0=0;
      delay_us(25);
      PORTB.1=1;  // SDA=1; 
      delay_us(25);
      PORTB.0=1; // SCL=1; 
      delay_us(25);
      PORTB.1=0; // START CONDITION 
    //  DDRB.1=0;  // INPUT
      delay_us(25);
      
      PORTB.0=0; // SCL=0 
      
      komaki=0xD0; 
      for(ii=0;ii<8;ii++)
        {
        if((komaki&0x80)!=0) PORTB.1=1;
          else  PORTB.1=0;
        delay_us(25);
        PORTB.0=1; //SCL=1
        delay_us(25);
        komaki=komaki<<1;
        PORTB.0=0;
        } 
         delay_us(25);
        DDRB.1=0; 
       //  PORTB.1=1;
        PORTB.0=1; //SCL=1
        delay_us(25);
        // PORTB.1=1;
    //    PORTB.0=0; 
    //    delay_us(5);
     //    while(PINB.1==1);
        PORTB.0=0;
        DDRB.1=1;
        delay_us(40);
          
      komaki=0;
      
      komaki=ad1; 
      for(ii=0;ii<8;ii++)
        {
        if((komaki&0x80)!=0) 
         PORTB.1=1;
          else  PORTB.1=0;
        delay_us(25);
        PORTB.0=1; //SCL=1
        delay_us(25);
        komaki=komaki<<1;
        PORTB.0=0;
        } 
         delay_us(25);
        DDRB.1=0; 
       //  PORTB.1=1;
        PORTB.0=1; //SCL=1
        delay_us(25);
        // PORTB.1=1;
    //    PORTB.0=0; 
    //    delay_us(5);
     //    while(PINB.1==1);
        PORTB.0=0;
        DDRB.1=1;
        delay_us(40);
        
     PORTB.1=0;
     delay_us(25);
     PORTB.0=1;
     delay_us(25); 
     PORTB.1=1;  // STOP 
     
     delay_us(50);
     
    
      DDRB.0=1;  
      DDRB.1=1;
    //  PORTB.0=0;
     //  delay_us(25);
     //  PORTB.1=1;  // SDA=1; 
    //  delay_us(25);
       PORTB.0=1; // SCL=1; 
    //   delay_us(25);
      PORTB.1=0; // START CONDITION 
    //  DDRB.1=0;  // INPUT
      delay_us(25);
      PORTB.0=0; // SCL=0 
       
       komaki=0;
       komaki=0xD1; 
      for(ii=0;ii<8;ii++)
        {
        if((komaki&0x80)!=0) PORTB.1=1;
          else  PORTB.1=0;
        delay_us(25);
        PORTB.0=1; //SCL=1
        delay_us(25);
        komaki=komaki<<1;
        PORTB.0=0;
        } 
         delay_us(25);
        DDRB.1=0; 
       //  PORTB.1=1;
        PORTB.0=1; //SCL=1
        delay_us(25);
        // PORTB.1=1;
    //    PORTB.0=0; 
    //    delay_us(5);
     //    while(PINB.1==1);
        PORTB.0=0;
        DDRB.1=1;
        delay_us(50);
     
      
         
        komaki=0;
        DDRB.1=0;    // INPUT 
       // PORTB.1=1;
        for(ii=0;ii<7;ii++)
          {
    //      if(PINB.1==1) komaki=komaki+1;
    //      komaki=komaki<<1; 
          PORTB.0=1;
          delay_us(25); 
          if(PINB.1==1)  komaki=komaki+1;
          komaki=komaki<<1;
          PORTB.0=0; //SCL=0
          delay_us(25);
           
          } 
           if(PINB.1==1) komaki=komaki+1;
       //   komaki=komaki>>1; 
        // DDRB.1=1;    
        
    return komaki;
         
     PORTB.1=0;
     delay_us(25);
     PORTB.0=1;
     delay_us(25);
     PORTB.1=1;  // STOP 
     delay_us(40); 
             
    
    }
      
    
     char s1[16];
     char meghdar; 
     
     
    void main(void)
    {
    
    PORTA=0x00;
    DDRA=0x00;
    PORTB=0;
    DDRB=0x00;
    
    PORTC=0x00;
    DDRC=0x00;
    
    PORTD=0x00;
    DDRD=0x00;
    
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;
    
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    
    MCUCR=0x00;
    MCUCSR=0x00;
    
    TIMSK=0x00;
    
    UCSRB=0x00;
    
    
    ACSR=0x80;
    SFIOR=0x00;
    
    ADCSRA=0x00;
    
    SPCR=0x00;
    
    
    TWCR=0x00;
    
    lcd_init(16);
    
    
      
      itoc_write(0x06,0x11); //year 
       lcd_gotoxy(0,0);
      lcd_putsf("test2");
      
     itoc_write(0x05,0x09); //month 
      itoc_write(0x04,0x15); //date 
      meghdar= itoc_read(0x06);
       lcd_gotoxy(7,0);
       lcd_putsf("Test 1");
          sprintf(s1,"%d" ,meghdar);
           lcd_gotoxy(5,1);
          lcd_puts(s1);
    //    sprintf(s1,"%d" ,meghdar);
    //   lcd_gotoxy(5,1);
    //   lcd_puts(s1);
       delay_ms(500);
      //meghdar2=itoc_read(0x05);
     // meghdar3=itoc_read(0x04);
    //  }
    while (1)
       { 
      // itoc_write(0xD0,0x07,0x93);    //control reg 
    
    //   sprintf(s1,"%d" ,meghdar);
    //   lcd_gotoxy(5,1);
    //   lcd_puts(s1);
    //   sprintf(s2,"%d",meghdar2);
    //   lcd_gotoxy(5,1);
    //   lcd_puts(s2); 
    //    sprintf(s3,"%d",meghdar3);
    //   lcd_gotoxy(10,1);
    //   lcd_puts(s3);
    ////   
       }
    }

    #2
    پاسخ : راه اندازی ds1307 و دوربین

    سلام
    نمونه برنامه برای راه اندازی دوربین توسط میکرو زیاد هست. برنامه های دیگه رو تست کنید
    دیتاشیت دوربین رو هم به دقت مطالعه کنید

    دیدگاه

    لطفا صبر کنید...
    X