- 16x2 LCD ڈسپلے کا کام کرنا
- سرکٹ ڈایاگرام سے انٹرفیس LCD میں STM8 مائکروکانٹرولر
- STM8 LCD لائبریری - STM8S103F3P6 کے لئے ہیڈر فائل
- STM8S مائکروکانٹرولر کے لئے LCD پروگرام
- LCD کے ساتھ STM8 - کام کرنا
شوق پرستوں اور شائقین کے مابین 16x2 الفا نومر ایل سی ڈی ڈسپلے سب سے زیادہ استعمال ہوتا ہے۔ جب آپ صارف کو بنیادی معلومات دکھانا چاہتے ہیں تو یہ ڈسپلے بہت مفید ہے اور ہمارے کوڈ کو جانچنے یا ڈیبگ کرنے میں بھی مدد کرسکتا ہے۔ یہ خاص طور پر 16x2 LCD ماڈیول آسانی سے دستیاب ہے اور طویل عرصے سے مشہور ہے۔ آپ لنکڈ آرٹیکل میں 16x2 LCD ماڈیول کی بنیادی باتوں کے بارے میں مزید جان سکتے ہیں۔
اس ٹیوٹوریل میں ، ایس ٹی ایم 8 مائکروکونٹرولر سبق کے اپنے سلسلے کو جاری رکھنے کے ل we ، ہم ایس ٹی ایم 8 مائکروکانٹرولر کے ساتھ ایل سی ڈی انٹرفیس کرنے کا طریقہ سیکھیں گے ۔ اس سے قبل ہم نے بہت سارے دوسرے مائکروکانٹرولرز کے ساتھ بھی 16x2 LCD انٹرفیس کیا ہے ، سبق ذیل میں درج ہیں اور اگر دلچسپی ہو تو آپ ان کو چیک کرسکتے ہیں۔
اگر آپ STM8 میں نئے ہیں تو ، کنٹرولر بورڈ اور پروگرامنگ ماحول کی بنیادی باتوں کو سمجھنے کے لئے STM8 مائکروکونٹرولر مضمون کی مدد سے جانچ کریں۔ ہم اس سبق میں بنیادی باتوں کا احاطہ نہیں کریں گے۔
16x2 LCD ڈسپلے کا کام کرنا
جیسا کہ نام سے پتہ چلتا ہے ، ایک 16x2 LCD میں 16 کالم اور 2 قطار ہوں گے۔ لہذا مجموعی طور پر ، ہم اس ڈسپلے پر 32 حرف آویزاں کرسکیں گے اور یہ حروف حرف تہجی یا اعداد یا حتی کہ علامت بھی ہوسکتے ہیں۔ ایک آسان 16x2 LCD پن آؤٹ جو ہم اس ٹیوٹوریل میں استعمال کرتے ہیں وہ نیچے دکھایا گیا ہے۔
جیسا کہ آپ دیکھ سکتے ہیں ، ڈسپلے میں 16 پن ہیں اور ہم اسے پانچ زمروں ، پاور پن ، کنٹراسٹ پن ، کنٹرول پن ، ڈیٹا پن اور بیک لائٹ پنوں میں تقسیم کرسکتے ہیں جیسا کہ نیچے دیئے گئے جدول میں دکھایا گیا ہے۔ جب ہم اس ٹیوٹوریل کے سرکٹ ڈایاگرام پر تبادلہ خیال کریں گے تو ہم ہر پن کی تفصیلات حاصل کریں گے۔
قسم | پن نہیں | پن کا نام | فنکشن |
پاور پن | 1 | وی ایس ایس | گراؤنڈ پن ، گراؤنڈ سے منسلک ہے |
2 | وی ڈی ڈی یا وی سی سی | وولٹیج پن + 5V | |
کنٹراسٹ پن | 3 | V0 یا VEE | متغیر کی مزاحم کے ذریعہ Vcc سے متصل متضاد سیٹنگ۔ |
کنٹرول پن | 4 | RS | رجسٹر کریں منتخب کریں پن ، آر ایس = 0 کمانڈ موڈ ، آر ایس = 1 ڈیٹا موڈ |
5 | آر ڈبلیو | پڑھیں / لکھیں پن ، RW = 0 لکھیں موڈ ، RW = 1 پڑھیں | |
6 | ای | قابل بنائیں ، LCD کو قابل بنانے کیلئے اعلی سے کم نبض کی ضرورت ہے | |
ڈیٹا پن | 7-14 | D0-D7 | LCD یا کمانڈ ہدایات پر ظاہر کرنے کے لئے ڈیٹا پن ، ڈیٹا کو اسٹور کرتا ہے |
بیک لائٹ پن | 15 | ایل ای ڈی + یا A | بیک لائٹ + 5V کو طاقت بخشنے کے لئے |
16 | ایل ای ڈی- یا K | بیک لائٹ گراؤنڈ |
LCD کے پچھلے حصے پر ، جیسا کہ ذیل کی تصویر میں دکھایا گیا ہے ، آپ کو دو سیاہ نقطے نظر آئیں گے ، جس کے اندر ہمارے پاس HD44780 LCD ڈرائیور IC (سرخ رنگ میں گھرا ہوا) ہے۔ ہمارے مائکروکنٹرولر کو اس آئی سی کے ساتھ بات چیت کرنی چاہئے جس کے نتیجے میں وہ کنٹرول کرے گا کہ LCD پر کیا دکھایا جارہا ہے۔ اگر آپ جاننا چاہتے ہیں کہ یہ سب کیسے کام کرتا ہے تو آپ کو 16x2 LCD ڈسپلے کے کام کی جانچ پڑتال کرنی چاہئے جہاں ہم پہلے ہی بحث کر چکے ہیں کہ LCD تفصیل سے کیسے کام کرتا ہے۔
اس ٹیوٹوریل میں، ہم سرکٹ ڈایاگرام اور alphamerical حروف سادہ کا استعمال کرتے ہوئے ایک 16x2 LCD ڈسپلے پر (حروف اور اعداد) ظاہر کرنے کے لئے کوڈ کو بات چیت کریں گے LCD_print _char اور LCD_print_string حکم دیتا. ہمارے ہیڈر فائل کو شامل کرنے کے بعد یہ احکامات براہ راست پروگرام میں استعمال ہوسکتے ہیں۔ ہیڈر فائل آپ کے لئے سبھی چیزوں کے ساتھ معاملت کرتی ہے لہذا یہ جاننا لازمی نہیں ہے کہ ڈسپلے یا HD44780 ڈرائیور کا آئی سی کیسے کام کرتا ہے۔
سرکٹ ڈایاگرام سے انٹرفیس LCD میں STM8 مائکروکانٹرولر
مکمل STM8 LCD سرکٹ نیچے کی تصویر میں پایا جاسکتا ہے۔ جیسا کہ آپ دیکھ سکتے ہیں کہ LCD کے ساتھ STM8S103F3P6 کنٹرولر کا کنکشن بہت آسان ہے ، ہمارے پاس LCD ڈسپلے براہ راست ہمارے بورڈ سے جڑا ہوا ہے اور ST- لنک بھی بورڈ کے پروگرام سے منسلک ہے۔
ایس ایس ایم 8 ایس بورڈ میں پاور پنوں وی ایس ایس اور وی سی سی 5V پن سے جڑے ہوئے ہیں ، نوٹ کریں کہ ایل سی ڈی کا آپریٹنگ وولٹیج 5V ہے اور 3.3V پر کام کرنے کے لئے جڑا ہوا ہے۔ لہذا اس کے باوجود کہ STM8S103F3P6 مائکرو قابو پانے والا 3.3V پر کام کرتا ہے LCD کے لئے 5V سپلائی رکھنا لازمی ہے ، آپ چارج کنٹرولر IC استعمال کرکے اس سے بچ سکتے ہیں لیکن ہم اس سبق میں اس پر گفتگو نہیں کریں گے۔
اگلا ، ہمارے پاس کنٹراسٹ پن ہے جو ایل سی ڈی کے برعکس قائم کرنے کے لئے استعمال ہوتا ہے ، ہم نے اسے پوٹینومیٹر سے منسلک کیا ہے تاکہ ہم اس کے برعکس کو کنٹرول کرسکیں۔ ہم نے 10 کٹ کا برتن استعمال کیا ہے ، لیکن آپ دوسری قریبی اقدار بھی استعمال کرسکتے ہیں ، برتن 0-5 V کو اس کے برعکس پن فراہم کرنے کے لئے ایک امکانی تقسیم کے طور پر کام کرتا ہے ، عام طور پر آپ معقول تضاد کے ل 2. 2.2V کے ارد گرد براہ راست مزاحم فراہم کرسکتے ہیں۔ قدر. پھر ہمارے پاس ری سیٹ (آر ایس) ، پڑھیں / لکھیں (آر ڈبلیو) ، اور (ای) پنوں کو فعال کریں۔ پڑھنے لکھنے کی بنیاد گراؤنڈ ہے کیونکہ ہم LCD سے کچھ نہیں پڑھیں گے ہم صرف لکھنے کا عمل انجام دیں گے۔ دیگر دو کنٹرول پن اور روپیہ بالترتیب PA1 اور PA2 پنوں سے جڑے ہوئے ہیں۔
اس کے بعد ہمارے پاس ڈیٹا پن DB0 سے DB7 ہے۔ 16x2 LCD دو طریقوں میں کام کرسکتا ہے ، ایک 8 بٹ آپریشن موڈ ہے جہاں ہمیں LCD پر تمام 8 ڈیٹا پن (DB0-DB7) کا استعمال کرنا ہے اور دوسرا 4 بٹ آپریشن موڈ ہے جہاں ہمیں صرف 4 کی ضرورت ہے۔ ڈیٹا پن (DB4-DB7)۔ 4 بٹ موڈ عام طور پر استعمال کیا جاتا ہے کیونکہ اس میں کنٹرولر سے کم GPIO پن کی ضرورت ہوتی ہے ، لہذا ہم نے اس ٹیوٹوریل میں 4 بٹ موڈ بھی استعمال کیا ہے اور صرف PD D ، 4 DB5 ، DB6 ، اور DB7 کو پنوں PD1 ، PD2 ، PD3 سے جوڑا ہے ، اور بالترتیب PD4۔
آخری دو پنوں بی ایل اے اور بی ایل کے اندرونی بیک لائٹ ایل ای ڈی کو طاقت میں استعمال کرنے کے ل are استعمال ہوتے ہیں ، ہم نے موجودہ لیمٹنگ ریزٹر کے طور پر 560 اوہم ریزسٹر استعمال کیا ہے۔ ایس ٹی لنک پروگرامر ہمیشہ کی طرح ہمارے پچھلے سبق کے ساتھ جڑا ہوا ہے۔ میں نے بریڈ بورڈ پر مکمل رابطہ قائم کیا اور میرا سیٹ اپ ایسا لگتا ہے جیسے نیچے کی تصویر میں دکھایا گیا ہو۔
STM8 LCD لائبریری - STM8S103F3P6 کے لئے ہیڈر فائل
سرکٹ ڈایاگرام میں آگے بڑھنے سے پہلے آئیے ، مندرجہ ذیل لنک کا استعمال کرتے ہوئے گٹ ہب سے STM8 LCD ہیڈر فائل حاصل کریں۔
STM8S 16x2 LCD ہیڈر فائل
آپ یا تو مکمل ریپو ڈاؤن لوڈ کرسکتے ہیں اور stm8s103_LCD_16x2.h فائل حاصل کرسکتے ہیں یا مذکورہ بالا لنک سے کوڈ آسان کرسکتے ہیں۔ پروجیکٹ کو ترتیب دیتے وقت ، یقینی بنائیں کہ آپ اس ہیڈر فائل کے ساتھ انک ڈائرکٹری میں تمام مطلوبہ ہیڈر فائلوں کو شامل کریں۔
اگر آپ کو معلوم نہیں ہے کہ ہیڈر فائلوں کو کیسے شامل کریں اور پروگرام مرتب کریں تو ، اس صفحے کے نیچے دیئے گئے ویڈیو کی پیروی کریں۔ اور اگر آپ جانتے ہیں کہ ہیڈر فائل کے اندر کا کوڈ کیسے کام کرتا ہے تو ، آپ ایل سی ڈی کے سبق کے ذریعہ پی آئی سی چیک کرسکتے ہیں۔ اس پروجیکٹ میں استعمال ہونے والی ہیڈر فائل بالکل اسی طرح کی ہے جس کی وہاں وضاحت کی گئی ہے ، لہذا ہم اس کی تفصیلات میں شامل نہیں ہوں گے۔
STM8S مائکروکانٹرولر کے لئے LCD پروگرام
مظاہرے کے ل we ، ہم اپنے STM8S کنٹرولر کو پروگرام کریں گے کہ "سرکٹ ڈائجسٹ" جیسی ایک عام سٹرنگ ڈسپلے کریں اور پھر ہم دوسری لائن میں ہر ایک سیکنڈ کے لئے "ٹیسٹ" ویلیو میں اضافہ کریں گے۔ مکمل پروگرام اس صفحے کے نیچے پایا جاسکتا ہے۔ وضاحت اس طرح ہے۔
ہم اپنا پروگرام پنوں کی وضاحت کرکے اور ہمیشہ کی طرح ہیڈر فائلوں کو شامل کرکے شروع کرتے ہیں۔ ہمارے مذکورہ بالا زیر بحث سرکٹ ڈایاگرام میں ، ہم نے LCD_RS کو PA1 سے مربوط کیا ہے لہذا ہم نے اسے LCD_RS GPIOA ، GPIO_PIN_1 کے طور پر بیان کیا ہے ۔ اسی طرح ، ہم نے دوسرے پنوں کے لئے بھی یہی کیا ہے۔ اگر وہ کسی مختلف سرکٹ کی پیروی کررہے ہیں تو ، یقینی بنائیں کہ آپ ان اقدار کو اسی کے مطابق تبدیل کریں گے۔
# ڈیفائن LCD_RS GPIOA ، GPIO_PIN_1 # تعی Lن LCD_EN GPIOA ، GPIO_PIN_2 # تعی Lن LCD_DB4 GPIOD ، GPIO_PIN_1 # تعی Lن LCD_DB5 GPIOD ، GPIO_PIN_2 # تعی Lن LCD_DB6 GP8_53 جد 3 ، GPIOdINCINI "شامل ہے"
اپنے مرکزی پروگرام کے اندر ، ہم نے اس نمونہ کوڈ کے لئے درکار متغیرات کا اعلان کیا ہے۔ ہمارے پاس ایک ٹیسٹ متغیر ہے جسے test_var کہتے ہیں جو ابتدا میں صفر ہے ، ہم متغیر میں اضافہ کریں گے اور اسے LCD پر ڈسپلے کریں گے۔ حرف D1 سے D4 ٹیسٹ کے متغیر کے 4 ہندسوں کی نمائندگی کرتا ہے کیونکہ ہمارا LCD براہ راست INT ویلیو ظاہر نہیں کرسکتا ، ہمیں انہیں حرفوں میں تبدیل کرنا ہوگا۔
// متغیر اعلانات ٹیسٹ ٹیسٹ_وار = 0؛ چار ڈی 4 ، ڈی 3 ، ڈی 2 ، ڈی 1؛
LCD_Begin () تقریب LCD کی ابتدا کرنے کے لئے استعمال کیا جاتا ہے. یہ فنکشن تمام مطلوبہ GPIO پنوں کو شروع کردے گا اور LCD کو 16x2 LCD وضع میں بھی ترتیب دے گا۔ پھر ہمارے پاس LCD_Clear () فنکشن موجود ہے جو LCD پر موجود تمام اقدار کو صاف کرنے کے لئے استعمال ہوتا ہے ، اس سے LCD کی ہر چیز مٹ جائے گی تاکہ نئی اقدار لکھنا صاف ہو۔ پھر ہمارے پاس LCD_Set_Cursor (x، y) فنکشن ہوتا ہے جہاں ایکس اور y وہ پوزیشن ہوتی ہیں جہاں ہمیں اپنا نیا کریکٹر لکھنے کی ضرورت ہوتی ہے۔ مثال کے طور پر ، (1،1) کا مطلب ہے پہلی صف اور پہلا کولم ، اسی طرح (2،12) کا مطلب دوسری صف 12 کالم ہے ، اسی طرح۔ نوٹ کریں کہ ہمارے پاس یہاں 2 قطاریں اور 16 کالم موجود ہیں جیسا کہ ہم نے پہلے بحث کیا ہے۔
Lcd_Begin ()؛ ایل سی ڈی_کلیئر ()؛ ایل سی ڈی_سیٹ_کرسر (1،1)؛
اب ، LCD سیٹ ، صاف ، اور جگہ جگہ پر کرسر موجود ہے۔ اگلی چیز اسکرین پر کچھ پرنٹ کرنا ہے۔ ہم LCD اور LCD_PPress_Char (a) پر کسی تار کو چھاپنے کے لئے LCD_پرنٹ_اسٹرنگ ("نمونہ اسٹرنگ") کا استعمال کرسکتے ہیں تاکہ LCD میں کسی حرف کی قدر پرنٹ کریں۔ ہمارے پروگرام میں ہم نے "STM8S103F3P3 LCD" پرنٹ کیا ہے اور مندرجہ ذیل کوڈ کا استعمال کرتے ہوئے 5 سیکنڈ کی تاخیر پیدا کی ہے۔
ایل سی ڈی_پرنٹ_سٹرنگ ("STM8S103F3P3 LCD")؛ تاخیر_میں (5000)؛
5 دوسری تاخیر کے بعد ، ہم پھر LCD صاف کرتے ہیں اور پہلی صف میں "سرکٹ ڈائجسٹ" اور دوسری قطار میں "ٹیسٹ:" I ڈسپلے کرتے ہیں۔
ایل سی ڈی_کلیئر ()؛ ایل سی ڈی_سیٹ_کرسر (1،1)؛ ایل سی ڈی_پرینٹ_اسٹرنگ ("سرکٹ ڈائجسٹ")؛ ایل سی ڈی_سیٹ_کرسر (2،1)؛ ایل سی ڈی_پرنٹ_سٹرنگ ("ٹیسٹ:")؛
جبکہ لوپ کے اندر ، ہم انٹیجر متغیر test_var پر ویلیو کو انفرادی حرفوں میں تقسیم کردیں گے تاکہ LCD پر سادہ ڈویژن اور ماڈیولس آپریٹرز کا استعمال کرتے ہوئے اسے دکھایا جاسکے۔ ASCII ویلیو کو کردار میں تبدیل کرنے کے لئے ہم نے '0' بھی شامل کیا ہے۔
d4 = test_var٪ 10 + '0'؛ d3 = (ٹیسٹ_وار / 10)٪ 10 + '0'؛ d2 = (test_var / 100)٪ 10 + '0'؛ d1 = (ٹیسٹ_وار / 1000) + '0'؛
اس کے بعد ہم نے کرسر (2،6) پر ترتیب دیا ہے کیونکہ ہم نے پہلے ہی دوسری صف میں "ٹیسٹ:" لکھا ہے جو 6 حرف ہے۔ اگر ہم ادلیکھت کرتے ہیں تو ، موجودہ کردار LCD پر ایک نئے کردار کے ساتھ بدل دیا جائے گا۔ ہم نے ایک تاخیر میں 1 سیکنڈ اور متغیر کو بڑھایا ہے۔
ایل سی ڈی_سیٹ_کرسر (2،6)؛ ایل سی ڈی_پرنٹ_چار (ڈی 1)؛ ایل سی ڈی_پرنٹ_چار (ڈی 2)؛ ایل سی ڈی_پرنٹ_چار (ڈی 3)؛ ایل سی ڈی_پرنٹ_چار (ڈی 4)؛ delay_ms (1000)؛ ٹیسٹ_وار ++؛
LCD کے ساتھ STM8 - کام کرنا
ہمارے پروگرام کی جانچ کرنے کے لئے ، کوڈ کو صرف ہمارے کنٹرولر میں اپ لوڈ کریں اور اسے مائیکرو USB پورٹ کے ساتھ طاقت بنائیں۔ نوٹ کریں کہ LCD کو کام کرنے کے لئے 5V کی ضرورت ہوتی ہے لہذا USB پورٹ سے بورڈ کو بجلی بنانا لازمی ہے۔ ہم نے پہلے اسے ایس ٹی لنک سے براہ راست چلادیا ہے کیونکہ ہمیں 5 وی سپلائی کی ضرورت نہیں تھی۔
جیسا کہ آپ دیکھ سکتے ہیں کہ ایل سی ڈی ٹیسٹ کے متغیر کی قیمت کے ساتھ توقع کے مطابق کام کر رہا ہے جس میں ہر سیکنڈ میں تقریبا اضافہ ہوتا ہے۔ نیز ، یہ بھی نوٹ کریں کہ ہم نے اس تاخیر کو پیدا کرنے کے لئے ٹائمر استعمال نہیں کیے ہیں اور صرف تاخیر کا استعمال کیا ہے لہذا توقع نہ کریں کہ تاخیر کی مدت درست ہوگی ، ہم اس مقصد کے لئے بعد میں کسی اور ٹیوٹوریل میں ٹائمر استعمال کریں گے۔
منصوبے کا مکمل کام ذیل میں منسلک ویڈیو میں پایا جاسکتا ہے۔ امید ہے کہ آپ نے ٹیوٹوریل سے لطف اندوز ہوکر کچھ مفید سیکھا ہوگا۔ اگر آپ کے کوئی سوالات ہیں تو ، ان کو کمنٹ سیکشن میں چھوڑ دیں یا دیگر تکنیکی سوالات کے لئے ہمارے فورمز کا استعمال کریں۔