في هذا البرنامج التعليمي ، سنقوم بواجهة لوحة مفاتيح 4x4 (16 مفتاحًا) مع متحكم ATMEGA32A. نحن نعلم أن لوحة المفاتيح هي واحدة من أهم أجهزة الإدخال المستخدمة في مشاريع الإلكترونيات. لوحة المفاتيح هي إحدى أسهل الطرق لإعطاء أوامر أو تعليمات لنظام إلكتروني.
المكونات مطلوبة
الأجهزة: ATMEGA32 ، مصدر طاقة (5 فولت) ، AVR-ISP PROGRAMMER ، JHD_162ALCD (16 * 2LCD) ، مكثف 100 فائق التوهج ، مكثف 100nF ، مقاوم 10KΩ (8 قطع).
البرنامج: Atmel studio 6.1 or Atmel studio 6.2، progisp or flash magic.
مخطط الدائرة وشرح العمل
في الدائرة PORTB من ATMEGA32 متصل بمنفذ بيانات LCD. هنا يجب على المرء أن يتذكر تعطيل اتصال JTAG في PORTC ot ATMEGA عن طريق تغيير بايتات الصمامات ، إذا أراد المرء استخدام PORTC كمنفذ اتصال عادي. في 16x2 LCD ، يوجد 16 دبوسًا في الكل إذا كان هناك ضوء خلفي ، وإذا لم يكن هناك ضوء خلفي ، فسيكون هناك 14 دبوسًا. يمكن للمرء أن يغادر أو يترك دبابيس الضوء الخلفي. يوجد الآن في 14 دبابيس 8 دبابيس بيانات (7-14 أو D0-D7) ، دبابيس إمداد طاقة (1 & 2 أو VSS & VDD أو gnd & + 5v) ، 3 دبوس rd للتحكم في التباين (يتحكم VEE في مدى سماكة الأحرف معروض) ، و 3 دبابيس تحكم (RS & RW & E).
في الدائرة ، يمكنك ملاحظة أنني أخذت دبابيس تحكم فقط ، وهذا يعطي المرونة ، ولا يتم استخدام بت التباين والقراءة / الكتابة في كثير من الأحيان حتى يمكن اختصارها على الأرض. هذا يضع LCD في أعلى وضع التباين والقراءة نحتاج فقط إلى التحكم في دبابيس ENABLE و RS لإرسال الأحرف والبيانات وفقًا لذلك.
فيما يلي التوصيلات التي تمت لشاشات الكريستال السائل:
PIN1 أو VSS على الأرض
PIN2 أو VDD أو VCC إلى + 5 فولت
PIN3 أو VEE على الأرض (يعطي أقصى تباين أفضل للمبتدئين)
PIN4 أو RS (اختيار التسجيل) إلى PD6 من uC
PIN5 أو RW (قراءة / كتابة) على الأرض (يؤدي وضع شاشة LCD في وضع القراءة إلى تسهيل الاتصال للمستخدم)
PIN6 أو E (تمكين) إلى PD5 من uC
PIN7 أو D0 إلى PB0 من uC
PIN8 أو D1 إلى PB1 من uC
PIN9 أو D2 إلى PB2 من uC
PIN10 أو D3 إلى PB3 من uC
PIN11 أو D4 إلى PB4 من uC
PIN12 أو D5 إلى PB5 من uC
PIN13 أو D6 إلى PB6 من uC
PIN14 أو D7to PB7 من uC
في الدائرة يمكنك أن ترى أننا استخدمنا اتصال 8 بت (D0-D7) ولكن هذا ليس إلزاميًا ، يمكننا استخدام اتصال 4 بت (D4-D7) ولكن مع برنامج اتصال 4 بت يصبح معقدًا بعض الشيء. لذلك من مجرد ملاحظة الجدول أعلاه ، نقوم بتوصيل 10 دبابيس من شاشة LCD بوحدة التحكم ، حيث تكون 8 دبابيس عبارة عن دبابيس بيانات و 2 دبابيس للتحكم.
الآن دعنا نتحدث عن لوحة المفاتيح ، لوحة المفاتيح ليست سوى مفاتيح متعددة الإرسال. يتم توصيل الأزرار بشكل متعدد الإرسال لتقليل استخدام الدبوس لنظام التحكم.
ضع في اعتبارك أن لدينا لوحة مفاتيح 4x4 ، في لوحة المفاتيح هذه لدينا 16 زرًا ، وفي الحالات العادية نحتاج إلى 16 دبوسًا للتحكم في 16 زرًا للواجهة ، لكن هذا ليس جيدًا في وجهة نظر نظام التحكم. يمكن تقليل استخدام الدبوس هذا عن طريق توصيل الأزرار في شكل متعدد الإرسال.
على سبيل المثال ، ضع في اعتبارك أن لدينا 16 زرًا ونريد إرفاقها بوحدة تحكم لتشكيل لوحة مفاتيح ، وهذه المفاتيح مرتبة كما هو موضح في الشكل:
هذه الأزرار متصلة بأعمدة مشتركة كما هو موضح في الشكل:
كما هو موضح في الشكل ، يتم سحب الأطراف غير المحددة لكل أربعة أزرار للحصول عليها لتشكيل عمود ، وبالتالي بالنسبة لـ 16 مفتاحًا ، لدينا أربعة أعمدة.
إذا نسينا اتصالات الأعمدة أعلاه ، ونهايات محددة مشتركة لكل أربعة أزرار معًا لتشكيل صف:
كما هو موضح في الشكل ، بالنسبة إلى المفاتيح الستة عشر ، سيكون لدينا أربعة صفوف كما هو موضح في الشكل.
الآن عندما يتم رؤيتهما معًا ، نحصل على شيء مثل الدائرة أدناه:
لقد قمنا هنا بتوصيل 16 مفتاحًا في شكل متعدد الإرسال لتقليل استخدام الدبوس لوحدة التحكم. عند مقارنتها بالحالة الأولى لـ 16 مفتاحًا متصلًا ، احتجنا إلى 16 دبوسًا على وحدة التحكم ولكن الآن بعد مضاعفة الإرسال ، نحتاج فقط إلى 8 دبابيس لوحدة التحكم لتوصيل 16 مفتاحًا.
عادة هذا ما يتم تقديمه داخل لوحة المفاتيح:
كما هو موضح في الشكل أعلاه ، يوجد 16 مفتاحًا في لوحة المفاتيح أعلاه ويمثل كل مفتاح من هذه المفاتيح زرًا في تكوين الزر متعدد الإرسال. وهناك أيضًا 8 وصلات توصيل كما هو موضح في الشكل أعلاه ترمز إلى الاتصال متعدد الإرسال.
الآن للعمل:
تحتوي لوحة المفاتيح هنا على أربعة أعمدة وأربعة صفوف ، لتحديد الزر المضغوط ، سنستخدم طريقة المرجع التبادلي. هنا أولاً ، سنقوم إما بتوصيل جميع الأعمدة أو جميع الصفوف بـ vcc ، لذلك إذا كانت الصفوف متصلة بـ vcc مشترك ، فسنأخذ الأعمدة كمدخلات إلى وحدة التحكم.
الآن إذا تم الضغط على الزر الأول كما هو موضح في الشكل:
بعد ذلك يتدفق التيار عبر الدائرة كما هو موضح في الشكل أدناه:
لذلك لدينا C1 عالية ، للضغط على زر. في هذه اللحظة بالذات ، سنقوم بتحويل منافذ الطاقة والإدخال ، أي أننا سنقوم بتزويد الأعمدة بالطاقة ونأخذ الصفوف كمدخلات ،
من خلال ذلك ، سيكون هناك تدفق للطاقة كما هو موضح في الشكل أدناه:
لذلك بالنسبة للصف لدينا R1 عالية.
اعتبارًا من الآن ، لدينا C1 مرتفع في الحالة الأولى و R1 مرتفع في الحالة الثانية ، لذلك لدينا موضع مصفوفة للزر ومن ثم الرقم "واحد".
إذا تم الضغط على الزر الثاني ، فسيكون لدينا C1 كعمود ولكن المنطق العالي الذي نحصل عليه في العمود المشترك سيكون "R2". إذن سيكون لدينا C1 و R2 ، وبالتالي سيكون لدينا موضع مصفوفة للزر الثاني.
هذه هي الطريقة التي سنكتب بها البرنامج ، سنقوم بتوصيل ثمانية دبابيس من لوحة المفاتيح بثمانية دبابيس لوحدة التحكم. وللبدء ، نقوم بتشغيل أربعة دبابيس لوحدة التحكم لتشغيل أربعة صفوف من لوحة المفاتيح ، وفي هذا الوقت يتم أخذ المسامير الأربعة الأخرى كمدخلات. عندما يتم الضغط على الزر ، يتم سحب دبوس العمود المقابل لأعلى وبالتالي يتم سحب دبوس وحدة التحكم ، سيتم التعرف على هذا لتغيير الإدخال إلى الطاقة والطاقة إلى الإدخال ، لذلك سيكون لدينا صفوف كمدخلات.
بهذا نحصل على الزر يضغط عليه المستخدم. يتم توجيه عناوين المصفوفة هذه إلى الرقم المقابل ، ويظهر هذا الرقم على شاشة LCD.
يتم شرح عمل تفاعل لوحة المفاتيح مع متحكم avr خطوة بخطوة في كود C الوارد أدناه. يمكنك أيضًا التحقق من: واجهة لوحة المفاتيح مع متحكم 8051.