خانه > آموزش > راه اندازی LCD کاراکتری با LPC1768 در مد 4 بیتی

راه اندازی LCD کاراکتری با LPC1768 در مد 4 بیتی

در مطالب قبلی تحت عنوان راه اندازی LCD کاراکتری در مد 8 بیتی با راه اندازی LCD های کارکتری آشنا شدیم و با نحوه برنامه نویسی این نمایشگرها در Keil آشنا شدیم. اما در عمل به خاطر صرفه جویی در پایه های میکروکنترلر بیشتر از مد 4 بیتی استفاده می شود تا 8 بیتی. در این مطلب با نحوه راه اندازی این نمایشگرها در مد 4 بیتی آشنا می شویم. در ابتدا توصیه می کنیم که قبل از مطالعه این مطلب آموزش های زیر را مطالعه بفرمایید:

آشنایی با LCD کاراکتری

راه اندازی LCD کاراکتری در مد 8 بیتی

فلوچارت راه ­اندازی LCD کاراکتری در مد 4 بیتی

دقیقا مانند حالت 8 بیتی قبل از هر کاری باید نمایشگر را راه اندازی نماییم. این فلوچارت به صورت زیر می باشد:

lpc1768-lcd-8bit-11
برای بزرگنمایی روی تصویر کلیک نمایید

اتصال نمایشگر به میکروکنترلر در مد 4 بیتی

در اتصال 4 بیتی فقط چهاربیت پرارزش داده به میکروکنترلر متصل می شوند یعنی D4 تا D7 بنابراین چهار پایه در میکروکنترلر صرفه جویی می شود. بنابراین اتصال میکروکنترلر به نمایشگر چیزی شبیه به شکل زیر خواهد شد:

lpc1768-lcd-8bit-2

برنامه نویسی در مد 4 بیتی

اصول برنامه نویسی در مد 4 بیتی خیلی مشابه مد 8 بیتی است فقط کافیست برخی تغییرات جزئی در برنامه اعمال بکنیم. در اینجا دستورالعمل ها و کدهای اسکی باید به دو نیمه(نیبل) شکسته شده و در دو سیکل پشت سر هم فرستاده شوند. برای این کار می توانیم این شکستن و فرستادن پشت سر هم را در توابع ()lcd_cmd و ()lcd_putcharاعمال کنیم. اما باید دقت کنیم که در این مد دیگر پایه های کنترلی RS، RW و E هم به پورت 0 وصل شده اند بنابراین دیگر مثل مد هشت بیتی نمی توانیم در توابع فوق به صورت یکجا به پورت صفر مقداردهی کنیم(البته برای اتصال پایه های کنترل و داده به پورت های مجزا محدودیتی وجود ندارد اما به هر حال ممکن است بقیه پایه های پورت داده برای کاربردهای دیگری اختصاص یافته باشند). بنابراین باید از روش دستکاری بیتی که در مطلب اتصال LED به LPC1768 یاد گرفتیم استفاده کنیم. برای همین ابتدا D4 تا D7 را define# کرده و سپس با استفاده از تابعی به نام ()nibble پایه های D4 تا D7 را به صورت زیر مقداردهی می کنیم:

این تابع یک متغیر کاراکتر را دریافت می کند. در ابتدا اطلاعات قبلی روی پایه های داده را پاک(0) می کند. سپس با دستکاری بیتی 4 بیت پرارزش متغیر را روی پایه های D4 تا D7 قرار می دهد. خوبی این روش این است که دیگر لازم نیست پایه های داده به ترتیب به پایه های میکرو متصل شوند و به هر ترتیبی می توانند وصل شوند(البته همگی پایه های داده باید روی یک پورت باشند، همچنین همه پایه های کنترل).

با تعریف تابع ()nibble به سادگی می توان توابع ()lcd_cmd و ()lcd_putchar را به صورت زیر تعریف نمود:

مثال: با استفاده از سخت افزار فوق برنامه ای بنویسید که پیغام imicro.ir به طور مداوم از یک سمت LCD وارد شده و از سمت دیگر خارج شود.

حل: برنامه کامل به صورت زیر می باشد:

در اینجا این مطلب نیز به اتمام رسید.  امیدواریم که این مطلب هم برای شما خوب و مفید بوده باشد.

با آرزوی موفقیت و کامیابی برای شما.

درباره ی مدیر سایت

۲ دیدگاه

  1. برای lcd20*4 تنظیمات ما چطوری باید باشه ؟

  2. مرسی خیلی عالی بود واقعا
    مشکلی که بهش برخوردم اینه که
    اگه ما توی سطر بعدی ال سی دی بخوایم رشته ای رو بنویسیم متاسفانه ادامه همون رشته هایی که از قبل نوشته میشد به نمایش در میاد
    راه حل ؟؟

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *