در این آموزش قصد داریم به راه اندازی شیفت رجیستر 74HC595 بپردازیم . 74HC595 یک شفیت رجیستر 8 بیتی SIPO با فرکانس بالا است که می توانید از آن برای توسعه خروجی های آردوینو استفاده کنید . این شیفت رجیستر را می توانید از طریق سه پین کنترل کنید . همچنین امکان سری کردن چندین 74HC595 وجود دارد . در ارتباط های یک طرفه همانند راه اندازی LCD های کاراکتری به راحتی می توانید از این شیفت رجیستر اسفتاده کنید .

در تصویر زیر پایه های 74HC595 نشان داده شده است :

 

پین های این IC به شرح زیر است :

1- پین های Qa تا Qh خروجی های ماژول هستند .پین ‘Qh نیز معکوس Qh می باشد که از آن برای توسعه ماژول استفاده می شود .

2- پین های Vcc و GND به ترتیب تغذیه و زمین ماژول هستند .

3-پین SER ورودی دیتا است که از طریق آن دیتا به داخل شیفت رجیستر شیفت داده می شود .

4-QE (پین 13 ) این پین جهت فعال و غیر فعال کردن خروجی است که با صفر شدن آن خروجی فعال و با یک شدن آن خروجی غیر فعال می شود .

5-RCLK این پین وظیفه قرار دادن داده در خروجی را دارد . با یک پالس بارونده به این پین دیتا در خروجی قرار خواهد گرفت . در پایان هر ارسال این پین یک بار باید تغییر وضعیت پیدا کند .

6-SRCLK پین ورودی پالس ساعت می باشد . پین 10 معکوس این پین است .

 

 

راه اندازی 74HC595 با آردوینو :

برای راه اندازی این شیفت رجیستر ابتدا پین RCLK را در وضعیت صفر قرار داده و سپس به ازای هر بیت از دیتای وارده به پین SER ،باید یک پالس بر روی پین SRCLK قرار داده شود . در پایان ارسال هشت بیت ، با یک شدن پین RCLK دیتا در خروجی شیفت رجیستر قرار خواهد گرفت .

در تصویر زیر نحوه اتصال 74HC595 به آردوینو نشان داده شده است :

کد های آردوینو :

int latchPin = 5;	// Latch pin of 74HC595 is connected to Digital pin 5
int clockPin = 6;	// Clock pin of 74HC595 is connected to Digital pin 6
int dataPin = 4;	// Data pin of 74HC595 is connected to Digital pin 4

byte leds = 0;		// Variable to hold the pattern of which LEDs are currently turned on or off

/*
 * setup() - this function runs once when you turn your Arduino on
 * We initialize the serial connection with the computer
 */
void setup() 
{
  // Set all the pins of 74HC595 as OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);
}

/*
 * loop() - this function runs over and over again
 */
void loop() 
{
  leds = 0;	// Initially turns all the LEDs off, by giving the variable 'leds' the value 0
  updateShiftRegister();
  delay(500);
  for (int i = 0; i < 8; i++)	// Turn all the LEDs ON one by one.
  {
    bitSet(leds, i);		// Set the bit that controls that LED in the variable 'leds'
    updateShiftRegister();
    delay(500);
  }
}

/*
 * updateShiftRegister() - This function sets the latchPin to low, then calls the Arduino function 'shiftOut' to shift out contents of variable 'leds' in the shift register before putting the 'latchPin' high again.
 */
void updateShiftRegister()
{
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, leds);
   digitalWrite(latchPin, HIGH);
}

 

منبع : https://lastminuteengineers.com/74hc595-shift-register-arduino-tutorial/

Tags:
About Author: USER_4