STM32F407 ile 7" TFT 800x480 SSD1963 Sürme

Başlatan M_B, 27 Mart 2013, 11:30:06

M_B

pin baglantıların FSMC ye mi baglı ?
Şemanda D0-15 demissin ?
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

respected

Evet hocam FSMC . St nin BB genişleme bourdunda olduğu gibi.

M_B

o zaman calısması lazım. Bence yeniden pin baglantılarını kontrol edin.
Lcd nin florasanı yanıyor mu ?
Harici olarak 5V girişi var mı ?
Benim Lcd de pin baglantıları dısında 5V soketi de var.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

respected

#33
Harici 5V girişi var. Onu bağladım ve florasan  yanıyor.  Kodları tekrar inceleyelim bakalım.  Proje oluştururken bir yerde hata yapmış olabilirim. Derlemede sorun olmuyor ama bakmakta fayda var.

mesaj birleştirme:: 30 Nisan 2013, 22:44:26

extern const uint16_t ASCII16x8_Table[];
extern const uint16_t ASCII12x12_Table[];

hocam fonts.h dosyasındaki satırlarda tanımadığı bölüm var sanki. extern tanımlamayı kabul etmiyor. Daha önce derlemesinin sebebi fonts.h bendeki başka bir dosyayı kullandığımdanmış. keil versiyon 4.70

mesaj birleştirme:: 30 Nisan 2013, 23:02:54

M_B hocam
Burada datalar 0-15 FSMC bağlı
RS- PE3
RD-PD4
WR-PD5
CS-PD7
RESET-PD3

Alıntı YapŞeklinde bağladım fakat kodları incelediğimde PE3 ve PD3 göremedim. kodlar içerisinde RS,RD,WR,CS,RESET tanımlamaları yapılmıyor mu? Yoksa FSMC olarak tanımlı olan uçlardan mı gönderiliyor bu bilgiler.
  Kodların içerisinde kayboldum sanırım :))
Bu sorunun cevabını buldum. Zaten FSMC içerisinde bu uçlar tanımlanmış. Sadece reset için ayrıca uç tanımlaması gerekiyor (GPIO) . Yine de netice alamadım. Ekranın flouresan ı flash yapıyor o kadar.

respected

#34
stm32f4 board a harici besleme vererek denedim. FSMC ayarları ile biraz oynadım. Şimdi kırmızı bir ekran oldu. Sanırım FSMC ayarlarını tam yapamadığımdan kaynaklı sorun.

respected

main.c
#include "system_stm32f4xx.c"
 #include "delay.c"
 #include "lcd.h"

int main(void)
{

  SysTick_Config(SystemCoreClock/1000);

 
SSD1963_LCD_Init();
Delay(500);
TFT_CLEAR(BLUE);
  while (1)
  {
TFT_CLEAR(BLUE);


  }
}


lcd.c
/* Includes ------------------------------------------------------------------*/
#include "lcd.h"


#define ABS(X)  ((X) > 0 ? (X) : -(X))     
#define LCD_RST_PIN                  (GPIO_Pin_3)
#define LCD_RST_PORT                 (GPIOD)

unsigned long color1=0;

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


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



 u16  POINT_COLOR = BLACK;  
 u16  BACK_COLOR  = WHITE;



static sFONT *LCD_Currentfonts;

  /* Global variables to set the written text color */
static __IO uint16_t TextColor = 0x0000, BackColor = 0xFFFF;
  
/**
  * @}
  */ 


#ifndef USE_Delay
static void delay(__IO uint32_t nCount);
#endif /* USE_Delay*/

          
/******************************************

   SSD1963 kismi

*******************************************/

