اطلاعیه

Collapse
No announcement yet.

dip swich & 7 segment

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

    dip swich & 7 segment

    سلام من میخوام با یه دیپ سوییچ 8 حالته به یک 7 segment مقدار دهی کنم این برنامه رو نوشتم ولی کار نمیکنه میتونید لطفا بگید مشکل کجاس؟
    #include <mega16.h>
    #include <delay.h>

    void main(void)
    {
    char x1,x2,x3,x4,y1,y2,y3,y4,led,a,b,c,d,e,f,g;
    PORTA=0x00;
    DDRA=0x00;
    PORTC=0x00;
    DDRC=0xFF;

    while (1)
    {
    x4=PINA.0;
    x3=PINA.1;
    x2=PINA.2;
    x1=PINA.3;
    y4=PINA.4;
    y3=PINA.5;
    y2=PINA.6;
    y1=PINA.7;
    led=x4&(x3|(!x2&((x3&!y4)|(x3&!x1) ))|(y4&!y3));
    a=(!x2&!x4)|(x2&x3)|(!x1&x3)|(x1&! x4)|(!x1&x2&x4)|(x1&!x2&!x3);
    b=(!x1&!x2)|(!x2&!x3)|(!x2&!x4)|(!x1&a mp;!x3&!x4)|(x1&!x3&x4)|(!x1&x3&am p;x4);
    c=(!x1&x2)|(x1&!x2)|(!x3&x4)|(!x2& !x3)|(!x2&x4);
    d=(x1&!x3)|(!x2&x3&x4)|(x2&!x3&amp ;x4)|(x2&x3&!x4)|(!x1&!x2&!x4);
    e=(!x2&!x4)|(x1&x2)|(x3&!x4)|(x1&x 3);
    f=(!x3&!x4)|(x1&!x2)|(x2&!x4)|(x1& x3)|(!x1&x2&!x3);
    g=(x1&!x2)|(!x2&x3)|(x3&!x4)|(x1&x 4)|(!x1&x2&!x3);
    PORTC.0=a;
    PORTC.1=b;
    PORTC.2=c;
    PORTC.3=d;
    PORTC.4=e;
    PORTC.5=f;
    PORTC.6=g;
    PORTC.7=led;
    delay_ms(200);

    }
    }


    ضمنا چون 7 segment اند بود یعنی با پایه ثابت مثبت روشن میشد من سر زیمن رو به ورودی های دیپ سوییچ دادم و خروجی دیپ سوییچ رو به میکرو دادم

    #2
    پاسخ : dip swich & 7 segment

    سلام...
    کد هات رو توی تگ کد قرار بده که راحت بشه خوندش
    قبل از اینکلود کردن Delay.h فرکانس رو تعریف کن...اینجوری توابع delay میدونن که چند سیکل باید خالی کار کنند!

    برنامه ت طولانی بود نتونستم بخونمش...
    اگه میخوای با دیپ سوییچ به یه سون سگمنت مقدار بدی نیازی به 8 تایی نیست....با یه 4تایی هم میشه این کار رو کرد...
    حالا اگه قصد داری 8تایی وصل کنی یکی از پورت ها رو ورودی کن دیپ سوییچ رو وصل کن بهش...پایه های دیگه رو به زمین وصل کن و یادت باشه پول پ اون پورت ورودی رو فعال کنی....
    حالا کافیه تو برنامه ت ورودی رو از اون پورت بخونی....میشه یه کد BCD ....اون کد رو بیار تو مینای 10....یه آرایه هم تعریف کن که کدهای سون سگمنت رو داشته باشه...
    حالا کافیه یه پورت دیگه که خروجی تعریف کردی رو به سون سگمنت وصل کنی و تو برنامه ت کدهای اون آرایه رو با اون پورت مساوی کنی...
    نمیدونم تونستم خوب توضیح بدم یا نه!!!
    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

    www.intelart.ir


    ساخت کنترلر دما PID فازي با AVR [آموزشی]

    دیدگاه


      #3
      پاسخ : dip swich & 7 segment

      نوشته اصلی توسط punisher.x64
      سلام...
      کد هات رو توی تگ کد قرار بده که راحت بشه خوندش
      قبل از اینکلود کردن Delay.h فرکانس رو تعریف کن...اینجوری توابع delay میدونن که چند سیکل باید خالی کار کنند!

      برنامه ت طولانی بود نتونستم بخونمش...
      اگه میخوای با دیپ سوییچ به یه سون سگمنت مقدار بدی نیازی به 8 تایی نیست....با یه 4تایی هم میشه این کار رو کرد...
      حالا اگه قصد داری 8تایی وصل کنی یکی از پورت ها رو ورودی کن دیپ سوییچ رو وصل کن بهش...پایه های دیگه رو به زمین وصل کن و یادت باشه پول پ اون پورت ورودی رو فعال کنی....
      حالا کافیه تو برنامه ت ورودی رو از اون پورت بخونی....میشه یه کد BCD ....اون کد رو بیار تو مینای 10....یه آرایه هم تعریف کن که کدهای سون سگمنت رو داشته باشه...
      حالا کافیه یه پورت دیگه که خروجی تعریف کردی رو به سون سگمنت وصل کنی و تو برنامه ت کدهای اون آرایه رو با اون پورت مساوی کنی...
      نمیدونم تونستم خوب توضیح بدم یا نه!!!
      دادا راستش من تازه کارم زیاد نفهمیدم :eek: یکم بیشتر راهنمایی میکنی؟

      دیدگاه


        #4
        پاسخ : dip swich & 7 segment

        شما میخوای با دیپ سوییچ یه عدد باینری رو بدی به میکرو به جاش یه عدد بین 0 تا 9 رو سون سگمنت نشون بدی؟
        اگه آره بگو تا بگم چیکار کنی
        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

        www.intelart.ir


        ساخت کنترلر دما PID فازي با AVR [آموزشی]

        دیدگاه


          #5
          پاسخ : dip swich & 7 segment

          نوشته اصلی توسط punisher.x64
          شما میخوای با دیپ سوییچ یه عدد باینری رو بدی به میکرو به جاش یه عدد بین 0 تا 9 رو سون سگمنت نشون بدی؟
          اگه آره بگو تا بگم چیکار کنی
          اره دادا در حقیقت میخوام bcd بدم و یه عدد بین صفر تا 9 نشن بدم برنامرو هم روش خیلی کار کردم اگه خوندن اون برات سخته میخوای عکسشو بذارم؟i

          دیدگاه


            #6
            پاسخ : dip swich & 7 segment

            سلام دوست عزیز
            پایه های ورودی دیپ سوئیچ رو پول پ کردی؟
            اگه نه اول برنامه PORTA=0xFF رو قرار بده
            موفق باشی
            زندگي را تو بساز ،
            نه بدان ساز که سازند و پذيري بي حرف ،
            زندگي يعني جنگ ، تو بجنگ ،
            زندگي يعني عشق ، تو بدان عشق بورز.

            دیدگاه


              #7
              پاسخ : dip swich & 7 segment

              سلام...

              اول کار یه آرایه واسه خروجی سون سگمنت ها تعریف کن(بعد در موردش توضیح میدم):

              کد:
              flash unsigned char seg_a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f}; // Common Anode
              یه متغیر از نوع char به نام num تعریف کن

              ببین اول باید از یه پورت به عنوان ورودی استفاده کنی...البته ما 4 نیبل بالا یا پایینشو نیاز داریم...بعد باید پول پش کنی...چجوری؟
              اینجوری:

              کد:
              ِِDDRA=0x00;
              PORTA=0xff;
              بعدش باید یه پورت دیگه رو واسه 7سگمنت در نظر بگیری:
              خودت که میدونی چون سون سگمنت آند مشترک هست باید وضعیت اولیه رو 1 کنی که سگمنت ها روشن نشن
              کد:
              DDRB=0xff;
              PORTB=0xff;
              بعدش کافیه تو حلقه دائم برنامه پورت A رو بخونی و به تناسب اون رو پورت B ، پین های سون سگمنت رو تغییر بدی :

              کد:
              while(1)
              {
              num=PINA;
              num=~num;
              PORTB=seg_a[num%10];
              }
              اون کدهایی که واسه سون سگمنت آند مشکترک گداشتم به ترتیب از 0 تا 9 هستن...یعنی اندیس آرایه عدد ده دهی هست و محتوای اون اندیس کدهای لازم برای نشون دادن اون عدد ده دهی رو سون سگمنت هست...
              عمدا کل کد رو نذاشتم تا خودت متوجه بشی هر قسمت چیکار میکنه..(البته تقریبا همشو گذاشتم دیگه!!!)
              تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

              www.intelart.ir


              ساخت کنترلر دما PID فازي با AVR [آموزشی]

              دیدگاه

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