سلام. کسی از دوستان میتونه کمک کنه که بتونم روی lcd n96 فونت لاتین با هر سایزی نمایش بدم؟
سلام. کسی از دوستان میتونه کمک کنه که بتونم روی lcd n96 فونت لاتین با هر سایزی نمایش بدم؟
منم این سوال و دارم
سلام تورو خودا کمک کنید حداقل یه ال سی دی راه بندازم
msm_mcu@yahoo.com
پروژه برای راه اندازی السیدی که خیلی زیاده !!! سرچ کنی حتما پیدا میکنی...کمک کنید حداقل یه ال سی دی راه بندازم
در مورد اون برنامه تولید کد فونت برای السیدی هم باید بگم قبلا یه مورد به چشمم خورده بود ولی پولی بود ...همه فونت ها نبود ولی چندتا فونت با اندازه های مختلف رو داشت ...
*** اللّهم عجّل لولیک الفرج ***
هر فونتی با هر اندازه ای داشته باشی میتونی با scale اندازش رو تغییر بدی
مثلن من از فونت 8×16 اندازه ی 16×24هم استفاده میکنم!!!
مهندس میشه بیشتر توضیح بدی ؟؟؟ یعنی هر جایی که نوشته فونت 8*16 بنویسیم 16*24؟؟
میشه یکی از اساتید کمک کنن ؟؟؟
آقا من راهشو پیدا کردم. خیلی طولانیه. اما جواب گرفتم. انشالا بخش به بخش توضیح میدم.
اول از همه تو لینک زیر نرم افزار FontEditor رو download کنید.
font editor.zip
بعد که Unzip شد برنامه رو اجرا کنید .
برنامه که باز شد، روی Import Font کلیک کنید تا فونت های سیستم عاملتون رو نشون بده.
حالا میتونید فونت دلخواه و سایز مناسبتون رو انتخاب کنید.
مثلا من Font: Arial 16 رو انتخاب می کنم.
شما هم فونت دلخواهتون رو انتخاب کنید.
سپس Save Font و بعد Export Font رو کلیک کنید. با این کار فایل هدر فونت دلخواهتون ساخته میشه.
آقا احمدي منتظر توضيحات شما هستيم
سلام
من یه برنامه نوشتم که توی یه عکس فونتها رو مینویسی و بعد اون تک تک فونتها رو بیرون میکشه با چندین مدل
بصورت عکس/بصورت بایت/بصورت بیت/ و مهمتر از همه خروجی بسکام
سایز فونتها متغیر هستند و هر فونتی بخواهید تو کمتر از چند دقیقه بدون دردسر درست میشه
با سلام خدمت دوستان عزیزم
تا اونجا پیش رفتیم که یه هدر فایل برای فونتمون درست کردیم.
اول باید سراغ فایلمون بریم تا بتونیم ساختارشو بررسی کنیم. وقتی که فایلمون باز شد با Comment های زیر مواجه میشیم که البته بستگی به نوع فونتمون داره:
File Name : Arial16.h
Date : 11/15/2012
Font size in bytes : 0x1A30, 6704
Font width : 22
Font height : 24
Font first char : 0x21
Font last char : 0xFF
Font bits per pixel : 1
Font is compressed : false
تعاریف بالا عرض، ارتفاع، سایز، اولین و آخرین کاراکتر فونت رو برای ما مشخص کردند که باعث میشه یه طراحی فونت انعطاف پذیری روی هر مدل LCD داشته باشیم. به عنوان مثال یه سطر LCD ممکنه 240 پیکسل داشته باشه. خب حالا عرض فونت ما 22. پس تقریبا 10 یا 11 کاراکتر میتونیم تو این سطر نشون بدیم البته با احتساب فضای خالی حداقل یک پیکسلی بین کاراکترها.
داخل همون فایل کمی پایین تر با جدول فونت روبرو میشیم مطابق زیر:
uint8_t __attribute__ ((progmem)) Arial16[] = {
0x1A, 0x30, 0x16, 0x18, 0x01, 0x21, 0xFF,
0x02, 0x06, 0x0C, 0x09, 0x11, 0x0C, 0x02, 0x05, 0x05, 0x08, 0x0A, 0x02, 0x06, 0x02, 0x06, 0x0A,
0x06, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x02, 0x02, 0x0A, 0x0A, 0x0A, 0x0A, 0x13,
0x0D, 0x0B, 0x0D, 0x0C, 0x0B, 0x0A, 0x0E, 0x0C, 0x02, 0x08, 0x0C, 0x09, 0x0F, 0x0C, 0x0E, 0x0B,
0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x15, 0x0E, 0x0E, 0x0C, 0x04, 0x06, 0x04, 0x08, 0x0C, 0x03,
0x0A, 0x09, 0x09, 0x09, 0x0A, 0x07, 0x09, 0x09, 0x02, 0x03, 0x09, 0x02, 0x0E, 0x09, 0x0A, 0x09,
0x09, 0x06, 0x09, 0x05, 0x09, 0x0B, 0x0F, 0x0A, 0x09, 0x09, 0x06, 0x02, 0x06, 0x0A, 0x04, 0x0B,
0x0F, 0x03, 0x0B, 0x06, 0x12, 0x0B, 0x0B, 0x07, 0x15, 0x0F, 0x06, 0x14, 0x0B, 0x0A, 0x07, 0x11,
0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x15, 0x11, 0x11, 0x0A, 0x06, 0x13, 0x00, 0x00, 0x0B, 0x00,
0x05, 0x0B, 0x0B, 0x0A, 0x0C, 0x04, 0x0B, 0x07, 0x0F, 0x08, 0x0A, 0x0B, 0x06, 0x0F, 0x0C, 0x07,
0x0B, 0x06, 0x06, 0x05, 0x0A, 0x0B, 0x04, 0x06, 0x05, 0x05, 0x0B, 0x12, 0x12, 0x12, 0x06, 0x06,
0x07, 0x04, 0x04, 0x09, 0x03, 0x0D, 0x03, 0x0F, 0x06, 0x0F, 0x0F, 0x0B, 0x0B, 0x0B, 0x07, 0x07,
0x0A, 0x0A, 0x11, 0x11, 0x17, 0x17, 0x0A, 0x0C, 0x0C, 0x0A, 0x0A, 0x04, 0x11, 0x0C, 0x0D, 0x0B,
0x0B, 0x0B, 0x07, 0x0B, 0x06, 0x09, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0D, 0x0D, 0x06, 0x06, 0x0B,
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0A, 0x0B, 0x0A, 0x0A, 0x00, 0x00, 0x10,
برای کار با این جدول باید با سیستم اشاره گر ها تو زبان c آشنا باشیم. شمارش این جدول از 0 شروع میشه. به عنوان مثال با اشاره به کد هگز شماره 2، یعنی 0x16 عرض فونت ما مشخص میشه یا با اشاره به کد هگز شماره 3، یعنی 0x18 ارتفاع فونت ما مشخص میشه.
ارتفاع فونت خیلی مهمه، برای New Line روی LCD، اینم خیلی مهمه. انشالا تو بخش بعد تمام مشخصات فونت رو از تو این جدول بیرون میکشیم.
البته علاوه بر این که خودمون میتونیم اندازه فونت رو تعریف کنیم توی برنامه نویسی مقیاس هم قرار میدیم.
انشالا توی بخش بعد همچنین هدر فونت رو آماده می کنیم و یه مطلب دیگه هم اینکه خودم توی این قضیه هنوز ضعف های بزرگی دارم که انشالا به یاری هم مشکل فونت انگلیسی و فارسی رو کامل حل می کنیم.
ممنونم.
آقا دستت درد نکنه میشه مابقیشم تند تر بگی ؟؟؟
سلام
مهندس احمدی مطلب خوبی شروع کردین لطفا تموم شد برای من پیام خصوصی کنید بذارم اول سایت
با تشکر
درود بر شما.
هدر فایل فونتمون ساخته شد. الان وقتشه که کتابخانه فونت رو درستش کنیم. این کتابخانه باید چند تا خاصیت داشته باشه. مراحل چندان در قید و بند ترتیب خاصی نیست. مگر در تابع main.
1- ممکنه بخواهیم از چند نوع فونت توی پروژه استفاده کنیم. پس اول باید تابع بارگذاری فونتمون آماده بشه.
2- باید مختصات LCD تعریف بشه. مثلن 240*320 یا بالاتر.... بدلیل اینکه باید بدونیم اگه ارتفاع فونت ما 20 پیکسل بود، تقریبا 12 سطر میتونیم ایجاد کنیم. البته در حالتی که LCD روی مد Landscape باشه.
3- تابع نقش بندی فونت روی LCD.
4- بعد از اینکه یک کاراکتر روی LCD نقش بست، باید کاراکتر بعدی به فاصله ی عرض کاراکتر چاپ شده به اضافه یک یا دو پیکسل فاصله چاپ شود.
5- زمانی که کاراکتری روی LCD نقش میبنده اگه عرض کاراکتر به اضافه کاراکترهای چاپ شده قبلی و فاصله ی بین کاراکترها بیشتر از طول LCD شد، باید New Line ایجا بشه و به اندازه ارتفاع کاراکتر و یک یا دو پیکسل فاصله کرسر ما بیاد پایین و از اونجا فونت ما چاپ بشه.
ببینید اصولش واقعن سادس. فک کنم سخت ترین جاش مال وقتی باشه که میخاد کاراکتر روی LCD چاپ بشه که اونم چند تا دستور منطقیه که یه سری پیکسل طبق آدرسای ما باید تغییر رنگ بدن.
انشالا سعی میکنم سریع تر پیش بریم و ظرف این چند روز کتابخونه رو کامل بارگذاری کنیم.
آقا منم خيلي موافقم با اين بحث اشنايي با طراحي فونت بللخص شكوندن تابوي فونت فارسي
اطلاعاتي كه من تا الان بدست اوردم راجب فونت فارسي اينه
هر كاراكتر فارسي ميتونه چهار حالت داشته باشه
اول - اخر - وسط - تنها و دو حالت چسبيدن به قبلي و چسبيدن به بعدي كه با يك ارايه 6 ستوني و براي هر كاراكتر اينها رو معلوم ميكنند.
برای تشخیص حروف
قبل از انتخاب نوع حرف ، حرف قبل رو چک میکنیم تا بدونم یکی از این (ا - آ - د - ذ - ر - ز - ژ - و - فاصله)حروف هست یا نه بعد قاصله چک میشه مثل این
1 - اگر حرف قبل یکی از این نه حرف باشد به شرطی که حرف بعدی فاصله باشه از نوع چهارم یا اخر تنها هست
2 - اگر حرف قبل یکی از این نه حرف باشد به شرطی که حرف بعدی فاصله نباشه از نوع اول یا اول چسبان هست
3 - اگر حرف قبل یکی از این نه حرف نباشد به شرطی که حرف بعدی فاصله باشد از نوع سوم یا اخر چسبان هست
4 - اگر حرف قبل یکی از این نه حرف نباشد به شرطی که حرف بعدی فاصله نباشد از نوع ذوم یا وسط هست
این هم کد اسکی حروف فارسی
ا = 199
آ = 194
ب = 200
پ = 129
ت = 202
ث = 203
ج = 204
چ = 141
ح = 205
خ = 206
د = 207
ذ = 208
ر = 209
ز = 210
ژ = 142
س = 211
ش = 212
ص = 213
ض = 214
ط = 216
ظ = 217
ع = 218
غ = 219
ف = 221
ق = 222
ک = 223
گ = 144
ل = 225
م = 227
ن = 228
و = 230
ه = 229
ی = 236
يه فايل هم در ضميمه ميزارم كه راجب اين چيزايي كه گفتم هست.خودتون ببينيد
دوستان اگر اطلاعات تازه تري دارند بگن
البته ناگفته نماند قسمتي ار اينا رو از پست هاي دوستاني مثل اقاي polestar ذكر كردم
مهندس احمدی منتظریم
منم منتظرم خیلی خوب پیش میرید
دورد بر شما.
بابت اینکه مدتی نبودم معذرت میخام.
با تشکر از آقای m_online
خب ما یه هدر فونت داریم مثلن برای Arial16
حالا باید یه هدر واسه نمایش فونتمون رو LCD بسازیم.
اول به سراغ توابع میریم. البته سعیم اینه که به صورت گام به گام پیش بریم. از تمام دوستانی که این مطالبو میخونن، استدعا دارم کمو کاستشو گوشزد کنن تا یه تابع درست و استانداردی آماده کنیم.
کتابخونمونو رو با عنوان font.h میسازیم
خب حالا بررسی میکنیمکد:#define GetMaxY() 319 #define GetMaxX() 239 const unsigned char *FontPointer; unsigned char rot = 0; unsigned char Reverse = 0; unsigned char Horizontal = 1; unsigned char FontFixed = 0; unsigned char NonTransparence = 0; unsigned char FontWidth; unsigned char FontHeight; unsigned char FontSize; unsigned char FirstChar; unsigned char LastChar; unsigned char CharWidth; unsigned char FontXScale = 1; unsigned char FontYScale = 1; unsigned char FontSpace = 1; unsigned int CursorX = 0; unsigned int CursorY = 0;
GetMaxY و GetMaxX ظول و عرض lcd ما رو مشخص میکنن که 320 در 240 که البته ما اینجا شمارشمون از 0 شروع میشه
1- *Font Pointer اشاره گریه به جدول فونت ما که قبلن آمادش کردیم.
2- rot منظور چرخشه که صفر نماد 0 و 1 به معنی 90 درجه است.
3- reverse به معنی برعکس شدن جهت text روی lcd.
4- horizontal یعنی lcd رو در مد portrait که برابر است با 1 و 0 یعنی در مد landscape. مثلن در lcdn96 portrait = 240 * 320
5- FontFixed یعنی دارای نسبت اندازه باشه1 یا فونت ثابت باشه 0
6- NonTransparence یعنی شفاف باشه(1) یا نباشه(0)
7- FontWidth متغیر عرض فونتمونه
8- FontHeight متغیر ارتفاع فونتمونه
9- FontSize متغیر سایز فونتمونه
10 - FirstChar متغیر اولین کاراکتر
11- LastChar متغیر آخرین کاراکتر
12- CharWidth متغیر عرض کاراکتر در حال نمایش
13- FontXScale متغیر مقیاس عرض فونت
14- FontYScale متغیر مقیاس ارتفاع فونت
15- FontSpace فضای خالی بین فونت ها
16- CursorX موقعیت x
17- CursorY موقعیت y
اینا رو باید تو فایل Font.c ذخیره کنیم.
البته باید یه فایل Font.h هم همزمان درست کنیم و مقادیر زیر رو درونش بریزیم:
اینا تو هدر فایلمون جداگونه تعریف میشن.کد:#ifndef _FONT_H_ #define _FONT_H_ #include <string.h> #define PROGMEM_read_b(x) (unsigned char)x ///////////////////////////////////////////////////////////////////// extern unsigned char rot; extern unsigned char Reverse; extern unsigned char Horizontal; extern unsigned char FontFixed; extern unsigned char NonTransparence; extern unsigned char FontWidth; extern unsigned char FontHeight; extern unsigned char FontXScale; extern unsigned char FontYScale; extern unsigned char FontSpace; extern unsigned int CursorX; extern unsigned int CursorY;
انشالا در اولین فرصت ظرف یکی دو روز آینده ادامه میدیم.
مهندس چی شد ؟؟؟؟