لینک پست معرفی مشخصات کتابخانه

لینک اولین قسمت آموزش

لینک فهرست موضوعی مطالب

موضوع این قسمت: معرفی کارکرد توابع قسمت متنی و نکات راه اندازی 

با سلام .

در قسمت قبلی توابع مربوط به هسته رو توضیح دادم . ر این قسمت توابع مربوط به قسمت متنی را توضیح میدم . این قسمت یک  سری تنظیمات داشت که در قسمت4 توضیح داده شده است .

هدر و سورس فایل های قسمت متنی در پوشه  txt_lcd_adjustablefont قرار دارد .جهت یادآوری به تصویر زیر نگاه کنید .

 

الگوی توابع در فایل txt_lcd.h و بدنه توابع در فایل txt_lcd.c قرار دارد . محتویات هدر فایل را در تصویر زیر میبینید.

 

 

 

 

تابع (rgb_color_typedef   color)alcd_SetBackgroundColor :

این تابع رنگ پس زمینه را تعیین میکند . برای اینکه رنگ جدید اعمال شود لازم است که حتما یکبار صفحه پاک شود .

تابع alcd_Set_aligment( lcd_aligment_typedef   alig):

این تابع برای انتخاب حالت نوشتن چپ به راست ( انگلیسی) و یا حالت نوشتن راست به چپ ( فارسی ) استفاده میشود . مقادیر مجاز برای متغیر تابع txtlcd_right_to_left و txtlcd_left_to_right هستند .که نامشان گویای عملکردشان هست .

 

تابع alcd_Set_orient(lcd_orientation_typedef   orient) :

این تابع برای چاپ متن در زوایای 0 و  90 و 180 و 270 در صفحه به کار برده میشود .متغیر تابع زاویه را تعیین میکند و مقادیر مجاز آن به صورت زیر است .

txtlcd_orientation_normal

txtlcd_orientation_90

txtlcd_orientation_180

txtlcd_orientation_270

 

تابع  alcd_set_font(txtlcd_font_def_typedef      font) :

با این تابع میتوان فونت مورد استفاده را تغییر داد . فقط کافیست نام فونت مورد نظر را در متغیر تابع وارد کنید .( در مورد نام فونت در قسمت 4 قبلا توضیح دادم )

تابع alcd_gotocharxy(uint8_t x, uint8_t y) :

این تابع مکاننما را به صورت متنی به سطر (y)و ستون (x) ، برای نوشتن یک متن در صفحه منتقل میکند.

یک تفاوتی بین مختصات x,y  در این تابع وجود دارد .

مختصات x  بر ساس همان تعداد پیکسلهای عرض lcd  است . که به طور مثال اگر صفحه را روی 90 در جه تنظیم کرده باشید . مقداری بین 0 تا 159 ( برای ال سی دی 128*160 ) خواهد داشت .

اما مختصات y ، شماره سطر چاپ به صورت متنی است و به فونت مورد استفاده بستگی دارد . به طور مثال اگر حروف فونتی دارای ارتفاع 16 باشند :

برای y=0 مکاننما به سطر 0 از مختصات گرافیکی منتقل میشود .

برای y=1 مکاننما به سطر 16 مختصات گرافیکی منتقل میشود .

برای y=2 مکاننما به سطر 32 مختصات گرافیکی منتقل میشود .

***توجه :

برای فارسی نویسی :

دستور   alcd_gotocharxy(0,0)   مکاننما را به گوشه راست و بالا  صفحه نمایش منتقل میکند .

برای حالت انگلیسی :

دستور   alcd_gotocharxy(0,0)   مکاننما را به گوشه چپ و بالا  صفحه نمایش منتقل میکند .

تابع alcd_gotoxy(uint8_t x, uint8_t y) :

عملکرد این تابع دقیقا مانند تابع بالا است با این تفاوت که متغیر y  هم مانند متغیر x بر حسب تعداد پیکسلهای ارتفاع lcd  هست و رطی به فونت مورد استفاده ندارد . به طور مثال برای یک ال سی دی با رزولوشن 128*160 : مقدار x بین 0 تا 127 و مقدار y  بین 0تا 159 خواهد بود .

این تابع به شما این امکان را میدهد که یک متن دلخواه با هر انداره فونتی را، در هر نقطه دلخواه از صفحه ، بنویسید .

تابع   alcd_clear(void) :