void SSD1963_LCD_Init(void)
{ 
  __IO uint32_t lcdid = 0;
  
/* Configure the LCD Control pins --------------------------------------------*/
  LCD_CtrlLinesConfig();
 
/* Configure the FSMC Parallel interface -------------------------------------*/
  LCD_FSMCConfig();
 
    /* Start Initial Sequence ------------------------------------------------*/
   /* Reset LCD */
  GPIO_ResetBits(LCD_RST_PORT, LCD_RST_PIN);	
  _delay_(10);	
  GPIO_SetBits(LCD_RST_PORT, LCD_RST_PIN);
	_delay_(10);
// 	GPIO_ResetBits(LCD_RST_PORT, LCD_RST_PIN);	
	// bu kodlarin yerine ust taraf yazildi.
//   	GPIOC->BSRRL = GPIO_BSRR_BS_6;
//     _delay_(5);
//   	GPIOC->BSRRH = GPIO_BSRR_BS_6;
//     _delay_(5);
//   	GPIOC->BSRRL = GPIO_BSRR_BS_6;
//     _delay_(5);
/******************************************************/
        LCD_WriteCommand(0x0001);	 // software reset
        LCD_WriteCommand(0x0001);	 // software reset
          _delay_(5);


LCD_WriteCommand(0x00E2); // PLL ayar bolumu.
            LCD_WriteData(0x0023);  // 23 
            LCD_WriteData(0x0001);  // 2  N degeri Bolucu oran1 
            LCD_WriteData(0x0004);	 //4
        
        LCD_WriteCommand(0x00E0); // Start PLL 
            LCD_WriteData(0x0001);
              _delay_(5);
        LCD_WriteCommand(0x00E0); // Start PLL 
            LCD_WriteData(0x0003);
              _delay_(5);
    //	LCD_WriteCommand(0x0001);	 // software reset
              _delay_(5);
                
        LCD_WriteCommand(0x00E6); 		// Set_lshift_freg	  	
            LCD_WriteData(0x0004);		  // 00/04
            LCD_WriteData(0x00DD);	    // 93/DD
            LCD_WriteData(0x00DC);		  // E0/DC
            
    /************************************************
                LCD Modu ayarlama 
    ************************************************/
        LCD_WriteCommand(0x00B0);   // Set Lcd_Mode 
            LCD_WriteData(0x0000);
            LCD_WriteData(0x0000);
            LCD_WriteData((HDP>>8)&0X00FF);  //Set HDP
            LCD_WriteData(HDP&0X00FF);
            LCD_WriteData((VDP>>8)&0X00FF);  //Set VDP
            LCD_WriteData(VDP&0X00FF);
            LCD_WriteData(0x0000);

    LCD_WriteCommand(0x00B4);					//HSYNC Set_hori_period.
        LCD_WriteData((HT>>8)&0X00FF);  //Set HT
        LCD_WriteData(HT&0X00FF);
        LCD_WriteData((HPS>>8)&0X00FF);  //Set HPS
        LCD_WriteData(HPS&0X00FF);
        LCD_WriteData(HPW);			   			//Set HPW
        LCD_WriteData((LPS>>8)&0X00FF); //Set HPS
        LCD_WriteData(LPS&0X00FF);
        LCD_WriteData(0x0000);

    LCD_WriteCommand(0x00B6);					 //VSYNC  Set_vrt_period.
        LCD_WriteData((VT>>8)&0X00FF);   //Set VT
        LCD_WriteData(VT&0X00FF);
        LCD_WriteData((VPS>>8)&0X00FF);  //Set VPS
        LCD_WriteData(VPS&0X00FF);
        LCD_WriteData(VPW);			   			 //Set VPW
        LCD_WriteData((FPS>>8)&0X00FF);  //Set FPS
        LCD_WriteData(FPS&0X00FF);

    LCD_WriteCommand(0x00BA);    // set_gpio_value
         LCD_WriteData(0x000F);     //GPIO[3:0] out 1

    LCD_WriteCommand(0x00B8);   // set_gpio_conf
         LCD_WriteData(0x0007);    //GPIO3=input, GPIO[2:0]=output
         LCD_WriteData(0x0001);    //GPIO0 normal

    LCD_WriteCommand(0x0036); //rotation
         LCD_WriteData(0x0080);

    LCD_WriteCommand(0x00F0); //pixel data interface
         LCD_WriteData(0x0003);

     _delay_(5);
    LCD_WriteCommand(0x0026); //display on
         LCD_WriteData(0x0001);

//	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);  //set_dbc_conf 
        LCD_WriteData(0x0009);   // d
        LCD_WriteCommand(0x0029); //display on
    
    
}
/*****************SSD1963 SONU ****************************/
   


