ARM, STM32, آموزش, آموزش STM32 با توابع LL, توصیه شده, مقاله های سیسوگ

اضافه کردن فونت برای نمایش متن روی LCD Nokia با واحد SPI در STM32 | قسمت نوزدهم آموزش STM32 با توابع LL

اضافه کردن فونت برای نمایش متن روی LCD Nokia با واحد SPI در STM32 | قسمت نوزدهم آموزش STM32 با توابع LL

در بخش قبلی یک LCD Nokia را به کمک واحد SPI را راه‌اندازی کردیم و یک تصویر را روی آن نمایش دادیم. در این بخش قصد داریم یک فونت برای نوشتن در LCD تعریف کنیم و پیام‌های موردنظرمان را روی LCD نمایش دهیم.

قبل از هر چیز، نیاز به یک فونت داریم که ما برای نمونه یک فونت 5×8 در نظر گرفتیم که هدر فایل آن با جست‌وجوی عبارت font 5×8.h قابل‌دسترسی است. چگونگی استفاده از این هدر فایل در ادامه کار شرح داده می‌شود.

ابتدا مانند قبل روند ساخت پروژه را طی می‌کنیم. تنظیم کلاک، دیباگ، واحد SPI و همچنین پایه‌های خروجی را مانند بخش قبل تنظیم می‌کنیم و کد پروژه را ایجاد می‌کنیم تا وارد محیط Keil شویم.

 

نوشتن کد پروژه

در ابتدا باید هدر فایلی که در ابتدا گفتیم را به پروژه اضافه کنیم، بدین منظور، هدرفایل را در مسیری که پروژه را ایجاد کرده‌ایم و در پوشه Core و سپس Inc کپی می‌کنیم. اکنون در محیط Keil، از نوارابزار یا از منوی Project و سپس Manage، Project Items را انتخاب می‌کنیم. از پنجره باز شده از طریق کلید Add files… به مسیر پروژه می‌رویم و هدرفایل کپی شده را انتخاب می‌کنیم تا به پروژه اضافه شود و در آخر OK را می‌زنیم.  حالا باید در ابتدای فایل main.c نیز هدرفایل را اضافه کنیم. بدین منظور از دستور زیر استفاده می‌کنیم:

اکنون نیاز به تعریف تأخیرهای موردنیاز داریم. توجه کنید برای اینکه دستورات تغییر موقعیت نوشتن و فرستادن کاراکترها به‌درستی توسط LCD اجرا شوند، باید از تأخیر استفاده کنیم. سه تأخیر به‌صورت زیر تعریف می‌کنیم:

مانند بخش قبلی، تابع send_SPI که از قبل نوشتیم را در این پروژه نیز تعریف می‌کنیم:

به وسیله این تابع، دو تابع برای فرستادن اطلاعات دستوری و نمایشی می‌نویسیم؛

توجه کنید که در این دو تابع، پایه فعال‌سازی چیپ را در شروع و پایان دستورات، فعال و غیرفعال کرده‌ایم. همچنین بعد از فرستادن دستور و داده‌های نمایشی تأخیر قرار داده‌ایم. در پروژه ما تأخیر مناسب برای فرستادن دستور حدود 90 میکروثانیه و برای فرستادن داده‌ها حدود 10 میکروثانیه بود که به‌وسیله تأخیرهای تعریف‌شده در ابتدای پروژه، این دو تأخیر موردنیاز را ایجاد کرده‌ایم (کلاک این پروژه 72 مگاهرتز تنظیم شده است).

برای استفاده از LCD مانند پروژه قبل نیاز به یک فعال‌سازی اولیه داریم که این بار می‌خواهیم به‌وسیله یک تابع این عمل را انجام دهیم؛

برای کنترل نوشتن، دو تابع تغییر موقعیت و پاک کردن صفحه‌نمایش را تعریف می‌کنیم:

