اطلاعیه

Collapse
No announcement yet.

فارسی نویسی LCD های کارکتری در CCS

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    فارسی نویسی LCD های کارکتری در CCS

    چطور میشه در LCD های کاراکتری فارسی نوشت( البته در CCS)
    با تشکر

    #2
    پاسخ : فارسی نویسی LCD های کارکتری در CCS

    سلام دوست عزیز باید تویه 8 تا بایت خالی که برای کاراکتر داخواه داده تعریفش کنی من توی ساپورت السیدی کاراکتریبا 4 بیت این کارو کردم ولی حروف فارسی اصلا زیبا در نمیاد چون کاراکتر کاراکتره وبین این کاراکتر ها تویه السیدی فاصله هست حروفی که به هم چسبیدن اصلا خوب در نمیاد
    فهبني صبرت علی عذابک فکیف اصبرعلی فراقک
    گیرم که برعذاب توصبر کنم ،چگونه بر جدایی ات شکیبایی ورزم

    دیدگاه


      #3
      پاسخ : فارسی نویسی LCD های کارکتری در CCS

      نوشته اصلی توسط V_A_H_I_D
      چطور میشه در LCD های کاراکتری فارسی نوشت( البته در CCS)
      با تشکر
      سلام

      دوست عزیز اگر اشتباه نکرده باشم تو سایت قبلا این موضوع را دیده بودم :exclaim::agree: یه بار سرچ کن . شاید پیداش کردی.

      الان چیزی جز اون روشی که آقای عبدی فرمودند خاطرم نیست ولی تو سایت قبلا دیده بودم اما نمیدونم کجاش.

      موفق باشید :smile:
      [left][move][b][color=green][size=11pt]ما می توانیم .
      ، همین ... *. * * *. * * * [color=re

      دیدگاه


        #4
        پاسخ : فارسی نویسی LCD های کارکتری در CCS

        برای فارسی نویسی در LCD بهتر ه از نوع گرافیکی اونها استفاده کنیم اون وقت با امکان نوشتن نقطه به نقطه ( point to point) میتونید یکی از فونتهای فارسی استلندارد رو توی اون پیاده ساری کنید look up table یه نرم افزاری هم هست بنام Fast LCD که کد هگز براتون میسازه برای پر کردن جدولتون . در نهایت هم باید ادیتور براش بنویسید . کار خوبی از کار در میاد من برای بزرگتر نوشتن روی LCD مجبور شدم که جدول و ادیتور بسازم البته برای حروف EN این کارو کردم . موفق باشی .

        دیدگاه


          #5
          پاسخ : فارسی نویسی LCD های کارکتری در CCS

          http://www.eca.ir/forum2/index.php/topic,8063.0.html
          این یه سلام است با CodeVisionAVR C Compiler

          دیدگاه


            #6
            پاسخ : فارسی نویسی LCD های کارکتری در CCS

            اینم برنامه و شماتیک پروژه ایجاد کاراکتر دلخواه بر روی LCD

            مثال) اسم "حمید بادامی" را در داخل حافظهCGRAM ایجاد کرده و سپس آنرا بر روی LCDنمایش دهید.

            در این مثال برای ایجاد هر یک از کاراکترها ، باید ابتدا برای هر کاراکتر یک ماتریس5*8 ترسیم نموده و کدهای آن را بدست آوریم. کدهای هر کاراکتر را به ترتیب در داخل رشته های DATA0 تا DATA7 می نویسیم . شما می توانید کدهای کاراکترهای دلخواه خود را پس از ایجاد ، به ترتیب در داخل این رشته ها قرار دهید .
            ابتدای برنامه 8 رشته به نامهای DATA0 تاDATA7 وجود دارد که کدهای هر کاراکتر در داخل خانه های این رشته ها قرار دارد. تابع WRITE_CGRAMدیتا را در داخل حافظه CGRAM قرار می دهد. این تابع در آرگومان خود دو مقدار می گیرد که مقدار اول آدرس خانه ای از RAM که کدهای ایجاد شده در آن قرار دارد و مقدار دوم آدرس خانه ای از
            CGRAM است که باید کدهای ایجاد شده در داخل آن نوشته شود.
            WRITE_CGRAM(DATA0,0);
            در این تابع ، DATA0 نام رشته ای است که کدهای ایجاد شده یک کاراکتر در داخل آن قرار دارند. دومین آرگومان این تابع آدرس خانه ای از CGRAM است که باید کدهای هر کاراکتر در آن نوشته شود. با استفاده از دستور CGRAM=(CG_code*8)+0x40 ما آدرس خانه ای که باید کدها در آن نوشته شود را بدست می آوریم.
            تابع
            lcd_write_byte ( )
            جزء توابع کتابخانهlcd.h می باشد که دارای الگویی به شکل زیر است:
            void lcd_write_byte(unsigned char addr,unsigned char data );

            این تابع در داخل آرگومان دو عدد می گیرد که متغییر addr آدرس حافظه CGRAMو متغییر دوم دیتای کاراکترهای ایجاد شده می باشد .
            با استفاده از توابع
            WRITE_CGRAM(DATAX,X)
            ما کاراکترها را در داخل حافظه CGRAM ایجاد می کنیم و با استفاده از تابع l
            cd_putchar( )
            کاراکترهای ایجاد شده را بر رویLCD نمایش می دهیم.




            [code=c]

            #include <mega16.h>
            #asm
            .equ __lcd_port=0x15 ;PORTC
            #endasm
            #include <lcd.h>
            char i,CGRAM;
            char DATA0[8]={0,0,0,0,7,20,18,30};
            char DATA1[8]={0,0,0,0,31,5,7,0};
            char DATA2[8]={16,16,20,18,17,18,4,0};
            char DATA3[8]={8,8,8,9,9,15,0,4};
            char DATA4[8]={0,0,0,16,8,7,8,19};
            char DATA5[8]={0,0,16,16,16,31,5,7};
            char DATA6[8]={0,0,7,5,1,31,0,0};
            char DATA7[8]={14,14,4,31,4,4,10,17};

            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 main(void)
            {
            lcd_init(16);
            WRITE_CGRAM(DATA0,0);
            WRITE_CGRAM(DATA1,1);
            WRITE_CGRAM(DATA2,2);
            WRITE_CGRAM(DATA3,3);
            WRITE_CGRAM(DATA4,4);
            WRITE_CGRAM(DATA5,5);
            WRITE_CGRAM(DATA6,6);
            WRITE_CGRAM(DATA7,7);
            lcd_gotoxy(3,0);
            lcd_putchar(0);
            lcd_putchar(1);
            lcd_putchar(2);
            lcd_putchar(3);
            lcd_gotoxy(10,0);
            lcd_putchar(4);
            lcd_putchar(5);
            lcd_putchar(6);
            lcd_gotoxy(15,0);
            lcd_putchar(7);
            while (1);
            }

            [/code]

            دیدگاه

            لطفا صبر کنید...
            X