اطلاعیه

Collapse
No announcement yet.

LCD گرافیکی در کدویژن 2.05.3

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

    LCD گرافیکی در کدویژن 2.05.3


    با سلام خدمت دوستان عزیز
    همانطور که میدانید تا بحال در کامپایلر کدویژن ال سی دی گرافیکی ساپورت نمیشد و اگر میخواستید در پروژه ای از ال سی دی استفاده کنید بایستی یا از ال سی دی کاراکتری استفاده میکردید و یا اگر مجبور به استفاده از ال سی دی گرافیکی بودید میبایست توابع کتابخانه ای را که ال سی دی شما را ساپورت کنند به سختی تهیه کرده و در برنامه بگنجانید تا بتوانید از ال سی دی خود استفاده کنید.
    شرکت " HP infotech " در ورژن جدید کدویژن 2.05.3 این مشکل را برطرف کرده و اگر در قسمت " code wizard" نگاهی به تب های آن بیاندازید میبینید که یک تب به نام " Graphic LCD " اضافه شده و 27 مدل ال سی دی در 5 نوع مختلف را ساپورت میکند .
    دوستان عزیز از این پس به جای نوشتن فونت های مختلف و کتابخانه های مربوط به این ال سی دی ها از توابع موجود در خود نرم افزار استفاده کنید و تجربیات خود را نیز در این تاپیک در اختیار دیگران قرار دهید.
    ++BEHnam

    #2
    پاسخ : LCD گرافیکی در کدویژن 2.05.3

    ال سی دی های ساپورت شده :
    samsung ks0108
    S-MOS system SED1520
    Epson SED1335
    Epson S1D13700
    Toshiba T6963C
    Philips PCD8544
    ++BEHnam

    دیدگاه


      #3
      پاسخ : LCD گرافیکی در کدویژن 2.05.3

      دوستان این کد ویژن جدید برای Glcd همه چیش خوب کار میکنه ولی تصویر رو نشون نمیده درت... یا تیکه تیکه است یا نصف صفحه نیست!!!
      من فکر میکنم اشکال از تبدیل مردن عکس به هگزه!!! lcd vision هم که کرکش رو پیدا نکرم که با اون امتحان کنم!!! کسی هست که با توابع خود کد ویژن عکس نمایش داده باشه؟؟؟ من قبلا خودم دستی عکس نشون داده بودم تو ورژن های قبلی کد ویژن.... ولی الان میخوام بدونم اشکال کجاست که خود توابع کدویژن نشون نمیدن مثه آدم!!! :angry: :angry: :angry: :angry: :angry: :angry: :angry:

      دیدگاه


        #4
        پاسخ : LCD گرافیکی در کدویژن 2.05.3

        فکر نمی کنم تا حالا کسی تونسته باشه ازش جواب بگیره

        خودم از
        https://sites.google.com/site/osamaslab/Home/projects-list/glcd-library
        استفاده می کنم که فوقالعادست
        فونت فارسی رو هم ساپورت می کنه و امکانات فوقالعاده ای چون ترسیم مکعب؛متوازی الضلاع و .... داره.

        مشکل بزرگی که کتابخونه های موجود رو نت دارن عموما با یه نسخه از کدویژن سازگارن و رونسخه های دیگه کار نمی کنن ولی این یکی
        این مشکل رو نداره و حتی رو نسخه قدیمی 1.24هم خوبی جواب میده

        دیدگاه


          #5
          پاسخ : LCD گرافیکی در کدویژن 2.05.3

          درایور LCD Nokia 6100
          [hr]
          کد:
          #include <delay.h>
          #include <stdlib.h>
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          #define SPIPORT           PORTB
          #define SPIDDR           DDRB
          #define CS             2
          #define CLK             5
          #define SDA             3
          #define RESET            4
          #define cbi(reg, bit)        (reg&=~(1<<bit))
          #define sbi(reg, bit)        (reg|= (1<<bit))
          #define CS0             cbi(SPIPORT,CS);
          #define CS1             sbi(SPIPORT,CS);
          #define CLK0            cbi(SPIPORT,CLK);
          #define CLK1            sbi(SPIPORT,CLK);
          #define SDA0            cbi(SPIPORT,SDA);
          #define SDA1            sbi(SPIPORT,SDA);
          #define RESET0           cbi(SPIPORT,RESET);
          #define RESET1           sbi(SPIPORT,RESET);
          #define BLACK            0xFFF
          #define WHITE            0x000
          #define YELLOW           0xF00
          #define MAGENTA           0x0F0
          #define BLUE            0x00F
          #define CYAN            0x0FF
          #define GREEN            0xF0F
          #define RED             0xFF0
          #define BROWN            0xB22
          #define ORANGE           0xFA0
          #define PINK            0xF6A
          #define KEY_PORT          PORTD
          #define KEY_DDR           DDRD
          #define KEY_PIN           PIND
          #define KEY1            KEY_PIN.4
          #define KEY2            KEY_PIN.5
          #define KEY3            KEY_PIN.6
          #define EINT            #asm("sei")
          #define THERM_PORT         PORTB
          #define THERM_DDR          DDRB
          #define THERM_PIN          PINB
          #define THERM_DQ          0
          #define THERM_INPUT_MODE()     THERM_DDR&=~(1<<THERM_DQ)
          #define THERM_OUTPUT_MODE()     THERM_DDR|=(1<<THERM_DQ)
          #define THERM_LOW()         THERM_PORT&=~(1<<THERM_DQ)
          #define THERM_HIGH()        THERM_PORT|=(1<<THERM_DQ)
          #define THERM_CMD_CONVERTTEMP    0x44
          #define THERM_CMD_RSCRATCHPAD    0xbe
          #define THERM_CMD_WSCRATCHPAD    0x4e
          #define THERM_CMD_CPYSCRATCHPAD   0x48
          #define THERM_CMD_RECEEPROM     0xb8
          #define THERM_CMD_RPWRSUPPLY    0xb4
          #define THERM_CMD_SEARCHROM     0xf0
          #define THERM_CMD_READROM      0x33
          #define THERM_CMD_MATCHROM     0x55
          #define THERM_CMD_SKIPROM      0xcc
          #define THERM_CMD_ALARMSEARCH    0xec
          #define THERM_DECIMAL_STEPS_12BIT  625 //.0625
          #define byte            unsigned char
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void sendCMD(byte cmd);
          void sendData(byte cmd);
          void shiftBits(byte b);
          void cls();
          void setxy(int x,int y);
          void setpix(int x, int y, int color);
          void init_lcd();
          void putstr(char *pString, int x, int y, int fColor, int bColor);
          void putchr(char c, int x, int y, int fColor, int bColor);
          void putcntr(char *text, int x, int fcolor, int bcolor);
          void putcntrf(flash byte *text, int x, int fcolor, int bcolor);
          void putstrf(flash byte *pString, int x, int y, int fColor, int bColor);
          
          const byte FONT8x8[] = {
          0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
          0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // !
          0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // "
          0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
          0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
          0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // %
          0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // &
          0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // '
          0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // (
          0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // )
          0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // *
          0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // +
          0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // ,
          0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // -
          0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
          0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash)
          0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30
          0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1
          0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2
          0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3
          0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4
          0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5
          0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6
          0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7
          0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8
          0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9
          0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // :
          0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ;
          0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // <
          0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // =
          0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // >
          0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ?
          0x00,0x60,0x90,0x90,0x60,0x00,0x00,0x00, // degree(+)
          0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A
          0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B
          0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C
          0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D
          0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E
          0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F
          0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G
          0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H
          0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I
          0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J
          0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K
          0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L
          0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M
          0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N
          0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O
          0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50
          0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q
          0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R
          0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S
          0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T
          0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U
          0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V
          0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W
          0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X
          0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y
          0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z
          0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [
          0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash)
          0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ]
          0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _
          0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60
          0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a
          0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b
          0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c
          0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d
          0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e
          0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f
          0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g
          0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h
          0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i
          0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j
          0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k
          0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l
          0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m
          0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n
          0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o
          0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p 0x70
          0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q
          0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r
          0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s
          0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t
          0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u
          0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v
          0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w
          0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x
          0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y
          0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z
          0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // {
          0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // |
          0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // }
          0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~
          0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00}; // DEL
          
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void putcntr(byte *text, int x, int fcolor, int bcolor)
          {
            byte len=0;
            len=strlen(text)*8;
            putstr(text,x,((131/2)-(len/2)),fcolor,bcolor);    
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void putcntrf(flash byte *text, int x, int fcolor, int bcolor)
          {
            byte len=0;
            len=strlenf(text)*8;
            putstrf(text,x,((131/2)-(len/2)),fcolor,bcolor);    
          } 
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void init_lcd()
          {
           SPIDDR=(1<<SDA)|(1<<CLK)|(1<<CS)|(1<<RESET); //Port-Direction Setup
           CS0
           SDA0
           CLK1
           RESET1
           RESET0
           RESET1
           CLK1
           SDA1
           CLK1
           delay_ms(10);
           sendCMD(0x01);
           sendCMD(0x11);
           sendCMD(0x03);
           delay_ms(10);
           sendCMD(0x29);
           sendCMD(0x13);
           sendCMD(0x21);
           sendCMD(0xBA);
           sendCMD(0x36);
          
           //sendData(8|64);  //rgb + MirrorX
           sendData(8|128);  //rgb + MirrorY
          
           sendCMD(0x3A);
           sendData(3);  //12-Bit per Pixel (default)
          
           //Set Constrast
           //sendCMD(0x25);
           //sendData(63);
           cls();  
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void setxy(int x,int y)
          {
           x=131-x;
           sendCMD(0x2B);
           sendData(x);
           sendData(x);
           sendCMD(0x2A);
           sendData(y);
           sendData(y); 
           sendCMD(0x2C); 
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void cls(){
            int i;
           sendCMD(0x2B);
           sendData(0);
           sendData(131);
           sendCMD(0x2A);
           sendData(0);
           sendData(131);
           sendCMD(0x2C);
          
           for (i=0;i<((132*132)/2);i++) {
            sendData(WHITE);
            sendData(WHITE);
            sendData(WHITE);
           }
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void shiftBits(byte b) {
          
           CLK0
           if ((b&128)!=0) SDA1 else SDA0
           CLK1
          
           CLK0
           if ((b&64)!=0) SDA1 else SDA0
           CLK1
          
           CLK0
           if ((b&32)!=0) SDA1 else SDA0
           CLK1
          
           CLK0
           if ((b&16)!=0) SDA1 else SDA0
           CLK1
          
           CLK0
           if ((b&8)!=0) SDA1 else SDA0
           CLK1
          
           CLK0
           if ((b&4)!=0) SDA1 else SDA0
           CLK1
          
           CLK0
           if ((b&2)!=0) SDA1 else SDA0
           CLK1
          
           CLK0
           if ((b&1)!=0) SDA1 else SDA0
           CLK1
          
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void sendData(byte cmd) {
          
           CLK0
           SDA1                         
           CLK1
          
           shiftBits(cmd);
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void sendCMD(byte cmd) {
          
           CLK0
           SDA0                         
           CLK1
          
           shiftBits(cmd);
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void setpix(int x, int y, int color)
          {
            setxy(x,y);
            sendData((unsigned byte)((color >> 4) & 0xFFFF));
            sendData((unsigned byte)(((color & 0x0F) << 4) | 0x00));
            sendCMD(0);
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void putchr(byte c, int x, int y, int fColor, int bColor) {
          
            int i,j;
            unsigned int nCols;
            unsigned int nRows;
            unsigned int nBytes;
            unsigned byte PixelRow;
            unsigned byte Mask;
            unsigned int Word0;
            unsigned int Word1;
            unsigned byte *pChar; 
          
            nCols = *FONT8x8;
            nRows = *(FONT8x8 + 1);
            nBytes = *(FONT8x8 + 2);
          
            pChar = FONT8x8 + (nBytes * (c - 0x1F)) + nBytes - 1;
          
            sendCMD(0x2B);
          
            sendData(x);
            sendData(x + nRows - 1);
          
            sendCMD(0x2A);
            sendData(y);
            sendData(y + nCols - 1);
          
            sendCMD(0x2C);
             
            for (i = nRows - 1; i >= 0; i--) {
              PixelRow = *pChar--;
              Mask = 0x80;
              for (j = 0; j < nCols; j += 2) 
              {
                if ((PixelRow & Mask) == 0)
                  Word0 = bColor;
                else
                  Word0 = fColor;
                  
                Mask = Mask >> 1;
                
                if ((PixelRow & Mask) == 0)
                  Word1 = bColor;
                else
                  Word1 = fColor;
                  
                Mask = Mask >> 1;
          
                sendData((Word0 >> 4) & 0xFF);
                sendData(((Word0 & 0xF) << 4) | ((Word1 >> 8) & 0xF));
                sendData(Word1 & 0xFF);
              }
            }
            sendCMD(0);
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void putstr(byte *pString, int x, int y, int fColor, int bColor) {
            while (*pString != 0x00) 
            {
              putchr(*pString++, x, y, fColor, bColor);
              y = y + 8;
              if (y > 131) break;
            }
            sety=y;
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
          void putstrf(flash byte *pString, int x, int y, int fColor, int bColor) {
            while (*pString != 0x00) 
            {
              putchr(*pString++, x, y, fColor, bColor);
              y = y + 8;
              if (y > 131) break;
            }
            sety=y;
          }
          //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
          دلا خو کن به تنهایی که از تنها بلا خیزد

          دیدگاه


            #6
            پاسخ : LCD گرافیکی در کدویژن 2.05.3

            این آموزش خیلی خوبه
            آموزش کار با GLCD (ال سی دی گرافیکی) با میکروکنترلر avr

            - آموزش نوشتن متن، کشیدن اشکال هندسی و نمایش تصویر دلخواه بر روی ال سی دی گرافیکی
            :smile: :smile: :smile: :smile:


            http://s7.picofile.com/file/8233539150/Glcd.rar.html

            دیدگاه

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