- شاشة LCD أبجدية رقمية مقاس 16 × 2
- مكتبة CCS LCD مقاس 16 × 2 لـ MSP430
- وظائف شاشة LCD مقاس 16 × 2 في MSP430
- مخطط الدائرة لواجهة LCD مع MSP430
- برمجة MSP430 باستخدام Code Composer Studio لشاشة LCD
هذه المقالة هي استمرار لسلسلة البرامج التعليمية الخاصة بنا حول برمجة MSP430 باستخدام Code Composer Studio. اعتمد البرنامج التعليمي الأخير على المقاطعات الخارجية على MSP430 باستخدام دبابيس GPIO. يدور هذا البرنامج التعليمي حول توصيل شاشة عرض بـ MSP430 ، عندما يتعلق الأمر بعرض شاشة عرض 16 * 2 LCD ، فهي الخيار الأول لأي هاوٍ إلكتروني. لقد قمنا سابقًا أيضًا بتوصيل LCD مع MSP430 باستخدام Arduino IDE ، في هذا البرنامج التعليمي ، سنستخدم النظام الأساسي لاستوديو Code Composer الأصلي بدلاً من استخدام Arduino IDE ، وبهذه الطريقة كمصمم ، نحصل على مزيد من المرونة.
لمعرفة المزيد حول شاشة LCD مقاس 16 × 2 واستخدامها مع وحدات التحكم الدقيقة الأخرى ، يرجى الاطلاع على البرامج التعليمية أدناه.
- واجهات LCD مع ATmega16
- واجهة LCD مع Raspberry Pi
- واجهة LCD مع متحكم PIC
- واجهة LCD مع ARM7-LPC2148
- واجهات LCD مع NodeMCU
- واجهة LCD مع STM32
- واجهات LCD مع MSP430G2
- واجهة LCD مع STM8
يحتوي على IC مدمج hd44780 يمكنه تخزين الأوامر والبيانات التي تم تمريرها إليه. تحتوي وحدة LCD على حوالي 16 دبوسًا. 8 منها دبابيس بيانات ، 4 منها دبابيس إمداد لمصابيح LED الخلفية ووحدة LCD بأكملها ، 3 للتحكم في العملية ، ودبوس واحد لضبط التباين. يعتمد البرنامج التعليمي على المكتبة التي أنشأها Dennis Eichmann. من السهل جدًا استخدام مكتبة ذات وظائف منفصلة لطباعة أنواع بيانات مختلفة. يحتوي أيضًا على أحكام لعرض البيانات في أشكال مختلفة مع الأصفار البادئة والمفرغة والمحذوفة. إنها مكتبة واسعة جدًا وشاملة وقابلة للتهيئة للوصلات المختلفة. هنا ، يتم تعديل ملف الرأس ليلائم تكوينًا متوازيًا مكونًا من 8 أسنان لاتصال البيانات.
شاشة LCD أبجدية رقمية مقاس 16 × 2
تحتوي شاشة 16 × 2 العامة على hd44780 IC مدمج (محاطة بدائرة باللون الأحمر أدناه) ، والتي يمكنها تخزين الأمر والبيانات التي تم تمريرها إليها. تحتوي وحدة LCD على حوالي 16 دبوسًا. 8 منها دبابيس بيانات ، 4 منها دبابيس إمداد لمصابيح LED الخلفية ووحدة LCD بأكملها ، 3 للتحكم في العملية ، ودبوس واحد لضبط التباين.
يتم عرض وحدة LCD هذه أعلاه متعددة الاستخدامات وتستخدم الحد الأدنى من السنون مقارنة بشاشات LCD المجزأة الأخرى. إذا كنت مهتمًا بمعرفة كيفية عمل كل هذا بالضبط ، فيجب عليك التحقق من عمل شاشة LCD مقاس 16 × 2 حيث ناقشنا بالفعل كيفية عمل شاشة LCD بالتفصيل.
RS Pin: RS = 1 سيمكن تسجيل البيانات في شاشة LCD ، والتي تُستخدم لكتابة القيم إلى سجل البيانات في شاشة LCD. سيتمكن RS = 0 من تمكين سجل التعليمات الخاص بشاشة LCD.
تمكين دبوس: الحافة السلبية المشغلة ؛ عند تغيير الدبوس من الحالة HIGH إلى LOW ، تتم مطالبة LCD بالكتابة إلى دبابيس البيانات. أثار الحافة الإيجابية عند تغيير الدبوس من الحالة المنخفضة إلى الحالة العالية ، تتم مطالبة شاشة LCD بالقراءة من دبابيس البيانات.
R / W pin: R / W = 0 سوف يكتب في سجل التعليمات أو سجل البيانات حسب اختيار RS pin. R / W = 1 سيقرأ من IR أو DR وفقًا لاختيار دبوس RS.
عملية RS R / W
0 0 كتابة بالأشعة تحت الحمراء كعملية داخلية (العرض واضح ، إلخ)
0 1 قراءة علامة مشغول (DB7) وعداد العنوان (DB0 إلى DB6)
1 0 كتابة DR كعملية داخلية (DR إلى DDRAM أو CGRAM)
1 1 قراءة DR كعملية داخلية (DDRAM أو CGRAM إلى DR)
دبابيس D0-D7: يتم نقل البيانات من وإلى سجلات الأوامر والبيانات من خلال هذه المسامير.
دبابيس الإمداد: تُستخدم دبابيس V ss و V dd لتشغيل وحدة LCD. ستعمل دبابيس A ، K على تشغيل الإضاءة الخلفية LED. تستخدم دبابيس V 0 للتحكم في التباين.
مكتبة CCS LCD مقاس 16 × 2 لـ MSP430
يعتمد البرنامج التعليمي على المكتبة التي أنشأها Dennis Eichmann. من السهل جدًا استخدام مكتبة ذات وظائف منفصلة لطباعة أنواع بيانات مختلفة. يحتوي أيضًا على أحكام لعرض البيانات في أشكال مختلفة مع الأصفار البادئة والمفرغة والمحذوفة. إنها مكتبة واسعة جدًا وشاملة وقابلة للتهيئة للوصلات المختلفة. هنا ، يتم تعديل ملف الرأس ليلائم تكوينًا متوازيًا مكونًا من 8 أسنان لاتصال البيانات. يمكن تنزيل المكتبة من الرابط أدناه ، وبعد التنزيل اتبع الخطوات التالية لإضافة المكتبة إلى CCS.
تنزيل مكتبة 16 × 2 لبرنامج MSP430 - Code Composer Studio
الخطوة الأولى: إنشاء الملفات والمشاريع
يتم إنشاء مشروع CCS افتراضي باستخدام قائمة الملفات. في مربع الحوار "إنشاء مشروع" ، حدد الجهاز وقم بتسمية hd44780 كاسم مشروع. ضمن نوع المشروع وسلسلة الأدوات ، حدد نوع الإخراج كمكتبة ثابتة وقم بإنشاء المشروع.
في مسار Project Explorer (الجانب الأيسر) ، قم بإنشاء ملف رأس داخل مجلد التضمين وقم بتسميته باسم hd44780.h . ثم انسخ محتويات ملف hd44780.h الذي تم تنزيله إلى هذا الملف الذي تم إنشاؤه حديثًا.
الآن قم بإنشاء المشروع الرئيسي عن طريق تغيير نوع الإخراج إلى ملف قابل للتنفيذ وإنشاء مشروع يسمى CCS_LCD .
الخطوة 2: قم بتضمين مسارات البحث إلى المشروع الرئيسي
في مربع حوار الخصائص بمشروع hd44780 وداخل خيارات التضمين للمترجم MSP430 ، أضف مجلد التضمين في الملف إلى مسار البحث.
بعد ذلك ، قم ببناء هذا المشروع لإنشاء ملفات الرابط الضرورية مثل ملفات.lib . سيؤدي بناء هذا إلى إنشاء ملف hd44780.lib داخل مجلد التصحيح.
الخطوة 3: قم بتضمين مسارات البحث لـ Linker
في مربع حوار الخصائص لمشروع CCS_LCD وفي مسار البحث عن الملفات لعلامة التبويب رابط MSP430 ، قم بتضمين hd44780.lib الموجود داخل مجلد تصحيح الأخطاء الخاص بمشروع hd44780. يتم تضمين مجلد التصحيح أيضًا في مسار البحث عن الملف.
تتم إضافة مجلد التضمين مرة أخرى إلى خيارات التضمين الخاصة بالمترجم MSP430 لمشروع CCS_LCD .
تم تجميع المكتبة بنجاح وإضافتها إلى رابط المشروع الرئيسي.
وظائف شاشة LCD مقاس 16 × 2 في MSP430
void hd44780_timer_isr (void): يتم استدعاء هذا بشكل دوري في ISR الخاص بـ Timer A. يتم استخدام Timer A بشكل دوري للقيام بوظائف LCD مثل مسح الشاشة وضبط المؤشر وعرض البيانات. يجب استخدام الوظيفة في ISR. لا تُرجع شيئًا.
uint8_t hd44780_write_string (char * ch__string، uint8_t u8__row، uint8_t u8__column، uint8_t u8__cr_lf): ستكتب السلسلة المحددة في الوسيطة الأولى.
char * ch__string: السلسلة المراد كتابتها في مخزن البيانات (داخل وظيفة hd44780_timer_isr ). سيتم نسخ البيانات إلى سجل البيانات وسجل التعليمات الخاص بـ LCD IC عند استدعاء hd44780_timer_isr بشكل دوري.
uint8_t u8__row: يحدد الصف الذي سيتم كتابة السلسلة فيه.
uint8_t u8__column: يحدد العمود الذي سيتم كتابة السلسلة فيه.
uint8_t u8__cr_lf: إذا تم ضبطه على 1 ، فسيتم نقل الصف إلى الصف التالي. إذا كانت 0 ، تتوقف الطباعة في نفس الصف.
void hd44780_clear_screen (void): ستؤدي هذه الوظيفة إلى مسح الشاشة بأكملها. لا تُرجع شيئًا.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value، uint8_t u8__leading_zero_handling، uint8_t u8__row، uint8_t u8__column، uint8_t u8__cr_lf): ستعرض الوظيفة الموقع غير المرغوب فيه للقيمة LCD 16 بت.
uint16_t u16__value: العدد الصحيح المراد عرضه معطى في الوسيطة الأولى.
uint8_t u8__leading_zero_handling: إذا تم تمرير 0 ، فسيتم عرض الأصفار البادئة على قيمة العدد الصحيح. إذا تم تمرير 1 ، فسيتم مسح الأصفار. إذا تم تمرير الرقم 2 كمعامل ، فسيتم عرض الأرقام المهمة فقط.
uint8_t u8__row: يتم تحديد الصف الذي يظهر فيه العدد الصحيح.
uint8_t u8__column: يتم تحديد العمود المراد طباعته باستخدام الوسيطة.
uint8_t u8__cr_lf: إذا تم ضبطه على 1 ، فسيتم نقل الصف إلى الصف التالي. إذا كانت 0 ، تتوقف الطباعة في نفس الصف.
مخطط الدائرة لواجهة LCD مع MSP430
الرسم البياني الكامل للدائرة موضح في الصورة أدناه. كما ترى ، فإن توصيلات الأجهزة بسيطة للغاية وقمنا بتشغيل اللوحة الكاملة باستخدام محول 5 فولت.
يتم إجراء التوصيلات وفقًا للرسم أعلاه. يرجى النظر في الجدول أدناه للحصول على وصلات مفصلة.
Vss | أرضي من مصدر طاقة 5 فولت |
Vdd | 5 فولت |
V0 | خرج الجهد |
RS | P2.1 |
ص / دبليو | أرض |
ه | P2.0 |
د 0 | P1.0 |
D1 | P1.1 |
د 2 | P1.2 |
د 3 | ص 1.3 |
د 4 | P1.4 |
د 5 | P1.5 |
د 6 | P1.6 |
د 7 | ص 1.7 |
أ | 220 أوم المقاوم |
ك | أرض |
لا يمكن توصيل أنود الإضاءة الخلفية LED مباشرة بمصدر 5 فولت. يجب توصيله بمقاومة لتقليل التدفق الحالي عبر وحدة LCD. لقد قمت بإجراء اتصالاتي باستخدام لوحة أداء لتلحيم شاشة LCD ثم استخدمت أسلاك توصيل لتوصيل شاشة LCD بلوحة MSP430 ، يبدو الإعداد الخاص بي على هذا النحو أدناه ، ولكن يمكنك أيضًا استخدام لوحة توصيل لإجراء اتصالاتك.
برمجة MSP430 باستخدام Code Composer Studio لشاشة LCD
الكود الكامل المستخدم في هذا المشروع مُعطى في أسفل هذه الصفحة. شرح استخدام الكود كما يلي. أولاً ، افتح ملف الرأس (hd44780.h) وقم بتضمين رقم جزء وحدة التحكم الدقيقة في الجزء الأول من الملف.
# تضمين "msp430g2553.h"
يجب إيقاف مؤقت المراقبة أولاً. تستخدم سجلات التحكم DCOCTL و BCSCTL1 لتكوين مذبذب المتحكم الدقيق. ستعمل الأسطر أدناه على تكوين MCLK ليكون 1 ميجا هرتز.
WDTCTL = (WDTPW - WDTHOLD) ، BCSCTL1 = CALBC1_1MHZ ، DCOCTL = CALDCO_1 ميجا هرتز ،
يجب ذكر دبابيس المنفذ 1 كإخراج ، والتي سيتم استخدامها لدبابيس البيانات. يجب أيضًا ذكر الدبوس 0 والدبوس 1 كإخراج في المنفذ 2 ، والذي سيتم استخدامه لـ RS و R / W pin.
P1DIR = 0xFF ؛ P2DIR = (0x01 - 0x02) ؛
يتم استخدام جهاز ضبط الوقت الذي يحمل في ثناياه عوامل لعرض القيم بشكل دوري. يتم تحديد المؤقت A باستخدام SMCLK (1 ميجا هرتز) كمصدر الساعة والوضع المستمر هو وضع التشغيل.
TA0CCR1 = 32768 ؛ TA0CCTL1 = CCIE ، TA0CTL = (TASSEL_2 - MC_2 - TACLR) ،
تشترك المقاطعات الخاصة بقناتي المقارنة 1 و 2 ومقاطعة تجاوز تدفق المؤقت في نفس متجه المقاطعة ( TIMER0_A1_VECTOR ) بعناوين بدء مختلفة. لقطة مقارنة القناة 1 (CCR1) تستخدم 2 كعنوان ، والذي يتم استخدامه في حالة التبديل.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { switch (TA0IV) { case 2: { hd44780_timer_isr ()؛ استراحة؛ } } }
بمجرد أن يتم تجميع التعليمات البرمجية الخاصة بك ، يمكنك تحميلها على لوحة MSP430 ، كما هو موضح في البدء مع البرنامج التعليمي MSP430. إذا سارت الأمور كما هو متوقع ، يجب أن ترى بعض التباين في شاشة LCD كما هو موضح أدناه.
إذا كان اختبارك خافتًا جدًا ، يمكنك محاولة ضبط مقياس الجهد للحصول على تباين أفضل. يمكن أيضًا العثور على العمل الكامل للمشروع في الفيديو المرتبط أدناه. آمل أن تكون قد استمتعت بالمشروع ووجدت أنه من المثير للاهتمام بناء مشروعك الخاص. إذا كان لديك أي أسئلة ، فيرجى تركها في قسم التعليقات أدناه. يمكنك أيضًا كتابة جميع أسئلتك الفنية في المنتديات للإجابة عليها أو لبدء مناقشة.