- 7-طبقہ اور 4-ہندسہ 7-طبقہ ڈسپلے ماڈیول:
- 4 عددی سیون سیگمنٹ ماڈیول کو PIC مائکروکانٹرولر کے ساتھ مربوط کرنا:
- PIC16F877A کا استعمال کرتے ہوئے پروگرامنگ:
- ہارڈ ویئر سیٹ اپ اور جانچ:
ایم پی ایل بی اور ایکس سی 8 کا استعمال کرتے ہوئے سیکھنے پی آئی سی مائکروکنٹرولرز کا یہ 8 واں سبق ہے ۔ ہم ایم پی ایل ایکس ایکس انسٹال کرنے سے لے کر پی آئی سی ایم سی یو کے ساتھ ایل سی ڈی استعمال کرنے کے تمام راستہ سامنے آئے ہیں۔ اگر آپ یہاں نئے ہیں ، تو پچھلے سبق کو دیکھیں جہاں آپ ٹائمر ، چمکتے ہوئے ایل ای ڈی ، انٹرفیسنگ LCD وغیرہ سیکھ سکتے ہیں۔ آپ ہمارے تمام PIC سبق حاصل کرسکتے ہیں۔ اپنے آخری ٹیوٹوریل میں ہم نے دیکھا کہ ہم کس طرح اپنے 16 * 2 LCD ڈسپلے کے ساتھ کسٹم کسٹر کو پیدا کرسکتے ہیں ، اب آئیے اپنے نفس کو ایک اور قسم کے ڈسپلے ماڈیول سے لیس کریں جس کو 7 سیگمنٹ ڈسپلے کہا جاتا ہے اور اسے PIC مائکروکنٹرولر کے ساتھ انٹرفیس کریں ۔
اگرچہ 16 سی 2 ایل سی ڈی 7 سیگمنٹ ڈسپلے سے کہیں زیادہ آرام دہ اور پرسکون ہے لیکن اس میں کچھ ایسے ہی منظرنامے ہیں جہاں 7 سیگمنٹ ڈسپلے ایل سی ڈی ڈسپلے کے مقابلے میں زیادہ کام آئے گا۔ ایل سی ڈی کم کردار کے حامل ہونے کی خرابی سے دوچار ہے اور اگر آپ کچھ عددی اقدار کو ظاہر کرنے کا منصوبہ بنا رہے ہیں تو آپ کے پروجیکٹ کے لئے اس سے زیادہ فائدہ ہو گا۔ 7 طبقات کو روشنی کی خراب صورتحال کے خلاف بھی فائدہ ہے اور عام LCD اسکرین کے مقابلے میں اسے لمبی زاویوں سے دیکھا جاسکتا ہے۔ تو ، آئیے ہم اسے جاننے لگیں۔
7-طبقہ اور 4-ہندسہ 7-طبقہ ڈسپلے ماڈیول:
7 طبقہ ڈسپلے کے اس میں سات طبقات ہیں اور ہر طبقہ کے اندر اس میں ایک ایل ای ڈی ہے جس سے متعلقہ طبقات کو روشن کرکے اعداد دکھائے جاسکتے ہیں۔ جیسے اگر آپ چاہتے ہیں کہ 7-طبقہ نمبر "5" دکھائے تو آپ کو ان سے متعلق پنوں کو اونچا بنا کر A ، f، g، c اور d طبقہ کو چمکانے کی ضرورت ہے۔ 7 طبقات کی نمائش کی دو قسمیں ہیں: کامن کیتھوڈ اور کامن انوڈ ، یہاں ہم کامن کیتھڈ کو سات سیگمنٹ ڈسپلے استعمال کررہے ہیں ۔ یہاں 7 طبقات کے ڈسپلے کے بارے میں مزید معلومات حاصل کریں۔
اب ہم جانتے ہیں کہ اپنے مطلوبہ عددی کردار کو سنگل 7 طبقات کے ڈسپلے میں کس طرح ظاہر کرنا ہے۔ لیکن ، یہ بات بالکل واضح ہے کہ کسی بھی معلومات جو ایک ہندسے سے زیادہ ہو اسے پہنچانے کے لئے ہمیں 7 سیگمنٹ سے زیادہ ڈسپلے کی ضرورت ہوگی۔ لہذا ، اس ٹیوٹوریل میں ہم ذیل میں دکھائے جانے والے 4 ہندسوں والے 7 طبقہ ڈسپلے ماڈیول کا استعمال کریں گے ۔
جیسا کہ ہم دیکھ سکتے ہیں کہ وہاں چار سیون سیگمنٹ ڈسپلے ایک ساتھ منسلک ہیں۔ ہم جانتے ہیں کہ ہر 7 طبقے کے ماڈیول میں 10 پن ہوں گے اور 4 سات طبقات کی نمائش کے ل total مجموعی طور پر 40 پن ہوں گے اور کسی کے لئے بھی انہیں ڈاٹ بورڈ پر سولڈرنگ کرنا مشکل ہوگا ، لہذا میں کسی کو ماڈیول خریدنے کی انتہائی سفارش کروں گا۔ یا 4 ہندسوں والے 7 طبقے کے ڈسپلے کو استعمال کرنے کیلئے خود اپنا پی سی بی بنائیں۔ اسی کے لئے کنکشن کا منصوبہ بندی ذیل میں دکھایا گیا ہے:
یہ سمجھنے کے لئے کہ چار ہندسوں والے سات طبقہ ماڈیول کس طرح کام کرتے ہیں ہمیں مذکورہ بالا حکمت عملی پر غور کرنا ہوگا ، جیسا کہ دکھایا گیا ہے کہ چاروں ڈسپلے کے A پنوں کو ڈی ، بی ، سی…. کے لئے ایک A اور ایک جیسے جمع کرنے کے لئے جڑا ہوا ہے۔ لہذا ، بنیادی طور پر اگر ٹرگر A آن ہو ، تو پھر چاروں A کی اونچی طرف جانا چاہئے؟
لیکن ، ایسا نہیں ہوتا ہے۔ ہمارے پاس D0 سے D3 (D0، D1، D2 اور D3) تک اضافی چار پن ہیں جنہیں یہ کنٹرول کرنے کے لئے استعمال کیا جاسکتا ہے کہ چاروں میں سے کون سا ڈسپلے زیادہ ہونا چاہئے۔ مثال کے طور پر: اگر مجھے اپنی آؤٹ پٹ صرف دوسرے ڈسپلے میں موجود ہونے کی ضرورت ہو تو دوسرے پنوں (D0، D2 ، اور D3) کو کم رکھتے ہوئے صرف D1 کو اونچائی بنائی جانی چاہئے۔ آسانی سے ہم منتخب کرسکتے ہیں کہ کون سے ڈسپلے کو D0 سے D3 تک پنوں کا استعمال کرتے ہوئے متحرک ہونا پڑے گا اور A سے DP تک پنوں کا استعمال کرکے کون سا کردار ڈسپلے کیا جائے۔
4 عددی سیون سیگمنٹ ماڈیول کو PIC مائکروکانٹرولر کے ساتھ مربوط کرنا:
یہاں ہم نے PIC مائکرو قابو پذیر PIC16F877A استعمال کیا ہے اور سرکٹ کے لئے منصوبہ بندی ذیل میں دکھایا گیا ہے۔
ہمارے پاس ماڈیول سے 12 آؤٹ پٹ ہیں جن میں سے 8 کو حروف کو ظاہر کرنے کے لئے استعمال کیا جاتا ہے اور چار میں سے ایک ڈسپلے منتخب کرنے کے لئے چار استعمال ہوتا ہے۔ لہذا تمام 8 کیٹر پنوں کو PORTD کو تفویض کیا گیا ہے اور ڈسپلے سلیکشن پنوں کو PORTC کے پہلے چار پنوں پر تفویض کیا گیا ہے۔
نوٹ: ماڈیول کا گراؤنڈ پن بھی ایم سی یو کے گراؤنڈ سے منسلک ہونا چاہئے جو یہاں نہیں دکھایا گیا ہے۔
PIC16F877A کا استعمال کرتے ہوئے پروگرامنگ:
اب ، جب ہم جانتے ہیں کہ یہ ماڈیول واقعتا کیسے کام کرتا ہے ، آئیے ہم PIC16F877A کو 4 ہندسوں کی نمائش کے ل make پروگرام کرنے کا طریقہ سیکھیں ۔ آئیے ہم ایک متغیر کو 0 سے 1000 تک بڑھا دیں اور اسے 7 طبقے کے ڈسپلے پر پرنٹ کریں۔ ایم پی ایل ایکس ایکس پروگرام لانچ کریں اور نیا پروجیکٹ بنائیں ، آئیے کنفیگریشن بٹس سے شروع کریں۔
#pragma config FOSC = HS // Oscillator Selection Bits (HS oscillator) #pragma config WDTE = OFF // واچ ڈاگ ٹائمر بٹ (WDT غیر فعال) # پراگما تشکیل PWRTE = آن // پاور اپ ٹائمر قابل بٹ (PWRT सक्षम) # پراگما کنفگریشن BOREN = ON // براؤن آؤٹ ری سیٹ کریں قابل بٹ (BOR فعال) # پراگما تشکیل LVP = آف // کم وولٹیج (سنگل سپلائی) میں سرکٹ سیریل پروگرامنگ قابل بٹ (RB3 ڈیجیٹل I / O ، HV آن ہے پروگرامنگ کے لئے ایم سی ایل آر کا استعمال لازمی ہے) # پراگما کنفیگریشن سی پی ڈی = آف // ڈیٹا ایپروم میموری کوڈ پروٹیکشن بٹ (ڈیٹا ایئپروم کوڈ پروٹیکشن آف) # پیراگما کنفگریشن WRT = OFF // فلیش پروگرام میموری تحریری طور پر فعال بٹس (تحریری تحریر off تمام پروگرام میموری EECON کنٹرول کے ذریعہ لکھا جاسکتا ہے) # پراگما تشکیل سی پی = آف // فلیش پروگرام میموری کوڈ پروٹیکشن سا (کوڈ پروٹیکشن آف)
ہمیشہ کی طرح ہم ان بٹس کو سیٹ کرنے کے لئے سیٹ کنفیگریشن بٹس ونڈو کا استعمال کرتے ہیں۔ اگر آپ کو یقین نہیں ہے کہ ان کا کیا مطلب ہے تو پھر یہاں ایل ای ڈی ٹمٹمانے ٹیوٹوریل ملاحظہ کریں۔
اگلا ہم آؤٹ پٹ کو ڈسپلے کے ہر ایک ہندسے کے درمیان ٹوگل کرنے کی وضاحت کریں۔
// *** چاروں ڈسپلے کے سگنل پنوں کی وضاحت کریں *** // #define s1 RC0 #define s2 RC1 #define s3 RC2 #define s4 RC3 // *** تعریف کا اختتام ** ////
یہاں ہمارے 7 طبقات کے ڈسپلے ماڈیول کے چار ہندسوں کے درمیان انتخاب کرنے کیلئے پنوں RC0 ، RC1 ، RC2 اور RC3 استعمال ہوتے ہیں۔ یہ پنوں کو بالترتیب ایس 1 ، ایس 2 ، ایس 3 اور ایس 4 کی وضاحت کی گئی ہے۔
آگے چلیں ہم باطل مین () میں جائیں ، جس کے اندر ہمارے پاس متغیر اعلامیہ درج ذیل ہے۔
انٹ i = 0؛ // 4 ہندسے کی قدر جو ظاہر کی جانی چاہئے پرچم = 0؛ // تاخیر سے دستخط شدہ انٹ ، ب ، سی ، ڈی ، ای ، ایف ، جی ، ایچ بنانے کے ل؛۔ // صرف متغیرات کے دستخط شدہ INT seg = {0X3F ، // نمبر 0 0X06 ظاہر کرنے کے لئے ہیکس ویلیو ، // نمبر 1 0X5B ظاہر کرنے کے لئے ہیکس ویلیو ، // نمبر 2 0X4F ظاہر کرنے کے لئے ہیکس ویلیو ، // ظاہر کرنے کے لئے ہیکس ویلیو نمبر 3 0X66 ، // ہیکس نمبر 4 0X6D ظاہر کرنے کے لئے ، // نمبر 5 0X7C ظاہر کرنے کے لئے ہیکس ویلیو ، نمبر 6 0X07 ڈسپلے کرنے کے لئے // ہیکس ویلیو ، 0 7XX7F ، / / نمبر 8 0X6F ڈسپلے کرنے کیلئے ہیکس ویلیو // نمبر 9 9 ظاہر کرنے کے لئے ہیکس ویلیو} // 0 سے 9 تک اعداد کی نمائش کے لئے صف کا اختتام
یہاں متغیر I اور جھنڈے استعمال کیے جانے والے اقدار کو اسٹور کرنے اور بالترتیب تاخیر پیدا کرنے کے لئے استعمال ہوتے ہیں۔ اہستاکشرت عددی متغیر ایک ک ایک ہندسے میں چار عددی تعداد کو توڑنے اور (بعد میں یہاں بیان کیا جائے گا جس میں) ان کو ذخیرہ کرنے کے لئے استعمال ہوتے ہیں.
یہاں ایک اہم چیز نوٹ کرنے کی ہے " صف " کے سرنی اعلامیہ۔ اس پروگرام میں ہم ایک نئی ڈیٹا ٹائپ استعمال کررہے ہیں جسے ارے کہتے ہیں۔ سرنی کچھ اسی طرح کی ڈیٹا ٹائپ اقدار کے مجموعہ کے سوا نہیں ہے۔ یہاں ، ہم نے 0 سے 9 تک کسی نمبر کی نمائش کے لئے تمام مساوی ہیکس اقدار کو ذخیرہ کرنے کے لئے اس صف کو استعمال کیا ہے۔
صف کا پتہ ہمیشہ صفر سے شروع ہوتا ہے۔ تو اس صف میں پتے میں کسی عددی نمبر (0-9) کی ہیکس ویلیو ہوگی جو نیچے دکھائے گئے نمبر کی طرح ہے
متغیر: |
seg |
seg |
seg |
seg |
seg |
seg |
seg |
seg |
seg |
seg |
ہیکس کوڈ: |
0 ایکس 3 ایف |
0 ایکس 0 |
0 ایکس 5 بی |
0 ایکس 4 ایف |
0 ایکس 66 |
0 ایکس 6 ڈی |
0 ایکس 7 سی |
0 ایکس07 |
0 ایکس 7 ایف |
0 ایکس 6 ایف |
Eq. عددی نمبر: |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
لہذا ، اگر آپ اپنے 7 طبقہ پر نمبر 0 دکھانا چاہتے ہیں تو آپ سیگ کال کرسکتے ہیں ، اسی طرح اگر آپ نمبر 6 ڈسپلے کرنا چاہتے ہیں تو آپ کو صرف سیگ کا استعمال کرنا ہوگا۔
یہ سمجھنے کے لئے کہ HEX قدر دراصل کس طرح حاصل کی گئی تھی آئیے نیچے دیئے گئے جدول کو دیکھیں۔ ہر ایک دشملو تعداد کے برابر HEX قدر صف میں محفوظ کیا جاتا ہے تاکہ یہ ایک خاص تعداد کو ظاہر کرنے کے لئے کہا جا سکتا ہے.
اب آئیے ، کوڈ کے اگلے حصے کی طرف چلتے ہیں جو I / O ترتیب ہے:
// ***** I / O تشکیل **** // TRISC = 0X00؛ PORTC = 0X00؛ TRISD = 0x00؛ پورٹڈ = 0 ایکس 100؛ // *** I / O ترتیب کا اختتام ** ///
I / O ترتیب دینا آسان ہے کیونکہ ہمارے 7 طبقے کے تمام پنوں میں آؤٹ پٹ پن ہیں ، اور روابط اوپر سرکٹ ڈایاگرام میں دکھائے گئے ہیں ، لہذا صرف ان کو آؤٹ پٹ کے طور پر اعلان کریں اور انہیں صفر سے شروع کریں۔
اب ہم اپنے لامحدود لوپ (جبکہ (1)) میں کودیں۔ یہاں ہمیں "i" کی قدر کو چار ہندسوں میں تقسیم کرنا ہے اور انہیں 7 طبقہ پر آویزاں کرنا ہے۔ پہلے ہم "i" پر قیمت تقسیم کرکے شروع کریں
// *** "i" کو چار ہندسوں میں تقسیم کرنا *** // a = i٪ 10؛ // چوتھا ہندسہ یہاں محفوظ ہے b = i / 10؛ c = b٪ 10؛ // تیسرا ہندسہ یہاں محفوظ ہے d = b / 10؛ e = d٪ 10؛ // دوسرا ہندسہ یہاں محفوظ ہے f = d / 10؛ g = f٪ 10؛ // پہلا ہندسہ یہاں محفوظ ہے h = f / 10؛ // *** تقسیم کا اختتام *** //
آسان ماڈیولس اور ڈویژن آپریشن کا استعمال کرتے ہوئے 4 ہندسوں کا نمبر (i) انفرادی نمبروں میں الگ ہوجاتا ہے۔ ہمارے معاملے میں آئیے ایک مثال لیتے ہیں جہاں "i" کی قیمت 4578 ہے۔ پھر اس عمل کے اختتام پر متغیر g = 4، e = 5، c = 7 اور a = 8 ہے۔ تو اب محض اس متغیر کا استعمال کرتے ہوئے ہر ہندسے کو ظاہر کرنا آسان ہوجائے گا۔
پورٹ = سیگ؛ ایس 1 = 1؛ // ڈسپلے 1 کو چالو کریں اور چوتھا ہندسہ __ ڈیلا_ ایم ایس (5) پرنٹ کریں s s1 = 0؛ // 5 منٹ موخر ہونے کے بعد ڈسپلے 1 کو بند کریں PORTD = seg؛ s2 = 1؛ // ڈسپلے 2 کو چالو کریں اور تیسرا ہندسہ __Dlay_ms (5) s s2 = 0 پرنٹ کریں۔ // 5 منٹ موخر ہونے کے بعد ڈسپلے 2 کو بند کریں PORTD = seg؛ s3 = 1؛ // ڈسپلے 3 کو چالو کریں اور دوسرا ہندسہ __Dlay_ms (5) s s3 = 0 پرنٹ کریں۔ // ڈسپلے 3 بند کریں 5 5 منٹ کی تاخیر کے بعد PORTD = seg؛ s4 = 1؛ // ڈسپلے 4 کو چالو کریں اور پہلا ہندسہ __Dlay_ms (5) پرنٹ کریں s s4 = 0؛ // 5 مں تاخیر کے بعد ڈسپلے 4 بند کریں
یہ وہی اصل جگہ ہے جہاں MCU 7 سیکشن کے ساتھ بات کرتا ہے۔ جیسا کہ ہم جانتے ہیں کہ ہم ایک وقت میں صرف ایک ہندسہ ظاہر کرسکتے ہیں ، لیکن ہمارے پاس چار ہندسے ظاہر ہونے ہیں اور صرف اس صورت میں جب تمام چار ہندسے پورے چار ہندسوں پر ہوں تو صارف کے ل visible نظر آئے گا۔
تو ، ہم اس کے ساتھ کیسے جائیں گے؟
ہمارے لئے خوش قسمت ہمارا ایم سی یو انسانی آنکھوں سے بہت تیز ہے ، لہذا ہم اصل میں کیا کرتے ہیں: ہم ایک وقت میں ایک ہندسہ ظاہر کرتے ہیں لیکن جیسا کہ اوپر دکھایا گیا ہے ہم اسے بہت تیز کرتے ہیں ۔
ہم ایک ہندسوں کی نمائش کا انتخاب کرتے ہیں جس میں 5 ایم ایس کا انتظار ہوتا ہے تاکہ ایم سی یو اور 7 طبقہ اس پر عملدرآمد کر سکے اور پھر اس ہندسے کو بند کردیں اور اگلے ہندسے پر آگے بڑھ جائیں اور آخری ہندسے تک پہنچنے تک یہی کام کریں۔ 5 ایم ایس کی اس تاخیر کو انسانی آنکھ سے مشاہدہ نہیں کیا جاسکتا اور ایک ہی وقت میں چاروں ہندسوں کو آن دکھایا گیا۔
یہی بات ہے ، آخر کار ہم صرف تاخیر کا استعمال کرتے ہوئے دکھائے گئے ہندسے کی قدر میں اضافہ کرتے ہیں جیسا کہ ذیل میں دکھایا گیا ہے
اگر (پرچم> = 100) // پرچم 100 {i ++ تک پہنچنے تک انتظار کریں flag پرچم = 0؛ // صرف اس صورت میں جب پرچم سو "i" میں اضافہ ہوگا} جھنڈا ++؛ ہر فلیش کے لئے // انکریمنٹ پرچم
تاخیر کو اس لئے استعمال کیا جاتا ہے کہ ایک نمبر سے دوسرے میں تبدیل ہونے میں جو وقت لگتا ہے وہ ہمارے لئے تبدیلی کا نوٹس لے سکتا ہے۔
مکمل ضابطہ ذیل میں دیا جاتا ہے اور اس عمل میں بھی بیان کی گئی ہے ویڈیو آخر میں.
ہارڈ ویئر سیٹ اپ اور جانچ:
ہمیشہ کی طرح ہم اپنے ہارڈ ویئر کے ساتھ جانے سے پہلے ہی پروٹیوس کا استعمال کرتے ہوئے پروگرام کی تقلید کرتے ہیں۔ اگر نقالی کامیاب ہے تو آپ کو ایسا ہی کچھ دیکھنا چاہئے
اس پروجیکٹ میں کوئی پیچیدہ ہارڈویئر سیٹ اپ نہیں ہے ، ہم پھر وہی پی آئی سی مائکروکنٹرولر بورڈ استعمال کررہے ہیں جو ہم نے ایل ای ڈی ٹمٹمانے ٹیوٹوریل میں بنائے ہیں۔ کنیکشن آریگرام کے مطابق اپنے PIC مائکروکونٹرولر بورڈ کے ساتھ صرف 7 سیگمنٹ ماڈیول کو جوڑیں ۔ ایک بار آپ کے رابطوں کے ساتھ کام ہوجائے تو ، اپنے PicKit 3 پروگرامر کا استعمال کرتے ہوئے کوڈ کو صرف پھینک دیں اور یہی آپ کے آؤٹ پٹ سے لطف اٹھائیں۔