NXP

【LPC54100】GPIO驱动TFT LCD

2019-07-12 11:54发布

所使用的LCD为1.8寸128*160的TFT,采用SPI接口驱动,主要引脚有: RESET:复位,高电平有效 CS:片选,低电平有效 A0:寄存器选择 SDA:数据接收 SCL:SPI总线时钟 LED+,LED-:背光电源 驱动芯片为ILI9163,控制模式为:4线8bit串行总线方式。如下图所示: 每次传输的8bit可以是命令,也可以是数据,通过A0线来选择:A0为低电平,则TB代表命令;A0为高电平,则TB代表数据。 这里用LPC54102的GPIO口模拟出上述SPI时序,驱动TFT屏,硬件接线为: CS——P0.3 A0——P0.4 SDA——P0.10 SCL——P0.9 主要是改写MCU发送命令和数据的2个基本函数: void write_command(uint_least8_t addr1) {          uint_least8_tbit8;          TFT_A0_L;          TFT_CS_L;          for(bit8=0;bit8<8;bit8++)          {                    TFT_SCL_L;                    if((addr1&0x80)==0x80)                    TFT_SDI_H;                    else                               TFT_SDI_L;                    TFT_SCL_H;                    addr1=(addr1<<1);            }    TFT_CS_H; }   void write_para(uint_least8_t para1) {            uint_least8_tbit8;          TFT_A0_H;          TFT_CS_L;                                                for(bit8=0;bit8<8;bit8++)          {                    TFT_SCL_L;                    if((para1&0x80)==0x80)                    TFT_SDI_H;                    else                    TFT_SDI_L;                    TFT_SCL_H;                    para1=(para1<<1);            }          TFT_CS_H;   } 由于Board_Init()中已经使能了时钟、用Chip_GPIO_Init(LPC_GPIO)初始化了GPIO,所以接下来需要设定IO模式,并控制IO口的输出电平。 void Board_Init(void) {          /*INMUX and IOCON are used by many apps, enable both INMUX and IOCON clock bitshere. */          Chip_Clock_EnablePeriphClock(SYSCON_CLOCK_INPUTMUX);          Chip_Clock_EnablePeriphClock(SYSCON_CLOCK_IOCON);            /*Sets up DEBUG UART */          DEBUGINIT();            /*Initialize GPIO */          Chip_GPIO_Init(LPC_GPIO);            /*Initialize the LEDs. Be careful with below routine, once it's called some ofthe I/O will be set to output. */          Board_LED_Init(); } 用到下面2个函数: 通过如下的宏定义实现: 在TFT LCD上显示出的彩虹条:     原文地址 http://bbs.eeworld.com.cn/thread-461864-1-1.html