راهنمای استفاده از کتابخانه lcd nokia1661 - قسمت6
لینک پست معرفی مشخصات کتابخانه
موضوع این قسمت: معرفی کارکرد توابع قسمت متنی و نکات راه اندازی
با سلام .
در قسمت قبلی توابع مربوط به هسته رو توضیح دادم . ر این قسمت توابع مربوط به قسمت متنی را توضیح میدم . این قسمت یک سری تنظیمات داشت که در قسمت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() را بنویسید.
در اینجا توضیحات مربوط به قسمت متنی به پایان رسید . در قسمت بعدی بخش گرافیکی را توضیح میدهم .
با سپاس از توجه تان .
مالکیت معنوی : لطفا کپی نکنید ، لینک بدید .