یکی از چالش های طراحی مدارهای الکترونیکی نمایش نتیجه و Result خروجی است. برای مثال نمایش اطلاعات سنسور های استفاده شده در پروژه مسئلهی بسیار مهمی است که با استفاده از نمایشگرهای مختلفی قابل اجرا است. یکی از این نمایشگرها قابل استفاده در انواع پروژه های الکترونیکی LCD های کاراکتری هستند. که دارای راه اندازی نسبتا ساده ای هستند. در این پست قصد داریم روش راه اندازی ال سی دی کاراکتری با بردهای میکروکنترلر stm32 را بررسی کنیم. در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.
معرفی LCD کاراکتری ۱۶*۲
LCD کاراکتری ۱۶*۲ یکی از پایهای ترین نمایشگرهای الکترونیکی میباشد. این LCD در بسیاری از مدارها کاربرد دارد. یکی از دلایل پر مصرف بودن این مدل LCD در مقابل نمایشگرهایی همچون سون سگمنت، عدم محدودیت در نمایش کاراکترها میباشد. همچنین توانایی ساختن کارکترهای دلخواه را دارند. این نوع LCD دارای ۲ سطر و ۱۶ ستون است. که در هر یک از این ۳۲ بخش یک کاراکتر جای میگیرد.
LCD کاراکتری ۱۶*۲ دارای ۱۶ پایه است. که در تصور زیر میتوانید این پایه ها را مشاهده کنید. که این پایه ها عبارتند؛
- VSS = زمین GND
- VCC = تغذیه ۵ ولت
- (V0 (Display Contrast Pin = تنظیم شدت نور صفحه
- (RS (Register Select = انتخاب رجیستر ( برای ارسال دستور یا دیتا)
- (RW (Read/Write = پایه Read و Write
- E = پایه Enable (این پایه بایستی به میکروکنترلر متصل شود و همیشه High باشد)
- D0 – D7 = پایه های دیتا
- A = پایه Anode
- K = پایه Cathode
اتصالات LCD کاراکتری به STM32
LCD دارای ۱۶ پایه است که ۷ عدد از این پایه ها به میکروکنترلر متصل میشوند. ترتیب اتصال این پایه ها را میتوانید داخل جدول و شماتیک زیر مشاهده نمایید. برای راه اندازی ال سی دی کاراکتری با بردهای میکروکنترلر stm32 به مقاومت دقت کنید. همچنین جدول اتصالات هم برای درک بهتر قرار داده شده است.
پیکربندی پایه های مربوط به LCD
در صورتی که با میکروکنترلر های STM32 آشنایی کافی ندارید. ابتدا از این لینک آموزش های ابتدای میکروکنترلرهای STM32 را مطالعه کنید سپس به مطالعه این آموزش بپردازید. برای پیکربندی پایه های مربوط به LCD در نرم افزار Stm32CubeMX بایستی ابتدا مد کاری LCD در کتابخانه ای که مورد استفاده قرار میدهید، را بررسی کنید. سپس با توجه به این موضوع پیکربندی پایه ها را انجام دهید. LCD مورد استفاده در این آموزش دارای دو مد کاری ۴ بیتی و ۸ بیتی است. کتابخانه مورد استفاده قرار داده شده در این آموزش از هر دو مد کاری LCD را پشتیبانی کنید. در این آموزش قصد داریم تا LCD را در مد ۴ بیتی راه اندازی کنیم. در ادامه پایه هایی از LCD که بایستی به میکروکنترلر متصل شوند. به دوسته پایه های کنترل کننده و پایه های دیتا تقسیم میشوند. پایه های کنترل کنترل کننده پایه های RW ،RS و E هستند و با توجه به این که LCD در مد ۴ بیتی راه اندازی میشود، پایه های دیتا عبارتند از؛ پایه های D4 تا D7.
داخل نرم افزار STM32CubeMX پس از انجام تنظیمات اولیه که در بخش اول آموزش های میکروکنترلر Stm32 گفته شد. ۷ پایه از میکروکنترلر را بعنوان خروجی تعریف میکنیم. در انتخاب پایه ها بایستی توجه داشته باشید که پایه های کنترل کننده بایستی همگی بر روی یک پورت قرار گیرند. همچنین پایه های دیتا نیز بایستی بر روی یک پورت قرار گرفته و شماره پایه های آنها بصورت پشت سر هم باشد. در این آموزش پایه های LCD بصورت زیر تعریف شده است.
سپس مطابق آموزش های قبل فرکانس میکروکنترلر را بر روی ۷۲ مگاهرتز تنظیم کنید. همچنین در قسمت Project Manager نیز تنظیمات لازم را انجام داده و سپس بر روی گزینه GENERATE CODE کلیک کنید و وارد KEIL شوید.
اضافه کردن کتابخانه LCD به پروژه
ابتدا بایستی کتابخانه LCD کاراکتری را از این لینک دانلود کنید. سپس فایل های مربوط به کتابخانه را داخل پوشه پروژه Extract کنید. سپس کتابخانه را به پروژه اضافه کنید. در صورتی که با روش اضافه کردن کتابخانه به پروژه آشنا نیستید، آموزش اضافه کردن کتابخانه به پروژه STM32 در نرم افزار KEIL را مطالعه کنید. پس از اضافه نمودن کتابخانه بایستی وارد فایل character_lcd_conf.h شده و پایه هایی که داخل نرم افزار STM32CubeMX برای LCD تعریف کردید را به کتابخانه معرفی کنید. در این آموزش پایه های کنترل کننده LCD بر روی پورت B و پایه های دیتا بر روی پورت A قرار دارد. پس کد های داخل این فایل را به صورت زیر تغییر میدهیم.
1 2 3 4 5 6 7 8 9 10 11 12 |
/* ~~~~~~~~~~~~~~~~~~ Options ~~~~~~~~~~~~~~~~~~ */ /* ~~~~~~ Data PORT ~~~~~~ */ #define _LCD_CTRL_PORT GPIOB #define _LCD_DATA_PORT GPIOA /* ~~~~~~ Data PIN ~~~~~~~ */ #define _LCD_DATA_PIN 8 #define _LCD_RS_PIN 13 #define _LCD_RW_PIN 14 #define _LCD_EN_PIN 15 |
فراموش نکنید که هدر character_lcd.h را به ابتدای فایل main خود اضافه کنید. پس از انجام مواردی که تا به اینجای کار گفته شد. کتابخانه بطور صحیح به برنامه شما اضافه شده و شما میتوانید به راحتی از فایل های داخل کتابخانه استفاده کنید. در ادامه توابع داخل کتابخانه را مورد بررسی قرار میدهیم.
بررسی توابع کتابخانه LCD
برای راه اندازی ال سی دی کاراکتری با بردهای میکروکنترلر stm32 از کتابخانه معرفی شده استفاده میکنیم. این کتابخانه توابع زیر را در اختیار شما میگذارد. که در ادامه کاربرد هر یک از این توابع را توضیح میدهیم.
1 2 3 4 5 |
void Lcd_Init(void); void Lcd_GotoXY(uint8_t column , uint8_t row); void Lcd_PutChar(char character); void Lcd_PutString(char *str); void Lcd_Clear(void); |
-
void Lcd_Init(void)
این تابع LCD را اماده به کار میکند. محل قرار گیری این تابع داخل اصلی (main) قبل از while(1) است. توجه داشته باشید که این تابع بایستی قبل از توابع دیگر LCD قرار گیرد. برای درک بیشتر این موضوع به مثال زیر توجه کنید.
1 2 3 4 5 |
Lcd_Config.Font = _FONT_5X10; Lcd_Config.Mode = _4BIT_INTERFACE; Lcd_Config.NumberOfLine = _2LINE_DISPLAY; Lcd_Init(); |
-
void Lcd_GotoXY(uint8_t column , uint8_t row)
این تابع نشانگر را به آدرس داده شده انتقال میدهد. ورودی های این تابع بدون علامت هستند. ورودی اول که برای مشخص کردن ستون است میتواند یک عدد صحیح بین ۰ تا ۱۵ باشد. ورودی دوم برای مشخص کردن سطر است و میتواند یک عدد صحیح بین ۰ و ۱ باشد.
-
void Lcd_PutChar(char character)
با استفاده از این تابع میتوانید یک کاراکتر را بر روی LCD نمایش دهید. این تابع زمانی کاربرد دارد که شما قصد چاپ یک کاراکتر را بر روی LCD دارید.
-
void Lcd_PutString(char *str)
این تابع همانند تابع قبل عمل میکند. تنها با این تفاوت که این تابع برای چاپ رشته بر روی LCD است.
-
void Lcd_Clear(void)
با استفاده از این تابع تمام رشته ها و کاراکتر هایی که بر روی LCD چاپ شده است، پاک میشود. توابع دیگری نیز در این کتابخانه موجود است. اما در این آموزش توابع پر کاربرد این کتابخانه معرفی شدند. با باز کردن فایل character_lcd.h میتوانید تمامی توابعی که داخل کتابخانه قرار دارند را مشاهده کنید.
کد نویسی پروژه
در ادامه قصد داریم تا با استفاده از توابع بالا متن “DigiSpark.ir” را بر روی LCD نمایش دهیم. توجه داشته باشید که در کد زیر بایستی بخش های مختلف را به پروژه ساخته شده توسط نرم افزار STM32CubeMX اضافه نمایید. در صورتی که کد زیر را کپی کنید. و داخل برنامه خود Paste کنید. نرم افزار KEIL به شما ارور خواهد داد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include "character_lcd.h" int main(void) { char str[13]={"DigiSpark.ir\0"}; Lcd_Config.Font = _FONT_5X7; Lcd_Config.Mode = _4BIT_INTERFACE; Lcd_Config.NumberOfLine = _2LINE_DISPLAY; Lcd_Init(); while (1) { Lcd_GotoXY(2,0); Lcd_PutString(str); Lcd_GotoXY(0,1); Lcd_PutString("2*16 LCD & STM32"); } } |
در صورتی که با نحوه پروگرام کردن میکروکنترلر های Stm32 آشنا نیستید. لطفا بخش اول آموزش های میکروکنترلر Stm32 را مطالعه نمایید. در تصویر زیر میتوانید نتیجه کد بالا را مشاهده نمایید.
جمع بندی
در این آموزش به نحوه راه اندازی LCD کاراکتری با استفاده از میکروکنترلرهای STM32 پرداختیم. برای راه اندازی این نوع LCD با استفاده از نرم افزار هایی همچون KEIL بایستی کتابخانه ای برای LCD دانلود کرده و یا خودتان کتابخانه را بنویسید. در این آموزش کتابخانه ای برای راه اندازی LCD معرفی شده است. توابع داخل کتابخانه نیز به صورت جداگانه توضیح داده شده است. همچنین با پروژه ساده ای با استفاده از این کتابخانه انجام شده است.
لوازم مورد نیاز
چنانچه در مراحل راه اندازی میکروکنترلرهای stm32 با مشکل مواجه شدید. بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای #دیجی_اسپارک ، #دانشجوکیت ، digispark# و daneshjookit# منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.