触摸屏

函数及思路讲解:

1.对于LCD_Init();

void LCD_Init(void)
{
    LCD_GPIO_Config();
    LCD_FSMC_Config();
    
    LCD_Rst();
    LCD_REG_Config();
}

主要对FSMC总线配置定义,及对LCD初始化寄存器配置

2.Lcd_GramScan(2);

设置液晶GRAM的扫描方向  

void Lcd_GramScan( uint16_t option )
{    
    switch(option)
    {
        case 1:
        {/* 左上角->右下脚      显示中英文时用的是这种模式 */
            LCD_ILI9341_CMD(0x36); 
            LCD_ILI9341_Parameter(0xC8);   
            LCD_ILI9341_CMD(0X2A); 
            LCD_ILI9341_Parameter(0x00);    /* x start */    
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);  /* x end */    
            LCD_ILI9341_Parameter(0xEF);

            LCD_ILI9341_CMD(0X2B); 
            LCD_ILI9341_Parameter(0x00);    /* y start */  
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x01);    /* y end */   
            LCD_ILI9341_Parameter(0x3F);
                    
        }break;
        case 2:
        {/* 左下角->右上角      显示摄像头图像时用的是这种模式 */    
            LCD_ILI9341_CMD(0x36); 
            LCD_ILI9341_Parameter(0x68);    
            LCD_ILI9341_CMD(0X2A); 
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x01);
            LCD_ILI9341_Parameter(0x3F);    

            LCD_ILI9341_CMD(0X2B); 
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0xEF);            
        }break;
        case 3:
        {/* 右下角->左上角      显示BMP图片时用的是这种模式 */
            LCD_ILI9341_CMD(0x36); 
            LCD_ILI9341_Parameter(0x28);    
            LCD_ILI9341_CMD(0X2A); 
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x01);
            LCD_ILI9341_Parameter(0x3F);    

            LCD_ILI9341_CMD(0X2B); 
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0xEF);            
        }break;
        case 4:
        {/* 左下角->右上角      显示BMP图片时用的是这种模式 */
            LCD_ILI9341_CMD(0x36); 
            LCD_ILI9341_Parameter(0x48);    
            LCD_ILI9341_CMD(0X2A); 
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0xEF);    

            LCD_ILI9341_CMD(0X2B); 
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x00);
            LCD_ILI9341_Parameter(0x01);
            LCD_ILI9341_Parameter(0x3F);            
        }break;
    }
    
    /* write gram start */
    LCD_ILI9341_CMD(0x2C);
}

3.SPI_FLASH_Init();(我们将触摸到的值存在25Q16中,当然我们可以不用)可结合SPI文理解

4.Touch_Init();

触摸屏数据的传输我们用模拟SPI

当然对于是否检测到触摸,当触摸屏有触摸动作的时候PENIRQ会变为低电平,我们利用外部中断进行检测

5.Palette_Init(); 去色板初始化函数

6.我们谨记,串口中断对扫描速率的影响是很大的

当我们编译USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

 屏幕的刷屏速率慢许多

原文地址:https://www.cnblogs.com/Ph-one/p/4126884.html