ہماری PIC ٹیوٹوریل سیریز کا یہ ہمارا چھٹا ٹیوٹوریل ہے ، اس ٹیوٹوریل میں ہم PIC مائکروکنٹرولر کے ساتھ 16x2 LCD کا انٹرفیسنگ سیکھتے ہیں ۔ ہمارے پچھلے سبق میں ہم نے کچھ ایل ای ڈی ٹمٹمانے والے پروگراموں کا استعمال کرتے ہوئے پی آئی سی کی بنیادی باتیں سیکھی ہیں اور پی آئی سی مائکروکنٹرولر میں ٹائمر استعمال کرنے کا طریقہ سیکھا ہے۔ آپ یہاں پی پی آئی سی ایکس اور ایکس سی 8 کمپیلر کا استعمال کرتے ہوئے لرننگ پی آئی سی مائکروکنٹرولرز سے متعلق سبھی سبق دیکھ سکتے ہیں۔
یہ سبق ایک دلچسپ ہوگا کیونکہ ہم سیکھیں گے کہ PIC16F877A کے ساتھ 16 × 2 LCD کا انٹرفیس کیسے کریں ، اس ٹیوٹوریل کے آخر میں تفصیلی ویڈیو دیکھیں۔ وہ پرانے دن گزر گئے جہاں ہم صارف کے اشارے کے لئے ایل ای ڈی کا استعمال کرتے تھے۔ آئیے دیکھیں کہ ہم LCD ڈسپلے کا استعمال کرکے اپنے پراجیکٹس کو کس طرح زیادہ عمدہ اور کارآمد بنا سکتے ہیں۔ 8051 کے ساتھ انٹرفیسنگ ایل سی ڈی پر ہمارے گذشتہ مضامین کو بھی چیک کریں ، اردوینو کے ساتھ ، راسبیری پائی کے ساتھ ، اے وی آر کے ساتھ۔
پی آئی سی مائکروکانٹرولر کے ساتھ ایل سی ڈی انٹرفیس کرنے کے افعال:
چیزوں کو آسان بنانے کے ل we ہم نے ایک چھوٹی سی لائبریری بنائی ہے جو ہمارے LIC16F877A کے ساتھ اس LCD کا استعمال کرتے ہوئے چیزوں کو آسان بناسکتی ہے ۔ "MyLCD.h" ہیڈر فائل ڈاؤن لوڈ کے لئے یہاں دی گئی ہے ، جس میں ایل سی ڈی کو پی آئی سی ایم سی یو کا استعمال کرتے ہوئے ڈرائیو کرنے کے لئے تمام ضروری فنکشن پر مشتمل ہے۔ لائبریری کے کوڈ کو کمنٹ لائنوں کے ذریعہ اچھی طرح سے سمجھایا گیا ہے لیکن اگر آپ کے پاس ابھی بھی شکوک و شبہات موجود ہیں تو کمنٹ سیکشن کے ذریعے ہم تک پہنچ جاتے ہیں۔ اس مضمون کو بنیادی LCD کام کرنے اور اس کے پن آؤٹ کے لئے بھی دیکھیں۔
نوٹ: ہمیشہ یہ جاننے کی تجویز کی جاتی ہے کہ آپ کی ہیڈر فائل کے اندر اصل میں کیا ہو رہا ہے کیونکہ یہ آپ کو ڈیبگ کرنے میں یا ایم سی یو کو تبدیل کرنے میں مدد فراہم کرے گا۔
اب ، آپ کے پروگرام میں اس کوڈ کو شامل کرنے کے دو طریقے ہیں۔ آپ یا تو MyLCD.h میں مندرجہ بالا کوڈ کی تمام لائنوں کو کاپی کرسکتے ہیں اور اسے باطل مین () سے پہلے چسپاں کرسکتے ہیں۔ یا آپ لنک استعمال کرکے ہیڈر فائل ڈاؤن لوڈ کرسکتے ہیں اور انہیں اپنے پروجیکٹ کی ہیڈر فائل میں شامل کرسکتے ہیں ( # "MyLCD.h " شامل کریں)۔ یہ ہیڈر فائل پر دائیں کلک کرکے اور موجودہ آئٹم شامل کرکے اور اس ہیڈر فائل کو براؤز کرتے ہوئے منتخب کیا جاسکتا ہے ۔
یہاں میں نے ہیڈر فائل کوڈ کو اپنی مرکزی سی فائل میں کاپی اور پیسٹ کیا ہے۔ لہذا اگر آپ ہمارا کوڈ استعمال کر رہے ہیں تو ، آپ کو اپنے پروگرام میں ہیڈر فائل کو ڈاؤن لوڈ اور شامل کرنے کی ضرورت نہیں ہے ، صرف اس سبق کے آخر میں دیئے گئے مکمل کوڈ کا استعمال کریں ۔ یہ بھی نوٹ کریں کہ یہ لائبریری صرف PIC16F سیریز PIC مائکروکنوٹرالر کی حمایت کرے گی۔
یہاں میں ذیل میں اپنی ہیڈر فائل کے اندر ہر فنکشن کی وضاحت کر رہا ہوں:
باطل Lcd_Start (): یہ فنکشن پہلا فنکشن ہونا چاہئے جسے ہمارے LCD کے ساتھ کام شروع کرنے کے لئے بلایا جانا چاہئے۔ ہمیں پروگرام میں وقفے سے بچنے کے لئے اس فنکشن کو صرف ایک بار فون کرنا چاہئے۔
باطل Lcd_Start () c Lcd_SetBit (0x00)؛ (INT i = 1065244؛ i <= 0؛ i--) NOP ()؛ Lcd_Cmd (0x03)؛ __ڈیلی_میس (5)؛ Lcd_Cmd (0x03)؛ __ڈیلا_س (11)؛ Lcd_Cmd (0x03)؛ Lcd_Cmd (0x02)؛ // 02H گھر واپس جانے کے لئے استعمال کیا جاتا ہے -> ریم صاف کرتا ہے اور LCD Lcd_Cmd (0x02) شروع کرتا ہے؛ // 02H گھر واپس جانے کے لئے استعمال کیا جاتا ہے -> ریم صاف کرتا ہے اور LCD Lcd_Cmd (0x08) شروع کرتا ہے؛ // صف 1 Lcd_Cmd (0x00) منتخب کریں؛ // صف صاف 1 ڈسپلے Lcd_Cmd (0x0C)؛ // رو 2 Lcd_Cmd (0x00) منتخب کریں؛ // صف صاف 2 ڈسپلے Lcd_Cmd (0x06)؛ }
Lcd_C Clear (): یہ فنکشن LCD اسکرین کو صاف کرتا ہے اور پچھلے ڈیٹا کی ظاہری شکل کو صاف کرنے کے لئے لوپس کے اندر استعمال کیا جاسکتا ہے۔
Lcd_C Clear () c Lcd_Cmd (0)؛ // LCD Lcd_Cmd صاف کریں (1)؛ // کرسر کو پہلی پوزیشن پر منتقل کریں}
باطل Lcd_Set_Cursor (x pos، y pos): ایک بار شروع ہونے کے بعد ، ہمارا LCD کمانڈ لینے کے لئے تیار ہے ، ہم LCD کو اس فنکشن کا استعمال کرکے اپنے پسندیدہ مقام کو آپ میں ترتیب دینے کی ہدایت کرسکتے ہیں۔ فرض کریں اگر ، ہمیں پہلی صف کے 5 ویں حرف پر کرسر کی ضرورت ہے۔ تب یہ تقریب Lcd_Set_Cursor (1 ، 5) کالعدم ہوگی۔
باطل Lcd_Set_Cursor (چار a، چار بی) {چار وقتی ، z ، y؛ اگر (a == 1) {عارضی = 0x80 + بی - 1؛ // 80H کرسر کو منتقل کرنے کے لئے استعمال کیا جاتا ہے z = temp >> 4؛ // لوئر 8 بٹس y = عارضی & 0x0F؛ // اپر 8 بٹس Lcd_Cmd (z)؛ // قطار Lcd_Cmd (y) مرتب کریں؛ // کالم سیٹ کریں} بشرطیکہ (a == 2) {عارضی = 0xC0 + b - 1؛ z = temp >> 4؛ // لوئر 8 بٹس y = عارضی & 0x0F؛ // اپر 8 بٹس Lcd_Cmd (z)؛ // قطار Lcd_Cmd (y) مرتب کریں؛ // کالم سیٹ کریں}}
باطل Lcd_Ppr_Char (چار ڈیٹا): ایک بار کرسر سیٹ ہوجائے تو ہم اس فنکشن کو آسان فون کرکے اس کی پوزیشن پر ایک کردار لکھ سکتے ہیں۔
باطل Lcd_Pنٹ_Char (چارہ اعداد و شمار) // 4 بٹ موڈ کے ذریعے 8 بٹس بھیجیں۔ چار لوئر_نبل ، اپر_نیبل؛ لوئر_نبل = ڈیٹا & 0x0F؛ اپر_نیبل = ڈیٹا & 0xF0؛ آر ایس = 1؛ // => آر ایس = 1 ایل سی ڈی_سیٹ بٹ (اپر_نبل >> 4)؛ // 4 EN = 1 کے ذریعہ شفٹ کرکے اوپری نصف ارسال کریں؛ (INT = = 2130483؛ i <= 0؛ i--) NOP ()؛ EN = 0؛ Lcd_SetBit (لوئر_نبل)؛ // نچلے نصف EN بھیجیں = 1؛ کیلئے (INT = = 2130483؛ i <= 0؛ i--) NOP ()؛ EN = 0؛ }
کالعدم ایل سی ڈی_پرنٹ_اسٹرنگ (چار * اے): اگر حروف کا ایک گروپ ڈسپلے کرنا ہے تو ، اسٹرنگ فنکشن کا استعمال کیا جاسکتا ہے۔
کالعدم ایل سی ڈی_پریٹ_سٹرنگ (چار * ا) {انٹ i؛ (i = 0؛ a! = '\ 0'؛ i ++) کے لئے Lcd_Print_Char (a)؛ // پوائنٹرز کا استعمال کرتے ہوئے تار کو الگ کریں اور چار فنکشن پر کال کریں}
جب بھی ایل سی ڈی_پرنٹ_چار (چار ڈیٹا) کہا جاتا ہے ، اس کی متعلقہ اقدار ایل سی ڈی کے ڈیٹا لائنوں پر بھیج دی جاتی ہیں۔ یہ حروف بٹس کی شکل میں HD44780U تک پہنچ جاتے ہیں۔ اب یہ آای سی اپنی روم کی میموری کو استعمال کرکے دکھائے جانے والے کردار سے متعلق بٹس سے متعلق ہے جیسا کہ مندرجہ ذیل ٹیبل میں دکھایا گیا ہے۔ آپ HD44780U LCD کنٹرولر کی ڈیٹا شیٹ میں سارے کرداروں کے لئے بٹس تلاش کرسکتے ہیں ۔
اب ، چونکہ ہم اپنی ہیڈر فائل سے مطمئن ہیں ، آئیے سرکٹ تیار کریں اور پروگرام کی جانچ کریں۔ مندرجہ بالا لنک میں دی گئی مکمل ہیڈر فائل کو بھی چیک کریں۔
سرکٹ ڈایاگرام اور جانچ:
ذیل میں پی آئی سی مائکروکنٹرولر کے ساتھ انٹرفیسنگ 16 ایکس 2 ایل سی ڈی کے لئے سرکٹ ڈایاگرام ہے۔
میں نے مذکورہ بالا سرکٹ میں پاور سپلائی یا آئی سی ایس پی کنکشن نہیں دکھایا ، کیوں کہ ہم وہی بورڈ استعمال کررہے ہیں جو ہم پچھلے سبق میں استعمال کرچکے ہیں ، یہاں چیک کریں۔
پروگرام میں ایک اہم چیز LCD کی پن تعریف ہے۔
# ڈیفائن آر ایس آر ڈی 2 # ڈیفائن این آر ڈی 3 # ڈیفائن ڈی 4 آر ڈی 4 # ڈیفائن ڈی 5 آر ڈی 5 # ڈیفائن ڈی 6 آر ڈی 6 # ڈیفائن ڈی 7 آر ڈی 7
ان پن تعریفوں کو پروگرامرز ہارڈ ویئر سیٹ اپ کے مطابق تبدیل کیا جاسکتا ہے۔ اگر آپ یہاں تبدیل کرتے ہیں تو اہم فنکشن میں بندرگاہ کی معزز ترتیب کو تبدیل کرنا یاد رکھیں۔
اس پروجیکٹ کے لئے ہارڈ ویئر بہت آسان ہے۔ ہم اسی پی آئی سی ماڈیول کا دوبارہ استعمال کرنے جارہے ہیں جس کا استعمال ہم نے آخری بار کیا تھا اور ایل سی ڈی ماڈیول کو جمپر تاروں کا استعمال کرکے اپنے پی آئی سی سے مربوط کریں گے۔
کنکشن کو مندرجہ ذیل ٹیبل کے ذریعہ سمجھا جاسکتا ہے:
LCD پن نمبر |
LCD پن کا نام |
ایم سی یو پن کا نام |
ایم سی یو پن نمبر |
1 |
زمین |
زمین |
12 |
2 |
وی سی سی |
+ 5 وی |
11 |
3 |
VEE |
زمین |
12 |
4 |
منتخب کریں رجسٹر |
آر ڈی 2 |
21 |
5 |
پڑھ لکھ |
زمین |
12 |
6 |
فعال |
آر ڈی 3 |
22 |
7 |
ڈیٹا بٹ 0 |
این سی |
- |
8 |
ڈیٹا بٹ 1 |
این سی |
- |
9 |
ڈیٹا بٹ 2 |
این سی |
- |
10 |
ڈیٹا بٹ 3 |
این سی |
- |
11 |
ڈیٹا بٹ 4 |
آر ڈی 4 |
27 |
12 |
ڈیٹا بٹ 5 |
آر ڈی 5 |
28 |
13 |
ڈیٹا بٹ 6 |
آر ڈی 6 |
29 |
14 |
ڈیٹا بٹ 7 |
آرڈی 7 |
30 |
15 |
ایل ای ڈی مثبت |
+ 5 وی |
11 |
16 |
ایل ای ڈی منفی |
زمین |
12 |
اب ہم آسانی سے کنکشن بنائیں ، کوڈ کو ہمارے ایم سی یو میں پھینک دیں اور آؤٹ پٹ کی تصدیق کریں۔
اگر آپ کو کوئی پریشانی یا شک ہے تو ، براہ کرم کمنٹ سیکشن کا استعمال کریں۔ نیچے دیئے گئے ڈیمو ویڈیو کو بھی چیک کریں ۔