ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 1 از 1
  1. #1
    2013/10/26
    11
    1

    مشکل گیرنده مادون قرمز

    با عرض سلام خدمت همگی دوستان. یک کد مربوط به ریموت مادون قرمز هست که نوشتم و هنوز نتونستم ایرادش را رفع کنم. در این برنامه قرار هست توسط یک کنترل مادون قرمز پلییر ماشین ،یک رله و دو ال ای دی را در گیرنده روشن و خاموش کنم. نمیدونم ایرادش کجاست ، لطف می کنید راهنمایی بفرمائید.


    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <mega32a.h>
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <alcd.h>
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <delay.h>
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <stdio.h>


    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] green PORTC.1
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] yel PORTC.0
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] rly PORTD.5
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] bl PORTC.2
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] LCD_CONTROL 0x08
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] LCD_DISPLAY 0x04
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] LCD_CURSOR 0x02
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] LCD_BLINK 0x01
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] LCD_CURSOR_ON (LCD_CONTROL | LCD_DISPLAY | LCD_CURSOR | LCD_BLINK)
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] LCD_CURSOR_OFF (LCD_CONTROL | LCD_DISPLAY)




    // Declare your global variables here
    unsigned int tik;
    char byt;
    bit repeat_flag;
    bit start_flag;
    char address;
    char command;
    char address_1;
    char command_1;
    char address_0;
    char command_0;
    char a;
    char b;
    char z;
    bit xz;
    char s[20] = "MAN ";
    char lcd_buffer[16];


    void ok()
    {
    if (z == 1)
    {
    TCNT1 = 18650;
    TCCR1B=0x05;
    rly = 0;
    }
    if (z== 2)
    {
    TCNT1 = 18650;
    TCCR1B=0x05;
    rly = 1;
    }
    }


    void Man_aut()
    {
    z=z+1;
    if (z> 2) z = 0;
    if (z==1) sprintf( s , "Off_T");
    if (z==2) sprintf( s , "On_T");
    if (z==0) sprintf( s , "Man");
    delay_ms(300);
    }




    void Rly_off()
    {
    rly = 1;
    delay_ms(300);
    }


    void Green_led()
    {
    if (green==1)
    {
    green=0;
    }
    else
    {
    green=0;
    }
    delay_ms(300);
    }

    void Yel_led()
    {
    if (yel==1)
    {
    yel=0;
    }
    else
    {
    yel=1;
    }
    delay_ms(300);
    }



    void On_off()
    {
    dd:
    if (command == 162)
    {
    xz=~xz;
    if (xz == 1)
    {
    bl = 1;
    lcd_clear();
    lcd_puts("ON");
    }
    else
    {
    lcd_clear();
    lcd_puts( " Good By ");
    TCCR1B=0x00;
    TCNT1 = 0;
    delay_ms(2000);
    a = 1;
    bl = 0;
    rly = 1;
    green = 0;
    yel = 0;
    }
    delay_ms(300);
    }
    _lcd_write_data (LCD_CURSOR_OFF);

    if (xz != 1) goto dd;
    }

    void Vol_up()
    {
    a=a+1;
    delay_ms(120);
    if (a > 120) a = 120;
    }


    void Vol_down()
    {
    a=a-1;
    delay_ms(120);
    if (a < 1) a=1;
    if (a > 120) a=1;
    }


    void Rly_on()
    {
    if (z==2)
    {
    TCCR1B=0x00;
    rly = 0;
    }
    if(z==1)
    {
    TCCR1B=0x05;
    }
    if (z==0)
    {
    TCCR1B=0x00;
    rly = 0;
    }
    delay_ms(300);
    }

    void Read_command()
    {
    if (command==162) On_off();
    if (command==168) Vol_up();
    if (command==224) Vol_down();
    if (command==144) Man_aut();
    if (command==104) ok();
    if (command==194) Rly_on();
    if (command==226) Rly_off();
    if (command==2) Yel_led();
    if (command==34) Green_led();
    }






    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    TCCR0=0x04;


    if (tik >= 139)
    {
    if (tik < 150)
    {
    address = 1;
    repeat_flag = 0;
    start_flag = 1;
    address_1 = 0;
    command_1 = 0;
    address_0 = 0;
    command_0 = 0;
    }
    }

    if (tik >= 116)
    {
    if (tik < 139)
    {
    address = 2;
    repeat_flag = 1;
    start_flag = 0;
    }
    }

    if (tik >= 22)
    {
    if (tik < 116)
    {
    if (start_flag == 1)
    {
    byt=byt+1;

    if (byt < 9)
    {
    address_1=address_1 * 2;
    address_1 = address_1 + 1 ;
    }

    if (byt >= 9)
    {
    if (byt < 17)
    {
    address_0=address_0 * 2;
    address_0 = address_0 + 1;
    }
    }

    if (byt >= 17)
    {
    if (byt < 25)
    {
    command_1=command_1 * 2;
    command_1 = command_1 + 1;
    }
    }

    if (byt >= 25)
    {
    command_0=command_0 * 2;
    command_0 = command_0 + 1;
    }

    }
    }
    }

    if (tik >= 10)
    {
    if (tik < 22)
    {
    if (start_flag == 1)
    {
    byt=byt+1;
    if (byt < 9)
    {
    address_1=address_1 * 2;
    }

    if (byt >= 9)
    {
    if (byt < 17)
    {
    address_0 =address_0 * 2;
    }
    }

    if (byt >= 17)
    {
    if (byt < 25)
    {
    command_1 =command_1 * 2;
    }
    }

    if (byt >= 25)
    {
    command_0 =command_0 * 2;
    }
    }
    }
    }


    tik = 0;


    if (byt == 32)
    {
    address = address_1;
    command = command_1;
    byt = 0;
    repeat_flag = 0;
    start_flag = 0;
    TCCR0=0x00;
    }
    }


    // Timer 0 overflow interrupt service routine
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    TCNT0 = 253;


    tik=tik+1;
    if (tik >= 1200)
    {
    tik = 0;
    repeat_flag = 0;
    start_flag = 0;
    address_1 = 0;
    command_1 = 0;
    address_0 = 0;
    command_0 = 0;
    address = 0;
    command = 0;
    TCCR0=0x00;
    }
    }


    // Timer1 overflow interrupt service routine
    interrupt [TIM1_OVF] void timer1_ovf_isr(void)
    {
    TCCR1B=0x00;
    b=b+1;
    if (b > 9)
    {
    a=a-1;
    b = 0;
    }
    if (a < 1)
    {
    if(z== 1)
    {
    a = 0;
    b = 0;
    Rly_off();
    }
    if (z==2)
    {
    a = 0;
    b = 0;
    Rly_on();
    }
    }

    if (a >= 1)
    {
    TCNT1 = 18650;
    TCCR1B=0x05;
    }
    }











    void main(void)
    {
    PORTC=0x00;
    DDRC=0xFF;
    PORTD=0x00;
    DDRD=0xA0;


    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 31.250 kHz
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;


    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 7.813 kHz
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: On
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;


    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Falling Edge
    // INT1: Off
    // INT2: Off
    GICR|=0x40;
    MCUCR=0x02;
    MCUCSR=0x00;
    GIFR=0x40;


    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x05;


    // Alphanumeric LCD initialization
    // Connections are specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTA Bit 2
    // RD - PORTA Bit 1
    // EN - PORTA Bit 3
    // D4 - PORTA Bit 4
    // D5 - PORTA Bit 5
    // D6 - PORTA Bit 6
    // D7 - PORTA Bit 7
    // Characters/line: 16
    lcd_init(16);


    // Global enable interrupts
    [URL="http://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=asm"]#asm[/URL] ("sei")



    rly=1;
    lcd_puts (" IR Receiver");
    delay_ms(2000);
    lcd_clear();
    On_off();


    while (1)
    {
    if (address > 0)
    {
    lcd_gotoxy(1,0);
    sprintf(lcd_buffer,"%d ", command);
    lcd_puts(lcd_buffer);
    if (xz == 1) Read_command();
    }
    lcd_gotoxy(0,5);
    sprintf(lcd_buffer,"Mode=%d ", s);
    lcd_puts(lcd_buffer);
    lcd_gotoxy(1,5);
    sprintf(lcd_buffer,"Time=%d ", a);
    lcd_puts(lcd_buffer);
    lcd_gotoxy(1,14);
    sprintf(lcd_buffer,"%d ", b);
    lcd_puts(lcd_buffer);
    }
    }
    ویرایش توسط اشکان غفارزاده : 2016/09/23 در ساعت 18:55
نمایش نتایج: از 1 به 1 از 1

موضوعات مشابه

  1. گیرنده مادون قرمز
    توسط m.r.M.R در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2018/05/24, 14:16
  2. گیرنده مادون قرمز
    توسط hzohani در انجمن مباحث دیگر علم الکترونیک
    پاسخ: 2
    آخرين نوشته: 2013/04/06, 14:51
  3. گیرنده مادون قرمز
    توسط balabe در انجمن میکروکنترلرهای AVR
    پاسخ: 0
    آخرين نوشته: 2011/06/18, 18:56
  4. سنسور گیرنده مادون قرمز
    توسط ali-electoronic در انجمن سنسورها
    پاسخ: 16
    آخرين نوشته: 2011/04/10, 07:17
  5. رستنده گیرنده مادون قرمز
    توسط xcubeali در انجمن مدار هاي ديجيتال
    پاسخ: 3
    آخرين نوشته: 2010/08/09, 18:38

کاربرانی که این تاپیک را مشاهده کرده اند: 1

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •