راه اندازی LCD گرافیکی KS108 با STM32 و نحوه معرفی پایه های آن موضوع آموزش این مقاله می باشد پس تا پایان این مقاله با ما همراه باشید . LCD گرافیکی یک واحد نمایش الکترونیکی است که می تواند هر نوع عنصر ارائه شده توسط کاربر را نمایش دهد. برخلاف یک LCD کاراکتری که فقط می تواند حروف الفبا را نشان دهد . یک LCD گرافیکی می تواند تصاویر ، فونت ها و سایر ساختارها را نمایش دهد.
به طور معمول یکی از LCD گرافیکی هایی که راحت در بازار پیدا می شود و پر کاربرد است . LCD گرافیکی با وضوح 128 × 64 است . به این معنی که می تواند 8192 پیکسل را روی صفحه نمایش دهد .
KS108 یک کنترل کننده نمایش ماتریس نقطه ای تولید شده توسط کمپانی سامسونگ با 64 کانال خروجی است. ورودی را به صورت داده موازی 8 بیتی دریافت می کند و در حافظه RAM که ظرفیت 512 بایت دارد (512 × 8 = 4096 بیت) ذخیره می کند.
برای درایو نمایشگر گرافیکی 128 × 64 ، به دو عدد کنترل کننده KS108 احتیاج داریم و هر یک از آنها نیمی از 64 × 64 پیکسل را کنترل خواهند کرد. برای تولید سیگنال های زمان بندی برای دو کنترل کننده KS108 ، یک کنترل کننده مشترک KS0107 وجود دارد .
در تصویر زیر ، می توانید سه IC با بسته بندی Chip-on-Board) CoB) را در PCB پشت LCD گرافیکی مشاهده کنید. دو تا از آنها KS0108 ، و یکی KS0107 است.
موضوعاتی که در این مقاله به آنها پرداخته خواهد شد :
شرح پایه های LCD گرافیکی KS108
LCD گرافیکی KS108 یک ماژول 20 پین است. دارای 8 خط داده ، 6 خط کنترل و 6 پایه مربوط به توان و نمایشگر است. شرح پینها در زیر آورده شده است.
پین های 7 تا 14 (D0 ~ D7) از GLCD KS108 پین دیتا است. ما از این پین ها برای انتقال دیتاها به RAM نمایشگر استفاده می کنیم.
پین های تغذیه KS108
پایه 1 (Vss) این پایه را به زمین وصل کنید . پایه 2 (Vdd) این پایه را به 5 ولت وصل کنید .
پایه 18 (Vee) خروجی یک مولد ولتاژ منفی است. ولتاژ -10 ولت تولید می کند . با استفاده از پتانسیومتر می توانیم با تغذیه ولتاژ منفی پین Vo ولتاژ عملیاتی مورد نیاز را تولید کنیم. ولتاژ LCD حاصل Vdd-Vo خواهد بود (اگر پتانسیومتر در حداقل مقدار باشد ، 5-(-10) = 15V ). طبق دیتاشیت LCD گرافیکی KS108 ، حداکثر ولتاژ مجاز 18 ولت است. برای تغییر کنتراست نمایشگر می توانیم توسط پتانسیومتر ولتاژ Vo را تغییر دهیم.
پایه های 19 آند و 20 کاتد LED نور پس زمینه هستند . برای طول عمر بیشتر LED نور پس زمینه با قرار دادن مقاومت مناسب در مسیر پایه 19 ، جریان را محدود می کنند. اگر لازم است نور پس زمینه را نیز تغییر دهید ، می توانیم از پتانسیومتر استفاده کنیم.
پایه های سیگنال های کنترلی KS108
KS108 یک درایور 64X64 پیکسل است. بنابراین دو عدد KS108 برای درایو صفحه نمایش 128X64 پیکسل لازم هست. از منظر برنامه نویسی ، صفحه LCD از دو LCD جداگانه تشکیل شده است و هرکدام داده ها را به صورت جداگانه دریافت می کنند .
CS1 و CS2 برای انتخاب کنترلر KS0108 استفاده می شود. پین های CS1 و CS2 به برنامه نویس اجازه می دهد تا انتخاب کند کدام تراشه تحویل داده ها را در گذرگاه داده (DB0-DB7) دریافت می کند.
CS1 كنترل كننده سمت چپ و CS2 كنترل كننده سمت راست را انتخاب كرده و به نوبه خود سمت متناظر با صفحه نمايش 64 × 64 پيکسل را انتخاب مي كند. RST پین تنظیم مجدد است ، از آن برای تنظیم مجدد کل محتوای صفحه نمایش با پاک کردن حافظه RAM استفاده می شود.
پین R / W نوع عملیاتی را که توسط GLCD انجام می شود انتخاب می کند ، اگر این پایه در وضعیت High باشد نشان دهنده عملکرد خواندن و اگر این پایه در وضعیت Low باشد عملکرد نوشتن را نشان می دهد.
پین D / I عملیات بین انتقال داده یا دستورالعمل را انتخاب می کند ، اگر این پایه در وضعیت High باشد نشان دهنده عملکرد انتقال دیتا و اگر این پایه در وضعیت Low باشد عملکرد انتقال دستورالعمل را نشان می دهد.
پین Enable کلاک GLCD است. برای انتقال داده یا دستورالعمل ، ابتدا باید داده ها را روی خطوط داده قرار دهید ، سپس پینهای R / W و D / I را با توجه به نوع دستورالعمل یا دیتا تنظیم کنیم . سپس پایه Enable را ابتدا در وضعیت Low و سپس High تنظیم کنید.
برای انتقال داده ها یکی از نکات مهم در هنگام زمان سنجی این است که ، همیشه بعد از هر دستورالعمل یا انتقال داده حداقل 1 میکرو ثانیه تأخیر بدهید. این پارامتر به عنوان Ecycle در دیتاشیت LCD گرافیکی KS108 برابر با مقدار Ecycle 1us تعریف شده است .
بلوک دیاگرام LCD گرافیکی KS108
نمودار بلوک دیاگرام ال سی دی گرافیکی KS108 در زیر آورده شده است . دارای دو درایور بخش KS108 و یک درایور مشترک KS0107 است. KS0108 یک درایور بخش دات ماتریس LCD با 64 کانال خروجی است که نیمی از GLCD را مدیریت می کند. KS0107 یک درایور مشترک 64 کاناله است که سیگنال های زمان بندی را برای کنترل دو درایور بخش KS0108 تولید می کند.
نحوه آدرس دهی X , Y صفحه نمایش
از آنجا که هر دو نیمه به یک روش کار می کنند و توسط CS1 یا CS2 کنترل می شوند . یک نیمه را بررسی کنیم تا ببینیم بایتهای دیتا چگونه به پیکسل تبدیل می شوند .
اولین چیزی که باید توجه کنید این است که یک بایت داده به طور عمودی ستونی از پیکسل ها را در صفحه تشکیل می دهد . هر نیمه از GLCD یک ماتریس 64 × 64 پیکسل را نشان می دهد. تعداد ستون ها از 0 تا 63 هستند و به هیچ وجه گروه بندی نمی شوند ، اما ردیف ها گروه بندی می شوند.
آنچه “Page” یا صفحه خوانده می شود ، از یک ماتریس 64X8 پیکسل تشکیل شده است . در هر نیمه از LCD گرافیکی 8 صفحه وجود دارد که توسط یک کنترل کننده KS108 کنترل می شود. یک صفحه شامل 64 ستون 8 پیکسلی است.
هر زمان که داده ها را انتقال می دهیم ، ابتدا نیمی از LCD گرافیکی را توسط پایه (Chip Select)CS انتخاب می کنیم ، سپس آدرس صفحه (X) را مشخص می کنیم . و سپس آدرس Y را انتخاب می کنیم . بایت به عنوان یک نوار 8 بیتی منتقل می شود و در محل حافظه RAM ذخیره می شود. ما می توانیم این روند را به صورت زیر خلاصه کنیم.
توسط CS1 و CS2 نیمه GLCD را انتخاب کنید (64 × 64 پیکسل)
انتخاب صفحه (X) یا Page
آدرس ستون Y نوار 8 پیکسلی عمودی درست را انتخاب می کند
نحوه آدرسی Y :
آدرس Y شماره ستونی است که از 0 تا 63 در نظر گرفته شده است . آدرس ستون ها از 0x40 آغاز می شود . با در نظر داشتن این نکته که ما می توانیم فقط با نیمی از صفحه نمایش در هر زمان کار کنیم. این پارامتر نیاز به ردیابی از طریق یک شمارنده در کد برنامه شما دارد.
از نظر سخت افزاری ، “آدرس Y” به طور خودکار افزایش می یابد ، زیرا صفحه نمایش دارای مدار شمارنده داخلی است. وقتی بایت بعدی داده را می فرستید ، به طور خودکار ستون بعدی را پر می کند.
از دیدگاه برنامه نویسی ، نکته خوبی است زیرا ، هنگام نوشتن در ستون بعدی ، نیازی به تنظیم شماره ستون از طریق کد برنامه نیست. با این حال ، باید شمارش آن را در یک متغیر انجام دهید تا بدانید چه موقع باید خطوط کنترل CS1 و CS2 را تغییر دهید.
نحوه آدرسی X Page :
آدرس صفحات به ترتیب از (Page 0)0XB8 الی (Page 7)0XBF می باشد . این آدرس ها برای نیمه دوم LCD نیز یکسان می باشد .
یک بایت داده در گذرگاه داده ، ماتریس LCD را به صورت عمودی در یک ستون پر می کند. یک بایت داده در گذرگاه داده ها نقاط مشخص شده از DB0 تا DB7 را در یک ستون تنظیم می کند. پس از پر شدن ، مدارهای داخلی به طور خودکار به ستون بعدی افزایش می یابند ، برای بایت بعدی داده ها.
تصویر پایین نحوه نمایش حرف “P” الفبا را نشان می دهد.
ابتدا از نیمی از صفحه استفاده کنید. برای نیمه اول CS1 را انتخاب کنید .
“آدرس Y” را انتخاب کنید ، شماره ستون (از 0 تا 63) جایی که اولین بایت کاراکتر شروع می شود . در این مثال دو ستون ابتدا خالی و از ستون سوم اولین بایت کاراکتر آغاز شده ، بنابراین آدرس Y=0X42 می باشد .
کاراکتر در 0 Page قرار دارد بنابراین آدرس X Page=0XB8 می باشد .
در انتها بایت های داده زیر را پشت سر هم ارسال کنید.
01111111
00001001
00001001
00001001
00000110
00000000
همانطور که مشاهده می کنید ، بایت ها از سمت راست (LSB) به چپ (MSB) به صورت افقی توسط انسان خوانده می شوند ، اما داده ها به طور عمودی بر روی ستون LCD از DB0 تا DB7 پر می شوند.
شمارنده Y برای ستون بعدی به طور خودکار افزایش می یابد ، بنابراین در نتیجه فقط باید بایت داده را به طور پی در پی ارسال کنید. با این حال ، بهتر است یک شمارنده در کد برنامه داشته باشید تا ردیابی ستونی را که در آن قرار دارید را داشته باشید.
در این مثال ، هر کاراکتر هشت ردیف و شش ستون را اشغال می کند. برای هر کاراکتر ، DB7 را خالی می گذاریم که به عنوان فاصله کاراکتر بین خطوط عمل می کند. علاوه بر این ، ستون آخر را خالی می گذاریم ، که به عنوان فاصله کاراکتر بین کاراکتر ها عمل می کند.
هفت دستورالعمل در کنترلر KS0108 موجود است که در جدول زیر آورده شده است.
در جدول فوق دستورالعمل های مختلف موجود برای کنترلر KS0108 آورده شده است. به عنوان مثال ، برای روشن کردن صفحه نمایش ، پایه های RS , R / W در سطح Low قرار می گیرند ، 00111111 را در پایه های DB7-DB0 قرار دهید و با ایجاد یک پالس ساعت بر روی پایه Enable از سطح Low به High دستورالعمل اجرا می شود .
نکته : همانطور که اشاره شد ، در هر بار نوشتن یک بایت در حافظه RAM LCD نوشته می شود . بنابراین دسترسی و نوشتن جداگانه بر روی یک پیکسل امکان پذیر نیست .
برای نوشتن و دسترسی به پیکسل های جداگانه ، باید آنچه را که در حال حاضر در آدرس مورد نظر LCD می خواهیم بنویسیم ، ابتدا بخوانیم . در عملیات خواندن 8 بیت خوانده می شود و یک عمل ماسک Boolean بر روی بیت یا پیکسل مورد نظر انجام دهید. سپس دوباره 8 بیت را در آدرس قبلی بنویسیم .
راه اندازی lcd گرافیکی ks108 با آردوینو
چندین کتابخانه در سطح اینترنت برای راه اندازی lcd گرافیکی با arduino وجود دارد . از مهمترین این کتابخانه ها می توان به U8glib , glcd , openGLCD اشاره نمود . این کتابخانه توسط اشخاص خارجی و انگلیسی زبان نوشته و توسعه داده شده اند .
بنابراین این کتابخانه ها از زبان و فونت فارسی و نوشتار راستچین پشتیبانی نمی کنند . کتابخانه ای که ما برای راه اندازی lcd گرافیکی ks108 توسط آردوینو توسعه داده ایم دارای فونت فارسی با قابلیت انکودینگ UTF-8 می باشد . یعنی کاربر می تواند در محیط IDE ARDUINO عبارت فارسی را تایپ و بنویسد و کامپایل کند و بر روی LCD نمایش دهد .
راه اندازی lcd گرافیکی ks108 با stm32
می خواهیم توسط میکروکنترلر stm32f103c8t6 در محیط نرم افزار STM32CubeIDE نمایشگر گرافیکی KS108 را راه اندازی کنیم .
تصویر فوق مثال از پیکربندی LCD گرافیکی KS108 درون نرم افزار stm32cubemx می باشد که تماما به صورت گرافیکی انجام می شود و هیچگونه نیازی به تغییرات در کدهای کتابخانه نمی باشد .
پین های دیتا(D0~D7) و پینهای فرمان(RS,RW,EN,CS1,CS2) را بدون محدودیت بر روی پایه های دلخواه میکروکنترلر STM32 در محیط نرم افزار Stm32CubeMX قابل پیکربندی می باشد.
قابلیت کتابخانه lcd گرافیکی ks108 برای Arduino
قابلیت رسم اشکال گرافیکی مانند خط ، مربع ، مستطیل و دایره
قابلیت نمایش تصویر در ابعاد مختلف
قابلیت پیکربندی تمامی پایه های KS108 بر روی پایه های دلخواه آردوینو
دارای فونت فارسی و انگلیسی در ابعاد 8×8 , 9×10 , 9×11 , 12×16
دارای فونت انگلیسی بدون فارسی در ابعاد 5×7 , 9×14 , 10×20
فیلم آموزشی شامل ساخت فونت فارسی و انگلیسی در ابعاد دلخواه ؛ ساخت کاراکترهای سفارشی و علامت های پرکاربرد به صورت فونت و آموزش تبدیل تصویر به کد هگز در ابعاد دلخواه و نمایش بر روی lcd گرافیکی می باشد . بهمراه تمامی ابزارها و نرم افزارهای ساخت فونت و ویرایش تصویر .
حجم فیلم : 34.1 مگابایت
مدت زمان : 16 دقیقه و 40 ثانیه
قابلیت کتابخانه lcd گرافیکی ks108 برای stm32
قابلیت رسم اشکال گرافیکی مانند خط ، مربع ، مستطیل و دایره
قابلیت نمایش فونت انگلیسی و فارسی
قابلیت نوشتن کاراکتر و علامتهای خاص
کتابخانه و مثال برای نرم افزارهای STM32CUBEIDE و KEIL
قابلیت پیکربندی تمامی پایه های LCD بر روی پایه های دلخواه میکرو ، توسط نرم افزار STM32CUBEMX
قابلیت نوشتن حروف و عبارات فارسی به صورت مستقیم و بدون نیاز به تبدیل در محیط STM32CubeIDE و KEIL
نوشته شده توسط توابع HAL و پیاده سازی شده توسط میکروکنترلر stm32f103c8t6(bluepill)
قابلیت اضافه کردن کتابخانه ks108 براحتی بر روی میکروکنترلرهای سری f4 و f7 و سری های دیگر
فیلم آموزشی شامل ساخت فونت فارسی و انگلیسی در ابعاد دلخواه ، ساخت کاراکترهای سفارشی و علامت های پرکاربرد به صورت فونت و آموزش تبدیل تصویر به کد هگز در ابعاد دلخواه و نمایش بر روی lcd گرافیکی می باشد . بهمراه تمامی ابزارها و نرم افزارهای ساخت فونت و ویرایش تصویر .
حجم فیلم : 79.68 مگابایت
مدت زمان : 32 دقیقه و 45 ثانیه