اطلاعیه

Collapse
No announcement yet.

آیا lcd 3.2 سوخته؟

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

    آیا lcd 3.2 سوخته؟

    سلام خسته نباشید
    چند روزه میخواستم با lcd3.2 رنگی با درایور ssd1289 که از همین فروشگاه گرفتم کار کنم و البته هدر برد 1768
    برای شروع نمونه برنامه ی خود سایت رو اجرا کردم و اتصالات هم درست بود تغدیه هم 3.3 ولت گذاشته بودم اما صفحه سفید بود
    ولی توی تغییراتی که میدادم و جای lcd رو عوض میکردم یه بار حواسم نبود تغذیه lcd رو به 5 وصل کردم
    یعنی lcd مشکل پیدا کرده؟
    البته قبل اینم صفحه سفید رو داشتم

    #2
    پاسخ : آیا lcd 3.2 سوخته؟

    سلام،
    اگر زمان کمی تحت ولتاژ 5 ولت بوده به احتمال خیلی زیاد نسوخته . درایور ssd1289 با اینکه بر اساس تغذیه دیتاشیت 2.5 تا 3.6 ولت تعیین شده، ولی تجربه نشون داده که انقدرا حساس نیست... شما بیشتر روی اتصالات و مهمتر برنامه متمرکز بشید !

    اطلاعات ssd1289

    http://www.gpegint.com/files/library/files/supportpdf/Driver%20IC%20SSD1289.pdf

    دیدگاه


      #3
      پاسخ : آیا lcd 3.2 سوخته؟

      نوشته اصلی توسط م.پورجبار
      سلام،
      اگر زمان کمی تحت ولتاژ 5 ولت بوده به احتمال خیلی زیاد نسوخته . درایور ssd1289 با اینکه بر اساس تغذیه دیتاشیت 2.5 تا 3.6 ولت تعیین شده، ولی تجربه نشون داده که انقدرا حساس نیست... شما بیشتر روی اتصالات و مهمتر برنامه متمرکز بشید !

      اطلاعات ssd1289

      http://www.gpegint.com/files/library/files/supportpdf/Driver%20IC%20SSD1289.pdf
      چند دقیقه ای با این ولتاژ بود
      ولی سری قبل که درست وصل کرده بودم هم صفحه سفید بود
      اتصالاتش رو تقریبا مطمئنم چون نکته ی خاصی نداره
      برنامه هم خود نمونه برنامه سایته
      راهی نداره که از سالم بودن lcd مطمئن بشم

      دیدگاه


        #4
        پاسخ : آیا lcd 3.2 سوخته؟

        راه که داره ولی چون باید با رجیسترهای کنترلر lcd کار کنی شاید برات یه مقدار سخت باشه !

        یه کنترلر ssd1289 یک رجیستر داره که id بر میگردونه، اگر به lcd دستور رچیستر 0x00 رو بفرستید کنترلر ssd1289 باید به شما جواب 8989h رو برگردونه !
        این یعنی lcd درسته!

        توضیحات صفحه 27 لینک بالا

        دیدگاه


          #5
          پاسخ : آیا lcd 3.2 سوخته؟

          نوشته اصلی توسط م.پورجبار
          راه که داره ولی چون باید با رجیسترهای کنترلر lcd کار کنی شاید برات یه مقدار سخت باشه !

          یه کنترلر ssd1289 یک رجیستر داره که id بر میگردونه، اگر به lcd دستور رچیستر 0x00 رو بفرستید کنترلر ssd1289 باید به شما جواب 8989h رو برگردونه !
          این یعنی lcd درسته!

          توضیحات صفحه 27 لینک بالا
          خیلی ممنون از پاسختون
          این کار رو کردم و جواب گرفتم.0x8989 رو بر میگردونه
          الان با این کار مطمئنا اتصالات lcd درسته
          با اینکه نمونه برنامه هم از سایته که خیلی ها جواب گرفتند
          یعنی بازم مشکل تو برنامه دارم که صفحه سفید نشون میده؟

          دیدگاه


            #6
            پاسخ : آیا lcd 3.2 سوخته؟

            خوشحالم lcd تون سالمه !
            به نظر میاد تنها چیزی که این وسط میمونه برنامست !

            دیدگاه


              #7
              پاسخ : آیا lcd 3.2 سوخته؟

              سلام مجدد
              من هنوز نتونستم این lcd رو راه بندازم
              یعنی نمونه برتامه خود سایت مشکل داره؟
              من یه نمونه کلی جور کردم که میگذارم ممنون میشم اگه یه کمکی بکنید

              #include <lpc17xx.h>
              #define Data_Port_DIR LPC_GPIO1->FIODIR
              #define Data_Port_PIN LPC_GPIO1->FIOPIN
              #define Control_Port_DIR LPC_GPIO0->FIODIR
              #define Control_Port_SET LPC_GPIO0->FIOSET
              #define Control_Port_CLR LPC_GPIO0->FIOCLR
              #define CS (1<<22)
              #define RS (1<<23)
              #define WR (1<<24)
              #define RD (1<<25)
              #define OFFSET 15
              //---------------------------------------------------------
              unsigned TextColor,BackColor;
              void delay (int cnt)
              {

              cnt <<= 18;
              while (cnt--);
              }
              //-----------------------------------------------------------------
              void wait(void)
              {
              __asm("nop"
              __asm("nop"
              }
              //-----------------------------------------------------------------
              void wait_delay(int count)
              {
              while(count--);
              }
              //-----------------------------------------------------------------
              void Write_Cmd(unsigned char cmd)
              {
              Data_Port_DIR |= (0x0000ffff<<OFFSET);
              Control_Port_CLR= RS;
              Control_Port_SET= RD;
              Data_Port_PIN = cmd<<OFFSET;
              wait();
              Control_Port_CLR= WR;
              wait();
              Control_Port_SET= WR;
              }
              //-----------------------------------------------------------------
              void Writ_data (unsigned char data)
              {
              Data_Port_DIR |= (0x0000ffff<<OFFSET);
              Control_Port_SET= RS;
              Control_Port_SET= RD;
              Data_Port_PIN = data<<OFFSET;
              wait();
              Control_Port_CLR= WR;
              wait();
              Control_Port_SET= WR;
              }
              //-----------------------------------------------------------------
              unsigned char Read_data (void)
              {
              unsigned char val = 0;
              Data_Port_DIR &= (~(0xffff<<OFFSET));
              Control_Port_SET= RS;
              Control_Port_SET= WR;
              Control_Port_CLR= RD;
              wait_delay(50);
              val = (Data_Port_PIN >>OFFSET)&0xffff;
              Control_Port_SET= RD;
              return val;
              }
              //-----------------------------------------------------------------
              void Writ_reg (unsigned char reg, unsigned int val)
              {
              Control_Port_CLR= CS;
              Write_Cmd(reg);
              Writ_data(val);
              Control_Port_SET= CS;
              }
              //-----------------------------------------------------------------
              unsigned char Read_reg (unsigned char reg)
              {
              unsigned short val = 0;
              Control_Port_CLR= CS;
              Write_Cmd(reg);
              val = Read_data();
              Control_Port_SET= CS;
              return (val);
              }
              //-----------------------------------------------------------------

              void LCD_Init (void)
              {
              unsigned int driver_code;
              /* Configure the LCD Control pins */
              Data_Port_DIR |= (0xFFFF<<OFFSET);
              Control_Port_DIR |= CS | RS | WR | RD ;
              Control_Port_SET = CS | RS | WR | RD ;

              delay(5);
              driver_code = Read_reg(0x00);
              Data_Port_PIN=(driver_code<<OFFSET);
              Writ_reg(0x00, 0x0001); // Start internal OSC.
              Writ_reg(0x01, 0x3B3F); // Driver output control, RL=0;REV=1;GD=1;BGR=0;SM=0;TB=1
              Writ_reg(0x02, 0x0600); // set 1 line inversion
              //************* Power control setup ************/
              Writ_reg(0x0C, 0x0007); // Adjust VCIX2 output voltage
              Writ_reg(0x0D, 0x0006); // Set amplitude magnification of VLCD63
              Writ_reg(0x0E, 0x3200); // Set alternating amplitude of VCOM
              Writ_reg(0x1E, 0x00BB); // Set VcomH voltage
              Writ_reg(0x03, 0x6A64); // Step-up factor/cycle setting 7b30
              //************ RAM position control **********/
              Writ_reg(0x0F, 0x0000); // Gate scan position start at G0.
              Writ_reg(0x44, 0xEF00); // Horizontal RAM address position
              Writ_reg(0x45, 0x0000); // Vertical RAM address start position
              Writ_reg(0x46, 0x013F); // Vertical RAM address end position
              // ----------- Adjust the Gamma Curve ----------//
              Writ_reg(0x30, 0x0000);
              Writ_reg(0x31, 0x0706);
              Writ_reg(0x32, 0x0206);
              Writ_reg(0x33, 0x0300);
              Writ_reg(0x34, 0x0002);
              Writ_reg(0x35, 0x0000);
              Writ_reg(0x36, 0x0707);
              Writ_reg(0x37, 0x0200);
              Writ_reg(0x3A, 0x0908);
              Writ_reg(0x3B, 0x0F0D);
              //************* Special command **************/
              Writ_reg(0x28, 0x0006); // Enable test command
              Writ_reg(0x2F, 0x12EB); // RAM speed tuning
              Writ_reg(0x26, 0x7000); // Internal Bandgap strength
              Writ_reg(0x20, 0xB0E3); // Internal Vcom strength
              Writ_reg(0x27, 0x0044); // Internal Vcomh/VcomL timing
              Writ_reg(0x2E, 0x7E45); // VCOM charge sharing time
              //************* Turn On display ******************/
              Writ_reg(0x10, 0x0000); // Sleep mode off.
              delay(8); // Wait 30mS
              Writ_reg(0x11, 0x6870); // Entry mode setup. 262K type B, take care on the data bus with 16it only
              Writ_reg(0x07, 0x0033);
              }
              //-----------------------------------------------------------------
              void Window_Max (void)
              {
              Writ_reg(0x50, 0); /* Horizontal GRAM Start Address */
              Writ_reg(0x51, HEIGHT-1); /* Horizontal GRAM End Address (-1) */
              Writ_reg(0x52, 0); /* Vertical GRAM Start Address */
              Writ_reg(0x53, WIDTH-1); /* Vertical GRAM End Address (-1) */
              }
              //-----------------------------------------------------------------
              void Set_Cursor(unsigned int x,unsigned int y)
              {
              Writ_reg(0x004E, x);
              Writ_reg(0X004F, y);
              }
              //-----------------------------------------------------------------
              void LCD_Clear (unsigned int color)
              {
              unsigned int i;
              Window_Max();
              Set_Cursor(0,0);
              Control_Port_CLR= CS;
              Write_Cmd(0x22);
              Control_Port_SET= RS;
              for(i = 0; i < (WIDTH*HEIGHT); i++){
              Data_Port_DIR |= (0x0000ffff<<OFFSET);
              Data_Port_PIN = color<<OFFSET;
              wait();
              Control_Port_CLR= WR;
              wait();
              Control_Port_SET= WR;
              }
              Control_Port_SET= CS;
              }
              //-----------------------------------------------------------------
              void Put_Pixel (unsigned int x, unsigned int y)
              {
              Set_Cursor(WIDTH-1-x,y);
              Control_Port_CLR= CS;
              Write_Cmd(0x22);
              Writ_data(TextColor);
              Control_Port_SET= CS;
              }
              //-----------------------------------------------------------------
              void Set_TextColor (unsigned short color)
              {
              TextColor = color;
              }
              //-----------------------------------------------------------------
              void Set_BackColor (unsigned short color)
              {
              BackColor = color;
              }
              //-----------------------------------------------------------------

              void Draw_Char (unsigned int x, unsigned int y, unsigned char *c)
              {
              int idx = 0, i, j;

              x = WIDTH-x-CHAR_W;
              Writ_reg(0x50, y); /* Horizontal GRAM Start Address */
              Writ_reg(0x51, y+CHAR_H-1); /* Horizontal GRAM End Address (-1) */
              Writ_reg(0x52, x); /* Vertical GRAM Start Address */
              Writ_reg(0x53, x+CHAR_W-1); /* Vertical GRAM End Address (-1) */
              Set_Cursor(0,0);
              Control_Port_CLR= CS;
              Write_Cmd(0x22);
              Control_Port_SET= RS; //write data start
              for (j = 0; j < CHAR_H; j++) {
              for (i = CHAR_W-1; i >= 0; i--) {
              if((c[idx] & (1 << i)) == 0x00) {
              Data_Port_DIR |= (0x0000ffff<<OFFSET);
              Data_Port_PIN = BackColor<<OFFSET;
              wait();
              Control_Port_CLR= WR;
              wait();
              Control_Port_SET= WR;
              } else {
              Data_Port_DIR |= (0x0000ffff<<OFFSET);
              Data_Port_PIN = TextColor<<OFFSET;
              wait();
              Control_Port_CLR= WR;
              wait();
              Control_Port_SET= WR;
              }
              }
              c++;
              }
              Control_Port_SET= CS;//write data stop
              }
              //-----------------------------------------------------------------
              void Display_Char (unsigned int ln, unsigned int col, unsigned char c)
              {
              c -= 32;
              Draw_Char(col * CHAR_W, ln * CHAR_H, (unsigned char *)&Font_24x16[c * CHAR_H]);
              }

              //-----------------------------------------------------------------
              void Display_String (unsigned int ln, unsigned int col, unsigned char *s)
              {
              Window_Max();
              while (*s)
              {
              Display_Char(ln, col++, *s++);
              }
              }
              //-----------------------------------------------------------------
              void Clear_Ln (unsigned int ln)
              {
              Window_Max();
              Display_String(ln, 0," "
              }
              //-----------------------------------------------------------------
              int main(){
              SystemInit();
              LCD_Init();
              LCD_Clear(Red);
              wait();
              LCD_Clear(Green);
              wait();
              LCD_Clear(Blue);
              wait();
              Display_String(5,0,"Hello Word"
              return 1;
              }
              البته فونت هم هست

              دیدگاه

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