/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void LCD_SetColors(__IO uint16_t _TextColor, __IO uint16_t _BackColor)
{
  TextColor = _TextColor; 
  BackColor = _BackColor;
}

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void LCD_GetColors(__IO uint16_t *_TextColor, __IO uint16_t *_BackColor)
{
  *_TextColor = TextColor; *_BackColor = BackColor;
}

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void LCD_SetTextColor(__IO uint16_t Color)
{
  TextColor = Color;
}

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void LCD_SetBackColor(__IO uint16_t Color)
{
  BackColor = Color;
}

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void LCD_SetFont(sFONT *fonts)
{
  LCD_Currentfonts = fonts;
}

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
sFONT *LCD_GetFont(void)
{
  return LCD_Currentfonts;
}

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void LCD_DrawChar(uint16_t Xpos, uint16_t Ypos, const uint16_t *c)
{
  uint32_t index = 0, i = 0;
  uint16_t  Xaddress = 0;
  Xaddress = Xpos;
  
    SSD1963_Address_set(Xaddress,Ypos,Xaddress,Ypos);   
  
  for(index = 0; index < LCD_Currentfonts->Height; index++)
  {
 
    for(i = 0; i < LCD_Currentfonts->Width; i++)
    {
  
      if((((c[index] & ((0x80 << ((LCD_Currentfonts->Width / 12 ) * 8 ) ) >> i)) == 0x00) &&(LCD_Currentfonts->Width <= 12))||
        (((c[index] & (0x1 << i)) == 0x00)&&(LCD_Currentfonts->Width > 12 )))

      {
                LCD_WriteData(BACK_COLOR); 	
  
      }
      else
      {
                LCD_WriteData(POINT_COLOR); 	
    
      } 
    }
    Xaddress++;
        SSD1963_Address_set(Xaddress,Ypos,Xaddress,Ypos);   
 
  }
}
/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void LCD_DisplayChar(uint16_t Line, uint16_t Column, uint8_t Ascii)
{
  Ascii -= 32;
  LCD_DrawChar(Line, Column, &LCD_Currentfonts->table[Ascii * LCD_Currentfonts->Height]);
}


/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
          
/***********************************************


                                SSD1963  Bolumü




***********************************************/
void LCD_WriteCommand(uint16_t LCD_Reg)
{
 /* Write 16-bit Reg */
  LCD->LCD_REG = LCD_Reg;
}
 
void LCD_WriteData(uint16_t LCD_RegValue)	
{

    LCD->LCD_RAM = LCD_RegValue;

}

void SendData(uint32_t color)
{
    LCD_WriteData((color)>>16);
    LCD_WriteData((color)>>8);
    LCD_WriteData(color); 
}

void windowSet(uint16_t s_x,uint16_t e_x,uint16_t s_y,uint16_t e_y)
{
    LCD_WriteCommand(0x2a);
        LCD_WriteData((s_x)>>8);
        LCD_WriteData(s_x);
        LCD_WriteData((e_x)>>8);
        LCD_WriteData(e_x);

    LCD_WriteCommand(0x2b);
        LCD_WriteData((s_y)>>8);
        LCD_WriteData(s_y);
        LCD_WriteData((e_y)>>8);
        LCD_WriteData(e_y);	  
}

void FULL_ON(uint32_t data)
{
uint16_t x,y;
windowSet(0x0000,0x013f,0x0000,0x00ef);
LCD_WriteCommand(0x2c);
    for(x=0;x<320;x++)
        {
            for(y=0;y<240;y++)
                {
                    SendData(data);
                }
        
        }	
}
 
      
void TFT_CLEAR(unsigned int 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 TFT_Fill(unsigned int xsta,unsigned int ysta,unsigned int xend,unsigned int yend,unsigned int color)
{                    
    unsigned long n;

    n=(unsigned long)(yend-ysta+1)*(xend-xsta+1);

    LCD_WriteCommand(0x002A);	
    LCD_WriteData(xsta>>8);	    
    LCD_WriteData(xsta&0x00ff);
    LCD_WriteData(xend>>8);	    
    LCD_WriteData(xend&0x00ff);
  LCD_WriteCommand(0x002b);	
    LCD_WriteData(ysta>>8);	    
    LCD_WriteData(ysta&0x00ff);
    LCD_WriteData(yend>>8);	    
    LCD_WriteData(yend&0x00ff);
    LCD_WriteCommand(0x002c);
    while(n--)LCD_WriteData(color);
} 


void TFT_DrawPoint(unsigned int x,unsigned int y,unsigned int fontcolor)
{
    LCD_WriteCommand(0x002A);	
    LCD_WriteData(x>>8);	    
    LCD_WriteData(x&0x00ff);
    LCD_WriteData(HDP>>8);	    
    LCD_WriteData(HDP&0x00ff);
    LCD_WriteCommand(0x002b);	
    LCD_WriteData(y>>8);	    
    LCD_WriteData(y&0x00ff);
    LCD_WriteData(VDP>>8);	    
    LCD_WriteData(VDP&0x00ff);
    LCD_WriteCommand(0x002c);	
    LCD_WriteData(fontcolor); 
}  



/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_Address_set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2) 
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void SSD1963_Address_set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)
{ 
    LCD_WriteCommand(0x002A);	
    LCD_WriteData(x1>>8);	    
    LCD_WriteData(x1&0x00ff);
    LCD_WriteData(x2>>8);	    
    LCD_WriteData(x2&0x00ff);
  LCD_WriteCommand(0x002b);	
    LCD_WriteData(y1>>8);	    
    LCD_WriteData(y1&0x00ff);
    LCD_WriteData(y2>>8);	    
    LCD_WriteData(y2&0x00ff);
    LCD_WriteCommand(0x002c);			
}

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_DrawPoint(uint16_t x,uint16_t y)
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void SSD1963_LCD_DrawPoint(uint16_t x,uint16_t y)
{
    SSD1963_Address_set(x,y,x,y);
    LCD_WriteData(POINT_COLOR); 	    
} 	 

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_DrawPoint_big(uint16_t x,uint16_t y)
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void SSD1963_LCD_DrawPoint_big(uint16_t x,uint16_t y)
{
    SSD1963_LCD_Fill(x-1,y-1,x+1,y+1,POINT_COLOR);
} 

