اطلاعیه

Collapse
No announcement yet.

کمک در مورد ورودی و خروجی با کدویژن

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

    کمک در مورد ورودی و خروجی با کدویژن

    با سلام خدمت اساتید محترم
    من حمید هستم یه تازه کار علاقمند به میکرو avr :nerd:

    یک atmeg16 را به lcd وصل کردم بر روی پورتهای a تا اینجا مشکلی نبود ولی
    وقتی پورت B0 , b1و b2 را به عنوان ورودی تعریف می کنم تا با اتصال یک میکرو سوئیچ به هر کدام از این سه پایه پورت B
    علاوه بر اینکه بر روی lcd پیغام مورد نظر منو بنویسه و هم بر روی پور های D4 , D5 , D6 بتونه LED ها را که گذاشتم روشن کنه

    اما می بینم که با اتصال هرکدام از میکرو سوئیچ ها بر روی lcd اون چیزی رو که می خوام می نویسه ولی پورت خروجی مرتبا قطع و وصل میشه
    و led اون پورت هی چشمک می زنه :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry:

    در صورتی که باید یا روشن باشه یا خاموش برنامه را با کدویژن نوشتم لطفا ببینید اشکال کار من کجاست :cry:

    hamid_adel58@yahoo.com


    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V1.24.4 Standard
    Automatic Program Generator
    © Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    e-mailffice@hpinfotech.com

    Project :
    Version :
    Date : 2005/06/26
    Author : Amir
    Company : Adel
    Comments:


    Chip type : ATmega16
    Program type : Application
    Clock frequency : 1.000000 MHz
    Memory model : Small
    External SRAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega16.h>

    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x1B ;PORTA
    #endasm
    #include <lcd.h>
    #include <delay.h>
    #include <stdio.h>
    int x,y,z;
    char txt[20];

    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTA=0x00;
    DDRA=0xFF;

    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x00;

    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=0 State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x80;

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

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;

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

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // LCD module initialization
    lcd_init(16*2);

    while (1)
    {
    // Place your code here
    x=~PINB.0;
    y=~PINB.1;
    z=~PINB.2;

    lcd_clear();
    lcd_gotoxy(0,0);
    sprintf(txt,"B0=%d B1=%d B2=%d ",x,y,z);
    lcd_puts(txt);

    if (x==1)
    {
    lcd_gotoxy(0,1);
    lcd_putsf("Hello"
    PORTD.5=1;
    }
    else
    {
    PORTD.5=0;
    }


    if (y==1)
    {
    lcd_gotoxy(0,1);
    lcd_putsf("Amir"

    PORTD.6=1;
    }
    else
    {
    PORTD.6=0;
    }


    if (z==1)
    {
    lcd_gotoxy(0,1);
    lcd_putsf("Hamid"

    PORTD.7=1;
    }
    else
    {
    PORTD.7=0;
    }


    delay_ms(200);

    };
    }
    به امید اینکه در پناه یزدان هر روز موضوع جدیدی در زندگی یاد بگیریم و بتوانیم از آن به بهترین شکل استفاده کنیم

    #2
    پاسخ : کمک در مورد ورودی و خروجی با کدویژن

    سلام دوست عزیز. برنامتون چند تا مشکل داره.
    اول اینکه D.5 و D.6 رو خروجی تعریف نکردید.
    دوم اون delay آخر برنامه است که باعث چشمک زدن LED میشه.
    سوم اینکه وقتی یه کلید فشرده بشه مدام اسکن میشه و فشرده شده تشخیص داده میشه ؛ در حالی که بهتره تغییر حالت دادن کلید اسکن بشه.
    برای رفعش ان کار ها رو بکن :
    1_ D.5 و D.6 و D.7 رو خروجی و مقدارشونو صفر کن.
    2- B.0 و B.1 و B.2 رو ورودی و Pull Up کن.
    3- از نمونه برنامه زیر استفاده کن:
    #define key 1 PINB.0
    #define LED1 PORTD.5
    bit key1_old;

    if(key1_old ^ key1)
    {
    key1_old=key1;
    if(key1)
    {
    LED1=1;
    lcd_putsf("Hello"
    }
    else
    {
    LED1=0;
    }
    }
    این کار رو برای بقیه کلید ها و LED ها هم تکرار کن.

    امیدوارم مفید بوده باشه. :nice:
    خدايا
    من در كلبه ي فقيرانه ي خود چيزي دارم كه تو در عرش كبريايي خود نداري
    من چون تويي دارم و تو چون خودي نداري
    امام سجاد (ع)

    دیدگاه


      #3
      پاسخ : کمک در مورد ورودی و خروجی با کدویژن

      سلام ....................

      درسته برنامتون چند تا اشکال داشت . اما یک بار پروژه ای که دارید انجام میدید رو توضیح بدین؛ (درست متوجهش نشدم) تا ادامه بدیم . موفق باشید .
      دوستان! مدتی کمتر به سایت میام ..

      دیدگاه


        #4
        پاسخ : کمک در مورد ورودی و خروجی با کدویژن


        با سلام خدمت تمامی اساتید محترم : :nerd: :nerd:
        از اینکه وقت گذاشتید تا به من کمک کنید از همتون ممنونم :applause: :applause: :applause: :applause:

        من در این پروژه می خواستم با فشار دادن میکرو سوئیچ که بر روی پورت b نصب شده . هم بتونم بر روی lcd متن مورد نظر را بنویسم و هم اینکه یک led را که بر روی پورت d نصب شده را هم روشن کنم


        نمونه برنامه را گذاشتم که فرمودید اشکالاتی داره :cry2: :cry2: :cry2: :cry2:

        من امشب راه حل هایی را که پیشنهاد داده اید رو انجام می دم

        نتیجه را حتما بهتون خبر میدم

        با تشکر ازهمه دوستان :agree: :agree: :agree: :agree: :agree: :agree:
        به امید اینکه در پناه یزدان هر روز موضوع جدیدی در زندگی یاد بگیریم و بتوانیم از آن به بهترین شکل استفاده کنیم

        دیدگاه


          #5
          پاسخ : کمک در مورد ورودی و خروجی با کدویژن

          بله تاخیر برنامه تون زیاده.
          دلا یاران سه قسمند ار بدانی
          زبانی اند و نانی اند و جانی
          به نانی نان بده از در برانش
          محبت کن به یاران زبانی
          و لیکن یار جانی را به دست آر
          به جانش جان بده تا می توانی

          دیدگاه


            #6
            پاسخ : کمک در مورد ورودی و خروجی با کدویژن

            از همه دوستان ممنونم :agree: :agree: :agree: :agree: :agree:

            با راهنمایی های شما درست شد

            :wow: :wow: :wow: :wow: :wow: :wow: :wow: :wow: :wow: :wow: :applause: :applause: :applause: :applause:


            خیلی خیلی خیلی از همه ی دوستان خوبم متشکرم
            :nerd: :nice: :smile: :biggrin:
            به امید اینکه در پناه یزدان هر روز موضوع جدیدی در زندگی یاد بگیریم و بتوانیم از آن به بهترین شکل استفاده کنیم

            دیدگاه

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