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

blog
۱۴۰۰-۱۰-۲۳
3 دقیقه

در بخش قبلی یک 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
0
لینک و اشتراک
profile

سیاوش

متخصص الکترونیک

کارشناس ارشد الکترونیک دیجیتال، علاقه‌مند به یادگیری

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
ali گفت :
۱۴۰۲-۰۷-۲۸ ۰۴:۳۱

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

profile
Zeus ‌ گفت :
۱۴۰۲-۰۸-۰۲ ۱۶:۰۳

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

profile
میثم گفت :
۱۴۰۱-۱۱-۰۲ ۱۰:۰۱

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

profile
میثم گفت :
۱۴۰۱-۱۱-۱۰ ۱۶:۵۹

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

profile
مصطفی گفت :
۱۴۰۱-۰۴-۱۹ ۰۹:۴۸

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

profile
Zeus ‌ گفت :
۱۴۰۱-۰۴-۲۰ ۱۱:۱۸

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

profile
حسین گفت :
۱۴۰۰-۱۰-۲۳ ۱۵:۴۲

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

profile
سیاوش گفت :
۱۴۰۰-۱۰-۲۶ ۱۱:۱۰

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

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله