آموزش راه اندازی نمایشگر ال سی دی کارکتری با میکروکنترلر AVR با کامپایلر استاندارد اتمل استودیو:
همانطور که می دانید استفاده از برد های آماده ای مانند آردیونو و … که به صورت کاملا آماده بوده و متن باز (Open Source) می باشند، روز به روز در حال افزایش می باشد.
راحتی استفاده از زبان برنامه نویسی (C++) در کامپایلر آردیونو و موجود بودن سخت افزار آن و قابلیت نصب انواع سنسور و ماژول و … استفاده از آن را بسیار زیاد نموده است.
اما با تمامی قابلیت ها و راحتی کار و کاربر پسند بودن آن، مشکلات متعددی مانند: تولید حجم بالای کد و پر نمودن حافظه فلش میکروکنترلر، ضعیف نمودن برنامه نویس در مهارت در کد نویسی به دلیل داشتن توابع آماده، کند نمودن سرعت پردازشی میکروکنترلر بدلیل استفاده از توابع متعدد، ضعیف عمل کردن در تایمر ها و وقفه که در صنعت کاربرد فراوان دارند و … استفاده از برنامه نویسی به زبان استاندارد GCC برای کد نویسی تخصصی بسیار بسیار مهم می باشد.
در این آموزش به زبان سی و با استفاده از کامپایلر اتمل استودیو که یک کامپایلر استاندارد GCC می باشد، نحوه راه اندازی و نمایش متن و انواع متغیر در نمایشگر LCD (صفحه نمایش کریستال مایع) آموزش داده خواهد شد.
برای کامپایل کردن برنامه نوشته شده باید ابتدا نرم افزار اتمل استودیو ورژن 6.1 به بالاتر را از قبل نصب کرده باشید.
برای مشاهده شبیه سازی برنامه نوشته شده، باید نرم افزار پروتئوس ورژن 8.9 به بالاتر نیز را از قبل نصب کرده باشید. با اجرا کردن فایل شبیه سازی نحوه عملکرد برنامه نوشته شده را مشاهده خواهید کرد.
برای خلاصه سازی آموزش راه اندازی نمایشگر ال سی دی، از اینکه هر پین در نمایشگر ال سی دی چیست، چه کاربری در این سخت افزار (Peripheral) دارد و چگونه عمل می کند، عبور خواهیم کرد. و بیشتر در مورد نحوه استفاده از درایور نوشته شده، برای این سخت افزار توضیح خواهیم داد.
ال سی دی کارکتری چیست؟
ال سی دی کارکتر (LCD) یکی از انواع نمایشگرها است که به طور خاص برای نمایش کاراکترها و اطلاعات متنی طراحی شده است. این نوع نمایشگر به طور معمول در دستگاههای الکترونیکی و سیستمهای مختلف استفاده میشود. در زیر توضیحات کاملی در مورد این نوع نمایشگر، قابلیتها و موارد استفاده آن ارائه شده است:
۱. ساختار و ویژگیهای ال سی دی کارکتری:
نحوه عملکرد: ال سی دی کارکتری از تکنولوژی الکترونیکی مایع (LCD – Liquid Crystal Display) استفاده میکند. این صفحه نمایش معمولاً دارای ماتریسهای پیشساخته است که به کمک ولتاژهای مختلف، کاراکترهای مختلف را نمایش میدهد.
سایز های استاندارد: این نمایشگرها معمولاً در اندازههایی مانند 16×2، 20×4 و … در دسترس هستند، که به ترتیب شامل 16 کاراکتر در 2 ردیف یا 20 کاراکتر در 4 ردیف هستند.
نور پسزمینه: برخی از مدلهای LCD کارکتری دارای نور پسزمینه LED هستند که به خوانایی بهتر در شرایط نوری مختلف کمک میکند.
۲. قابلیتهای LCD کارکتری:
نمایش متن: این نمایشگرها برای نمایش کاراکترهای ASCII (کاراکترهای کمی و عددی) طراحی شدهاند و قادر به نمایش متن به صورت خطی هستند.
تنظیمات کاراکتر: برخی از مدلها امکان برنامهریزی و تنظیم کاراکترهای خاص و شخصیسازی شده را فراهم میکنند.
سرعت پاسخدهی: زمان پاسخدهی نمایشگرهای السیدی کارکتری معمولاً سریع است و میتوانند به سرعت اطلاعات را بروزرسانی کنند.
مصرف انرژی کم: نسبت به بسیاری از دیگر انواع نمایشگرها، LCD کارکتری از انرژی کمتری استفاده میکند و برای دستگاههایی که نیاز به کارکرد طولانیمدت دارند، مناسب است.
۳. موارد استفاده از ال سی دی های کارکتری:
دستگاههای اندازهگیری: در ابزارآلات اندازهگیری و سنسورها برای نمایش نتایج اندازهگیری.
کنترل پنلها: در دستگاههای صنعتی و خانگی مانند لوازم خانگی، پنلهای کنترل و نمایش وضعیت.
سیستمهای مبتنی بر میکروکنترلر: در پروژههای الکترونیکی آموزشی و DIY (خودت بساز) برای نمایش اطلاعات و تعامل با کاربر.
دستگاههای پزشکی: در دستگاههای نظارتی پزشکی، برای نمایش اطلاعات بیماران.
دستگاههای اتوماسیون: در سیستمهای اتوماسیون صنعتی و تجاری، برای نمایش وضعیت و دادههای کاربران.
سیستمهای حسابداری و مالی: برای نشان دادن اطلاعات عددی و مالی، در دستگاههای ثبت سفارش و نقاط فروش.
۴. مزایا و معایب استفاده از ال سی دی های کارکتری:
مزایا:
-
کارکرد ساده و آسان
-
هزینه پایین
-
مصرف کم انرژی
-
قابلیت نمایش اطلاعات به صورت خوانا
معایب:
-
محدودیت در نمایش تصاویر و گرافیک
-
کیفیت تصویر نسبت به برخی دیگر از نمایشگرها ضعیفتر است
-
در شرایط نوری بسیار روشن میتواند مشکلساز باشد
در نهایت، السیدی کارکتری به دلیل سادگی، هزینه پایین و مصرف کم انرژی، یکی از گزینههای محبوب برای نمایش اطلاعات متنی در انواع مختلف دستگاهها و سیستمها به شمار میآید.
در زیر ابعاد و اندازه نمایشگر ال سی دی 2 در 16 را مشاهده می کنید:
در شکل زیر شماتیک یا فایل شبیه سازی راه اندازی نمایشگر LCD کارکتری با میکروکنترلر Atmega16 را مشاهده می کنید.
به طور کلی برای راه اندازی و درایو کردن نمایشگر LCD کارکتری دو روش وجود خواهد داشت. در روش اول برای راه اندازی نمایشگر، نیاز به 8 پین ورودی-خروجی از میکروکنترلر می باشد. در روش دوم، که بسیار مرسوم تر و کاربردی تر است، تنها از 4 پین میکروکنترلر برای درایو کردن ال سی دی استفاده می شود.
در این آموزش از روش دوم و استفاده از 4 پین برای راه اندازی نمایشگر استفاده خواهیم نمود. پین های RS و RW و EN پین های کنترلری نمایشگر هستند، در حالی که پین های D4 و D5 و D6 و D7 پین های دیتای نمایشی روی صفحه نمایشگر هستند.
پین های استفاده شده نمایشگر LCD و میکروکنترلر AVRدر زیر آورده شده است:
پین های نمایشگر LCD کارکتری 2 در 16 | پین های میکروکنترلر Atmega16 |
RS | PORTA5 |
RW | PORTA6 |
EN | PORTA7 |
D4 | PORTC7 |
D5 | PORTC6 |
D6 | PORTC5 |
D7 | PORTC4 |
در کتابخانه LCD استفاده شده در این پروژه آموزشی، این قابلیت وجود دارد که هر پین از نمایشگر LCD به یک پین دلخواه میکروکنترلر AVR متصل شود.
برای استفاده از کتابخانه LCD اتمل استودیو در پروژه خود از قسمت هدر LCD در برنامه تغئیرات لازم را انجام دهید.
ابتدا فایل lcd.h را باز کنید سپس در قسمت مشخص شده در زیر تنظیمات مربوط به IO در پروژه خود را تنظیم کنید و استفاده نمائید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<span style="font-size: 16px;"> #define LCD_D4_PORT PORTC // port for 4bit data bit 0 #define LCD_D4_PIN PC7 // pin for 4bit data bit 0 #define LCD_D5_PORT PORTC // port for 4bit data bit 1 #define LCD_D5_PIN PC6 // pin for 4bit data bit 1 #define LCD_D6_PORT PORTC // port for 4bit data bit 2 #define LCD_D6_PIN PC5 // pin for 4bit data bit 2 #define LCD_D7_PORT PORTC // port for 4bit data bit 3 #define LCD_D7_PIN PC4 // pin for 4bit data bit 3 #define LCD_RS_PORT PORTA // port for RS line #define LCD_RS_PIN PA5 // pin for RS line #define LCD_RW_PORT PORTA // port for RW line #define LCD_RW_PIN PA6 // pin for RW line #define LCD_E_PORT PORTA // port for Enable line #define LCD_E_PIN PA7 // pin for Enable line</span> |
توضیح برنامه حلقه اصلی راه اندازی ال سی دی کارکتری توسط AVR و اتمل استودیو:
در زیر برنامه نوشته شده در تابع main آورده شده است. در هر خط از برنامه نوشته شده توضیح (کامنت) نحوه کار آن نوشته شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<span style="font-size: 16px;"> //---------------------------------------- // Main Initialization //---------------------------------------- // Initialize Hardwares hardwares_Init(); //تمامی سخت افزارها غیر فعال میگردند // Initialize IO io_Init(); //ورودی خروجی ها طبق سخت افزار های جانبی تنظیم می شوند // Initialize liquid crystal lcd_Init(LCD_DISP_ON); //نمایشگر ال سی دی راه اندازی اولیه شده و ورودی خروجی های آن تنظیم می شود lcd_Clear(); //تمامی کارکتر های نمایش داده شده روی صفحه نمایش پاک می شوند lcd_GoHome(); //نمایشگر خط نوشتن یا کرسر وارد اولین خانه می شود lcd_PutSF("Welcome..."); //کلمه خوش آمد گویی روی نمایشگر نوشته می شود _delay_ms(1000); //برای نمایش صحیص یک ثانیه تاخیر اضافه می گردد // Blink heart beat to indicate alive HB_LED_On(); //دیود نورانی متصل شده به پین میکروکنترلر یک چشمک میزند _delay_ms(50); HB_LED_Off(); _delay_ms(50);</span> |
در برنامه نوشته شده در تابع main در حلقه اصلی یک متغیر شمارنده نمایش داده شده که پس از شمارش مقدار آن را درنمایشگر ال سی دی نشان می دهد. در شکل زیر آن را مشاهده می کنید.
توضیح توابع استفاده شده در کتابخانه LCD اتمل استودیو:
تابع lcd_PutC: برای نمایش یک کارکتر از این تابع استفاده می گردد.
مثال: lcd_PutC(‘M’) این دستور کارکتر M را روی صفحه نمایش چاپ می کند.
تابع lcd_PutS: برای نمایش یک رشته کارکتری موجود در حافظه sram از این تابع استفاده می گردد.
مثال: lcd_PutS(tempStr) اگر متغیر ارایه ای tempStr = “ABCD”باشد، این دستور رشته ABCD را روی صفحه نمایش چاپ می کند.
تابع lcd_PutLen: برای نمایش تعدادی از یک رشته کارکتری موجود در حافظه sram از این تابع استفاده می گردد.
مثال: lcd_PutLen(tempStr , 3) اگر متغیر ارایه ای tempStr = “ABCDEF” باشد، این دستور رشته ABC را که سه کلمه اول متغیر tempStr است، روی صفحه نمایش چاپ می کند.
تابع lcd_PutSF: برای نمایش یک رشته کارکتری موجود در حافظه flash از این تابع استفاده می گردد.
مثال: lcd_PutSF(“ABCD”) این دستور به صورت مستیم و بدون نیاز به تعریف هیچگونه متغیری، رشته ABCD را روی نمایشگر چاپ می کند.
برای دانلود فایل سورس کد و فایل شبیه سازی راه اندازی ال سی دی کارکتری توسط AVR و اتمل استودیو روی لینک زیر کلیک کنید.
دانلود فایل سورس کد و فایل شبیه سازی راه اندازی ال سی دی کارکتری توسط AVR و اتمل استودیو
با سلام و تشکر از مطالب بسیار مفیدتون
از این کتابخونه میشه برای راه اندازی LCD های 4 در 20 یا بالاتر هم استفاده کرد؟؟؟؟
سلام.
ممنون.
بله توی تنظیمات lcd.h میتونید مدل ال سی دی رو تنظیم کنید.
با سلام.
من از اتمل استادیو ورژن 6 استفاده می کنم.
این کتابخانه ال سی دی کارکتری برای چه ورژنی هست چون میزنه بالاتر هستش.
این برنامه توسط کامپایلر اتمل استادیو ورژن 7 ساخته شده. و باید اتمل استادیو خودتون رو آپگرید کنید.