- ہمیں 4x4 کیپیڈ کی ضرورت کیوں ہے:
- 4x4 میٹرکس کیپیڈ کیسے کام کرتا ہے:
- مطلوبہ مواد:
- سرکٹ ڈایاگرام:
- پروگرامنگ کی وضاحت:
کیپیڈس بڑے پیمانے پر استعمال شدہ ان پٹ ڈیوائسز کو مختلف الیکٹرانکس اور ایمبیڈڈ پروجیکٹس میں استعمال کیا جاتا ہے۔ وہ اعداد اور حروف کی شکل میں آدانوں کو لینے کے ل used استعمال ہوتے ہیں ، اور مزید پروسیسنگ کے ل system اسے سسٹم میں کھاتے ہیں۔ اس ٹیوٹوریل میں ہم PIC16F877A کے ساتھ 4x4 میٹرکس کیپیڈ کو انٹرفیس کرنے جا رہے ہیں ۔
تفصیل سے منطق میں جانے اور کیپیڈ استعمال کرنے کا طریقہ سیکھنے سے پہلے ، ہمیں کچھ چیزیں جاننے کی ضرورت ہوگی۔
ہمیں 4x4 کیپیڈ کی ضرورت کیوں ہے:
عام طور پر ہم ایک سوئچ ان پٹ کی طرح ، ڈیجیٹل سگنل کو پڑھنے کے لئے مائکروکنٹرولر یونٹ کا واحد I / O پن استعمال کرتے ہیں۔ کچھ درخواستوں میں جہاں ان پٹ مقاصد کے لئے 9 ، 12 ، 16 چابیاں درکار ہوتی ہیں ، اگر ہم مائکروکنٹرولر بندرگاہ میں ہر کلید شامل کریں تو ہم 16 I / O بندرگاہوں کا استعمال ختم کردیں گے۔ یہ 16 I / O بندرگاہیں نہ صرف I / O سگنل پڑھنے کے ل are ہیں ، بلکہ انہیں پردیی رابطوں کے طور پر بھی استعمال کیا جاسکتا ہے ، جیسے ADC سپورٹ کرتا ہے ، I2C ، SPI کنکشن بھی ان I / O پنوں کے ذریعہ تعاون یافتہ ہیں۔ چونکہ یہ پن سوئچز / چابیاں کے ساتھ جڑے ہوئے ہیں ، ہم ان کو استعمال نہیں کرسکتے ہیں لیکن صرف I / O بندرگاہوں کے طور پر۔ اس کا کوئی معنی نہیں ہے۔ تو ، پن گنتی کو کم کرنے کا طریقہ؟ اس کا جواب یہ ہے کہ ، ہیکس کیپیڈ یا میٹرکس کیپیڈ استعمال کرنا۔ ہم پن گنتی کو کم کرسکتے ہیں، جو 4x4 میٹرکس کیز کو جوڑتا ہے۔ اس میں 8 پنوں کا استعمال ہوگا جن میں سے 4 قطار میں جڑے ہوئے ہیں اور 4 کالموں میں جڑے ہوئے ہیں ، لہذا مائکروکانٹرولر کے 8 پنوں کی بچت ہوگی۔
4x4 میٹرکس کیپیڈ کیسے کام کرتا ہے:
اوپری امیج میں میٹرکس کیپیڈ ماڈیول بائیں طرف دکھایا گیا ہے۔ دائیں طرف اندرونی کنکشن کے ساتھ ساتھ پورٹ کنکشن بھی دکھایا گیا ہے۔ ہیں ہم بندرگاہ نظر آتا ہے تو 8 پن، پہلے 4 بائیں سے دائیں سے ہیں X1، X2، X3، اور X4 رہے ہیں قطاروں ، اور گزشتہ 4 سے دائیں کرنے کے لئے چھوڑ دیا جاتا Y1، Y2، Y3، Y4 چار ہیں کالم. اگر ہم 4 قطاروں یا ایکس سائیڈ کو آؤٹ پٹ کے طور پر بناتے ہیں اور ان کو منطق کم یا 0 بنا دیتے ہیں ، اور 4 کالم کو ان پٹ کے بطور بناتے ہیں اور چابیاں پڑھتے ہیں تو نامہ نگار Y کے ملنے پر ہم سوئچ پریس کو پڑھیں گے ۔
ایک ہی چیز nxn میٹرکس میں ہوگی جہاں n کا نمبر ہے۔ یہ 3x3 ، 6x6 وغیرہ ہوسکتا ہے۔
اب ذرا سوچئے کہ 1 دب گیا ہے ۔ پھر 1 X1 قطار اور Y1 کالم پر واقع ہے۔ اگر X1 0 ہے ، تو Y1 0 ہو جائے گا۔ اسی طرح ہم کالم Y1 ، Y2 ، Y3 اور Y4 کو سینسنگ کرکے X1 صف میں ہر کلید کو سمجھ سکتے ہیں۔ یہ کام ہر سوئچ کے لئے ہوتا ہے اور ہم میٹرکس میں سوئچ کی پوزیشن پڑھیں گے۔
ہر سبز حلقے ایک سوئچ ہوتے ہیں اور وہ دونوں اسی طرح سے جڑے ہوئے ہیں۔
اس ٹیوٹوریل میں ہم کلیدی بورڈ کو مندرجہ ذیل خصوصیات کے ساتھ انٹرفیس کریں گے۔
- ہم اندرونی پل اپ استعمال کریں گے
- ہم کلیدی ڈی باؤنس آپشن شامل کریں گے
لیکن جب سوئچز کو دبایا نہیں جاتا ہے تو ہمیں Y1 ، Y2 ، Y3 اور Y4 کو اونچائی یا 1. بنانے کی ضرورت ہے ۔ ورنہ جب سوئچ دبایا جارہا ہے تو ہم منطقی تبدیلیوں کا پتہ نہیں لگاسکتے ہیں۔ لیکن ہم اسے کوڈز یا پروگرام کے ذریعہ نہیں بنا سکے کیونکہ ان پنوں کی وجہ سے ان پٹ آؤٹ پٹ کے بطور استعمال ہوتا ہے۔ لہذا ، ہم مائکروکنٹرولر میں اندرونی آپریشن رجسٹر استعمال کریں گے اور ان پنوں کو کمزور پل اپ انبل موڈ کے طور پر چلائیں گے ۔ اس کا استعمال کرکے ، جب یہ پہلے سے طے شدہ حالت میں ہو تو ایک لاجک ہائی ایبل ایبل موڈ ہوگا۔
نیز ، جب ہم کلید دباتے ہیں تو سوئچ رابطوں کے ذریعہ اسپائکس یا شور پیدا ہوتا ہے ، اور اسی متعدد سوئچ پریس کی وجہ سے ایسا ہوتا ہے جس کی توقع نہیں کی جاتی ہے۔ لہذا ، ہم پہلے سوئچ پریس کا پتہ لگائیں گے ، چند ملی سیکنڈ کا انتظار کریں گے ، دوبارہ جانچ کریں گے کہ سوئچ ابھی بھی دبائی گئی ہے یا نہیں اور اگر سوئچ ابھی بھی دبائی گئی ہے تو ہم سوئچ پریس کو قبول کریں گے ورنہ نہیں۔ اسے سوئچز کا ڈی بانسنگ کہا جاتا ہے ۔
ہم یہ سب اپنے کوڈ میں لاگو کریں گے ، اور روٹی بورڈ پر رابطہ قائم کریں گے۔
دوسرے مائکروکنٹرولرز کے ساتھ 4x4 کیپیڈ انٹرفیس کرنے کا طریقہ بھی چیک کریں:
- آرپیڈو یونو کے ساتھ کیپیڈ انٹرفیسنگ
- 8051 مائکروکونٹرولر کے ساتھ 4x4 میٹرکس کیپیڈ انٹرفیسنگ
- اے ٹی میگا 32 مائکروکانٹرولر کے ساتھ 4x4 کیپیڈ انٹرفیسنگ
- بریک بورڈ پر راسبیری پِی ڈیجیٹل کوڈ لاک
مطلوبہ مواد:
- بریڈ بورڈ
- آپ کے کمپیوٹر میں Pic-Kit 3 اور ترقی کا ماحول ، یعنی MPLABX
- تاروں اور کنیکٹر
- کریکٹر LCD 16x2
- 20 میگاہرٹز کرسٹل
- 2 پی سیز 33 پی ایف سیرامک ڈسک ٹوپی۔
- 4.7k مزاحم
- 10 ک پیش سیٹ (متغیر مزاحم)
- 4x4 میٹرکس کیپیڈ
- A 5 V اڈاپٹر
سرکٹ ڈایاگرام:
ہم منسلک پنوں میں کرسٹل اور ریزٹر کو جوڑیں گے۔ نیز ، ہم LCD کو PORTD میں 4 بٹ موڈ میں مربوط کریں گے۔ ہم نے پورٹ RB4 کے پار ہیکس کیپیڈ یا میٹرکس کیپیڈ منسلک کیا ہے ۔
اگر آپ پی آئی سی میں نئے ہیں تو پی آئی سی مائکروکانٹرولر کے ساتھ شروعات کرنا شروع کریں: پی آئی سی اور ایم پی ایل ایکس کا تعارف
پروگرامنگ کی وضاحت:
میٹرک کیپیڈ کو پی آئی سی مائکروکونٹرولر کے ساتھ انٹرفیس کرنے کے لئے مکمل کوڈ آخر میں دیا گیا ہے۔ کوڈ آسان اور خود وضاحتی ہے۔ کیپیڈ لائبریری کوڈ میں سمجھنے کے لئے صرف ایک چیز ہے۔ کیپیڈ اور 16x2 LCD کو انٹرفیس کرنے کے لئے ہم نے یہاں کیپیڈ۔چ اور lcd.h لائبریری کا استعمال کیا ہے ۔ تو آئیے دیکھتے ہیں کہ اس کے اندر کیا ہو رہا ہے۔
کیپیڈ۔چ.چ کے اندر ہم دیکھیں گے کہ ہم نے xc.h ہیڈر استعمال کیا ہے جو پہلے سے طے شدہ رجسٹر لائبریری ہے ، کرسٹل فریکوینسی کی پیڈ سی سی فائل میں استعمال ہونے والی تاخیر کے استعمال کے لئے بیان کی گئی ہے ۔ ہم نے PORTRB رجسٹر میں کیپیڈ بندرگاہوں کی وضاحت کی اور انفرادی پنوں کو قطار (X) اور کالم (Y) کے طور پر بیان کیا ۔
ہم نے کیپیڈ ابتدائیہ کے لئے دو کام بھی استعمال کیے جو پورٹ کو آؤٹ پٹ اور ان پٹ کے طور پر ری ڈائریکٹ کرے گا ، اور ایک سوئچ پریس اسکین جو کال کرنے پر سوئچ پریس کی حیثیت واپس کرے گا۔
# شامل کریں
میں keypad.c ہم اس تقریب ذیل میں اہم پریس واپس آ جائیں گے کیپیڈ اسکینر تقریب 'این' واپس نہیں جب دیکھیں گے.
چار سوئچ_پریس_سکان (باطل) // صارف سے کلید حاصل کریں { چار کیچ = 'این'؛ // فرض نہ کریں جب کہ کوئی کلید دبا while نہیں ہے ((key == 'n') // انتظار کریں یہاں تک کہ ایک کلید دبایا جاتا ہے key = keypad_scanner ()؛ // چابیاں بار بار اسکین کریں اور دوبارہ کلید کی واپسی کریں۔ // جب کلید دبایا جاتا ہے تو اس کی قیمت واپس کریں }
ذیل میں کیپیڈ ریڈنگ فنکشن موجود ہے۔ ہر مرحلے میں ہم صف X1 ، X2 ، X3 ، اور X4 کو 0 بنائیں گے اور Y1 ، Y2 ، Y3 اور Y4 کی حیثیت کو پڑھیں گے۔ تاخیر ڈیبونس اثر کے ل is استعمال کی جاتی ہے ، جب سوئچ اب بھی دب جاتا ہے تو ہم اس سے وابستہ قدر واپس کردیں گے۔ جب کوئی سوئچ دبایا نہیں جاتا ہے تو ہم 'n' واپس آئیں گے ۔
چار keypad_scanner (باطل) { X_1 = 0؛ X_2 = 1؛ X_3 = 1؛ X_4 = 1؛ اگر (Y_1 == 0) {__ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_1 == 0)؛ واپسی '1'؛ } اگر (Y_2 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_2 == 0)؛ '2' واپس؛ } اگر (Y_3 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_3 == 0)؛ واپسی '3'؛ } اگر (Y_4 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_4 == 0)؛ واپسی 'A'؛ } X_1 = 1؛ X_2 = 0؛ X_3 = 1؛ X_4 = 1؛ اگر (Y_1 == 0) {__ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_1 == 0)؛ '4' واپس؛ } اگر (Y_2 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_2 == 0)؛ واپسی '5'؛ } اگر (Y_3 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_3 == 0)؛ واپسی '6'؛ } اگر (Y_4 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_4 == 0)؛ واپسی 'B'؛ } X_1 = 1؛ X_2 = 1؛ X_3 = 0؛ X_4 = 1؛ اگر (Y_1 == 0) {__ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_1 == 0)؛ '7' واپس؛ } اگر (Y_2 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_2 == 0)؛ '8' واپس؛ } اگر (Y_3 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_3 == 0)؛ واپس '9'؛ } اگر (Y_4 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_4 == 0)؛ واپسی 'C'؛ } X_1 = 1؛ X_2 = 1؛ X_3 = 1؛ X_4 = 0؛ اگر (Y_1 == 0) {__ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_1 == 0)؛ واپسی '*'؛ } اگر (Y_2 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_2 == 0)؛ واپسی '0'؛ } اگر (Y_3 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_3 == 0)؛ واپسی '#'؛ } اگر (Y_4 == 0) __ __ ڈیلا_ ایم ایس (100)؛ جبکہ (Y_4 == 0)؛ واپس 'D'؛ } واپسی 'n'؛ }
ہم آخری چار بٹس پر بھی کمزور پل اپ سیٹ کریں گے ، اور بندرگاہوں کی سمت بھی آخری 4 ان پٹ اور پہلے 4 آؤٹ پٹ کے طور پر مقرر کریں گے۔ OPTION_REG & = 0x7F؛ آخری پنوں پر ضعیف پل اپ وضع کرنے کے لئے استعمال ہوتا ہے۔
باطل انک کیپیڈ (باطل) { کیپیڈ_پورٹ = 0x00؛ // سیٹ کیپیڈ پورٹ پن کی اقدار صفر کیپیڈ_PORT_ سمت = 0xF0؛ // آخری 4 پن ان پٹ ، پہلے 4 پنوں آؤٹ پٹ OPTION_REG & = 0x7F؛ }
میں اہم PIC پروگرام (ذیل میں دی گئی) ہم سب سے پہلے کنفیگریشن بٹس مقرر اور چند ضروری لائبریریوں بھی شامل تھے. پھر باطل سسٹم_نائٹ کے افعال میں ہم کیپیڈ اور ایل سی ڈی شروع کرتے ہیں۔ اور آخر میں میں اہم تقریب میں ہم پر کال کر کے کی پیڈ پڑھا ہے switch_press_scan () تقریب اور LCD کے لئے قیمت واپس لوٹنے.
یہاں سے ہیڈر فائلوں کے ساتھ مکمل کوڈ ڈاؤن لوڈ کریں اور نیچے مظاہرہ ویڈیو دیکھیں ۔