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

کسانی که با میکروکنترلر کار کردند حتما با LCD کاراکتری هم آشنا هستند. در کامپایلرهای مختلف معمولا کتابخانه های آماده برای استفاده از این نوع نمایشگرها وجود داره. اما اگه قصد داشته باشیم خودمون این نمایشگرها رو راه اندازی کنیم باید چکار کنیم؟ مثلا اگه چه راهی وجود داره اگه بخوایم برای یه میکروکنترلر دارای پردازنده ARM که کتابخونه ای براش نوشته نشده برنامه بنویسیم و خروجیها رو روی LCD کاراکتری نمایش بدیم ؟
در این مطلب نحوه راه اندازی LCD کاراکتری 16×2 توضیح داده شده.

پایه های LCD کاراکتری

عملکرد پایه های LCD کاراکتری از 1 تا 16 در شکل زیر دیده می شن:

پایه 1 به زمین و پایه 2 معمولا به 5 ولت متصل و کنتراست LCD با اتصال پایه 3 به سر وسط یک پتانسیومتر تنظیم می شه. پایه 4 یا همون RS اگه بالا باشه LCD در حالت داده قرار می گیره، یعنی اطلاعاتی که روی پایه های D0 تا D7 قرار می گیره برای LCD به معنی کد کاراکترهایی هستند که باید نمایش داده بشن. اما اگه پایه RS پایین باشه LCD در حالت دستوری قرار می گیره. یعنی با قراردادن کد مناسب روی پایه های D0 تا D7 می شه دستوراتی مثل پاک کردن صفحه نمایش رو انجام داد.
پایه 5 اگه high باشه LCD در حالت خواندن و اگه low باشه در حالت نوشتن قرار می گیره. اکثرا نیازی به خوندن وضعیت LCD نداریم و معمولا می شه این پایه رو به زمین وصل کنیم.
پایه های 15 و 16 هم به ترتیب پایه تغذیه و زمین LED نور پس زمینه هستند ام باید یه مقاومت مناسب مثلا 390 اهم برای راه اندازی نور پس زمینه استفاده بشه.
راه اندازی LCD کاراکتری در دو حالت 8 بیتی و 4 بیتی امکان پذیره. در مد 4 بیتی فقط پایه های D4 تا D7 مورد استفاده قرار می گیرند.

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

1- پایه E رو high می کنیم.
2- پایه RS رو low می کنیم.
3- عدد 0011100 رو روی پایه های D0 تا D7 قرار می دیم. طوری که رقم سمت چپ باید به D7 و رقم سمت راست به D0 اعمال بشه.
4- بعد پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
5- بعد عدد 00001100 رو مثل مرحله 3 روی پایه های داده قرار می دیم.
6- مثل مرحله 4 پایه E رو low و high می کنیم.

با اعمال دستورات بالا LCD آماده کار می شه. اولین دستوری که به LCD داده شد حالت کاری رو مشخص می کنه که در اینجا نمایشگر 2 ردیفی، نحوه اتصال 8 بیتی و فونت 7×5 پیکسلی انتخاب شدند. در واقع هر بیت نشان دهنده یک وضعیت می تونه باشه که با رجوع به دیتاشیت می تونین به راحتی عملکرد هر بیت رو پیدا کنین.
دستور دوم هم نمایشگر رو روشن، cursor رو خاموش و چشمک زن رو هم خاموش می کنه. اگه بخوایم cursor دیده بشه بیت مربوط به D1 رو 1 می کنیم و اگه بخوایم چشمک زن رو هم فعال کنیم بیت مربوط به D0 رو 1 می کنیم.
حالا LCD آماده دریافت اطلاعات از میکروکنترلر هست. برای این کار مراحل زیر رو انجام می دیم.

1- پایه RS رو high می کنیم.
2- کد اسکی کاراکتر دلخواه رو روی پایه های D0 تا D7 قرار می دیم. مثلا برای نمایش حرف K عدد 01001011 رو روی باس داده قرار می دیم.
3- بعد پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.

