اینجا میخوام یکی از کارهایی که براش واقعا زیاد وقت گذاشتم رو اموزش بدم و یه برنامه نمونه در دست رس دوستان بگزارم
امیدوارم همه بتونن ازش استفاده کنن
من فرض رو بر این میزارم که شما با سی و کدویژن و LCD KS108 اشنا هستین و نیازی به توضیح و اموزش ندارین.
یه توضیح مختصری در مورد فونت فارسی اینکه
هرکدوم از حروف فارسی چهار حالت داره
1- اول
2- وست
3- اخر چسبان
4- اخر تنها
مثل حرف ه ( ههه ه)
مثل حرف ی ( ییی ی) و ...
ممکنه بعضی از حروف یکی از این حالتها رو نداشته باشه ولی بیشتر از 4 تا نیست
بنابر این بجر خود فونت یه MAP یا یه جدول دیگه هم نیازه که نوع حرف رو تشخیص بدیم
اول خود فونت :
باید با یه نرم افزار فونت ساز یا تبدیل عکس به HEX مثل FAST LCD یه عکس از فونت طراحی بشه
این نرم افزار
FAST LCD
http://s1.picofile.com/file/6789884304/FastLCD.exe.html
این هم خود فایل فونتمون که فعلا به صورت یه عکسه