این تابع کل صفحه را پاک میکند . و آنرا به رنگ پس زمینه رنگ آمیزی میکند .

 

تابع alcd_init(void) :

این تابع قبل از اجرای هر تابعی از کتابخانه و بعد از تابع راه اندازی هسته ( lcd_init)  در متغیر تابع باید

متغیر عمومی lcd_position ( در ابتدای فایل تعریف شده است)را قرار داد .

تابع alcd_putc(rgb_color_typedef  color, char c) :

این تابع یک کارکتر را به رنگ دلخواه را  در lcd  چاپ میکند . مکاننما قبلا باید به جای مورد نظر منتقل شده باشد .

 تابعalcd_putsf(rgb_color_typedef  color, const char*  str) :

این تابع یک رشته را که در حافظه فلش قرار دارد به رنگ دلخواه در صفحه چاپ میکند .

تابع  alcd_putsf_persian(rgb_color_typedef  color, const char*  str) :

این تابع همانند تابع بالا است و یک رشته را که در حافظه فلش قرار دارد به رنگ دلخواه در صفحه چاپ میکند . با این تفاوت که هنگامی که فارسی نویسی را فعال کرده باشید در دسترس است و برای چاپ متون فارسی استفاده میشود . این تابع نوع حروف ( تنها ، اول چسبان ، وسط و آخر ) را به طور اتوماتیک تشخیص میدهد . البته این تابع میتواند حروف انگلیسی و نمادها را چاپ کند  ولی به دلیل امکانات اضافه ، سرعت کند تری دارد .

تابع alcd_puts( color,str)  :

این تابع یک رشته را که در حافظه رم قرار دارد . به رنگ دلخواه در صفحه چاپ میکند .

تابع  alcd_puts_persian( color,str)

این تابع برای فارسی نویسی است قابلیت تشخیص اتوماتیک حروف را دارد و برای نوشت یک رشته از حافظه رم روی lcd  استفاده میشود .

***توجه :

در هر 4 تابع بالا ابتدا باید مکاننما به محل مورد نظر منتقل شود .

***************************************************************

توابع اضافه شده در نسخه 1.1.3 : ( این نسخه در تاریخ 1399/4/3 منتشر شده است)

تابع alcd_get_pixel_len_of_flash_string(const char *str);

این تابع طول رشته ای که در حافظه فلش قرار دارد را  برحسب پیکسل بر میگرداند  .

 

تابع alcd_get_pixel_len_of_flash_string_persian(const char *str):

عملکرد این تابع همانند تابع قبلی هست با این تفاوت که هنگامی که شما قابلیت فونت فارسی را فعال کرده باشید در دسترس است  . و به طور اتوماتیک حالت حروف فارسی را ( اول  وسط آخر  و تنها ) را تشخیص میدهد و طول رشته را با توجه به این موضوع اندازه میگیرد.

 

 ماکروی های alcd_get_pixel_len_of_string(str) و alcd_get_pixel_len_of_string_persian(str) :

ماکروهای معادل برای توابع بالا به منظور تعیین طول یک رشته در حافظه sram  هستند .

نکته : این توابع و ماکروها میتوانند طول رشته هایی به اندازه حدکثر  65535 پیکسل را دارد .

 

یک کاربرد این توابع زمانی است که شما میخواهد یک رشته به طور دقیق در وسط صفحه نمایش دهید . اگر فونت از نوع ثابت باشد اینکار بدون این توابع

آسان است . اما اگر از فونت باطول متغیر استفاده شود انجام اینکار بدون این توابع میتواند آزار دهنده و وقت گیر باشد .

***************************************************************

اضافه کردن قسمت متنی کتابخانه به پروژه :

برای اضافه کردن این قسمت کتابخانه کافیست فایلtxt_lcd.h   را در فایل main.c  اینکلود کنید .سپس در تابع main   و قبل از همه دستورات مربوط به کتابخانه و بعد از تابعnlcd_init(LCD_COLOR_SIZE )  تابع

alcd_init()  را بنویسید.

در اینجا توضیحات مربوط به قسمت متنی به پایان رسید . در قسمت بعدی بخش گرافیکی را توضیح میدهم .

با سپاس از توجه تان .

لینک قسمت قبلی

لینک قسمت بعدی

 

 

 

مالکیت معنوی : لطفا کپی نکنید ، لینک بدید .