/*********************************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_Fill(uint16_t xsta,uint16_t ysta,uint16_t xend,uint16_t yend,uint16_t color) 
* Kullanisi      : 
* Output         : 
* Return         : 
**********************************************************************************************************/
void SSD1963_LCD_Fill(uint16_t xsta,uint16_t ysta,uint16_t xend,uint16_t yend,uint16_t color)
{          
    uint16_t i,j; 
    SSD1963_Address_set(xsta,ysta,xend,yend);   
    for(i=ysta;i<=yend;i++)
    {													   	 	
        for(j=xsta;j<=xend;j++)LCD_WriteData(color);
    } 					  	    
}  

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void SSD1963_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
{
    uint16_t t; 
    int xerr=0,yerr=0,delta_x,delta_y,distance; 
    int incx,incy,uRow,uCol; 

    delta_x=x2-x1; 
    delta_y=y2-y1; 
    uRow=x1; 
    uCol=y1; 
    if(delta_x>0)incx=1;  
    else if(delta_x==0)incx=0;
    else {incx=-1;delta_x=-delta_x;} 
    if(delta_y>0)incy=1; 
    else if(delta_y==0)incy=0;
    else{incy=-1;delta_y=-delta_y;} 
    if( delta_x>delta_y)distance=delta_x; 
    else distance=delta_y; 
    for(t=0;t<=distance+1;t++ )
    {  
        SSD1963_LCD_DrawPoint(uRow,uCol);
        xerr+=delta_x ; 
        yerr+=delta_y ; 
        if(xerr>distance) 
        { 
            xerr-=distance; 
            uRow+=incx; 
        } 
        if(yerr>distance) 
        { 
            yerr-=distance; 
            uCol+=incy; 
        } 
    }  
}    

/***********************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
* Kullanisi      : 
* Output         : 
* Return         : 
***************************************************************************************************/
void SSD1963_LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
{
    SSD1963_LCD_DrawLine(x1,y1,x2,y1);
    SSD1963_LCD_DrawLine(x1,y1,x1,y2);
    SSD1963_LCD_DrawLine(x1,y2,x2,y2);
    SSD1963_LCD_DrawLine(x2,y1,x2,y2);
}

/*******************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_Draw_Circle(uint16_t x0,uint16_t y0,uint8_t r)
* Kullanisi      : 
* Output         : 
* Return         : 
*******************************************************************************/
void SSD1963_Draw_Circle(uint16_t x0,uint16_t y0,uint8_t r)
{
    int a,b;
    int di;
    a=0;b=r;	  
    di=3-(r<<1);           
    while(a<=b)
    {
        SSD1963_LCD_DrawPoint(x0-b,y0-a);             //3           
        SSD1963_LCD_DrawPoint(x0+b,y0-a);             //0           
        SSD1963_LCD_DrawPoint(x0-a,y0+b);             //1       
        SSD1963_LCD_DrawPoint(x0-b,y0-a);             //7           
        SSD1963_LCD_DrawPoint(x0-a,y0-b);             //2             
        SSD1963_LCD_DrawPoint(x0+b,y0+a);             //4               
        SSD1963_LCD_DrawPoint(x0+a,y0-b);             //5
        SSD1963_LCD_DrawPoint(x0+a,y0+b);             //6 
        SSD1963_LCD_DrawPoint(x0-b,y0+a);             
        a++;
        if(di<0)di +=4*a+6;	  
        else
        {
            di+=10+4*(a-b);   
            b--;
        } 
        SSD1963_LCD_DrawPoint(x0+a,y0+b);
    }
} 

