اطلاعیه

Collapse
No announcement yet.

ssd1963 lcd7

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

    ssd1963 lcd7

    سلام
    بنده می خواهم به کمک arm این آی سی را ، راه اندازی کنم ولی به مشکلات زیادی خردم!!!
    می شه گفت اینترنت را زیر و رو کردم ولی کدی که بتوانم با arm و به صورت 16 بیتی با این آی سی کار کنم پیدا نکردم البته خودم کتابخانه ها را تغییر دادم ولی با زهم جواب نداد!!!
    در واقع تقریبا وقتی رنگ بالای 0xf000 را به آی سی می دهم آی سی هنگ می کند ولی با کد رنگ های پایین مشکلی ندارم اینم نمنه کدی که درست کردم


    کد:
    #include "lpc23xx.h"
    #include "ssd1963_arm_2368.h"
    #include "font.h"
    
    unsigned int VDP=479;	//Vertical Display Period
    unsigned int VT=530;	//Vertical Total
    unsigned int VPS=24;	//	LFRAME Pulse Start Position
    unsigned int FPS=23;	//Vertical Display Period Start Positio
    unsigned char VPW=3;	// LFRAME Pulse Width
    unsigned int HDP=799; //Horizontal Display Period
    unsigned int HT=1000; //Horizontal Total
    unsigned int HPS=51; //LLINE Pulse Start Position
    unsigned int LPS=3;  //	Horizontal Display Period Start Position
    unsigned char HPW=8;  //	LLINE Pulse Width
    
    
    
    //=============================================================================
    // Write command to SSD1963
    //=============================================================================
    __asm void wait()
    {
      nop
      BX lr
    }
    void LCD_WriteCommand(unsigned long cmd) {
    FIO1CLR =0xffffffff; 
    FIO1SET2=cmd;
    Set_nRd;
    Clr_Cs;Clr_nWr;Clr_Rs;
    wait(); 
    Set_nWr;Set_Cs;Set_Rs; 
    };
    void LCD_WriteData(unsigned long data) {
    
    
    FIO1CLR =0xffffffff;
    FIO1SETU=data;
    Set_Rs;Set_nRd
    Clr_nWr;Clr_Cs;
    wait();
    Set_nWr;Set_Cs;
    };
    
    void SSD1963_Init (void)
    {
    volatile unsigned int dly;
    Set_Rst;		
    Set_Cs;    	// SSD1963 is not selected by default
    Set_nRd;
    Set_nWr;
    
    Clr_Rst;
    for(dly = 0; dly < 1000; dly++);
    Set_Rst;    // release from reset state to sleep state
    
    LCD_WriteCommand(SSD1963_SOFT_RESET);
    
    LCD_WriteCommand(0xe2);
    	LCD_WriteData(0x23);
    	LCD_WriteData(0x02);				// Divider M = 2, PLL = 360/(M+1) = 120MHz
    	LCD_WriteData(0x4);				// Validate M and N values
    	
    
    
    LCD_WriteCommand(0xE0);				// Start PLL command
    	LCD_WriteData(0x01);				// enable PLL
    for(dly = 0; dly < 100000; dly++);						// wait stablize
    
    
    LCD_WriteCommand(0xE0);				// Start PLL command again
    	LCD_WriteData(0x03);				// now, use PLL output as system clock	
    for(dly = 0; dly < 100000; dly++);
    
    LCD_WriteCommand(0x01);				// Soft reset
    for(dly = 0; dly < 100000; dly++);
    
    LCD_WriteCommand(0xE6);
    	LCD_WriteData(0x04);
    	LCD_WriteData(0x93);
    	LCD_WriteData(0xe0);
    
    
    LCD_WriteCommand(0xB0);
    	LCD_WriteData(0x0);				// set 18-bit for 7" panel TY700TFT800480
    	LCD_WriteData(0x0);				// set TTL mode
    	LCD_WriteData((HDP>>8)&0xff); //Set panel size
    	LCD_WriteData(HDP&0xff);
    	LCD_WriteData((VDP>>8)&0xff);
    	LCD_WriteData(VDP&0xff);
    	LCD_WriteData(0x00);				//RGB sequence	
    	
    
    
    
    
    LCD_WriteCommand(0x00B4);	//HSYNC
    	Clr_Cs;
    	LCD_WriteData((HT>>8)&0xff);	
    	LCD_WriteData(HT&0X00FF);
    	LCD_WriteData((HPS>>8)&0X00FF);
    	LCD_WriteData(HPS&0X00FF);
    	LCD_WriteData(HPW);
    	LCD_WriteData((LPS>>8)&0X00FF);
    	LCD_WriteData(LPS&0X00FF);
    	LCD_WriteData(0x00);
    
    LCD_WriteCommand(0xb6);		
    	LCD_WriteData((VT>>8)&0xff);
    	LCD_WriteData(VT&0xff);
    	LCD_WriteData((VPS>>8)&0X00FF);
    	LCD_WriteData(VPS&0X00FF);
    	LCD_WriteData(VPW);
    	LCD_WriteData((FPS>>8)&0X00FF);
    	LCD_WriteData(FPS&0X00FF);
    
    LCD_WriteCommand(0x00BA);
    	LCD_WriteData(0x0005);//0x000F);  //GPIO[3:0] out 1
    
    LCD_WriteCommand(0x00B8);
    	LCD_WriteData(0x0007);  //GPIO3=input, GPIO[2:0]=output
    	LCD_WriteData(0x0001);  //GPIO0 normal
    
    	
    LCD_WriteCommand(0x36);
    	LCD_WriteData(0x00);
    	
    LCD_WriteCommand(0xF0);
    	LCD_WriteData(0x03);				//16-bit(565 format) data for 16bpp PIC32MX only
    
    for(dly = 0; dly < 100000; dly++);
    
    	SSD1963_ClearScreen(0xf800);
    	LCD_WriteCommand(0x0029); //display on
    
    	LCD_WriteCommand(0x00BE); //set PWM for B/L
    	LCD_WriteData(0x0006);
    	LCD_WriteData(0x0080);
    
    	
    	LCD_WriteData(0x0001);
    	LCD_WriteData(0x00f0);
    	LCD_WriteData(0x0000);
    	LCD_WriteData(0x0000);
    
    	LCD_WriteCommand(0x00d0);//ÉèÖö¯Ì¬±³¹â¿ØÖÆÅäÖà 
    	LCD_WriteData(0x000d);
    
    
    	
    
    }
    //=============================================================================
    //
    //=============================================================================
    
    void SSD1963_SetArea(unsigned int sx, unsigned int ex, unsigned int sy, unsigned int ey)
    {
    LCD_WriteCommand(0x2A);//	SSD1963_SET_COLUMN_ADDRESS
    	LCD_WriteData((sx >> 8) & 0xFF);
    	LCD_WriteData((sx >> 0) & 0xFF);
    	LCD_WriteData((ex >> 8) & 0xFF);
    	LCD_WriteData((ex >> 0) & 0xFF);
    
    
    LCD_WriteCommand(SSD1963_SET_PAGE_ADDRESS);
    	LCD_WriteData((sy >> 8) & 0xFF);
    	LCD_WriteData((sy >> 0) & 0xFF);
    	LCD_WriteData((ey >> 8) & 0xFF);
    	LCD_WriteData((ey >> 0) & 0xFF);
    
    }
    //=============================================================================
    // Fill area of specified color
    //=============================================================================
    void SSD1963_FillArea(unsigned int sx, unsigned int ex, unsigned int sy, unsigned int ey, unsigned long color)
    {
    int i;
    SSD1963_SetArea(sx, ex, sy, ey);
    LCD_WriteCommand(SSD1963_WRITE_MEMORY_START);
    for(i = 0; i < ((ex-sx+1)*(ey-sy+1)); i++)
    	{
    	LCD_WriteData(color);
    	}
    }
    //=============================================================================
    // Fills whole screen specified color
    //=============================================================================
    void SSD1963_ClearScreen(unsigned long color)
    {
    unsigned int l=800,w;
    
    LCD_WriteCommand(0x002A);	
    	LCD_WriteData(0);	  
    	LCD_WriteData(0);
    	LCD_WriteData(HDP>>8);	  
    	LCD_WriteData(HDP&0x00ff);
    LCD_WriteCommand(0x002b);	
    	LCD_WriteData(0);	  
    	LCD_WriteData(0);
    	LCD_WriteData(VDP>>8);	  
    	LCD_WriteData(VDP&0x00ff);
    	LCD_WriteCommand(0x002c);
    	
    	
    	while(l--)
    	{
    	  for(w=0;w<480;w++)
    		{  
         	LCD_WriteData(color);
    		}
    	}
    	
    }
    //=============================================================================
    //
    //=============================================================================
    void GLCD_SetPixel(int x, int y, unsigned long color)
    {
    LCD_WriteCommand(0x002A);	
    	LCD_WriteData(x>>8);	  
    	LCD_WriteData(x&0x00ff);
    	LCD_WriteData(479>>8);	  
    	LCD_WriteData(479&0x00ff);
    LCD_WriteCommand(0x002b);	
    	LCD_WriteData(y>>8);	  
    	LCD_WriteData(y&0x00ff);
    	LCD_WriteData(271>>8);	  
    	LCD_WriteData(271&0x00ff);
    LCD_WriteCommand(0x002c);
    	LCD_WriteData(color);
    
    
    
    }
    
    void LCD_SetBacklight(unsigned int intensity)
    {
    LCD_WriteCommand(0xBE);			// Set PWM configuration for backlight control
    	LCD_WriteData(0x0E);			// PWMF[7:0] = 2, PWM base freq = PLL/(256*(1+5))/256 = 
    	LCD_WriteData(intensity);		// Set duty cycle, from 0x00 (total pull-down) to 0xFF 
    	LCD_WriteData(0x01);			// PWM enabled and controlled by host (mcu)
    	LCD_WriteData(0xf0);
    	LCD_WriteData(0x00);
    	LCD_WriteData(0x00);
    }
    
    void lcd_putchar(char character,int x,int y,unsigned int color)
    {
    int _x=x+8,_y=y+16,x_=x,y_=y;
    character=character-32;
    
    		 for(y=y_;y<_y;y++)
    		 	for(x=x_;x<_x;x++)
    				if(font[character][y]>>x&1==1)
    					GLCD_SetPixel(x, y, 0);	
    				else
    					GLCD_SetPixel(x, y, color);
    } 
    
    void lcd_pic(int x,int y,const unsigned short *pointer)
    {
    int _x=240,_y=320,x_=x,y_=y;
    unsigned long color;
    		 for(y=0;y<_y;y++)
    		 	for(x=0;x<_x;x++)
    			{
    				color=(unsigned long)*pointer++;
    				if(color>0xf000)color=0xf000;
    					GLCD_SetPixel(x, y,color&0xff);//(unsigned long)*pointer++);	
    			 }
    }
    //=============================================================================
    //
    //=============================================================================


    امیدوارم یکی بتونه مشکل را حل کنه!!!
    دکتر چمران در 1311 در تهران متولد شد
    وی در زمان اقامت در آمریکا انجمن اسلامی آمریکا را تأسیس کرد که منجر به قطع بورسیه وی توسط شاه شد.
    او با اینکه یکی از دانشمندان مطرح آمریکا به حساب می آمد بدون توجه به مدرک به مصر رفت و آموزش نظامی دید.

    #2
    پاسخ : ssd1963 lcd7

    باز هم سلام اصلا فکرشم نمی کردم تا این مطلب را نوشتم یه چیزی آمد به ذهنم و تا انجامش دادم پروژم جواب داد. :rolleyes:

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


    کد:
    void LCD_WriteData(unsigned long data) {
    FIO1CLR =0xffffffff;
    Clr_Cs;
    FIO1SETU=data&0xff;
    Set_Cs;
    wait();
    FIO1SETU=data&0xff00;
    Set_Rs;Set_nRd
    Clr_nWr;Clr_Cs;
    wait();
    Set_nWr;Set_Cs;
    };


    نمی دونم چرا باید این کار مسخره را انجام بدم تا این آی سی درست کار کند!!!
    آخه وقتی ما 16 بیت i/o داریم چرا باید 8 تا 8 تا بفرستیم!!!
    البته لازم به ذکره که باز هم این آی سی هنگ کرد ولی خب رنگ و نشون می دهد و بعد از چند 10 بار که refresh را انجام داد هنگ کرد احتمالا حل می شه ولی خیلی جالب بود.
    احتمالا حافظه ی این ای سی ssd1963 به صورت 8 بیتی و شیف رجیستری ورودی ها را ذخیره می کند برای همین باید این حرکت مسخره را برای ارسال کدهای بالا ارسال کنم یعنی این آی سی از نظر من یک 8 بیتی هستش که دارای 24 ورودی می باشد و با هر بار فعال و غیر فعال کردن cs می رود به 8 بیت بعدی البته باز این نظر من هستش!!
    دکتر چمران در 1311 در تهران متولد شد
    وی در زمان اقامت در آمریکا انجمن اسلامی آمریکا را تأسیس کرد که منجر به قطع بورسیه وی توسط شاه شد.
    او با اینکه یکی از دانشمندان مطرح آمریکا به حساب می آمد بدون توجه به مدرک به مصر رفت و آموزش نظامی دید.

    دیدگاه


      #3
      پاسخ : ssd1963 lcd7

      تابع دیتا را وقتی به اینصورت نوشتم خیلی بهتر جواب داد.


      کد:
      void LCD_WriteData(unsigned long data) {
      FIO1CLRU =0xffff;
      Clr_Cs;Set_Rs;Set_nRd
      FIO1SET2=data;
      Set_Cs;wait();Clr_Cs;
      FIO1SETU=data;
      Clr_nWr;
      wait();
      Set_nWr;Set_Cs;
      };

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

      دیدگاه


        #4
        پاسخ : ssd1963 lcd7

        سلام
        من می خوام با lpc1768 و ssd1963 یک ال سی دی 7" راه اندازی کنم.
        لطف می کنید هدر فایل های استفاده شده و همچنین نحوه اتصال پایه ها اپلود کنید.
        پیشاپیش متشکر از کمکتون

        دیدگاه


          #5
          پاسخ : ssd1963 lcd7

          سلام
          مدار ss1963 بنده آماده هستش.
          تبدیل هدر فایل ها هم به هم زیاد کار خاصی ندارد که باید خودتون چطوری می خواهید پایه ها میکرو را به هم متصل کنید.
          کار با این آی سی خیلی راحتر از آنچه فکر می کنید هست یعنی یکسری دستور دارد و ... همین به راحتی هم می توانید کار کنید فقط اگر امکانش هست مداراتی که دارید مشخص کنید مصلا آیا از هدر و مدار ss1963
          دکتر چمران در 1311 در تهران متولد شد
          وی در زمان اقامت در آمریکا انجمن اسلامی آمریکا را تأسیس کرد که منجر به قطع بورسیه وی توسط شاه شد.
          او با اینکه یکی از دانشمندان مطرح آمریکا به حساب می آمد بدون توجه به مدرک به مصر رفت و آموزش نظامی دید.

          دیدگاه


            #6
            پاسخ : ssd1963 lcd7

            سلام ممنون از کمکتون
            من هدر برد lpc1763 مربوط به فروشگاه eca دارم و برد ssd1963 شرکت .....
            قرار است lcd 7" با این دوتا راه اندازی کنم.
            ممنون میشم راهنماییم کنید.
            دوتا مشکل اساسی:
            1. نجوه اتصال پایه های lpc به ssd
            2. هدر فایل های ssd که بتونم با lpc1768 راه اندازی کنم.
            مرسی

            دیدگاه


              #7
              پاسخ : ssd1963 lcd7

              درایور ال سی دی را اگر از شرکت کویر خریده باشی (انشالله که شرکت eca هم، از این ال سی دی و درایور ssd1963بیاورد) می توانی شماتیک و هدر برای 1768 و ... را ببینی.
              البته
              پایه هایی که من در پروژه ی خودم استفاده کردم بدین شرح است:
              16 پایه از میکرو را به ssd1963 متصل کردم.
              و از پایه های cs و rd و rs و res و wr نیز برای کنترل آی استفاده کردم.
              بهتر برای اینکه راحتر این درایور را راه اندازی کنی از همون مثال های شرکت مربوطه استفاده کنی و یا به پشتیبانی شرکت مربوطه زنگ بزنی
              شما با هدر شرکت eca به راحتی می تونی این آی سی را راه اندازی کنی.
              شرح کار:
              البته با کمی حوصله می توانی خودت یک هدر برای این آی سی بسازی
              http://www.eca.ir/forum2/index.php?topic=59401.msg327387#msg327387
              دکتر چمران در 1311 در تهران متولد شد
              وی در زمان اقامت در آمریکا انجمن اسلامی آمریکا را تأسیس کرد که منجر به قطع بورسیه وی توسط شاه شد.
              او با اینکه یکی از دانشمندان مطرح آمریکا به حساب می آمد بدون توجه به مدرک به مصر رفت و آموزش نظامی دید.

              دیدگاه


                #8
                پاسخ : ssd1963 lcd7

                با سلام
                من برای انجام یک پروژه ای نیازمند به طراحی و ساخت یک مدار برای درایو کردن یک TFT LCDهفت اینچ هستم.دوبار هم پی سی بی برای اینکار تولید شده که جواب نگرفتم.نوع خطای مواجه شده هم عدم نمایش هر گونه تصویر است در حالی ولتاژهای لازم برای LCD تولید می شوند.شما می توانید من را راهنمایی بفرمایید.
                باتشکر

                دیدگاه


                  #9
                  پاسخ : ssd1963 lcd7

                  نوشته اصلی توسط hamidas
                  با سلام
                  من برای انجام یک پروژه ای نیازمند به طراحی و ساخت یک مدار برای درایو کردن یک TFT LCDهفت اینچ هستم.دوبار هم پی سی بی برای اینکار تولید شده که جواب نگرفتم.نوع خطای مواجه شده هم عدم نمایش هر گونه تصویر است در حالی ولتاژهای لازم برای LCD تولید می شوند.شما می توانید من را راهنمایی بفرمایید.
                  باتشکر
                  والا من زیاد سر نمی زنم به سایت بهتر جمعی کمک بگیرید.

                  اما برای اینکه سریع تر به جواب برسید پایه های سیگنال رو با اسکوپ چک کنید ببینید مثلا سیگنال سینک دارید؟ خروجی کلاک دارید و ....البته اینا در شرایطی هست که شما از برنامه و ... مطمئن هستید و حالا مشکل اینکه جواب نمی گیرد.
                  شماتیک هم در اینترنت سرچ کنید ببینید شماتیکی که شما ساختید درسته یا نه؟

                  ببخشید دیگه من بیشتر چیزی به ذهنم نمیاد که بگم
                  دکتر چمران در 1311 در تهران متولد شد
                  وی در زمان اقامت در آمریکا انجمن اسلامی آمریکا را تأسیس کرد که منجر به قطع بورسیه وی توسط شاه شد.
                  او با اینکه یکی از دانشمندان مطرح آمریکا به حساب می آمد بدون توجه به مدرک به مصر رفت و آموزش نظامی دید.

                  دیدگاه

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