اکنون باید به‌وسیله تعریف یک تابع، از کاراکترهایی که در هدرفایل تعریف شده، برای نوشتن استفاده کنیم. به‌عبارت‌دیگر، می‌خواهیم تابعی بنویسیم که یک کاراکتر را دریافت کند، این کاراکتر را در بافر فونت تعریف شده پیدا کند و آن را روی LCD نمایش دهد. تابع مذکور را به صورت زیر می‌نویسیم:

اکنون با استفاده از تابع LCD_send_char می‌توانیم تابع دیگری بنویسیم که بتواند یک رشته را روی LCD نمایش دهد:

حالا همه کدهای مورد نیاز را نوشته‌ایم. میتوانیم به وسیله کدهای نوشته شده اطلاعات دلخواهمان را روی LCD بنویسیم.

مانند قبل، واحد SPI را فعال میکنیم (قبل از حلقه while(1)) :

دستورات زیر را در ادامه می‌نویسیم:

اگر تمامی مراحل به درستی انجام شده باشند، در موقعیت تعیین شده روی LCD Nokia، اطلاعات نمایش داده می‌شود.

 

نکته‌: باید توجه کرد که آرایه نوشته شده برای فونت، با طرز نمایش اطلاعات روی LCD، از نظر افقی یا عمودی بودن انطباق داشته باشد.

 

ریدایرکت کردن Printf برای نمایش اطلاعات روی LDC Nokia

می‌توانیم مانند آموزش قسمت ریدایرکت کردن Printf توسط واحد USART، در این پروژه نیز تابع Printf را برای نمایش اطلاعات روی LCD Nokia ریدایرکت کنیم. بدین منظور ابتدا باید تنظیمات Run-Time Environment که در آموزش مذکور گفته شد را به همان شکل انجام دهیم. سپس تابع stdout_putchar را به صورت زیر تعریف می‌کنیم:

اکنون می‌توانیم از دستور printf برای نمایش اطلاعات روی LCD Nokia استفاده کنیم.

در دو بخش گذشته در مورد نحوه راه‌اندازی LCD Nokia و نمایش عکس و اطلاعات نوشتاری روی آن صحبت کردیم. در بخش بعدی با چگونگی نمایش یک انیمیشن روی LCD آشنا خواهیم شد.

لینک پروژه در گیت هاب

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

8 دیدگاه در “اضافه کردن فونت برای نمایش متن روی LCD Nokia با واحد SPI در STM32 | قسمت نوزدهم آموزش STM32 با توابع LL

  1. Avatar for ali ali گفت:

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

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      نه چیزی رو قفل نکردیم !!!
      روی دکمه دانلود بالا سمت راست کلیک کنید باید دانلود بشه

  2. Avatar for میثم میثم گفت:

    سلام و خسته نباشد
    این یه تیکه کد چه کاری انجام میده متوجه نشدم
    CH = CH – ‘ ‘ ;

    1. Avatar for میثم میثم گفت:

      چون خودم جوابش رو بدست اوردم میفرستم شاید برای بقیه هم که تازه کار هستن همچین سوالی براشون پیش بیاد.
      برای اینکه تو کتابخانه فونت ،اولین خانه space هست و هر کارکتر را با space کم کنیم شماره همون کارکتر در ارایه فونت بدست میاد.مطابق با جدول اسکی که نگاهی بهش بندازن بیشتر متوجه میشن.

  3. Avatar for مصطفی مصطفی گفت:

    سلام خدمت شما با تشکر از سایت خوبتون
    من نتونستم فایل font 5×8.h را پیدا کنم امکانش هست لینک دانلود این فایل رو به اشترک بزارید
    ممنون

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام دوست عزیز
      فونت های متنوعی رو میتونید از لینک زیر پیدا کنید
      LCD Font

  4. Avatar for حسین حسین گفت:

    سلام خدمت شما با تشکر از سایت خوبتون دنبال یادگیری avr هستم کمکم کنید ..باتشکر

    1. Avatar photo سیاوش گفت:

      سلام دوست عزیز. برای آموزش avr منابع زیادی وجود داره. شما میتونید از آموزش جامع avr که روی سایت خودمون هست هم استفاده کنید.
      لینک :
      https://sisoog.com/avr-microcontroller-training/

دیدگاهتان را بنویسید

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