/***************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
* Kullanisi      : 
* Output         : 
* Return         : 
****************************************************************************************/
void SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
{
  uint16_t temp;
  uint8_t pos,t;
    uint16_t x0=x;
    uint16_t colortemp=POINT_COLOR;  
    
    if(x>LCD_W-16||y>LCD_H-16)return;	
    
    num=num-' ';
    
    SSD1963_Address_set(x,y,x+8-1,y+16-1);     
    if(!mode) 
    {
        for(pos=0;pos<16;pos++)
        { 
//             temp=ASCII16x8_Table[(uint16_t)num*16+pos];		 
                for(t=0;t<8;t++)
                        {                 
                                if(temp&0x01)POINT_COLOR=colortemp;
                        else
                                    POINT_COLOR=BACK_COLOR;
                                    LCD_WriteData(POINT_COLOR);	
                                    temp>>=1; 
                                    x++;
                        } x=x0;	y++;
        }	
    }else  // bu kisimda yazi cikmiyor. Bu kisma ise 1 konulursa geliyor.
            {
                for(pos=0;pos<16;pos++)
                        {
//                                 temp=ASCII12x12_Table[(uint16_t)num*16+pos];		
                                            for(t=0;t<8;t++)
                                                {                 
                                                        if(temp&0x01)SSD1963_LCD_DrawPoint(x+t,y+pos);     
                                                        temp>>=1; 
                                                }
                        }
            } POINT_COLOR=colortemp;	    	   	 	  
}   

/***************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
* Kullanisi      : 
* Output         : 
* Return         : 
****************************************************************************************/

uint32_t mypow(uint8_t m,uint8_t n)
{
    uint32_t result=1;	 
    while(n--)result*=m;    
    return result;
}			 

/***************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
* Kullanisi      : 
* Output         : 
* Return         : 
****************************************************************************************/
void SSD1963_LCD_ShowNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len)
{         	
    uint8_t t,temp;
    uint8_t enshow=0;
    num=(uint16_t)num;
    for(t=0;t<len;t++)
    {
        temp=(num/mypow(10,len-t-1))%10;
        if(enshow==0&&t<(len-1))
        {
            if(temp==0)
            {
                SSD1963_LCD_ShowChar(x+8*t,y,' ',0);
                continue;
            }else enshow=1; 
         	 
        }
     	SSD1963_LCD_ShowChar(x+8*t,y,temp+48,0); 
    }
} 

/***************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
* Kullanisi      : 
* Output         : 
* Return         : 
****************************************************************************************/

void SSD1963_LCD_Show2Num(uint16_t x,uint16_t y,uint16_t num,uint8_t len)
{         	
    uint8_t t,temp;						   
    for(t=0;t<len;t++)
    {
        temp=(num/mypow(10,len-t-1))%10;
     	SSD1963_LCD_ShowChar(x+8*t,y,temp+'0',0); 
    }
} 

/***************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
* Kullanisi      : 
* Output         : 
* Return         : 
****************************************************************************************/
void SSD1963_LCD_ShowString(uint16_t x,uint16_t y,const uint8_t *p)
{         
    while(*p!='\0')
    {       
        if(x>LCD_W-16){x=0;y+=16;}
        if(y>LCD_H-16){y=x=0;SSD1963_LCD_Clear(WHITE);}
        SSD1963_LCD_ShowChar(x,y,*p,0); //0 olacak aksi halde yazi farkli cikiyor
        x+=8;
        p++;
    }  
}


/***************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
* Kullanisi      : 
* Output         : 
* Return         : 
****************************************************************************************/
void SSD1963_LCD_Clear(uint16_t color)
{                    
     unsigned int l=800,w;

    LCD_WriteCommand(0x002A);	
    LCD_WriteData(0x00);	    
    LCD_WriteData(0x00);
    LCD_WriteData(HDP>>8);	    
    LCD_WriteData(HDP&0x00ff);
  LCD_WriteCommand(0x002b);	
    LCD_WriteData(0x00);	    
    LCD_WriteData(0x00);
    LCD_WriteData(VDP>>8);	    
    LCD_WriteData(VDP&0x00ff);
    LCD_WriteCommand(0x002c);
        
    while(l--)
    {
        for(w=0;w<480;w++)
        {    
          	LCD_WriteData(color);
        }
    } 
}

/***************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
* Kullanisi      : 
* Output         : 
* Return         : 
****************************************************************************************/
void SSD1963_LCD_SetColors(__IO uint16_t _TextColor, __IO uint16_t _BackColor)
{
      POINT_COLOR = _TextColor;  
    BACK_COLOR  = _BackColor;		
}

