ایمبیڈڈ ڈیزائن میں امکانات موجود ہیں جہاں آپ کے پاس اپنے مائکروکنٹرولر میں کافی I / O پن دستیاب نہیں ہیں۔ یہ کسی بھی وجہ کی وجہ سے ہوسکتا ہے ، ہوسکتا ہے کہ آپ کی درخواست میں متعدد ایل ای ڈی کی ضرورت ہو یا آپ متعدد 7 طبقات کی نمائش کو استعمال کرنا چاہتے ہو ، لیکن آپ کو اپنے مائکروکانٹرولر میں I / O پنوں کی ضرورت نہیں ہے۔ یہاں ایک کامل جزو ، شفٹ رجسٹر آتا ہے ۔ شفٹ رجسٹر سیریل ڈیٹا کو قبول کرتا ہے اور متوازی آؤٹ پٹ دیتا ہے۔ آپ کے مائکروکانٹرولر سے رابطہ قائم کرنے کے لئے اس میں صرف 3 پنوں کی ضرورت ہے اور آپ کو اس سے 8 سے زیادہ آؤٹ پٹ پن ملیں گے ۔ مقبول شفٹ رجسٹر میں سے ایک 74HC595 ہے ۔ اس میں 8 بٹ اسٹوریج رجسٹر اور 8 بٹ شفٹ رجسٹر ہے ۔ یہاں شفٹ رجسٹروں کے بارے میں مزید معلومات حاصل کریں۔
آپ شفٹ رجسٹر کرنے کے لئے سیریل کے اعداد و شمار فراہم کرے گا اور اس کو دیا جائے گا latched رہا اسٹوریج رجسٹر پر اور پھر سٹوریج ورڈ 8 نتائج کنٹرول کرے گا. اگر آپ زیادہ آؤٹ پٹ چاہتے ہیں تو صرف ایک اور شفٹ رجسٹر شامل کریں۔ دو شفٹ رجسٹروں کو جھڑکنے سے ، آپ کو اضافی 8 آؤٹ پٹس ، کل 16 بٹ آؤٹ پٹ ملیں گے۔
شفٹ رجسٹر 74HC595:
یہاں ڈیٹاشیٹ کے مطابق 74HC595 کا پن آؤٹ آراء ہے۔
HC595 میں 16 پنز ہیں۔ اگر ہم ڈیٹاشیٹ دیکھیں گے تو ہم پن کے افعال کو سمجھیں گے۔
QH کرنے QA پن نمبرز سے 1 سے 7 اور 15 کے طور پر استعمال 8 بٹ پیداوار کے طور پر جہاں شفٹ رجسٹر، سے پن 14 وصول کرنے کے لئے استعمال کیا جاتا ہے سیریل ڈیٹا. دوسرے پنوں کو استعمال کرنے اور شفٹ رجسٹر کے دوسرے کاموں کو کس طرح حاصل کرنے کے بارے میں بھی حقیقت میز موجود ہے۔
جب ہم 74HC595 میں مداخلت کرنے کے لئے کوڈ لکھتے ہیں ، تو ہم مطلوبہ آؤٹ پٹس حاصل کرنے کے ل this اس ٹائچ ٹیبل کا اطلاق کریں گے۔
اب ، ہم PIC16F877A کے ساتھ 74HC595 کو انٹرفیس کریں گے اور 8 ایل ای ڈی کو کنٹرول کریں گے۔ ہم نے دوسرے مائکروکنٹرولرز کے ساتھ 74HC595 شفٹ رجسٹر کو انٹرفیس کیا ہے:
- انٹرفیسنگ 74HC595 سیری شفٹ راسبیری پائ کے ساتھ رجسٹر ہوں
- Ardino Uno کے ساتھ شفٹ رجسٹر 74HC595 کیسے استعمال کریں؟
- شفٹ رجسٹر کا استعمال کرتے ہوئے نوڈیم سی سی یو کے ساتھ ایل سی ڈی انٹرفیس کرنا
مطلوبہ اجزاء:
- PIC16F877A
- 2pcs 33pF سیرامک ڈسک کیپسیٹرز
- 20 میگاہرٹز کرسٹل
- 4.7k مزاحم
- 8 پی سیز ایل ای ڈی
- 1k ریزٹر -1 پی سی (8 پی سیز 1 ک ریزٹرز کی ضرورت ہوتی ہے اگر ہر لیڈ پر الگ الگ ریزسٹرس کی ضرورت ہو)
- 74HC595 آئیک
- 5V وال اڈاپٹر
- PIC پروگرامنگ ماحول
- بریڈ بورڈ اور تاروں
سرکٹ ڈایاگرام:
سرکٹ آریگرام میں ، ہم نے سیریل ڈیٹا پن کو جوڑا ہے۔ گھڑی اور اسٹروب (لیچ) پن بالترتیب مائکروکونٹرولر کے RB0 ، RB1 اور RB2 پن پر۔ یہاں ہم نے 8 ایل ای ڈی کے لئے ایک ریزسٹر استعمال کیا ہے۔ سچ جدول کے مطابق ، ہم نے 74HC595 کے پن 13 کو زمین سے جوڑ کر آؤٹ پٹ کو فعال کیا ۔ QH پن کھلا چھوڑ دیا جاتا ہے ہم کسی اور جھرن نہیں کرے گا کے طور 74HC595 اس کے ساتھ. ہم نے شفٹ رجسٹر کے پن 10 کو وی سی سی کے ساتھ مربوط کرکے واضح ان پٹ پرچم کو غیر فعال کردیا ۔
کرسٹل آیسیلیٹر مائکروکانٹرولر کے او ایس سی پنوں پر منسلک ہے۔ PIC16F877A میں کوئی داخلی آسکیلیٹر نہیں ہے۔ اس پروجیکٹ میں ہم شفٹ ریگیسٹر کا استعمال کرتے ہوئے Q0 سے Q7 تک ایک کرکے قیادت کریں گے ۔
ہم نے بریڈ بورڈ میں سرکٹ بنایا ہے۔
کوڈ کی وضاحت:
شفٹ رجسٹر کے ساتھ ایل ای ڈی کو کنٹرول کرنے کے لئے مکمل کوڈ مضمون کے آخر میں دیا گیا ہے۔ ہمیشہ کی طرح ، ہمیں پی آئی سی مائکروکنٹرولر میں ترتیب بٹس مرتب کرنے کی ضرورت ہے۔
#pragma config FOSC = HS // Oscillator Selection Bits (HS oscillator) #pragma config WDTE = OFF // واچ ڈاگ ٹائمر بٹ (WDT غیر فعال) # پیراگما تشکیل PWRTE = OFF // پاور اپ ٹائمر بٹ (PWRT غیر فعال) # پراگما کنفگریشن BOREN = ON // Brown-out Reset सक्षम بٹ (BOR فعال) #pragma config LVP = OFF // کم وولٹیج (سنگل سپلائی) میں سرکٹ سیریل پروگرامنگ قابل بٹ (RB3 / PGM پن میں PGM فنکشن ہے؛ کم) -وولٹیج پروگرامنگ فعال) # پراگما کنفیگریشن سی پی ڈی = آف // ڈیٹا ایپروم میموری کوڈ پروٹیکشن بٹ (ڈیٹا ایپرووم کوڈ پروٹیکشن آف) # پیراگما کنفگریشن ڈبلیو آر ٹی = آف // فلیش پروگرام میموری لکھیں بٹس کو فعال کریں (تحریری تحریر؛ تمام پروگرام کی میموری ہوسکتی ہے EECON کنٹرول کے ذریعہ لکھا گیا) # پراگما کنفیگریشن سی پی = آف // فلیش پروگرام میموری کوڈ پروٹیکشن بٹ (کوڈ پروٹیکشن آف)
اس کے بعد ہم نے کرسٹل تعدد کا اعلان کیا جس میں تاخیر اور 74HC595 کے لئے پن آؤٹ ڈیکلیریشن کی ضرورت ہے ۔
# شامل کریں
اگلا ہم نے سمت کو شروع کرنے کے ل system سسٹم_نائٹ () فنکشن کا اعلان کیا ۔
باطل نظام_نیت (باطل) { TRISB = 0x00؛ }
ہم نے دو مختلف افعال کا استعمال کرتے ہوئے گھڑی کی نبض اور لچ پلس تیار کی
/ * * یہ فنکشن گھڑی کو قابل بنائے گا۔ * / باطل گھڑی (باطل) { CLK_595 = 1؛ __ڈیلا_س (500)؛ CLK_595 = 0؛ __ڈیلا_س (500)؛ }
اور
/ * * یہ فنکشن آؤٹ پٹ ٹرگر کو متحرک اور قابل بنائے گا۔ * / باطل اسٹروب (باطل) { STROBE_595 = 1؛ __ڈیلا_س (500)؛ STROBE_595 = 0؛ }
اس دو افعال کے بعد ہم نے اعلان کر دیا data_submit (اہستاکشرت INT ڈیٹا) کو سیریل ڈیٹا جمع کرانے کی تقریب 74HC595.
باطل data_submit (اہستاکشرت INT ڈیٹا) { لئے (int میں = 0؛ میں <8؛ میں ++) { DATA_595 = (ڈیٹا >> میں) & 0x01؛ گھڑی ()؛ } اسٹروب ()؛ // ڈیٹا آخر میں جمع کرائی }
اس فنکشن میں ہم 8 بٹ ڈیٹا کو قبول کرتے ہیں اور ہر بٹ کو دو بٹ سائڈ آپریٹرز کا استعمال کرتے ہوئے بائیں شفٹ اور اینڈ آپریٹر بھیجتے ہیں ۔ ہم سب سے پہلے ڈیٹا کو ایک ایک کرکے شفٹ کرتے ہیں اور عین مطابق سا معلوم کرتے ہیں کہ آیا 0x01 کے ساتھ اور آپریٹر کا استعمال کرتے ہوئے 0 یا 1 ہے ۔ ہر ڈیٹا گھڑی کی نبض اور آخری ڈیٹا آؤٹ پٹ کے ذریعہ محفوظ کیا جاتا ہے جو لچ یا اسٹروب نبض کا استعمال کرتے ہوئے کیا جاتا ہے ۔ اس عمل میں ڈیٹا آؤٹ پٹ پہلے ایم ایس بی (انتہائی اہم بٹ) ہوگا۔
میں مرکزی تقریب ہم بائنری پیش کی اور ایک ایک کرکے آؤٹ پٹ پنوں اعلی سے ایک بنا دیا.
system_init ()؛ // نظام تیار ہو رہا ہے جبکہ (1) { ڈیٹا_سوسمٹ (0b00000000)؛ __Dlay_ms (200)؛ ڈیٹا_سمبٹ (0b10000000)؛ __ڈیلا_س (200)؛ ڈیٹا_سمبٹ (0b01000000)؛ __Dlay_ms (200)؛ ڈیٹا_سمبٹ (0b00100000)؛ __Dlay_ms (200)؛ ڈیٹا_سمبٹ (0b00010000)؛ __Dlay_ms (200)؛ ڈیٹا_سمبٹ (0b00001000)؛ __Dlay_ms (200)؛ ڈیٹا_سمبٹ (0b00000100)؛ __Dlay_ms (200)؛ ڈیٹا_سماعت (0b00000010)؛ __Dlay_ms (200)؛ ڈیٹا_سمبٹ (0b00000001)؛ __Dlay_ms (200)؛ ڈیٹا_سمبٹ (0xFF)؛ __Dlay_ms (200)؛ } واپس؛ }
اسی طرح کسی بھی مائکروکنٹرولر میں مزید سینسرس کو جوڑنے کے ل more شفٹ رجسٹر کو زیادہ مفت I / O پنوں کے ل. استعمال کیا جاسکتا ہے ۔