اطلاعیه

Collapse
No announcement yet.

شمارنده معکوس ; سون سگمنت دو تایی بوسیله میکرو attyny2313

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

    شمارنده معکوس ; سون سگمنت دو تایی بوسیله میکرو attyny2313

    با سلام خدمت اساتید محترم من روی یک مدار کار میکنم که سه مامویت دارد بعضی از قسمتهاش و تحقیق کردم انجام دادم ولی بخشهای بعدیش و نتونستم درست کنم چون علم این کار را ندارم و با تحقیق تا اینجا خودم و کشوندم قرار با این مدار ledمتصل به pinb.7 به همراه سون سگمنت portb (کاتد مشترک) را روشن کنم و ماموریت پایین
    1-بافشردن کلیدمتصل به pind5 معکوس شمار استارت بشه (عدد اولیه 20) وتا صفر ادامه پیدا کنه هرجا از شمارش هم کلید فشرده بشه استپ کنه و ال ای دی خاموش بشه وبا استارت مجددبه عدد پیشفرض برگرده
    2-بافشردن کلید متصل به pind.3 به عدد موجود در صفحه 10 عدد اضافه کنه تا 90 برسه و بالاتر نره
    3-تغیر مود داشته باشم به چشمکزن و کم نور و تمام نور

    مشکل اولم اینه که با فشار دادن PIN.D.5 فقط یک عدد از کل عدد کم میشه و روی صفر که میرسه قاطی میکنه
    مشکل دومم اینه که وقتی PIND.0 و میزنم ده عدد اضافه میشه و وقتی به 90 میرسه دوباره صفر میشه
    مشکل سومم هم اینه نمیدونم چطوری ال ای دی مو با شمارشگر هماهنگ کنم تا وقتی به صفر رسید خاموش بشه
    کدش هم اینه که نوشتم
    #include <tiny2313.h>
    #include <delay.h>


    // Declare your global variables here


    void main(void)
    {
    int SEGMENT[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 F};
    int n =20;
    int YEKAN;
    int DAHGAN;


    // Input/Output Ports initialization
    // Port A initialization
    // Function: Bit2=In Bit1=In Bit0=In
    DDRA=(0<<DDA2) | (0<<DDA1) | (0<<DDA0);
    // State: Bit2=T Bit1=T Bit0=T
    PORTA=(0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);


    // Port B initialization
    // Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
    DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
    // State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);


    // Port D initialization
    // Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out
    DDRD=(1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);
    // State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=0 Bit0=0
    PORTD=(0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);


    while (1)
    {
    if(PIND.5==0)
    { n--;
    }





    {




    if(PIND.3==0)
    {
    n=n+10;




    }
    while(PIND.3==0)
    {}


    }


    YEKAN = n % 10;
    DAHGAN = (n / 10)%10;
    //////////////////////////////////
    PORTD.0=0;
    PORTD.1=1;
    PORTB = SEGMENT[DAHGAN];
    delay_ms(18);
    /////////////////////////////////
    PORTD.0=1;
    PORTD.1=0;
    PORTB = SEGMENT[YEKAN];
    delay_ms(18);


    }
    }
    لطفا کمکم کنید سپاس
لطفا صبر کنید...
X