/***************************************************************************************
* Hazirlayan     : Mehmet
* Function Name  : SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode)
* Kullanisi      : 
* Output         : 
* Return         : 
****************************************************************************************/
void SSD1963_LCD_SetTextColor(__IO uint16_t Color)
{
  POINT_COLOR = Color;
}

/****************** Fonksiyon sonu***************/

void LCD_CtrlLinesConfig(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* Enable GPIOB, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE |
                         RCC_AHB1Periph_GPIOF, ENABLE);

/*-- GPIO Configuration ------------------------------------------------------*/
  /* SRAM Data lines,  NOE and NWE configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
                                GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15 |
                                GPIO_Pin_4 |GPIO_Pin_5;;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource4, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FSMC);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
                                GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | 
                                GPIO_Pin_15;
  GPIO_Init(GPIOE, &GPIO_InitStructure);

  GPIO_PinAFConfig(GPIOE, GPIO_PinSource7 , GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource8 , GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource9 , GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource10 , GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource11 , GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource12 , GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource13 , GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource14 , GPIO_AF_FSMC);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource15 , GPIO_AF_FSMC);

  /* SRAM Address lines configuration LCD-DC */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
  GPIO_Init(GPIOE, &GPIO_InitStructure);  
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource3, GPIO_AF_FSMC);	   

  /* NE3 configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; 
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_FSMC);

  /* LCD RST configuration */
  GPIO_InitStructure.GPIO_Pin = LCD_RST_PIN; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;

  GPIO_Init(LCD_RST_PORT, &GPIO_InitStructure);
}

/**
  * @brief  Configures the Parallel interface (FSMC) for LCD(Parallel mode)
  * @param  None
  * @retval None
  */
void LCD_FSMCConfig(void)
{
  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  p;
   
  /* Enable FSMC clock */
  RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
  
/*-- FSMC Configuration ------------------------------------------------------*/
/*----------------------- SRAM Bank 3 ----------------------------------------*/
  /* FSMC_Bank1_NORSRAM4 configuration */
  p.FSMC_AddressSetupTime = 30;			 // 0x06 /
  p.FSMC_AddressHoldTime = 0;				   //	0 /
  p.FSMC_DataSetupTime = 30;				 //		 0x6 /
  p.FSMC_BusTurnAroundDuration = 0;
  p.FSMC_CLKDivision = 0;
  p.FSMC_DataLatency = 0;
  p.FSMC_AccessMode = FSMC_AccessMode_A;

  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
  FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);   

  /* Enable FSMC NOR/SRAM Bank3 */
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
// YYYYYYYYYYyy
// 	  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
//   FSMC_NORSRAMTimingInitTypeDef  p;
//    
//   /* Enable FSMC clock */
//   RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
//   
// /*-- FSMC Configuration ------------------------------------------------------*/
// /*----------------------- SRAM Bank 1 ----------------------------------------*/
//   /* FSMC_Bank1_NORSRAM4 configuration */
//   p.FSMC_AddressSetupTime = 1;
//   p.FSMC_AddressHoldTime = 0;
//   p.FSMC_DataSetupTime = 9;
//   p.FSMC_BusTurnAroundDuration = 0;
//   p.FSMC_CLKDivision = 0;
//   p.FSMC_DataLatency = 0;
//   p.FSMC_AccessMode = FSMC_AccessMode_A;
//   /* Color LCD configuration ------------------------------------
//      LCD configured as follow:
//         - Data/Address MUX = Disable
//         - Memory Type = SRAM
//         - Data Width = 16bit
//         - Write Operation = Enable
//         - Extended Mode = Enable
//         - Asynchronous Wait = Disable */

//   FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
//   FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
//   FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
//   FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
//   FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
//   FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
//   FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
//   FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
//   FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
//   FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
//   FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
//   FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
//   FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
//   FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
//   FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

//   FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);   

//   /* Enable FSMC NOR/SRAM Bank1 */
//   FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);


}


#ifndef USE_Delay
/**
  * @brief  Inserts a delay time.
  * @param  nCount: specifies the delay time length.
  * @retval None
  */
static void delay(__IO uint32_t nCount)
{
  __IO uint32_t index = 0; 
  for(index = (100000 * nCount); index != 0; index--)
  {
  }
}
#endif /* USE_Delay*/
/**
  * @}
  */ 

/**
  * @}
  */ 
  
/**
  * @}
  */ 

/**
  * @}
  */ 
  
/**
  * @}
  */  

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/


