前段时间为参加RT-Thread x STM32 全连接创意创客大赛特意购置一个2.8寸的触摸屏,由于时间紧没有很好地排上用场,这段时间有了些空闲时间,决定让它在为LPC55S69-EVK开发板展示一下伸手。 由于先前曾使用该开发板驱动过SPI接口的2.2寸串口屏,故打算不用厂家提供的例程,而是直接在2.2寸串口屏的程序上,直接修改初始化函数来解决。 2.8寸显示屏的初始化函数为: - void LCDv_Init(void)
- {
- LCD_REST_Low();
- SysTick_DelayTicks(50);
- LCD_REST_High();
- SysTick_DelayTicks(50);
- LCD_WR_REG(0xCF);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0xD9);
- LCD_WR_DATA8(0X30);
- LCD_WR_REG(0xED);
- LCD_WR_DATA8(0x64);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0X12);
- LCD_WR_DATA8(0X81);
- LCD_WR_REG(0xE8);
- LCD_WR_DATA8(0x85);
- LCD_WR_DATA8(0x10);
- LCD_WR_DATA8(0x78);
- LCD_WR_REG(0xCB);
- LCD_WR_DATA8(0x39);
- LCD_WR_DATA8(0x2C);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x34);
- LCD_WR_DATA8(0x02);
- LCD_WR_REG(0xF7);
- LCD_WR_DATA8(0x20);
- LCD_WR_REG(0xEA);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0xC0);
- LCD_WR_DATA8(0x21);
- LCD_WR_REG(0xC1);
- LCD_WR_DATA8(0x12);
- LCD_WR_REG(0xC5);
- LCD_WR_DATA8(0x32);
- LCD_WR_DATA8(0x3C);
- LCD_WR_REG(0xC7);
- LCD_WR_DATA8(0xC1);
- LCD_WR_REG(0x36);
- LCD_WR_DATA8(0x08);
- LCD_WR_REG(0x3A);
- LCD_WR_DATA8(0x55);
- LCD_WR_REG(0xB1);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x18);
- LCD_WR_REG(0xB6);
- LCD_WR_DATA8(0x0A);
- LCD_WR_DATA8(0xA2);
- LCD_WR_REG(0xF2);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0x26);
- LCD_WR_DATA8(0x01);
- LCD_WR_REG(0xE0);
- LCD_WR_DATA8(0x0F);
- LCD_WR_DATA8(0x20);
- LCD_WR_DATA8(0x1E);
- LCD_WR_DATA8(0x09);
- LCD_WR_DATA8(0x12);
- LCD_WR_DATA8(0x0B);
- LCD_WR_DATA8(0x50);
- LCD_WR_DATA8(0xBA);
- LCD_WR_DATA8(0x44);
- LCD_WR_DATA8(0x09);
- LCD_WR_DATA8(0x14);
- LCD_WR_DATA8(0x05);
- LCD_WR_DATA8(0x23);
- LCD_WR_DATA8(0x21);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0xE1);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x19);
- LCD_WR_DATA8(0x19);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x12);
- LCD_WR_DATA8(0x07);
- LCD_WR_DATA8(0x2D);
- LCD_WR_DATA8(0x28);
- LCD_WR_DATA8(0x3F);
- LCD_WR_DATA8(0x02);
- LCD_WR_DATA8(0x0A);
- LCD_WR_DATA8(0x08);
- LCD_WR_DATA8(0x25);
- LCD_WR_DATA8(0x2D);
- LCD_WR_DATA8(0x0F);
- LCD_WR_REG(0x11);
- SysTick_DelayTicks(120);
- LCD_WR_REG(0x29);
- LCD_Clear(WHITE);
- }
复制代码
该显示屏与MCU的连接关系如下: SCK---PIO1_20 SDI---PIO1_21 D/C---PIO1_2 RST---PIO1_3 CS ---PIO0_26 LED---PIO1_1 其使用的引脚则是P17扩展接口上的引脚,其引脚分配如图1所示。 图1 P17扩展接口
相关引脚输出高低电平的语句定义为: #define LCD_SCK_Low() GPIO_PinWrite(GPIO, 1u, 20u, 0) //CLK #define LCD_SCK_High() GPIO_PinWrite(GPIO, 1u, 20u, 1) //PIO1_20 FC4_I2C_SCL_ADD
#define LCD_SDI_Low() GPIO_PinWrite(GPIO, 1u, 21u, 0) //DIN #define LCD_SDI_High() GPIO_PinWrite(GPIO, 1u, 21u, 1) //PIO1_21 FC4_I2C_SDA_ADD
#define LCD_REST_Low() GPIO_PinWrite(GPIO, 1u, 2u, 0) //RES #define LCD_REST_High() GPIO_PinWrite(GPIO,1u, 2u, 1) //PIO1_2 LSP1_HS_SCK
#define LCD_DC_Low() GPIO_PinWrite(GPIO, 1u, 3u, 0) //DC #define LCD_DC_High() GPIO_PinWrite(GPIO, 1u, 3u, 1) //PIO1_3 LSP1_HS_MISO
#define LCD_CS_Low() GPIO_PinWrite(GPIO, 0u, 26u, 0) //CS #define LCD_CS_High() GPIO_PinWrite(GPIO, 0u, 26u, 1) //PIO0_26 LSP1_HS_MOSI
#define LCD_LED_Low() GPIO_PinWrite(GPIO, 1u, 1u, 0) //BLK #define LCD_LED_High() GPIO_PinWrite(GPIO, 1u, 1u, 1) //PIO1_1 LSP1_HS_SSEL1
配置相关引脚为输出功能的函数为: - void app_tft_init(void)
- {
- gpio_pin_config_t gpioPinConfig;
- gpioPinConfig.pinDirection = kGPIO_DigitalOutput;
- gpioPinConfig.outputLogic = 1u;
- GPIO_PinInit (GPIO, 1u, 20u, &gpioPinConfig);
- GPIO_PinInit (GPIO, 1u, 21u, &gpioPinConfig);
- GPIO_PinInit (GPIO, 1u, 2u, &gpioPinConfig);
- GPIO_PinInit (GPIO, 1u, 3u, &gpioPinConfig);
- GPIO_PinInit (GPIO, 0u, 26u, &gpioPinConfig);
- GPIO_PinInit (GPIO, 1u, 1u, &gpioPinConfig);
- LCD_CS_Low();
- LCD_LED_High();
- }
复制代码
显示图2演示效果的函数为: - void show_pic(const unsigned char *p)
- {
- int i,j;
- unsigned char picH,picL;
- Address_set(0,0,LCD_W-1,LCD_H-1);
- for(i=0;i<240;i++)
- {
- for(j=0;j<320;j++)
- {
- picH=*p++;
- picL=*p++;
- LCD_WR_DATA8(picH);
- LCD_WR_DATA8(picL);
- }
- }
- }
复制代码
图2 图片显示
此外,它还适于作功能选择界面,见图3所示。 图3 功能界面制作效果
|