در این مرحله کاراکتر K روی صفحه نمایش ظاهر می شه.
عیب روش 8 بیتی اینه که مجبوریم 4 پایه میکروکنترلر رو بیشتر از حالت 4 بیتی به LCD متصل کنیم. به همین علت روش راه اندازی LCD کاراکتری به روش 4 بیتی در اینجا به طور کامل توضیح داده شده.

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

در روش 4 بیتی پایه های D0 تا D3 استفاده نمی شن و به طور کلی در مدار به جایی متصلشون نمی کنیم. اتصال بقیه پایه ها مثل روش 8 بیتی هست.

راه اندازی LCD کاراکتری به روش 4 بیتی

ابتدا تغذیه LCD رو وصل می کنیم و 100mS صبر می کنیم. بعد مراحل زیر رو به ترتیب انجام می دیم:

1- پایه E رو high می کنیم
2- پایه RS رو low می کنیم
3- عدد 0011 رو روی پایه های D4 تا D7 قرار می دیم. طوری که رقم سمت چپ به D7 و رقم سمت راست به D4 اعمال بشه.
4- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
5- به مدت 50mS صبر می کنیم.
6- عدد 0011 رو روی باس داده قرار می دیم.
7- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
8- به مدت 100uS صبر می کنیم.
9- عدد 0011 رو روی باس داده قرار می دیم.
10- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
11- به مدت 100uS صبر می کنیم.
12- عدد 0010 رو روی باس داده قرار می دیم.
13- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
14- به مدت 100uS صبر می کنیم.
15- عدد 0010 رو روی باس داده قرار می دیم.
16- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
17- عدد 1000 رو روی باس داده قرار می دیم.
18- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
19- به مدت 100uS صبر می کنیم.
20- عدد 0000 رو روی باس داده قرار می دیم.
21- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
22- عدد 1000 رو روی باس داده قرار می دیم.
23- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
24- به مدت 100uS صبر می کنیم.
25- عدد 0000 رو روی باس داده قرار می دیم.
26- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
27- عدد 0001 رو روی باس داده قرار می دیم.
28- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
29- به مدت 3mS صبر می کنیم.
30- عدد 0000 رو روی باس داده قرار می دیم.
31- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
32- عدد 0110 رو روی باس داده قرار می دیم.
33- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
34- به مدت 100uS صبر می کنیم.
35- عدد 0000 رو روی باس داده قرار می دیم.
36- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
37- به مدت 100uS صبر می کنیم.
38- عدد 1100 رو روی باس داده قرار می دیم.
39- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
40- به مدت 100uS صبر می کنیم.

با پایان این مراحل LCD آماده نوشتنه. از ابتدای مرحله 15 تا آخر مرحله 19 مربوط به تنظیم حالت کاری LCD در نمایشگر 2 ردیفی، نحوه اتصال 4 بیتی و فونت 7×5 پیکسلی هست. از ابتدای مرحله 20 تا آخر مرحله 24 صفحه نمایشگر خاموش می شه. از ابتدای مرحله 25 تا آخر مرحله 29 دستور پاک کردن صفحه نمایش صادر می شه. از ابتدای مرحله 30 تا آخر مرحله 34 نحوه افزایش شاخص مکان نما مشخص می شه که در اینجا با تایپ هر کاراکتر یکی به اون اضافه می شه. و بالاخره از ابتدای مرحله 35 تا آخر مرحله 40 نمایشگر روشن می شه، cursor خاموش و چشمک زن هم غیر فعال می شه.
حالا LCD آماده دریافت کد اسکی کاراکترهاست. برای نمایش هر کاراکتر مراحل زیر رو انجام می دیم:

1- پایه RS رو high می کنیم.
2- 4 بیت سمت چپ کد اسکی رو روی باس داده قرار می دیم. مثلا 0100 رو برای حرف K
3- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.
4- 4 بیت سمت راست کد اسکی رو روی باس داده قرار می دیم. مثلا 1011 رو برای حرف K
5- پایه E رو به مدت حداقل 500nS low می کنیم و بعد دوباره high می کنیم.

در اینجا اگه همه مراحل درست انجام شده باشه باید حرف K روی LCD ظاهر بشه.