مسجلات الازاحة Shift Register
صفحة 1 من اصل 1
مسجلات الازاحة Shift Register
اهلا وسهلا بكم من جديد في منتدى المعهد التقني المتوسط
--------------------------------------------------
اليوم سنتحدث سنسلط الضوء على فكرة على درجة كبيرة من الأهمية تساعدنا على قيادة عدد كبير من البواعث الضوئية LED ألا و هو مسجلات الإزاحة Shift Register
ا هو مسجل الإزاحة Shift Register ؟
هو مجموعة متسلسلة من القلابات flip flop التي لها نفس دور الساعة CLK , و خرجها متصل بقلاب آخر , هذا يعمل على نقل البيانات بين المسجلات بتسلسل , و تنتقل البيانات عندما يتغير دور الساعة صعوداً أو هبوطاً .
تنقسم مسجلات الإزاحة إلى عدة أنواع و هي
[ltr]1. Serial in , serial out " SISO "[/ltr]
[ltr]2. Serial in ,parallel out "SIPO"[/ltr]
[ltr]3. Parallel in ,serial out "PISO"[/ltr]
[ltr]Our shift register used as " SISO " or "SIPO"[/ltr]
حيث :
datapin: هو المدخل المسؤول عن إخراج البيانات بت بت .
clockpin: المدخل المسؤؤل عن دخل الساعة المنظم للمتحكم , و يتغير الخرج عندما يقدح المسجل باستخدام هذا المدخل .
bitorder: هو خيار يحدد طريقة نقل المعلومات إلى المسجل
إما أن تكون MSBFIRST أي ابتداءاً من البت ذو القيمة الأعلى اهمية للأقل أهمية "من اليسار لليمين "
أو أن تكون LSBFIRST أي من البت الأقل أهمية للأعلى أهمية " من اليمين لليسار"
الوضع الإفتراضي يكون نقل البيانات MSBFIRST
value: هي القيمة التي ننوي إظهارها على الخرج .
----------------------------------------------------------------------------
--------------------------------------------------
اليوم سنتحدث سنسلط الضوء على فكرة على درجة كبيرة من الأهمية تساعدنا على قيادة عدد كبير من البواعث الضوئية LED ألا و هو مسجلات الإزاحة Shift Register
ا هو مسجل الإزاحة Shift Register ؟
هو مجموعة متسلسلة من القلابات flip flop التي لها نفس دور الساعة CLK , و خرجها متصل بقلاب آخر , هذا يعمل على نقل البيانات بين المسجلات بتسلسل , و تنتقل البيانات عندما يتغير دور الساعة صعوداً أو هبوطاً .
تنقسم مسجلات الإزاحة إلى عدة أنواع و هي
[ltr]1. Serial in , serial out " SISO "[/ltr]
[ltr]2. Serial in ,parallel out "SIPO"[/ltr]
[ltr]3. Parallel in ,serial out "PISO"[/ltr]
[ltr]Our shift register used as " SISO " or "SIPO"[/ltr]
سنستخدم مسجل الإزاحة 74HC595 و الذي سيكون له
استخدامات كثيرة في الدروس القادمة , نظراً لسهولة برمجته .
استخدامات كثيرة في الدروس القادمة , نظراً لسهولة برمجته .
سنشرح كل وظيفة كل مدخل من مداخل مسجل الإزاحة .
الرجل # 14:
الرجل المسؤولة عن إدخال البيانات تسلسلياً . يتم إزاحة
البيانات على هذا المدخل
البيانات على هذا المدخل
الرجل رقم 13 "تمكين الخرج ":
هذا المدخل مسؤول عن إظهار البيانات على المخرج ، يجب
أن تكون هذا الرجل في وضعية منخفض LOW حتى
يظهر الخرج.
الرجل # 12 :
Storage latch input تقوم هذه الرجل بوظيفة إمساك
البيانات و تخزينها عند تتحول حالتها إلى وضع مرتفع HIGH .
الرجل # 11 :
دخل الساعة , عندما تكون في وضع مرتفع HIGH تسمح
للبيانات على الدخل التسلسلي" مدخل #14 " بإزاحة بيانات
بمقدار 8 بت .
الرجل # 10 :
مدخل التصفير RESET
إذا كان هذا المدخل بوضع منخفض LOW فإن الخرج يكون
قيمته صفر .
لذلك نضع هذا المربط على الوضع المرتفع HIGH إذا أردنا
ظهور نتائج المسجل .
الرجل# 9:
تسمى Serial Data Output تعمل على إزاحة بيانات الخرج
"8بت" التي تظهر باتجاه مسجل إزاحة آخر , أي بأختصار لو
أردنا شبك أكثر من مسجل إزاحة واحد يمكننا ذلك بوصل هذه
الرجل مع الرجل #14 في المسجل الآخر .
الأرجل 15 , 1-7 :
أرجل الخرج " 8 بت " .
يمكنك العودة إلى النشرة الفنية الحصول على مزيد من
المعلومات.
باستخدام مسجل الإزاحة , نحتاج فقط ل 3-4 أرجل ففقط من
المتحكم للتحكم ب 8 بت و هذا يعتبر مفيد جداً لو أردنا
استخدام المتحكم في تطبيقات متعددة .
لنبدأ الآن بتجهيز معداتنا , لنبدأ استعمال هذه الدارة المتكاملة .
سنحتاج لهذه التجربة المكونات التالية :
1) بطاقة أردوينو .
2)LED عدد 8
3) مسجل إزاحة من النوعShift register 74HC595
4)بعض الأسلاك Some wires
5)مقاومة 100Ohm عدد 8
6)مكثق 100nF
7) لوحة تعليمية مثقوبة BreadBoard
الشكل أدناه يبين توصيل الدارة كهربائيا .
و هذا مخطط الدارة لمن يستصعب من فهم المخطط أعلاه
الآن و قبل البدء بالبرمجة , سأوضح امر مهم جديد , ألا وهو أمر shiftOut
قد فاتني ذكر أمر هو أن مسجل الإزاحة 74595 , تتم برمجته
بطريقة التخاطب الشهيرة SPI و هي اختصار Serial
Peripheral Interface و هو طريقة
لنقل البيانات تزامنياً , يمكن بداية الإطلاع على مكتبتها على
الرابط هنا
نعود للأمر shiftOut , هذا الأمر هو الذي سنقوم من خلاله
بنقل البيانات من المتحكم إلى مسجل الإزاحة .
الطريقة سهلة , يكتب الكود الخاص بمقل البيانات على الصيغة
التالية
[ltr] shiftOut(datapin,clockpin,bitorder,value);[/ltr]
أن تكون هذا الرجل في وضعية منخفض LOW حتى
يظهر الخرج.
الرجل # 12 :
Storage latch input تقوم هذه الرجل بوظيفة إمساك
البيانات و تخزينها عند تتحول حالتها إلى وضع مرتفع HIGH .
الرجل # 11 :
دخل الساعة , عندما تكون في وضع مرتفع HIGH تسمح
للبيانات على الدخل التسلسلي" مدخل #14 " بإزاحة بيانات
بمقدار 8 بت .
الرجل # 10 :
مدخل التصفير RESET
إذا كان هذا المدخل بوضع منخفض LOW فإن الخرج يكون
قيمته صفر .
لذلك نضع هذا المربط على الوضع المرتفع HIGH إذا أردنا
ظهور نتائج المسجل .
الرجل# 9:
تسمى Serial Data Output تعمل على إزاحة بيانات الخرج
"8بت" التي تظهر باتجاه مسجل إزاحة آخر , أي بأختصار لو
أردنا شبك أكثر من مسجل إزاحة واحد يمكننا ذلك بوصل هذه
الرجل مع الرجل #14 في المسجل الآخر .
الأرجل 15 , 1-7 :
أرجل الخرج " 8 بت " .
يمكنك العودة إلى النشرة الفنية الحصول على مزيد من
المعلومات.
باستخدام مسجل الإزاحة , نحتاج فقط ل 3-4 أرجل ففقط من
المتحكم للتحكم ب 8 بت و هذا يعتبر مفيد جداً لو أردنا
استخدام المتحكم في تطبيقات متعددة .
لنبدأ الآن بتجهيز معداتنا , لنبدأ استعمال هذه الدارة المتكاملة .
سنحتاج لهذه التجربة المكونات التالية :
1) بطاقة أردوينو .
2)LED عدد 8
3) مسجل إزاحة من النوعShift register 74HC595
4)بعض الأسلاك Some wires
5)مقاومة 100Ohm عدد 8
6)مكثق 100nF
7) لوحة تعليمية مثقوبة BreadBoard
الشكل أدناه يبين توصيل الدارة كهربائيا .
صورة تبين التوصيل , مع الأنتباه إلى أن المكثق مربوط مع المدخل رقم 12و الأرضي |
و هذا مخطط الدارة لمن يستصعب من فهم المخطط أعلاه
الآن و قبل البدء بالبرمجة , سأوضح امر مهم جديد , ألا وهو أمر shiftOut
قد فاتني ذكر أمر هو أن مسجل الإزاحة 74595 , تتم برمجته
بطريقة التخاطب الشهيرة SPI و هي اختصار Serial
Peripheral Interface و هو طريقة
لنقل البيانات تزامنياً , يمكن بداية الإطلاع على مكتبتها على
الرابط هنا
نعود للأمر shiftOut , هذا الأمر هو الذي سنقوم من خلاله
بنقل البيانات من المتحكم إلى مسجل الإزاحة .
الطريقة سهلة , يكتب الكود الخاص بمقل البيانات على الصيغة
التالية
[ltr] shiftOut(datapin,clockpin,bitorder,value);[/ltr]
حيث :
datapin: هو المدخل المسؤول عن إخراج البيانات بت بت .
clockpin: المدخل المسؤؤل عن دخل الساعة المنظم للمتحكم , و يتغير الخرج عندما يقدح المسجل باستخدام هذا المدخل .
bitorder: هو خيار يحدد طريقة نقل المعلومات إلى المسجل
إما أن تكون MSBFIRST أي ابتداءاً من البت ذو القيمة الأعلى اهمية للأقل أهمية "من اليسار لليمين "
أو أن تكون LSBFIRST أي من البت الأقل أهمية للأعلى أهمية " من اليمين لليسار"
الوضع الإفتراضي يكون نقل البيانات MSBFIRST
value: هي القيمة التي ننوي إظهارها على الخرج .
----------------------------------------------------------------------------
// انسخ البرنامج من هنا
- الكود:
[size=18][font=Arial,Helvetica,sans-serif][/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//This program is free software: you can redistribute it and/or modify[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//it under the terms of the GNU General Public License as published by[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//the Free Software Foundation, either version 3 of the License, or[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//(at your option) any later version.[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//This program is distributed in the hope that it will be useful,[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//but WITHOUT ANY WARRANTY; without even the implied warranty of[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]// GNU General Public License for more details.[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//You should have received a copy of the GNU General Public License[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]// along with this program. If not, see http://www.gnu.org/licenses/[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]
[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//****************************************************[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//Name :Mohannad Rawashdeh .[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//Date "30/6/2012 3:00pm[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]// Description: This Code for using a 74HC595 Shift Register //[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]// to count from 0 to 255 , Using arduino pin # 8,10,11,12[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]// Programmed for http://genotronex.blogspot.com/[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] [/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//****************************************************************[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//define the Pins[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//Pin connected to latch clock of 74HC595 ""pin 12""[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]int latchPin = 8;[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//Pin connected to shift clock of 74HC595 ""PIN 11 "[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]int clockPin = 12;[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]////Pin connected to serial Data A of 74HC595 "pin 14 "[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]int dataPin = 11;[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]///Output pin controller of 74HC595""pin 13""[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]int output_pin=10;[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]//___________________________________________________[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]
[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]void setup() {[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] //set pins to output so you can control the shift register[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] pinMode(latchPin, OUTPUT);[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] pinMode(clockPin, OUTPUT);[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] pinMode(dataPin, OUTPUT);[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] pinMode(output_pin, OUTPUT);[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] digitalWrite(output_pin,HIGH); // this instruction to disable Output pins[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]}[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]
[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]void loop() {[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] // count from 0 to 255 and display the number [/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] // on the LEDs[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] // take the latchPin low so [/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] // the LEDs don't change while you're sending in bits:[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] digitalWrite(latchPin, LOW);[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] // shift out the bits:[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay); [/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]
[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] //take the latch pin high so the LEDs will light up:[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] digitalWrite(latchPin, HIGH);[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] digitalWrite(output_pin,LOW);// enable OUTPUT Pins[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] // pause before next value:[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] delay(250);[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] [/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] digitalWrite(output_pin,HIGH); // this instruction to disable Output pins again .[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif] }[/font][/size]
[size=18][font=Arial,Helvetica,sans-serif]}[/font][/size]
//----------------------------------------------------------------------
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
الجمعة يونيو 05, 2015 4:22 am من طرف hazeem
» دارة كاميرا تصوير وارسال الصور عن طريق واي فاي
الثلاثاء أبريل 28, 2015 10:39 pm من طرف luay.alkanaan
» مقاومات Resistor
الأحد مارس 02, 2014 10:22 pm من طرف أيمن الإبراهيم
» مسجلات الازاحة Shift Register
الأحد مارس 02, 2014 9:20 pm من طرف أيمن الإبراهيم
» تمارين على تجربة الرابعة
الخميس فبراير 13, 2014 11:47 am من طرف أيمن الإبراهيم
» التجربة الرابعة في برمجة الماكروكنترولر
الأربعاء فبراير 12, 2014 10:39 pm من طرف أيمن الإبراهيم
» دارات مبرمجة الماكروكنترولر
الثلاثاء فبراير 11, 2014 10:52 pm من طرف أيمن الإبراهيم
» التجربة الثالثة في برمجة الماكروكنترولر
الثلاثاء فبراير 11, 2014 1:12 pm من طرف أيمن الإبراهيم
» ماذا تعرف عن الميكروبروسيسور microprocessor
الأحد فبراير 09, 2014 6:30 pm من طرف أيمن الإبراهيم