lcd.h
#ifdef __cplusplus
 extern "C" {
#endif 

/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx.h"
#include "fonts.h"


typedef struct 
{
  int16_t X;
  int16_t Y;
} Point, * pPoint;   
/**
  * @}
  */ 

 typedef struct
{
  __IO uint16_t LCD_REG;
  __IO uint16_t LCD_RAM;
} LCD_TypeDef;
/**
  * @}
  */ 


/** @defgroup STM322xG_EVAL_LCD_Private_Defines
  * @{
  */
/* Note: LCD /CS is NE1 - Bank 1 of NOR/SRAM Bank 1~4 */
#define LCD_BASE           ((uint32_t)(0x60000000 | 0x0001fffE))
#define LCD                ((LCD_TypeDef *) LCD_BASE)
#define MAX_POLY_CORNERS   200
#define POLY_Y(Z)          ((int32_t)((Points + Z)->X))
#define POLY_X(Z)          ((int32_t)((Points + Z)->Y))


/* #define USE_Delay */

#ifdef USE_Delay
#include "main.h" 
  #define _delay_     Delay  /* !< User can provide more timing precise _delay_ function
                                   (with 10ms time base), using SysTick for example */
#else
  #define _delay_     delay      /* !< Default _delay_ function with less precise timing */
#endif

/**
 *
 *
 * 	@brief	SSD1963 Kismi
 *
*/
//     TFT	

#define BLUE  0XF800
#define GREEN 0X07E0
#define RED   0X001F  
#define BRED  0XF81F
#define GRED  0XFFE0
#define GBLUE 0X07FF
#define WHITE 0XFFFF


#define BLACK 0X0000 
#define BROWN 0XBC40 
#define BRRED 0XFC07 
#define GRAY  0X8430 
#define LGRAY 0XC618 
 
#define FSIZE 16 

#define LCD_W 800
#define LCD_H 480

// SSD1963 Tanimlama Sonu




/********** SSD1963 KISMI ********************/

/** 
  * @brief LCD default font 
  */ 
#define LCD_DEFAULT_FONT         Font16x8 

/** 
  * @brief  LCD Direction  
  */ 
#define LCD_DIR_HORIZONTAL       0x0000
#define LCD_DIR_VERTICAL         0x0001

/** 
  * @brief  LCD Size (Width and Height)  
  */ 
#define LCD_PIXEL_WIDTH          0x0140
#define LCD_PIXEL_HEIGHT         0x00F0

/**
  * @}
  */ 

#define ASSEMBLE_RGB(R ,G, B)    ((((R)& 0xF8) << 8) | (((G) & 0xFC) << 3) | (((B) & 0xF8) >> 3)) 

/******* SSD1963 fonksiyon Tanimlamalari Bolumu *******/

void SSD1963_LCD_Init(void);
void TFT_CLEAR(unsigned int color);
void TFT_DrawPoint(unsigned int x,unsigned int y,unsigned int fontcolor);

void SSD1963_Address_set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2);
void SSD1963_LCD_DrawPoint(uint16_t x,uint16_t y);
void SSD1963_LCD_DrawPoint_big(uint16_t x,uint16_t y);
void SSD1963_LCD_Fill(uint16_t xsta,uint16_t ysta,uint16_t xend,uint16_t yend,uint16_t color);
void SSD1963_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
void SSD1963_LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
void SSD1963_Draw_Circle(uint16_t x0,uint16_t y0,uint8_t r);
void SSD1963_LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint8_t mode);
uint32_t mypow(uint8_t m,uint8_t n);
void SSD1963_LCD_ShowNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len);
void SSD1963_LCD_Show2Num(uint16_t x,uint16_t y,uint16_t num,uint8_t len);
void SSD1963_LCD_ShowString(uint16_t x,uint16_t y,const uint8_t *p);
void SSD1963_LCD_Clear(uint16_t Color);
void SSD1963_LCD_SetColors(__IO uint16_t _TextColor, __IO uint16_t _BackColor);
void SSD1963_LCD_SetTextColor(__IO uint16_t Color);

void TFT_Fill(unsigned int xsta,unsigned int ysta,unsigned int xend,unsigned int yend,unsigned int color);



/********** SSD1963 fonksiyon Sonu  *******************/

void LCD_SetColors(__IO uint16_t _TextColor, __IO uint16_t _BackColor); 
void LCD_GetColors(__IO uint16_t *_TextColor, __IO uint16_t *_BackColor);
void LCD_SetTextColor(__IO uint16_t Color);
void LCD_SetBackColor(__IO uint16_t Color);



void LCD_DrawChar(uint16_t Xpos, uint16_t Ypos, const uint16_t *c);
void LCD_DisplayChar(uint16_t Line, uint16_t Column, uint8_t Ascii);
void LCD_SetFont(sFONT *fonts);
sFONT *LCD_GetFont(void);


