پیغام مدیر :
با سلام خدمت شما بازديدكننده گرامي ، خوش آمدید به سایت من . لطفا براي هرچه بهتر شدن مطالب اين وب سایت ، ما را از نظرات و پيشنهادات خود آگاه سازيد و به ما را در بهتر شدن كيفيت مطالب ياري کنید.
فارسی نویسی در lcd کاراکتری با زبان c
نوشته شده در یکشنبه 18 مهر 1389
بازدید : 3931
نویسنده : takpar

من در این پست تصمیم دارم نحوه فارسی نویسی بر روی lcd 2*16 را آموزش بدهم .درمرحله اول باید بدانیم که lcd ها دارای 3 نوع حافظه (CGRAM, DDRAM, CGROM) هستند.

*  CGROM   : در این حافظه کاراکترهای از پیش تعیین شده مانند ارقام حروف و ... قرار دارند  LCD با دریافت کد اسکی مربوط به هر کاراکتر آن را در صفحه نمایش ، نمایش میدهد.

*  DDRAM   : حافظه موقتی است که اطلاعات برای نمایش در آن نوشته می شود.

*  CGRAM   : این حافظه 64 بایتی می باشد و ما می توانیم در داخل این حافظه حداکثر 8 کاراکتر دلخواه ایجاد کنیم.

برای ایجاد یک کراکتر باید یک ماتریس 8*5  رسم کرده وکاراکتر دلخواه را با یک و صفر کردن خانه های آن بسازید

 0     0      0      0      0

 0     0      0      0      0

 0     0      0      0      0

 1     1      1      0      0        کراکتر"م"

 1     0      1      0      0

 1     1      1      1      1

 0     0      0      0      0

 0     0      0      0      0

 در ادامه هر سطر را با اضافه کردن 3 عدد صفر در سمت چپ کامل کنید

و در  برنامه زیر هر کاراکتر دلخواه  را با مقدار دهی یکی از آرایه ها به وجود آورید

 

#include

#include

#include

 

#asm

   .equ __lcd_port=0x12 ;PORTD

#endasm

             

char i,CGRAM;

  

char   DATA3[]={0,0,7,5,31,0,0,0};      //م

char   DATA2[]={0,0,14,10,31,10,14,0};  //ه

char   DATA1[]={0, 0, 14, 2, 3, 2, 14, 0};  //د

char   DATA0[]={0,0,0,3,18,17,31,0};  //ی

char   DATA4[]={0B11111,0B10001,0B10001,0B10001,0B10001,0B10001,0B11111,0B0};

void WRITE_CGRAM(char *RAM_code,char CG_code)

{

   CGRAM=(CG_code*8)+0x40;

   for(i=0; i<8; i++)

   lcd_write_byte(CGRAM++,*RAM_code++);

 } 

 

void SEND(int x)

{

    WRITE_CGRAM(DATA0,0);

    WRITE_CGRAM(DATA1,1);

    WRITE_CGRAM(DATA2,2);

    WRITE_CGRAM(DATA3,3);

    WRITE_CGRAM(DATA4,4);

    lcd_gotoxy(x,0);

    lcd_putchar(0);

    lcd_putchar(1);

    lcd_putchar(2);

    lcd_putchar(3); 

    lcd_putchar(4); 

    }

  

void main()

    {  

    lcd_init(16);

    SEND(3);

    delay_ms(1000);

    lcd_clear();

    SEND(6);

    while(1);

    }  

 





مطالب مرتبط با این پست
.



می توانید دیدگاه خود را بنویسید


ورود کاربران

خوش آمدید! لطفا وارد حساب خود شوید

رمز عبور را فراموش کرده‌اید؟
حساب کاربری ندارید؟

فراموشی رمز عبور

نام کاربری یا ایمیل خود را وارد کنید

یا

ثبت نام کاربران

در چند ثانیه حساب کاربری خود را بسازید

قبلا ثبت نام کرده‌اید؟

نظرات کاربران

دیدگاه خود را با ما در میان بگذارید