نمایش نتایج: از 1 به 4 از 4
Like Tree6 لایک
  • 4 Post By poggije
  • 1 Post By poggije
  • 1 Post By alireza71

موضوع: آموزش آی سی 74hc595 در آردوینو

  1. #1
    Member
    تاریخ عضویت
    Jun 2016
    محل سکونت
    ایران عزیر
    نوشته ها
    74

    Cool آموزش تبدیل سه پین به هشت پین با استفاده از آی سی 74hc595 در آردوینو

    با سلام خدمت دوستان عزیز...
    حقیقتش یه دوستی توی سایت stackoverflow این سوال رو پرسیده بود. منم تصمیم گرفتم کمکش کنم و تا من اومدم این آموزش رو بنویسم یه نفر دیگه قشنگ توضیح داده بود و طرف تشکر کرده بود و گفتگو رو بسته بود.
    منم گفتم این آموزش رو واسه بچه های خودمون بفرستم شاید که کمکی بکنه.
    فقط دوستان اینکه من این کار رو بصورت تجربی یاد گرفتم و اینکه رشتمم الکترونیک نیست پس اگه جاهایی اشتباه لپی بود ببخشید دیگه.
    خب اول از همه آی سی 74HC595 که بهش میکن آی سی شیفت ریجستر کارش چیه؟؟ این آی سی هشت تا پایه ی خروجی داره و یه پایه ورودی. شما پایه ورودی رو صفر یه یک میکنین و بهش میگین از با همیت ترین پایه شروع کن یا از کم اهمیت ترین پایه. آی سی هم میاد اون صفر یا یکی که تو پایه ی ورودی هستش رو به ترتیب تو پایه های خودش جایگذاری میکنه. یعنی اینکه سه تا پایه از آردوینو میگیره و تبدیل به هشت پایه میکنه.
    حالا ترتیب پایه هاش:
    کد:
    1. QB
    2. QC
    3. QD
    4. QE
    5. QF
    6. QG
    7. QH
    8. GND
    9. QH~
    10. SRCLR
    11. SRCLK
    12. RCLK
    13. OE
    14. SER
    15. QA
    16. VCC
    حالا قشنگ هر کدوم رو توضیح میدم.
    پایه های QA تا QH پایه های خروجی هستن.
    پایه ی SER پایه ی ورودی هستش.
    پایه ی SRCLK میاد اون چیزی که تو پایه ی SER هستش رو به پایه ی خروجیش انتفال میده. با هر بار دادن پالس به این پایه صفر یا یک موجود در پایه ی SER بترتیب یکی یکی به پایه ی خروجی انتقال داده میشه.
    پایه RCLK صفر ور یک های پایه های خروجی رو فقط نشون میده.
    پایه OE میاد صفر و یک های پایه های خروجی رو انتقال میده. که خودشم صفر فعال هستش. یعنی شما اگه بخواین خروجی های این آی سی رو بگیرین اول باید پایه ی RCLK رو HIGH کنین تا خروجی ها بتونن خونده بشن و بعدش پایه ی OE رو LOW کنین تا خروجی ها انتقال پیدا کنن.
    پایه ی SRCLR کل خروجی ها رو پاک میکنه یعنی صفر میکنه که خودشم صفر فعال هستش.


    حالا دستوری که ما تو آردوینو باهاش کار میکنیم و مخصوص آی سی های شیفت درست شده shiftOut هستش:
    کد:
    shiftOut(SER, SRCLK, [MSBFIRST, LSBFIRST], Value)
    MSBFIRST و LSBFIRST

    MSBFIRST یعنی اول پر اهمینت ترین پایه رو بنویس
    LSBFIRST یعنی اول کم اهمیت ترین پایه رو بنویس

    فقط یادتون باشه که از نظر این آی سی پایه ی QA پر اهمیت ترین پایه اس و پایه ی QH کم اهمیت ترین پایه.

    VALUE

    Value اینجا یه متغییر هستش که باید از نوع byte یاشه که شامل 8 bit هستش.

    حالا مهمترین قسمت آموزش: کاری که این تابع انجام میده اینه که میاد اول متغییر Value رو به باینری تبدیل میکنه مثلا متغییر شممل عدد 140 هستش که میشه:
    کد:
    10001100
    حالا نگا میکنه که شما بهش گفتین اول کدوم پایه رو پر کنه. حالا فرض میکنیم نوشتین MSBFIRST. میاد عدد یک رو میذاره تو پایه ی QA و صفر رو تو QB و صفر رو QC و صفر رو تو QD و یک رو تو QE و یک رو QF و صفر رو تو QG و صفر رو تو QH.
    یعنی خود تابع میاد اتومات هشت تا پالس به پایه ی SRCLK میده و با هر پالس مقدار متناظر داخل متغییر رو به پایه ی مربوطه میده.
    فقط توجه کنید که اگه شما نوشته بودین LSBFIST اول میومد یک رو میداد به QH و ....... و صفر رو به QA

    حالا ما پایه های آی سی رو مقدار دهی کردیم حالا باید ازش بخونیم. برای خوندن اول میایم RCLK رو برابر یک قرار میدیم و OE رو برابر صفر همین. فقط یادتون باشه که قبل از استفاده از تابع shiftOut پایه ی RCLK رو برابر صفر قرار بدین و بعدش بیاین برار یک کنینش.

    خب امیدوارم گیج نشده باشین چون من گیج شدم

    کد پایین یه مثال هستش که میاد ال ای دی ها رو به شکل زیبایی روشن خاموش میکنه مثل :
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: KnightRiderAnim.gif
مشاهده: 172
حجم: 153.6 کیلو بایت

    من کد پایین رو واسه یه سایت انگلیسی نوشته بودم و الانم راستش حوصله ندارم کامنت هاش رو فارسی کنم. راحته حقیقتش:

    کد:
    #define SER_pin 4       // #14 on 74HC595 ; Input
    #define RCLK_pin 5      // #12 on 74HC595 ; Show Registers in Output
    #define SRCLK_pin 6     // #11 on 74HC595 ; Shift Registers from Input to Output
    #define OE_pin 7        // #13 on 74HC595 ; Enable Output ; LOW Enable
    #define SRCLR_pin 8     // #10 on 74HC595 ; Clear Output ; LOW Enable
    // #08 on 74HC595 is GND
    // #16 on 74HC595 is VCC
    
    
    // Output Should Be:
    // &b00000001 = 1
    // &b00000010 = 2
    // &b00000100 = 4
    // &b00001000 = 8
    // &b00010000 = 16
    // &b00100000 = 32
    // &b01000000 = 64
    // &b10000000 = 128
    
    // shiftOut(DataPin, ClockPin, MSBFIRST, VALUE);
    // Value = Value to put in Data Pin.
    // Clock = Clock Pin that Shift from Input to Output
    // MSBFIRST = Start From QA ; LSBFIRST Start From QH
    
    byte Registers = 0;
    
    void writeOnRegisters() {
      Registers = 0;
      
      for( int i = 0; i < 8; i++ ) {
        if( i > 0 ) {
          bitClear(Registers, i - 1);
        }
        bitSet(Registers, i);
        Serial.println(Registers);
        digitalWrite(RCLK_pin, LOW);
        shiftOut(SER_pin, SRCLK_pin, MSBFIRST, Registers);
        digitalWrite(RCLK_pin, HIGH);
        delay(50); // Below this number it will be too fast...
      }
    
      for( int i = 7; i >= 0; i-- ) {
        if ( i < 7 ) {
          bitClear(Registers, i + 1);
        }
        bitSet(Registers, i);
        Serial.println(Registers);
        digitalWrite(RCLK_pin, LOW);
        shiftOut(SER_pin, SRCLK_pin, MSBFIRST, Registers);
        digitalWrite(RCLK_pin, HIGH);
        delay(50); //// Below this number it will be too fast...
      }
      
    }
    
    void setup() {
      Serial.begin(9600);
      delay(5000); //Time to Open Terminal Window
      pinMode(SER_pin, OUTPUT);
      pinMode(RCLK_pin, OUTPUT);
      pinMode(SRCLK_pin, OUTPUT);
    }
    
    void loop() {
      writeOnRegisters();
    }
    دوستان چند روز دیگه یه آموزش واستون میذارم در مورد آی سی مبدل هشت پایه به سریال SDA و SCL هستش که باهاش میشه با استفاده از کتابخونه ی LiquidCrystal_I2C.h یه درایور واسه LCD کاراکتری درست کنین که فقط با دوپایه کار میکنه و نیازی نیست خدا تا پایه بهش وصل کنین.
    راستش رو بگم از وقتی که این آی سی رو یاد گرفتم خیلی دارم با خودم حال میکنم ...

    امیدوترم از این آموزش استفاده ببرین.
    ویرایش توسط poggije : 07-11-2016 در ساعت 04:56 PM

  2. #2
    Member
    تاریخ عضویت
    Jun 2016
    محل سکونت
    ایران عزیر
    نوشته ها
    74
    در ضمن واسه اینکه مثال بالا کار کنه پایه ی 13 آی سی رو به منفی بزنید و پایه ی 10 آی سی رو به مثبت
    لایک کردن

  3. #3
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    با تشکر از شما دوست عزیز

  4. #4
    Junior Member
    تاریخ عضویت
    Aug 2015
    نوشته ها
    4
    سلام.
    ممنون از شما بابت توضیحاتی که دادین. فقط یه چیز رو میتونم اضافه کنم که تراشه های دیگری مانند 74HC164 وجود دارند، ولی خب تراشه 74HC595 کارایی بهتری داره و راحتتر میشه ازش استفاده کرد.
    ضمنا یه سایت پیدا کردم که این تراشه رو راه اندازی کرده و توضیحات خوبی هم آورده. شاید در کنار اطلاعاتی که شما گذاشتید، بتونه به بقیه کمک کنه:

    http://www.sanatbazar.com/tech/index...B3%D8%AA%D8%B1
    لایک کردن

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

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

SEO by vBSEO