و بعد از تبدیل به صورت HEX میشه
من چون اینجا فقط میخوام در مورد فارسی توضیح بدم بنابر این قسمت فارسیشو جدا میکنم و بعد از کمی تغییر و ویرایش میشه این
flash unsigned char F_FONT8x8[78][8] = {
0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x3A, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA0, 0x18,
0x18, 0x24, 0x20, 0xA0, 0x20, 0x20, 0x20, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA0, 0x98,
0x18, 0x24, 0x20, 0xA0, 0xA0, 0xA0, 0x20, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x22, 0x1A,
0x18, 0x24, 0x20, 0x22, 0x20, 0x22, 0x20, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x21, 0x1A,
0x18, 0x24, 0x20, 0x24, 0x22, 0x24, 0x20, 0x18,
0x00, 0x00, 0x20, 0x28, 0x24, 0xA4, 0x28, 0x10,
0x00, 0x40, 0xA0, 0xA8, 0xA4, 0x24, 0xA8, 0x10,
0x00, 0x00, 0x20, 0xA8, 0xA4, 0xA4, 0x28, 0x10,
0x00, 0x40, 0xA0, 0xA8, 0x24, 0xA4, 0xA8, 0x90,
0x00, 0x00, 0x20, 0x28, 0x24, 0x24, 0x28, 0x10,
0x00, 0x40, 0xA0, 0xA8, 0xA4, 0x24, 0x28, 0x10,
0x00, 0x20, 0x22, 0x28, 0x24, 0x24, 0x28, 0x10,
0x00, 0x40, 0xA2, 0xA8, 0xA4, 0x24, 0x28, 0x10,
0x00, 0x00, 0x00, 0x20, 0x40, 0x44, 0x28, 0x10,
0x00, 0x00, 0x00, 0x22, 0x40, 0x44, 0x28, 0x10,
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x38,
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3A,
0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x42, 0x34,
0x00, 0x20, 0x20, 0x18, 0x20, 0x18, 0x20, 0x18,
0x70, 0x88, 0x80, 0x78, 0x20, 0x18, 0x20, 0x18,
0x00, 0x20, 0x20, 0x18, 0x22, 0x19, 0x22, 0x18,
0x70, 0x88, 0x80, 0x78, 0x22, 0x19, 0x22, 0x18,
0x00, 0x20, 0x18, 0x30, 0x28, 0x24, 0x24, 0x18,
0x70, 0x88, 0x80, 0x7C, 0x28, 0x24, 0x24, 0x18,
0x00, 0x20, 0x18, 0x32, 0x28, 0x24, 0x24, 0x18,
0x70, 0x88, 0x80, 0x7C, 0x28, 0x25, 0x24, 0x18,
0x00, 0x00, 0x20, 0x3E, 0x28, 0x24, 0x24, 0x18,
0x00, 0x00, 0x20, 0x3E, 0x28, 0x25, 0x24, 0x18,
0x00, 0x00, 0x00, 0x20, 0x38, 0x24, 0x24, 0x28,
0x00, 0x00, 0x20, 0x28, 0x34, 0x14, 0x34, 0x2C,
0x00, 0x00, 0x00, 0x40, 0xA8, 0x94, 0x94, 0xA8,
0x00, 0x00, 0x00, 0x60, 0x90, 0x9C, 0x92, 0x92,
0x00, 0x00, 0x00, 0x20, 0x38, 0x24, 0x25, 0x28,
0x00, 0x00, 0x20, 0x28, 0x34, 0x15, 0x34, 0x2C,
0x00, 0x00, 0x00, 0x40, 0xA8, 0x94, 0x95, 0xA8,
0x00, 0x00, 0x00, 0x62, 0x90, 0x9C, 0x92, 0x92,
0x00, 0x00, 0x00, 0x20, 0x38, 0x25, 0x24, 0x18,
0x18, 0x24, 0x20, 0x20, 0x38, 0x25, 0x24, 0x18,
0x00, 0x00, 0x00, 0x20, 0x39, 0x24, 0x25, 0x18,
0x00, 0x30, 0x48, 0x80, 0x99, 0xA4, 0xA5, 0x78,
0x00, 0x00, 0x20, 0x2C, 0x2A, 0x2A, 0x2A, 0x12,
0x18, 0x24, 0x20, 0x2C, 0x2A, 0x2A, 0x2A, 0x12,
0x00, 0x00, 0x20, 0x2C, 0x2A, 0x2B, 0x2B, 0x13,
0x18, 0x24, 0x20, 0x2C, 0x2A, 0x2B, 0x2B, 0x13,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1E,
0x00, 0x00, 0x30, 0x48, 0x40, 0x40, 0x20, 0x1E,
0x00, 0x00, 0x20, 0x20, 0x18, 0x24, 0x24, 0x18,
0x00, 0x00, 0xF0, 0x08, 0x18, 0x24, 0x24, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x22, 0x18,
0x00, 0x30, 0x48, 0x80, 0x84, 0x80, 0x40, 0x38,
0x00, 0x00, 0x00, 0x00, 0x98, 0xA4, 0xA4, 0x78,
0x00, 0x00, 0x20, 0x28, 0x15, 0x2A, 0x24, 0x18,
0x00, 0x00, 0x20, 0x78, 0xA4, 0x54, 0x28, 0x20,
0x00, 0x00, 0x00, 0x00, 0x0C, 0x12, 0x02, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x30, 0x44, 0x48, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA0, 0x18,
0x00, 0x70, 0x88, 0x80, 0x90, 0xA8, 0x48, 0x10,
0x00, 0x38, 0x44, 0x80, 0x8C, 0x92, 0x92, 0x64,
0x00, 0x00, 0x00, 0x00, 0x2C, 0x12, 0x08, 0x04,
0x00, 0x00, 0x00, 0x00, 0x22, 0x3C, 0x20, 0x1E,
0x00, 0x18, 0x14, 0x3E, 0x40, 0x3E, 0x40, 0x3E,
0x00, 0x00, 0x00, 0x0C, 0x12, 0xA2, 0x02, 0x04,
0x00, 0x00, 0x00, 0x00, 0x30, 0x48, 0x48, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E,
0x00, 0x00, 0x00, 0x00, 0x7E, 0x08, 0x08, 0x06,
0x00, 0x00, 0x7E, 0x08, 0x08, 0x06, 0x08, 0x06,
0x00, 0x00, 0x00, 0x7C, 0x10, 0x1C, 0x12, 0x12,
0x00, 0x00, 0x30, 0x48, 0x22, 0x44, 0x48, 0x30,
0x00, 0x00, 0x0C, 0x52, 0x30, 0x10, 0x08, 0x04,
0x00, 0x00, 0x00, 0x06, 0x18, 0x60, 0x18, 0x06,
0x00, 0x00, 0x00, 0x60, 0x18, 0x06, 0x18, 0x60,
0x00, 0x00, 0x00, 0x00, 0x0C, 0x12, 0x12, 0x7C,
};
حالا به یه MAP نیاز داریم
این MAP برای تشخیص نوع حرف و حالتش به کار میره
توی یونیکد حروف فارسی از 127 شروع میشه تا 255 پس یکی یکی شماره حروف رو در میاریم
و توی یه جدول 128X4 میزاریم
مثل این
flash unsigned char F_FONT_MAP[111][4]={
0xFF, 0xFF, 0xFF, 0xFF, // 127 =>
0xFF, 0xFF, 0xFF, 0xFF, // 128 =>
0x06, 0x06, 0x05, 0x05, // 129 => پ
0xFF, 0xFF, 0xFF, 0xFF, // 130 =>
0xFF, 0xFF, 0xFF, 0xFF, // 131 =>
0xFF, 0xFF, 0xFF, 0xFF, // 132 =>
0xFF, 0xFF, 0xFF, 0xFF, // 133 =>
0xFF, 0xFF, 0xFF, 0xFF, // 134 =>
0xFF, 0xFF, 0xFF, 0xFF, // 135 =>
0xFF, 0xFF, 0xFF, 0xFF, // 136 =>
0xFF, 0xFF, 0xFF, 0xFF, // 137 =>
0xFF, 0xFF, 0xFF, 0xFF, // 138 =>
0xFF, 0xFF, 0xFF, 0xFF, // 139 =>
0xFF, 0xFF, 0xFF, 0xFF, // 140 =>
0x0E, 0x0E, 0x0D, 0x0D, // 141 => چ
0x17, 0x17, 0x17, 0x17, // 142 => ژ
0xFF, 0xFF, 0xFF, 0xFF, // 143 =>
0x31, 0x31, 0x30, 0x30, // 144 => گ
0xFF, 0xFF, 0xFF, 0xFF, // 145 =>
0xFF, 0xFF, 0xFF, 0xFF, // 146 =>
0xFF, 0xFF, 0xFF, 0xFF, // 147 =>
0xFF, 0xFF, 0xFF, 0xFF, // 148 =>
0xFF, 0xFF, 0xFF, 0xFF, // 149 =>
0xFF, 0xFF, 0xFF, 0xFF, // 150 =>
0xFF, 0xFF, 0xFF, 0xFF, // 151 =>
0x2F, 0x2F, 0x2E, 0x2E, // 152 => ک
0xFF, 0xFF, 0xFF, 0xFF, // 153 =>
0xFF, 0xFF, 0xFF, 0xFF, // 154 =>
0xFF, 0xFF, 0xFF, 0xFF, // 155 =>
0xFF, 0xFF, 0xFF, 0xFF, // 156 =>
0xFF, 0xFF, 0xFF, 0xFF, // 157 =>
0xFF, 0xFF, 0xFF, 0xFF, // 158 =>
0xFF, 0xFF, 0xFF, 0xFF, // 159 =>
0xFF, 0xFF, 0xFF, 0xFF, // 160 =>
0xFF, 0xFF, 0xFF, 0xFF, // 161 =>
0xFF, 0xFF, 0xFF, 0xFF, // 162 =>
0xFF, 0xFF, 0xFF, 0xFF, // 163 =>
0xFF, 0xFF, 0xFF, 0xFF, // 164 =>
0xFF, 0xFF, 0xFF, 0xFF, // 165 =>
0xFF, 0xFF, 0xFF, 0xFF, // 166 =>
0xFF, 0xFF, 0xFF, 0xFF, // 167 =>
0xFF, 0xFF, 0xFF, 0xFF, // 168 =>
0xFF, 0xFF, 0xFF, 0xFF, // 169 =>
0x3C, 0x3B, 0x3A, 0x39, // 170 => ه
0xFF, 0xFF, 0xFF, 0xFF, // 171 =>
0xFF, 0xFF, 0xFF, 0xFF, // 172 =>
0xFF, 0xFF, 0xFF, 0xFF, // 173 =>
0xFF, 0xFF, 0xFF, 0xFF, // 174 =>
0xFF, 0xFF, 0xFF, 0xFF, // 175 =>
0xFF, 0xFF, 0xFF, 0xFF, // 176 =>
0xFF, 0xFF, 0xFF, 0xFF, // 177 =>
0xFF, 0xFF, 0xFF, 0xFF, // 178 =>
0xFF, 0xFF, 0xFF, 0xFF, // 179 =>
0xFF, 0xFF, 0xFF, 0xFF, // 180 =>
0xFF, 0xFF, 0xFF, 0xFF, // 181 =>
0xFF, 0xFF, 0xFF, 0xFF, // 182 =>
0xFF, 0xFF, 0xFF, 0xFF, // 183 =>
0xFF, 0xFF, 0xFF, 0xFF, // 184 =>
0xFF, 0xFF, 0xFF, 0xFF, // 185 =>
0xFF, 0xFF, 0xFF, 0xFF, // 186 =>
0xFF, 0xFF, 0xFF, 0xFF, // 187 =>
0xFF, 0xFF, 0xFF, 0xFF, // 188 =>
0xFF, 0xFF, 0xFF, 0xFF, // 189 =>
0xFF, 0xFF, 0xFF, 0xFF, // 190 =>
0x43, 0x43, 0x43, 0x43, // 191 => ؟
0x3C, 0x3B, 0xFF, 0xFF, // 192 => ه
0x40, 0x40, 0x40, 0x40, // 193 => ء
0xFF, 0xFF, 0xFF, 0x00, // 194 => آ
0xFF, 0xFF, 0xFF, 0xFF, // 195 => أ
0xFF, 0xFF, 0xFF, 0xFF, // 196 => و
0x02, 0x02, 0x02, 0x02, // 197 => ا
0xFF, 0xFF, 0xFF, 0xFF, // 198 => ئ
0x02, 0x01, 0x01, 0x02, // 199 => ا
0x04, 0x04, 0x03, 0x03, // 200 => ب
0xFF, 0xFF, 0xFF, 0xFF, // 201 => ه
0x08, 0x08, 0x07, 0x07, // 202 => ت
0x0A, 0x0A, 0x09, 0x09, // 203 => ث
0x0C, 0x0C, 0x0B, 0x0B, // 204 => ج
0x10, 0x10, 0x0F, 0x0F, // 205 => ح
0x12, 0x12, 0x11, 0x11, // 206 => خ
0x13, 0x13, 0x13, 0x13, // 207 => د
0x14, 0x14, 0x14, 0x14, // 208 => ذ
0x15, 0x15, 0x15, 0x15, // 209 => ر
0x16, 0x16, 0x16, 0x16, // 210 => ز
0x19, 0x19, 0x18, 0x18, // 211 => س
0x1B, 0x1B, 0x1A, 0x1A, // 212 => ش
0x1D, 0x1D, 0x1C, 0x1C, // 213 => ص
0x1F, 0x1F, 0x1E, 0x1E, // 214 => ض
0xFF, 0xFF, 0xFF, 0xFF, // 215 =>
0x20, 0x20, 0x20, 0x20, // 216 => ط
0x21, 0x21, 0x21, 0x21, // 217 => ظ
0x25, 0x24, 0x23, 0x22, // 218 => ع
0x29, 0x28, 0x27, 0x26, // 219 => غ
0xFF, 0xFF, 0xFF, 0xFF, // 220 =>
0x2B, 0x2B, 0x2A, 0x2A, // 221 => ف
0x2D, 0x2D, 0x2C, 0x2C, // 222 => ق
0x2F, 0x2F, 0x2E, 0x2E, // 223 => ک
0xFF, 0xFF, 0xFF, 0xFF, // 224 =>
0x33, 0x33, 0x32, 0x32, // 225 => ل
0xFF, 0xFF, 0xFF, 0xFF, // 226 =>
0x35, 0x35, 0x34, 0x34, // 227 => م
0x37, 0x37, 0x36, 0x36, // 228 => ن
0x3C, 0x3B, 0x3A, 0x39, // 229 => ه
0x38, 0x38, 0x38, 0x38, // 230 => و
0xFF, 0xFF, 0xFF, 0xFF, // 231 =>
0xFF, 0xFF, 0xFF, 0xFF, // 232 =>
0xFF, 0xFF, 0xFF, 0xFF, // 233 =>
0xFF, 0xFF, 0xFF, 0xFF, // 234 =>
0xFF, 0xFF, 0xFF, 0xFF, // 235 =>
0x3F, 0x3E, 0x3D, 0x3D, // 236 => ی
0x3F, 0x3E, 0x3D, 0x3D // 237 => ی
};
حالا کل کار اینه که کد هگز یکی یکی حروف جملتون رو ضرب در چهار کنید و با عدد 127 جمع کنید حالت حرف رو تشخیص بدی (بفهمی کدوم یکی از اون چهارتاست) بعد با خوندن 8 بایت از جدول فونتمون با ابتدای عددی که از توی جدول MAP در اوردیم روی LCD نمایش بدیم
توی پست بعد روش تشخیص حالتهای حروف رو هم یاد خواهم داد.
امیدوارم همه بتونن ازش استفاده کنن
من فرض رو بر این میزارم که شما با سی و کدویژن و LCD KS108 اشنا هستین و نیازی به توضیح و اموزش ندارین.
یه توضیح مختصری در مورد فونت فارسی اینکه
هرکدوم از حروف فارسی چهار حالت داره
1- اول
2- وست
3- اخر چسبان
4- اخر تنها
مثل حرف ه ( ههه ه)
مثل حرف ی ( ییی ی) و ...
ممکنه بعضی از حروف یکی از این حالتها رو نداشته باشه ولی بیشتر از 4 تا نیست
بنابر این بجر خود فونت یه MAP یا یه جدول دیگه هم نیازه که نوع حرف رو تشخیص بدیم
اول خود فونت :
باید با یه نرم افزار فونت ساز یا تبدیل عکس به HEX مثل FAST LCD یه عکس از فونت طراحی بشه
این نرم افزار
FAST LCD
http://s1.picofile.com/file/6789884304/FastLCD.exe.html
این هم خود فایل فونتمون که فعلا به صورت یه عکسه