/**
  * @}
  */ 

/** @defgroup  
  * @{
  */ 
void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue);

void LCD_WriteCommand(uint16_t LCD_Reg); 
void LCD_WriteData(uint16_t LCD_RegValue);
void FULL_ON(uint32_t data);
void windowSet(uint16_t s_x,uint16_t e_x,uint16_t s_y,uint16_t e_y);	
void SendData(uint32_t color);

/**
  * @}
  */ 

/** @defgroup
  * @{
  */ 
void LCD_CtrlLinesConfig(void);
void LCD_FSMCConfig(void);
/**
  * @}
  */
/**
  * @}
  */    
#ifdef __cplusplus
}
#endif



/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/


Kodları yukarıdaki şekilde yazdım.
Bağlantıları ise FSMC Data uçlarına
D0-D15
cs-pd7
reset-pd3
dc(rs) -pe3
rd-pd4
wr-pd5
Şeklinde bağladım. 3.3 V ve back light için 5V bağladım. Ekran bazen kırmızı bazen de çizgili çizgili oluyor.  LCD yi bozmuş olabilir miyim?


pisayisi

#36
Lcd bozulmamıştır lcd yi süren portun çalışma frekansını düşürerek deneme yapmanı ve  main.c de lcdinit yapmadan önce cs pinini set etmeni öneririm...

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
Murat

respected

Alıntı YapLcd bozulmamıştır lcd yi süren portun çalışma frekansını düşürerek deneme yapmanı ve  main.c de lcdinit yapmadan önce cs pinini set etmeni öneririm...

Her ikisini de denedim hocam. Sonuç aynı. LCD çizgiler oluşuyor sadece. 

M_B

#38
Alıntı yapılan: respected - 07 Mayıs 2013, 00:45:48
Her ikisini de denedim hocam. Sonuç aynı. LCD çizgiler oluşuyor sadece.
respected;
Keil kodunu bir yere upload et  kitimde  bir test edeyim bakalım.
Ancak sonucu akşam bildirebilirim.


mesaj birleştirme:: 07 Mayıs 2013, 08:07:41

@respected;
Ekteki hex dosyasını yükle bakalım sonuc ne olacak.
Bu hex ekranda ucan dairelere aittir. Bu hex te ekranın calışmazsa baglantılarını kontrol et.
http://www.dosya.tc/server8/cL23Du/CIKIS.rar.html
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet


M_B

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

respected

#41
Evet yükledim hocam. Ekran beyaz bir şey yok. Bağlantılar
D0-D15 (FSMC Data uçları)
cs-pd7
reset-pd3
dc(rs) -pe3
rd-pd4
wr-pd5

bende böyleydi. Değiştirmem gerekiyor muydu?

M_B

#42
Alıntı yapılan: respected - 07 Mayıs 2013, 11:34:25
Evet yükledim hocam. Ekran beyaz bir şey yok. Bağlantılar
D0-D15 (FSMC Data uçları)
cs-pd7
reset-pd3
dc(rs) -pe3
rd-pd4
wr-pd5

bende böyleydi. Değiştirmem gerekiyor muydu?

Benim baglantı şeklim:
Lcd uzerindeki      Kit üzerinde
RESET---------------> NRST
RS--------------------> PD11
CS--------------------> PD7
WR--------------------> PD5
RD--------------------> PD4

FSMC pinlerini
PD14-PD15-PD0-PD1-
PE7-PE8-PE9-PE10-
PE11-PE12-PE13-
PE14-PE15-
PD8-PD9-PD10

Tekrar baglantılarını kontrol et. En azından benim verdiğim hex calısması lazım.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

respected

Hocam teşekkürler. LCD çalıştı. Sadece text  ayna görüntüsü çıkıyor.  Şu ana kadar reset ucu dışında diğerlerini denemiştim. Sadece reset ucunu kit üzerindeki nrst ye bağlamamıştım.

Kodlar içerisinde anlamadığım yer
  GPIOC->MODER |= GPIO_MODER_MODER6_0;
  GPIOC->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6_1;
burası idi. Bende buraya başka bir pin ile reset tanımlamıştım. ST nin kendi kütüphanesindeki gibi..

M_B

Gozun aydın respected;
Çalıştığına sevindim.
O zaman senin kodu denememe gerek kalmadı
Yazının ters cıkma olayı Lcd init fonksiyonun icindeki registerlardan ayarlanıyor.
Ezbere bilmiyorum Datasheete bakmak lazım.
Bundan sonrası sana ait ;)

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet