اطلاعیه

Collapse
No announcement yet.

نمایشگر "TFT LCD 3.5 چیپ کنترلر ILI9486

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

    نمایشگر "TFT LCD 3.5 چیپ کنترلر ILI9486

    سلام
    این نمایشگر با چیپ ILI9486 رو خود eca یک مثال برای میکرو STM32F103 گذاشته
    نمونه برنامه
    اما هرچی اجرا می کنم روی هدر برد STM32F103 جواب نمی دهد!!!!
    فکر می کنم اشکال از LCD_Init که متوجه نمی شوم پایه دیتا و rs , rw , e .... کدام است
    کد:
    D0 ... D15 ?
    CS ?
    RS ?
    WR ?
    RD ?
    RST ?
    کسی هست متوجه شود ترتیب این پایه چطور می باشد؟

    void LCD_Init(void)

    GPIO_InitTypeDef GPIO_InitStructure;
    FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
    FSMC_NORSRAMTimingInitTypeDef readWriteTiming;
    FSMC_NORSRAMTimingInitTypeDef writeTiming;

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE); //Enable FSMC clock
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);//Enable PORTB, D, E, G, and AFIO alternate function clocks

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //Push-pull output backlight
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    //PORTD¸´ÓÃÍÆÍìÊä³ö PORTD multiplexed push-pull output
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_14|GPIO_Pin_15; // //PORTD
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //Multiplexed push-pull output
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);

    //PORTE¸´ÓÃÍÆÍìÊä³ö PORTE multiplexed push-pull output
    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; // //PORTD
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOE, &GPIO_InitStructure);

    // //PORTG12¸´ÓÃÍÆÍìÊä³ö A0 PORTG12 multiplexed push-pull output A0
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_12; //Multiplexed push-pull output
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOG, &GPIO_InitStructure);

    readWriteTiming.FSMC_AddressSetupTime = 0x01; //Address Settling Time (ADDSET) is 2 HCLKs 1 / 36M = 27ns
    readWriteTiming.FSMC_AddressHoldTime = 0x00; //ADDHLD mode A is not used
    readWriteTiming.FSMC_DataSetupTime = 0x0f; //Data retention time of 16 HCLK, because the LCD drive IC read data, the speed can not be too fast, especially for the 1289 of this IC.
    readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
    readWriteTiming.FSMC_CLKDivision = 0x00;
    readWriteTiming.FSMC_DataLatency = 0x00;
    readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A; //Mode A.


    writeTiming.FSMC_AddressSetupTime = 0x00; //Address Settling Time (ADDSET) is 1 HCLK
    writeTiming.FSMC_AddressHoldTime = 0x00; //Address hold time (A)
    writeTiming.FSMC_DataSetupTime = 0x03; //Data retention time is 4 HCLK
    writeTiming.FSMC_BusTurnAroundDuration = 0x00;
    writeTiming.FSMC_CLKDivision = 0x00;
    writeTiming.FSMC_DataLatency = 0x00;
    writeTiming.FSMC_AccessMode = FSMC_AccessMode_A; //Mode A.
    جدیدترین ویرایش توسط avr1083; ۰۹:۳۸ ۱۳۹۶/۰۸/۲۷.
    خداوندا
    از بچگی به من آموختندهمه را دوست بدار حال که بزرگ شده ام و کسی را دوست می*دارم می گویند:
    فراموشش کن
    دکتر علی شریعتی

    #2
    پاسخ : نمایشگر "TFT LCD 3.5 چیپ کنترلر ILI9486

    سلام و وقت بخیر.
    دوستان و اساتید گرامی، بنده نیاز مبرم به راه اندازی این نمایشگر (3.5 اینچی با پردازنده ili9486) توسط خانواده STM32F2XX دارم. خیلی برای کتابخانه در نت جستجو کردم. اما نتیجه ای در بر نداشت. راه اندازی به هر صورت که باشه قابل قبوله. فقط خواهشا هر کسی تونسته راه اندازی کنه، نتایج رو به اشتراک بذاره. ممنون میشم. مطمئن باشید اجر معنوی خواهد داشت. با تشکر
    جدیدترین ویرایش توسط hessam_shafaghi; ۰۰:۰۹ ۱۳۹۶/۰۹/۱۸.

    دیدگاه


      #3
      پاسخ : نمایشگر "TFT LCD 3.5 چیپ کنترلر ILI9486

      نوشته اصلی توسط avr1083 نمایش پست ها
      سلام
      این نمایشگر با چیپ ILI9486 رو خود eca یک مثال برای میکرو STM32F103 گذاشته
      نمونه برنامه
      اما هرچی اجرا می کنم روی هدر برد STM32F103 جواب نمی دهد!!!!
      فکر می کنم اشکال از LCD_Init که متوجه نمی شوم پایه دیتا و rs , rw , e .... کدام است
      کد:
      D0 ... D15 ?
      CS ?
      RS ?
      WR ?
      RD ?
      RST ?
      کسی هست متوجه شود ترتیب این پایه چطور می باشد؟
      ;
      writeTiming.FSMC_AccessMode = FSMC_AccessMode_A; //Mode A.[/CPP]
      شماتیک بورد کاتالیست F103 رو ببینید.
      اگر موضوعی را در انجمن مطرح کرده اید لطفا با استفاده از "موضوع به نتیجه رسید" بقیه را از این وضعیت مطلع فرمائید.

      دیدگاه


        #4
        پاسخ : نمایشگر "TFT LCD 3.5 چیپ کنترلر ILI9486

        سلام حتما از مدل میکرو کنترلری استفاده کنید که واحد FSMC را پشیبانی کنه
        درست میشه
        خداوندا
        از بچگی به من آموختندهمه را دوست بدار حال که بزرگ شده ام و کسی را دوست می*دارم می گویند:
        فراموشش کن
        دکتر علی شریعتی

        دیدگاه


          #5
          پاسخ : نمایشگر "TFT LCD 3.5 چیپ کنترلر ILI9486

          سلام
          دوستان من هم قصد راه اندازی این lcd با برد stm32f4 discovery رو دارم
          سعی کردم کد مربوط به stm32f103 رو برای stm32f407 تغییر بدم
          اما نتیجه نگرفتم ، کسی از دوستان میدونه مشکل کد کجاست ؟
          پیشاپیش ممنون
          کد:
          [LEFT]
          
          
          
          
          
          
          
          #ifndef __LCD_H
          #define __LCD_H    
          #include "stm32f4xx.h"                  // Device header
          #include "stdlib.h"
          
          
          typedef struct  
          {                                            
              u16 width;            
              u16 height;            
              u16 id;                
              u8  dir;            
              u8    wramcmd;        
              u8  setxcmd;        
              u8  setycmd;        
          }_lcd_dev;       
          
          
          
          
          extern _lcd_dev lcddev;    
          
          
          extern u16  POINT_COLOR;
          extern u16  BACK_COLOR; 
          
          
          #define WIDTH           480             /* Screen Width (in pixels)           */
          #define HEIGHT          320             /* Screen Hight (in pixels)           */
          
          
          
          
          typedef struct
          {
              u16 LCD_REG;
              u16 LCD_RAM;
          } LCD_TypeDef;
          #define LCD_BASE        ((u32)(0x60000000 | 0x0007FFFE))
          #define LCD             ((LCD_TypeDef *) LCD_BASE)
           
                                                                                
          void LCD_Init           (void);
          void LCD_Window            (u16 Xstart, u16 Ystart, u16 Xend, u16 Yend);
          void LCD_WindowMax      (void);
          void LCD_SetCursor        (u16 Xpos, u16 Ypos);
          void LCD_PutPixel         (u16 x, u16 y, u16 color); 
          void LCD_Clear          (u16 color);
          void LCD_Fill            (u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color);
          void LCD_SetTextColor   (u16 color);
          void LCD_SetBackColor   (u16 color);
          void LCD_Show_Image(int x0, int y0, int w, int h, const u16 *code);            
                                                                                                               
          /* LCD RGB color definitions */
          #define Black           0x0000        /*   0,   0,   0 */
          #define Navy            0x000F      /*   0,   0, 128 */
          #define DarkGreen       0x03E0      /*   0, 128,   0 */
          #define DarkCyan        0x03EF      /*   0, 128, 128 */
          #define Maroon          0x7800      /* 128,   0,   0 */
          #define Purple          0x780F      /* 128,   0, 128 */
          #define Olive           0x7BE0      /* 128, 128,   0 */
          #define LightGrey       0xC618      /* 192, 192, 192 */
          #define DarkGrey        0x7BEF      /* 128, 128, 128 */
          #define Blue            0x001F      /*   0,   0, 255 */
          #define Green           0x07E0      /*   0, 255,   0 */
          #define Cyan            0x07FF      /*   0, 255, 255 */
          #define Red             0xF800      /* 255,   0,   0 */
          #define Magenta         0xF81F      /* 255,   0, 255 */
          #define Yellow          0xFFE0      /* 255, 255, 0   */
          #define White           0xFFFF      /* 255, 255, 255 */
          #define WHITE           0XFFFF      /* 255, 255, 255 */   
          #define RED             0xF800      /* 255,   0,   0 */
          #define BLUE            0x001F      /*   0,   0, 255 */
                                                 
          #endif  [/LEFT]
          کد:
          [LEFT]
          
          #include "ILI9481.h"
          #include "stdlib.h"
          #include "font.h" 
          #include "delay.h"       
           
          u16 POINT_COLOR=0x0000;
          u16 BACK_COLOR=0xFFFF; 
          
          
          static volatile unsigned short TextColor = Black, BackColor = White;
          uint16_t DeviceCode;
          
          
          _lcd_dev lcddev;
          
          
          
          
          void LCD_WR_REG(u16 regval)
          { 
              LCD->LCD_REG=regval;
          }
          
          
          void LCD_WR_DATA(u16 data)
          {                                                   
              LCD->LCD_RAM=data;         
          }
          
          
          u16 LCD_RD_DATA(void)
          {                                                   
              return LCD->LCD_RAM;         
          }                       
          
          
          void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
          {    
              LCD->LCD_REG = LCD_Reg;        
              LCD->LCD_RAM = LCD_RegValue;            
          }    
          
          
          void wr_reg (unsigned char reg, unsigned short val) 
          {
              LCD->LCD_REG = reg;        
              LCD->LCD_RAM = val;      
          }
          
          
          u16 LCD_ReadReg(u8 LCD_Reg)
          {                                           
              LCD_WR_REG(LCD_Reg);        
              delay_us(5);          
              return LCD_RD_DATA();        
          }   
          
          
          void LCD_WriteRAM_Prepare(void)
          {
               LCD->LCD_REG=lcddev.wramcmd;      
          }     
          
          
          void LCD_WriteRAM(u16 RGB_Code)
          {                                
              LCD->LCD_RAM = RGB_Code;
          }
          
          
          void opt_delay(u8 i)
          {
              while(i--);
          }
          
          
          void LCD_Init(void)
          {                                           
              GPIO_InitTypeDef  GPIO_InitStructure;
              FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
            FSMC_NORSRAMTimingInitTypeDef  readWriteTiming; 
              FSMC_NORSRAMTimingInitTypeDef  writeTiming;
              
              RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE, ENABLE);//ʹŜPD,PE,PF,PGʱד  
            RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE);//ʹŜFSMCʱד  
              
          
          
              
            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 ;//PD0,1,4,5,7,8,9,10,11,14,15 AF OUT
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//شԃˤԶ
            GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//ΆάˤԶ
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
            GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ʏ-
            GPIO_Init(GPIOD, &GPIO_InitStructure);//Եʼۯ  
              
            GPIO_InitStructure.GPIO_Pin = (0X1FF<<7);//PE7~15,AF OUT
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//شԃˤԶ
            GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//ΆάˤԶ
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
            GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ʏ-
            GPIO_Init(GPIOE, &GPIO_InitStructure);//Եʼۯ  
          
          
          
          
            GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC);//PD0,AF12
            GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC);//PD1,AF12
            GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC);
            GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC); 
                GPIO_PinAFConfig(GPIOD,GPIO_PinSource7,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_PinSource13,GPIO_AF_FSMC); 
            GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FSMC);
            GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FSMC);//PD15,AF12
           
            GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FSMC);//PE7,AF12
            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);//PE15,AF12
           
           // GPIO_PinAFConfig(GPIOF,GPIO_PinSource12,GPIO_AF_FSMC);//PF12,AF12
            //GPIO_PinAFConfig(GPIOG,GPIO_PinSource12,GPIO_AF_FSMC);
          
          
            readWriteTiming.FSMC_AddressSetupTime = 0XF;     //ַ֘ݨbʱݤèADDSETéΪ16ٶHCLK 1/168M=6ns*16=96ns    
            readWriteTiming.FSMC_AddressHoldTime = 0x00;     //ַ֘ѣԖʱݤèADDHLDéģʽAδԃս    
            readWriteTiming.FSMC_DataSetupTime = 60;            //˽ߝѣզʱݤΪ60ٶHCLK    =6*60=360ns
            readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
            readWriteTiming.FSMC_CLKDivision = 0x00;
            readWriteTiming.FSMC_DataLatency = 0x00;
            readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;     //ģʽA 
              
          
          
              writeTiming.FSMC_AddressSetupTime =9;          //ַ֘ݨbʱݤèADDSETéΪ9ٶHCLK =54ns 
            writeTiming.FSMC_AddressHoldTime = 0x00;     //ַ֘ѣԖʱݤèA        
            writeTiming.FSMC_DataSetupTime = 8;         //˽ߝѣզʱݤΪ6ns*9ٶHCLK=54ns
            writeTiming.FSMC_BusTurnAroundDuration = 0x00;
            writeTiming.FSMC_CLKDivision = 0x00;
            writeTiming.FSMC_DataLatency = 0x00;
            writeTiming.FSMC_AccessMode = FSMC_AccessMode_A;     //ģʽA 
          
          
          
          
           
            FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;//  ֢oϒćʹԃNE4 ìҲߍהӦBTCR[6],[7]c
            FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; // һشԃ˽ߝַ֘
            FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM;  //SRAM   
            FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//զԢǷ˽ߝ࠭׈Ϊ16bit   
            FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable; 
            FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
              FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable; 
            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_Enable; // ׁдʹԃһͬքʱѲ
            FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; 
            FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming; //ׁдʱѲ
            FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &writeTiming;  //дʱѲ
          
          
            FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);  //ԵʼۯFSMCƤ׃
          
          
            FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);  // ʹŜBANK1 
              
              
                       
              LCD_WR_REG(0x11);         // Exit sleep mode
              delay_ms(120);
          
          
              LCD_WR_REG(0xD0);        //Power setting
              LCD_WR_DATA(0x07);      // 1xVci
              LCD_WR_DATA(0x42);
              LCD_WR_DATA(0x18);
          
          
              LCD_WR_REG(0xD1);         // Vcom control
              LCD_WR_DATA(0x00);
              LCD_WR_DATA(0x07);        //07
              LCD_WR_DATA(0x10);
          
          
              LCD_WR_REG(0xD2);        // Power setting for normal mode 
              LCD_WR_DATA(0x01);
              LCD_WR_DATA(0x02);
          
          
              LCD_WR_REG(0xC0);        // Panel driving settings
              LCD_WR_DATA(0x10);
              LCD_WR_DATA(0x3B);
              LCD_WR_DATA(0x00);
              LCD_WR_DATA(0x02);
              LCD_WR_DATA(0x11);
          
          
              LCD_WR_REG(0xC5);        // Frame rate and inversion control
              LCD_WR_DATA(0x03);        // 72 Hz
          
          
              LCD_WR_REG(0xC8);        // Gamma settings
              LCD_WR_DATA(0x00);
              LCD_WR_DATA(0x32);
              LCD_WR_DATA(0x36);
              LCD_WR_DATA(0x45);
              LCD_WR_DATA(0x06);
              LCD_WR_DATA(0x16);
              LCD_WR_DATA(0x37);
              LCD_WR_DATA(0x75);
              LCD_WR_DATA(0x77);
              LCD_WR_DATA(0x54);
              LCD_WR_DATA(0x0C);
              LCD_WR_DATA(0x00);
          
          
              LCD_WR_REG(0x36);        // set address mode
              //LCD_WR_DATA(0x6A);    
              LCD_WR_DATA(0x28);
          
          
              LCD_WR_REG(0x3A);        // set pixel format
              LCD_WR_DATA(0x55);
          
          
              LCD_WR_REG(0x2A);        // set column address
              LCD_WR_DATA(0x00);
              LCD_WR_DATA(0x00);
              LCD_WR_DATA(0x01);
              LCD_WR_DATA(0x3F);
          
          
              LCD_WR_REG(0x2B);        // set page address
              LCD_WR_DATA(0x00);
              LCD_WR_DATA(0x00);
              LCD_WR_DATA(0x01);
              LCD_WR_DATA(0xE0);
          
          
              delay_ms(120);
          
          
              LCD_WR_REG(0x29);
              LCD_WR_REG(0x2C);
              
              //printf("\r\nChip ID = ");
              LCD_WR_REG(0x0A);
              //printf("0x%x ", LCD_RD_DATA());
              //printf("0x%x ", LCD_RD_DATA());
              
              delay_ms(10);
              
          }  
          
          
          void LCD_Window(u16 Xstart, u16 Xend, u16 Ystart, u16 Yend)
          {
              LCD_WR_REG(0x2a);   
              LCD_WR_DATA(Xstart>>8);
              LCD_WR_DATA(Xstart&0xff);
              LCD_WR_DATA(Xend>>8);
              LCD_WR_DATA(Xend&0xff);
          
          
              LCD_WR_REG(0x2b);   
              LCD_WR_DATA(Ystart>>8);
              LCD_WR_DATA(Ystart&0xff);
              LCD_WR_DATA(Yend>>8);
              LCD_WR_DATA(Yend&0xff);
          
          
              LCD_WR_REG(0x3A);    // 16/18 bits
              LCD_WR_DATA(0x55);
          
          
              LCD_WR_REG(0x2c);        
          }
          
          
          
          
          /*******************************************************************************
          * Set draw window region to whole screen                                       *
          *   Parameter:                                                                 *
          *   Return:                                                                    *
          *******************************************************************************/
          
          
          void LCD_WindowMax (void) 
          {
              LCD_Window(0, WIDTH-1, 0, HEIGHT-1);
              //LCD_Window(0, 0, WIDTH-1, HEIGHT-1);
          }
          
          
          /*
          *********************************************************************************************************
          * Description:     Setting the coordinate of cursor
          * Arguments  :     (Xpos , Ypos) the coordinate
          * Returns    :     None
          *********************************************************************************************************
          */
          void LCD_SetCursor(u16 Xpos, u16 Ypos)
          {
               wr_reg(0x0002, Xpos>>8);
               wr_reg(0x0003, Xpos&0xFF);
               wr_reg(0x0006, Ypos>>8);
               wr_reg(0x0007, Ypos&0xFF); 
          }
          /*******************************************************************************
          * Clear display                                                                *
          *   Parameter:      color:    display clearing color                           *
          *   Return:                                                                    *
          *******************************************************************************/
          
          
          void LCD_Clear (unsigned short color) 
          {
              unsigned int   y,x;
          
          
              LCD_WindowMax();
          
          
              for(y = 0; y <WIDTH*HEIGHT ; y++)
              {
                  LCD_WR_DATA(color);
                  //wait_delay(500);
              }
          
          
          }
          
          
          /*
          *********************************************************************************************************
          * Description:     In designated areas within the specified color display 
          * Arguments  :     (xsta ,ysta) start coordinate
          *                (xend ,yend) end   coordinate
          *                color        I don't know 
          * Returns    :     None
          *********************************************************************************************************
          */
          void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color)
          {                    
              u32 x,y;
              u16 colorx[]={Blue, Green, Red, White};
                                                      
              LCD_Window(xsta, ysta, xend, yend);            
          
          
              LCD_WR_REG(0x22);                      
              
              for (y=0; y<yend-ysta+1; y++)
              {
                  for (x=0; x<xend-xsta+1; x++)
                  {
                      LCD_WR_DATA(color);
                      delay_ms(1);
                  }
              }    
              
              LCD_WindowMax();                 
          } 
          
          
          void LCD_PutPixel (u16 x, u16 y, u16 color) 
          {
          
          
              LCD_Window(x, y, x , y);    
              LCD_WR_REG(0x22);                      
              LCD_WR_DATA(color);
              
          }
          
          
          
          
          
          
          /*******************************************************************************
          * Set foreground color                                                         *
          *   Parameter:      color:    foreground color                                 *
          *   Return:                                                                    *
          *******************************************************************************/
          
          
          void LCD_SetTextColor (unsigned short color) 
          {
            TextColor = color;
          }
          
          
          
          
          /*******************************************************************************
          * Set background color                                                         *
          *   Parameter:      color:    background color                                 *
          *   Return:                                                                    *
          *******************************************************************************/
          
          
          void LCD_SetBackColor (unsigned short color) 
          {
            BackColor = color;
          }
          
          
          void LCD_Show_Image(int x0, int y0, int w, int h, const u16 *code)
          {
              u32 xcounter, ycounter;
          
          
              LCD_Window(x0 , x0+w-1, y0, y0+h-1);
          
          
          
          
              for(ycounter=0;ycounter<h;ycounter++)
              {
                  for(xcounter=0; xcounter<w; xcounter++)
                  {
                      LCD_WR_DATA(*code++);
                  }
              }
          }
          
          
          //END
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          [/LEFT]
          دلیل: ادغام دو پست برای جلوگیری از اسپم

          خب ، خودم مشکل رو پیدا کردم

          تابع delay رو initialize نکرده بودم

          کد:
          delay_init();
          کد:
          [FONT=Yekan][/FONT]

          این خط رو به اول تابع main اضافه کنید درست میشه.
          جدیدترین ویرایش توسط sina8; ۲۲:۵۴ ۱۳۹۸/۰۲/۱۴.

          دیدگاه


            #6
            پاسخ : نمایشگر &quot;TFT LCD 3.5 چیپ کنترلر ILI9486

            سلام
            وقت بخیر دوستان شما توانستید ال سی دی با درایور ILI9486 با میکرو STM32f103راه اندازی کنید؟

            دیدگاه


              #7
              پاسخ : نمایشگر &quot;TFT LCD 3.5 چیپ کنترلر ILI9486

              سلام وقتتون بخیر باشه
              بنده هم این lcd رو دارم ولی نتونستم راه اندازی کنم. لایب شما رو هم دیدم ولی نمیدونم کجا باید پایه هاشو تنظیم کرد؟

              دیدگاه

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