و بعد از تبدیل به صورت HEX میشه
من چون اینجا فقط میخوام در مورد فارسی توضیح بدم بنابر این قسمت فارسیشو جدا میکنم و بعد از کمی تغییر و ویرایش میشه این
flash unsigned char F_FONT8x8[78][8] = {
0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x3A, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xA0, 0x18,
0x18, 0x24, 0x20, 0xA0, 0x20, 0x20, 0x20, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA0, 0x98,
0x18, 0x24, 0x20, 0xA0, 0xA0, 0xA0, 0x20, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x22, 0x1A,
0x18, 0x24, 0x20, 0x22, 0x20, 0x22, 0x20, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x21, 0x1A,
0x18, 0x24, 0x20, 0x24, 0x22, 0x24, 0x20, 0x18,
0x00, 0x00, 0x20, 0x28, 0x24, 0xA4, 0x28, 0x10,
0x00, 0x40, 0xA0, 0xA8, 0xA4, 0x24, 0xA8, 0x10,
0x00, 0x00, 0x20, 0xA8, 0xA4, 0xA4, 0x28, 0x10,
0x00, 0x40, 0xA0, 0xA8, 0x24, 0xA4, 0xA8, 0x90,
0x00, 0x00, 0x20, 0x28, 0x24, 0x24, 0x28, 0x10,
0x00, 0x40, 0xA0, 0xA8, 0xA4, 0x24, 0x28, 0x10,
0x00, 0x20, 0x22, 0x28, 0x24, 0x24, 0x28, 0x10,
0x00, 0x40, 0xA2, 0xA8, 0xA4, 0x24, 0x28, 0x10,
0x00, 0x00, 0x00, 0x20, 0x40, 0x44, 0x28, 0x10,
0x00, 0x00, 0x00, 0x22, 0x40, 0x44, 0x28, 0x10,
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x38,
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3A,
0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x42, 0x34,
0x00, 0x20, 0x20, 0x18, 0x20, 0x18, 0x20, 0x18,
0x70, 0x88, 0x80, 0x78, 0x20, 0x18, 0x20, 0x18,
0x00, 0x20, 0x20, 0x18, 0x22, 0x19, 0x22, 0x18,
0x70, 0x88, 0x80, 0x78, 0x22, 0x19, 0x22, 0x18,
0x00, 0x20, 0x18, 0x30, 0x28, 0x24, 0x24, 0x18,
0x70, 0x88, 0x80, 0x7C, 0x28, 0x24, 0x24, 0x18,
0x00, 0x20, 0x18, 0x32, 0x28, 0x24, 0x24, 0x18,
0x70, 0x88, 0x80, 0x7C, 0x28, 0x25, 0x24, 0x18,
0x00, 0x00, 0x20, 0x3E, 0x28, 0x24, 0x24, 0x18,
0x00, 0x00, 0x20, 0x3E, 0x28, 0x25, 0x24, 0x18,
0x00, 0x00, 0x00, 0x20, 0x38, 0x24, 0x24, 0x28,
0x00, 0x00, 0x20, 0x28, 0x34, 0x14, 0x34, 0x2C,
0x00, 0x00, 0x00, 0x40, 0xA8, 0x94, 0x94, 0xA8,
0x00, 0x00, 0x00, 0x60, 0x90, 0x9C, 0x92, 0x92,
0x00, 0x00, 0x00, 0x20, 0x38, 0x24, 0x25, 0x28,
0x00, 0x00, 0x20, 0x28, 0x34, 0x15, 0x34, 0x2C,
0x00, 0x00, 0x00, 0x40, 0xA8, 0x94, 0x95, 0xA8,
0x00, 0x00, 0x00, 0x62, 0x90, 0x9C, 0x92, 0x92,
0x00, 0x00, 0x00, 0x20, 0x38, 0x25, 0x24, 0x18,
0x18, 0x24, 0x20, 0x20, 0x38, 0x25, 0x24, 0x18,
0x00, 0x00, 0x00, 0x20, 0x39, 0x24, 0x25, 0x18,
0x00, 0x30, 0x48, 0x80, 0x99, 0xA4, 0xA5, 0x78,
0x00, 0x00, 0x20, 0x2C, 0x2A, 0x2A, 0x2A, 0x12,
0x18, 0x24, 0x20, 0x2C, 0x2A, 0x2A, 0x2A, 0x12,
0x00, 0x00, 0x20, 0x2C, 0x2A, 0x2B, 0x2B, 0x13,
0x18, 0x24, 0x20, 0x2C, 0x2A, 0x2B, 0x2B, 0x13,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1E,
0x00, 0x00, 0x30, 0x48, 0x40, 0x40, 0x20, 0x1E,
0x00, 0x00, 0x20, 0x20, 0x18, 0x24, 0x24, 0x18,
0x00, 0x00, 0xF0, 0x08, 0x18, 0x24, 0x24, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x22, 0x18,
0x00, 0x30, 0x48, 0x80, 0x84, 0x80, 0x40, 0x38,
0x00, 0x00, 0x00, 0x00, 0x98, 0xA4, 0xA4, 0x78,
0x00, 0x00, 0x20, 0x28, 0x15, 0x2A, 0x24, 0x18,
0x00, 0x00, 0x20, 0x78, 0xA4, 0x54, 0x28, 0x20,
0x00, 0x00, 0x00, 0x00, 0x0C, 0x12, 0x02, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x30, 0x44, 0x48, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA0, 0x18,
0x00, 0x70, 0x88, 0x80, 0x90, 0xA8, 0x48, 0x10,
0x00, 0x38, 0x44, 0x80, 0x8C, 0x92, 0x92, 0x64,
0x00, 0x00, 0x00, 0x00, 0x2C, 0x12, 0x08, 0x04,
0x00, 0x00, 0x00, 0x00, 0x22, 0x3C, 0x20, 0x1E,
0x00, 0x18, 0x14, 0x3E, 0x40, 0x3E, 0x40, 0x3E,
0x00, 0x00, 0x00, 0x0C, 0x12, 0xA2, 0x02, 0x04,
0x00, 0x00, 0x00, 0x00, 0x30, 0x48, 0x48, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E,
0x00, 0x00, 0x00, 0x00, 0x7E, 0x08, 0x08, 0x06,
0x00, 0x00, 0x7E, 0x08, 0x08, 0x06, 0x08, 0x06,
0x00, 0x00, 0x00, 0x7C, 0x10, 0x1C, 0x12, 0x12,
0x00, 0x00, 0x30, 0x48, 0x22, 0x44, 0x48, 0x30,
0x00, 0x00, 0x0C, 0x52, 0x30, 0x10, 0x08, 0x04,
0x00, 0x00, 0x00, 0x06, 0x18, 0x60, 0x18, 0x06,
0x00, 0x00, 0x00, 0x60, 0x18, 0x06, 0x18, 0x60,
0x00, 0x00, 0x00, 0x00, 0x0C, 0x12, 0x12, 0x7C,
};
این MAP برای تشخیص نوع حرف و حالتش به کار میره
توی یونیکد حروف فارسی از 127 شروع میشه تا 255 پس یکی یکی شماره حروف رو در میاریم
و توی یه جدول 128X4 میزاریم
مثل این
flash unsigned char F_FONT_MAP[111][4]={
0xFF, 0xFF, 0xFF, 0xFF, // 127 =>
0xFF, 0xFF, 0xFF, 0xFF, // 128 =>
0x06, 0x06, 0x05, 0x05, // 129 => پ
0xFF, 0xFF, 0xFF, 0xFF, // 130 =>
0xFF, 0xFF, 0xFF, 0xFF, // 131 =>
0xFF, 0xFF, 0xFF, 0xFF, // 132 =>
0xFF, 0xFF, 0xFF, 0xFF, // 133 =>
0xFF, 0xFF, 0xFF, 0xFF, // 134 =>
0xFF, 0xFF, 0xFF, 0xFF, // 135 =>
0xFF, 0xFF, 0xFF, 0xFF, // 136 =>
0xFF, 0xFF, 0xFF, 0xFF, // 137 =>
0xFF, 0xFF, 0xFF, 0xFF, // 138 =>
0xFF, 0xFF, 0xFF, 0xFF, // 139 =>
0xFF, 0xFF, 0xFF, 0xFF, // 140 =>
0x0E, 0x0E, 0x0D, 0x0D, // 141 => چ
0x17, 0x17, 0x17, 0x17, // 142 => ژ
0xFF, 0xFF, 0xFF, 0xFF, // 143 =>
0x31, 0x31, 0x30, 0x30, // 144 => گ
0xFF, 0xFF, 0xFF, 0xFF, // 145 =>
0xFF, 0xFF, 0xFF, 0xFF, // 146 =>
0xFF, 0xFF, 0xFF, 0xFF, // 147 =>
0xFF, 0xFF, 0xFF, 0xFF, // 148 =>
0xFF, 0xFF, 0xFF, 0xFF, // 149 =>
0xFF, 0xFF, 0xFF, 0xFF, // 150 =>
0xFF, 0xFF, 0xFF, 0xFF, // 151 =>
0x2F, 0x2F, 0x2E, 0x2E, // 152 => ک
0xFF, 0xFF, 0xFF, 0xFF, // 153 =>
0xFF, 0xFF, 0xFF, 0xFF, // 154 =>
0xFF, 0xFF, 0xFF, 0xFF, // 155 =>
0xFF, 0xFF, 0xFF, 0xFF, // 156 =>
0xFF, 0xFF, 0xFF, 0xFF, // 157 =>
0xFF, 0xFF, 0xFF, 0xFF, // 158 =>
0xFF, 0xFF, 0xFF, 0xFF, // 159 =>
0xFF, 0xFF, 0xFF, 0xFF, // 160 =>
0xFF, 0xFF, 0xFF, 0xFF, // 161 =>
0xFF, 0xFF, 0xFF, 0xFF, // 162 =>
0xFF, 0xFF, 0xFF, 0xFF, // 163 =>
0xFF, 0xFF, 0xFF, 0xFF, // 164 =>
0xFF, 0xFF, 0xFF, 0xFF, // 165 =>
0xFF, 0xFF, 0xFF, 0xFF, // 166 =>
0xFF, 0xFF, 0xFF, 0xFF, // 167 =>
0xFF, 0xFF, 0xFF, 0xFF, // 168 =>
0xFF, 0xFF, 0xFF, 0xFF, // 169 =>
0x3C, 0x3B, 0x3A, 0x39, // 170 => ه
0xFF, 0xFF, 0xFF, 0xFF, // 171 =>
0xFF, 0xFF, 0xFF, 0xFF, // 172 =>
0xFF, 0xFF, 0xFF, 0xFF, // 173 =>
0xFF, 0xFF, 0xFF, 0xFF, // 174 =>
0xFF, 0xFF, 0xFF, 0xFF, // 175 =>
0xFF, 0xFF, 0xFF, 0xFF, // 176 =>
0xFF, 0xFF, 0xFF, 0xFF, // 177 =>
0xFF, 0xFF, 0xFF, 0xFF, // 178 =>
0xFF, 0xFF, 0xFF, 0xFF, // 179 =>
0xFF, 0xFF, 0xFF, 0xFF, // 180 =>
0xFF, 0xFF, 0xFF, 0xFF, // 181 =>
0xFF, 0xFF, 0xFF, 0xFF, // 182 =>
0xFF, 0xFF, 0xFF, 0xFF, // 183 =>
0xFF, 0xFF, 0xFF, 0xFF, // 184 =>
0xFF, 0xFF, 0xFF, 0xFF, // 185 =>
0xFF, 0xFF, 0xFF, 0xFF, // 186 =>
0xFF, 0xFF, 0xFF, 0xFF, // 187 =>
0xFF, 0xFF, 0xFF, 0xFF, // 188 =>
0xFF, 0xFF, 0xFF, 0xFF, // 189 =>
0xFF, 0xFF, 0xFF, 0xFF, // 190 =>
0x43, 0x43, 0x43, 0x43, // 191 => ؟
0x3C, 0x3B, 0xFF, 0xFF, // 192 => ه
0x40, 0x40, 0x40, 0x40, // 193 => ء
0xFF, 0xFF, 0xFF, 0x00, // 194 => آ
0xFF, 0xFF, 0xFF, 0xFF, // 195 => أ
0xFF, 0xFF, 0xFF, 0xFF, // 196 => و
0x02, 0x02, 0x02, 0x02, // 197 => ا
0xFF, 0xFF, 0xFF, 0xFF, // 198 => ئ
0x02, 0x01, 0x01, 0x02, // 199 => ا
0x04, 0x04, 0x03, 0x03, // 200 => ب
0xFF, 0xFF, 0xFF, 0xFF, // 201 => ه
0x08, 0x08, 0x07, 0x07, // 202 => ت
0x0A, 0x0A, 0x09, 0x09, // 203 => ث
0x0C, 0x0C, 0x0B, 0x0B, // 204 => ج
0x10, 0x10, 0x0F, 0x0F, // 205 => ح
0x12, 0x12, 0x11, 0x11, // 206 => خ
0x13, 0x13, 0x13, 0x13, // 207 => د
0x14, 0x14, 0x14, 0x14, // 208 => ذ
0x15, 0x15, 0x15, 0x15, // 209 => ر
0x16, 0x16, 0x16, 0x16, // 210 => ز
0x19, 0x19, 0x18, 0x18, // 211 => س
0x1B, 0x1B, 0x1A, 0x1A, // 212 => ش
0x1D, 0x1D, 0x1C, 0x1C, // 213 => ص
0x1F, 0x1F, 0x1E, 0x1E, // 214 => ض
0xFF, 0xFF, 0xFF, 0xFF, // 215 =>
0x20, 0x20, 0x20, 0x20, // 216 => ط
0x21, 0x21, 0x21, 0x21, // 217 => ظ
0x25, 0x24, 0x23, 0x22, // 218 => ع
0x29, 0x28, 0x27, 0x26, // 219 => غ
0xFF, 0xFF, 0xFF, 0xFF, // 220 =>
0x2B, 0x2B, 0x2A, 0x2A, // 221 => ف
0x2D, 0x2D, 0x2C, 0x2C, // 222 => ق
0x2F, 0x2F, 0x2E, 0x2E, // 223 => ک
0xFF, 0xFF, 0xFF, 0xFF, // 224 =>
0x33, 0x33, 0x32, 0x32, // 225 => ل
0xFF, 0xFF, 0xFF, 0xFF, // 226 =>
0x35, 0x35, 0x34, 0x34, // 227 => م
0x37, 0x37, 0x36, 0x36, // 228 => ن
0x3C, 0x3B, 0x3A, 0x39, // 229 => ه
0x38, 0x38, 0x38, 0x38, // 230 => و
0xFF, 0xFF, 0xFF, 0xFF, // 231 =>
0xFF, 0xFF, 0xFF, 0xFF, // 232 =>
0xFF, 0xFF, 0xFF, 0xFF, // 233 =>
0xFF, 0xFF, 0xFF, 0xFF, // 234 =>
0xFF, 0xFF, 0xFF, 0xFF, // 235 =>
0x3F, 0x3E, 0x3D, 0x3D, // 236 => ی
0x3F, 0x3E, 0x3D, 0x3D // 237 => ی
};
حالا کل کار اینه که کد هگز یکی یکی حروف جملتون رو ضرب در چهار کنید و با عدد 127 جمع کنید حالت حرف رو تشخیص بدی (بفهمی کدوم یکی از اون چهارتاست) بعد با خوندن 8 بایت از جدول فونتمون با ابتدای عددی که از توی جدول MAP در اوردیم روی LCD نمایش بدیم
توی پست بعد روش تشخیص حالتهای حروف رو هم یاد خواهم داد.
دیدگاه