本帖最后由 jinglixixi 于 2017-6-23 15:06 编辑
在LPC54110开发板上配有Arduino接口,对其巧加使用就可减少与外设的连线。串口TFT屏是一个基于SPI接口的显示屏,相较于并口传递数据岁要慢一些,但ARM主频相对较高的情况下,其显示的刷新速度还是可以认可的。为了减少TFT显示屏与LPC54110开发板的连线,完全可以使用Arduino接口来实现,具体的引脚连接关系如下: /******************************************************************************* * 引脚定义 ******************************************************************************/ //Vcc --Vref //GND--GND //SCE --P0.11 //RST --P0.13 //DC --P0.12 //DIN --P0.14 //SCLK --P1.8 //LED+ --P1.9
为实现程序中的高低电平输出,相关的输出语句定义如下: /******************************************************************************* * 电平输出定义 ******************************************************************************/ #define LCD_CS_High() GPIO_WritePinOutput(GPIO, 0U, 11U, 1); #define LCD_CS_Low() GPIO_WritePinOutput(GPIO, 0U, 11U, 0); #define LCD_REST_High() GPIO_WritePinOutput(GPIO, 0U, 13U, 1); #define LCD_REST_Low() GPIO_WritePinOutput(GPIO, 0U, 13U, 0); #define LCD_DC_High() GPIO_WritePinOutput(GPIO, 0U, 12U, 1); #define LCD_DC_Low() GPIO_WritePinOutput(GPIO, 0U, 12U, 0); #define LCD_SDI_High() GPIO_WritePinOutput(GPIO, 0U, 14U, 1); #define LCD_SDI_Low() GPIO_WritePinOutput(GPIO, 0U, 14U, 0); #define LCD_SCK_High() GPIO_WritePinOutput(GPIO, 1U, 8U, 1); #define LCD_SCK_Low() GPIO_WritePinOutput(GPIO, 1U, 8U, 0); #define LCD_LED_High() GPIO_WritePinOutput(GPIO, 1U, 9U, 1); #define LCD_LED_Low() GPIO_WritePinOutput(GPIO, 1U, 9U, 0); - /*******************************************************************************
- * 引脚功能设置函数
- ******************************************************************************/
- void GPIO_Configuration(void)
- {
- CLOCK_EnableClock(kCLOCK_Gpio0);
- gpio_pin_config_t oled_config = { kGPIO_DigitalOutput, 0,};
- GPIO_PinInit(GPIO, 0U, 13U, &oled_config);
- GPIO_PinInit(GPIO, 0U, 11U, &oled_config);
- GPIO_PinInit(GPIO, 0U, 12U, &oled_config);
- GPIO_PinInit(GPIO, 0U, 14U, &oled_config);
- GPIO_PinInit(GPIO, 1U, 8U, &oled_config);
- GPIO_PinInit(GPIO, 1U, 9U, &oled_config);
- }
复制代码- /*******************************************************************************
- * TFT屏初始化函数
- ******************************************************************************/
- void Lcd_Init(void)
- {
- LCD_REST_Low();
- delay_ms(20);
- LCD_REST_High();
- delay_ms(20);
- LCD_CS_Low();
- 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(0xCF);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0XC1);
- LCD_WR_DATA8(0X30);
- LCD_WR_REG(0xE8);
- LCD_WR_DATA8(0x85);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x78);
- LCD_WR_REG(0xEA);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0xED);
- LCD_WR_DATA8(0x64);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0X12);
- LCD_WR_DATA8(0X81);
- LCD_WR_REG(0xF7);
- LCD_WR_DATA8(0x20);
- LCD_WR_REG(0xC0); //Power control
- LCD_WR_DATA8(0x23); //VRH[5:0]
- LCD_WR_REG(0xC1); //Power control
- LCD_WR_DATA8(0x10); //SAP[2:0];BT[3:0]
- LCD_WR_REG(0xC5); //VCM control
- LCD_WR_DATA8(0x3e);
- LCD_WR_DATA8(0x28);
- LCD_WR_REG(0xC7); //VCM control2
- LCD_WR_DATA8(0x86);
- LCD_WR_REG(0x36); // Memory Access Control
- LCD_WR_DATA8(0x48);
- LCD_WR_REG(0x3A);
- LCD_WR_DATA8(0x55);
- LCD_WR_REG(0xB1);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x18);
- LCD_WR_REG(0xB6); // Display Function Control
- LCD_WR_DATA8(0x08);
- LCD_WR_DATA8(0x82);
- LCD_WR_DATA8(0x27);
- LCD_WR_REG(0xF2); // 3Gamma Function Disable
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0x26); //Gamma curve selected
- LCD_WR_DATA8(0x01);
- LCD_WR_REG(0xE0); //Set Gamma
- LCD_WR_DATA8(0x0F);
- LCD_WR_DATA8(0x31);
- LCD_WR_DATA8(0x2B);
- LCD_WR_DATA8(0x0C);
- LCD_WR_DATA8(0x0E);
- LCD_WR_DATA8(0x08);
- LCD_WR_DATA8(0x4E);
- LCD_WR_DATA8(0xF1);
- LCD_WR_DATA8(0x37);
- LCD_WR_DATA8(0x07);
- LCD_WR_DATA8(0x10);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0x0E);
- LCD_WR_DATA8(0x09);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0XE1); //Set Gamma
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x0E);
- LCD_WR_DATA8(0x14);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0x11);
- LCD_WR_DATA8(0x07);
- LCD_WR_DATA8(0x31);
- LCD_WR_DATA8(0xC1);
- LCD_WR_DATA8(0x48);
- LCD_WR_DATA8(0x08);
- LCD_WR_DATA8(0x0F);
- LCD_WR_DATA8(0x0C);
- LCD_WR_DATA8(0x31);
- LCD_WR_DATA8(0x36);
- LCD_WR_DATA8(0x0F);
- LCD_WR_REG(0x11); //Exit Sleep
- delay_ms(120);
- LCD_WR_REG(0x29); //Display on
- LCD_WR_REG(0x2c);
- LCD_LED_High();
- }
复制代码- /*******************************************************************************
- * 色彩清屏函数
- ******************************************************************************/
- void LCD_Clear(uint16_t Color)
- {
- char VH,VL;
- uint16_t i,j;
- VH=Color>>8;
- VL=Color;
- Address_set(0,0,LCD_W-1,LCD_H-1);
- for(i=0;i<LCD_W;i++)
- {
- for (j=0;j<LCD_H;j++)
- {
- LCD_WR_DATA8(VH);
- LCD_WR_DATA8(VL);
- }
- }
- }
复制代码
整体构成与显示效果如图所示,后续再为它配上RTC计时、语音播报、设备启停功能等。
|