PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : فونت نمایش در LCD n96



micro-m
20-08-2012, 12:56
سلام دوستان
چطور میشه فونت نمایش حروف و عدد رو در LCDn96 بزرگتر کرد؟
برای خودش خیلی کوچیکه...
ممنون :hi:

Aghaeifar
20-08-2012, 13:25
باید از اول یه فونت تعریف کنید و در یه آرایه ذخیره اش کنید.
این فونت پیشفرض سایزش فیکس هست.

agape
20-08-2012, 14:53
آقای آقائی فر درست می فرمایند.
ولی اگر حال و حوصله طراحی فونت رو نداری و میخوای فونتت مثلا چهار برابر بزرگتر بشه راه دیگه ای هم که هست اینه که صفحه نمایشت رو به یک چهارم کاهش بدی به این صورت که به جای رسم یه نقطه تو صفحه 4 تا نقطه بذاری - یعنی نقطه درشت تر و نتیجه بزرگ شدن فونت خواهد بود ! یکی از تکنیک های بولد کردن فونت همینه !

micro-m
21-08-2012, 01:45
با عرض معذرت من که نفهمیدم چه کار کنم !؟
مثلا میخوایم بنویسیم HELLO - مینویسیم:
tftlcd_putsf("HELLO",RED,WHITE,0
خوب دیگه نقطه بزرگ کردنش کجاست!!!!؟؟؟

micro-m
22-08-2012, 13:54
الو؟؟؟؟؟؟؟؟؟؟

agape
22-08-2012, 14:43
دوست من انگار از ساز و کار نحوه نوشتن فونت آگاهی ندارد ؟!
داخل تابع tftlcd_putsf احتمالا میآد و یه تایع که حروف رو قرار میده صدا میزنه - تو اون تابع که حروف رو قرار میده میآد و تابعی که نقطه میذاره رو صدا میزنه - شما باید اونجا رو دست کاری کنی

Doloop
22-08-2012, 17:13
منم دارم روی همین قضیه کار میکنم
یه فونت 16*24 پیدا کردم ببینم چی میشه :0013:

Doloop
22-08-2012, 18:44
آقا من این فونت رو تونستم نمایش بدم :o ولی تنها یه مشکلی هست :
از هر کاراکتر فقط نصفه چپش رو نمایش میده
مثلا حرف M رو نصفه سمت چپ نمایش داده میشه
خیلی باهاش سروکله زدم ولی نتونستم این مشکل رو درست کنم :unh:
دوستان یاری برسونن :0013:




void tftlcd_putChr(char character, uint16_t frgColor, uint16_t bkgColor)
{
int8_t vcount, hcount;
char char_data;

tftlcd_setArea(x_text * 16, y_text * 24, (x_text * 16) + 15, (y_text * 24) + 23);
tftlcd_writeIndex(0x0022);
for (hcount = 0; hcount < 24; hcount++)
{
char_data = Font16x24[character - 32][hcount];

for (vcount = 0; vcount < 16; vcount++)
{
if ((char_data&(1 << vcount)) >> vcount)
tftlcd_writeData(frgColor);
else
tftlcd_writeData(bkgColor);
}
}
#ifdef PORTRAIT
if (++x_text > 29)
{
x_text = 0;
if (++y_text > 19)
y_text = 0;
}
#endif
#ifdef LANDSCAPE
if (++x_text > 39)
{
x_text = 0;
if (++y_text > 14)
y_text = 0;
}
#endif

Aghaeifar
22-08-2012, 19:22
حسین لطفا فونت رو هم بذار منم تست کنم. ظاهر این کد که درسته.

Doloop
22-08-2012, 20:08
چشم :0013:
بفرمائید :hi:

Aghaeifar
22-08-2012, 21:04
شرط if داخل حلقه ی دوم رو این کن


if (char_data&(0x8000 >>(16- vcount)))

Doloop
22-08-2012, 22:15
مهندس برای شما جواب داد...؟؟؟!
برا من هنوزم همونطوریه!!!
نصفه نشون میده
اینم عکس :

الان روی السیدی اینو نوشته : Cortex-m4

Aghaeifar
22-08-2012, 22:29
حسین این شرط رو به چیزی که نوشتم تغییر دادی؟

برای من همه حروف رو با تغییر این شرط صحیح و کامل نمایش میده

تغییر نام کاربری مبارک

Doloop
22-08-2012, 23:09
ممنون
برای جلوگیری از اشتباه دقیقا همین شرط رو کپی کردم و جایگزین اون کردم
ولی باز تغیری نکردii998)

Doloop
23-08-2012, 01:06
علی آقا شما فقط همین قسمت رو تغیر دادی !!!ii998)
من اینقدر این هدر رو دستکاری کردم تا به اینجا رسیدم
حالا شما جواب گرفتی ولی من... :mrgreen:

Aghaeifar
23-08-2012, 01:19
راست بذار من کل تابع خودم رو بدم بهت دیگه


void tftlcd_putchar(char character,int forground_color,int background_color,int transparent_mode)
{
int width_counter,length_counter;
int character_segment_data;

for(length_counter=0;length_counter<24;length_counter++)
{
character_segment_data=Font16x24[character-0x20][length_counter];
for(width_counter=0;width_counter<16;width_counter++)
{
if(character_segment_data & (0x8000>>(16-width_counter)))
tftlcd_write_pixel((x_text*8)+width_counter,(y_tex t*16)+length_counter,forground_color);
else
{
if(!transparent_mode)
tftlcd_write_pixel((x_text*8)+width_counter,(y_tex t*16)+length_counter,background_color);
else
tftlcd_write_pixel((x_text*8)+width_counter,(y_tex t*16)+length_counter,tftlcd_read_pixel((x_text*8)+ width_counter,(y_text*16)+length_counter));
};
};
};

if(++x_text>40)
{
x_text=0;
if(++y_text>15) y_text=0;
};
}

m.elexal
30-03-2013, 19:32
راست بذار من کل تابع خودم رو بدم بهت دیگه


void tftlcd_putchar(char character,int forground_color,int background_color,int transparent_mode)
{
int width_counter,length_counter;
int character_segment_data;

for(length_counter=0;length_counter<24;length_counter++)
{
character_segment_data=Font16x24[character-0x20][length_counter];
for(width_counter=0;width_counter<16;width_counter++)
{
if(character_segment_data & (0x8000>>(16-width_counter)))
tftlcd_write_pixel((x_text*8)+width_counter,(y_tex t*16)+length_counter,forground_color);
else
{
if(!transparent_mode)
tftlcd_write_pixel((x_text*8)+width_counter,(y_tex t*16)+length_counter,background_color);
else
tftlcd_write_pixel((x_text*8)+width_counter,(y_tex t*16)+length_counter,tftlcd_read_pixel((x_text*8)+ width_counter,(y_text*16)+length_counter));
};
};
};

if(++x_text>40)
{
x_text=0;
if(++y_text>15) y_text=0;
};
}

با این کد هنوز فونت های من نصفه هست cry::
بزرگ شده سایزش اما نصفه سمت راست نداره :sa:
فونت رو کپی کردم کد شما رو هم وارد کردم

Z.F.K
18-05-2013, 11:37
سلام.من توی هرقسمت این سوال رو پرسیدم ولی کسی جواب نمیده.مدیریت محترم بخش LPC لطفا جواب من رو هم بدید.من یه برنامه اماده واسه lpc1768بود توی سایت ecaمن هم برداشتم و ران کردم.الان میتونم یه چیزایی رو ال سی دی بنویسم اما مختصات x,yرو نمیدونم دقیقا رو چه اصولیه.با توابع تاچش هم هنوز نتونستم کار کنم.اگه برنامه رو اینجا قرار بدم کمکم میکنید؟