[G32A] 【G32A1465测评】驱动TFT-LCD屏

[复制链接]
1207|2
 楼主| yinwuqing110 发表于 2025-1-5 19:45 | 显示全部楼层 |阅读模式
本帖最后由 yinwuqing110 于 2025-1-5 20:10 编辑

一、引言
前段时间在某电子商城上购得一块1.77寸RGB屏,显示驱动芯片是ST7735S,这款显示器驱动芯片比较流行,是由矽创电子股份有限公司生产,非常适合小尺寸屏的集成设计,流行的驱动接口有IIC与SPI两种,笔者这款是采用SPI驱动接口,坛友有采用SPI硬件+DMA方式驱动该类似的TFT屏,本期咱采用GPIO模拟SPI方式来驱动,这种方式移植起来比较方便,不受硬件IO口的局限制。
ST7735S.zip (3.01 MB, 下载次数: 5)
二、引脚关系图
J1-J6管脚定义.png
使用开发板上的IO口与TFT-LCD屏的管脚对应关系
管脚对应关系.png
三、实物连接
屏引脚.jpg
连线.jpg
四、部分驱动代码
lcd_init.h
  1. #ifndef __LCD_INIT_H
  2. #define __LCD_INIT_H

  3. #include "lcd.h"
  4. #include "g32a1xxx_pins.h"

  5. #define USE_HORIZONTAL 1  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏

  6. #if USE_HORIZONTAL==0||USE_HORIZONTAL==1
  7. #define LCD_W 128
  8. #define LCD_H 160
  9. #else
  10. #define LCD_W 160
  11. #define LCD_H 128
  12. #endif

  13. #define BOARD_LCD_MOSI_GPIO                                        GPIOD
  14. #define BOARD_LCD_PORT_MOSI_BASE                                 PMD
  15. #define BOARD_LCD_GPIO_MOSI_PIN                                    (5U)

  16. #define BOARD_LCD_SCLK_GPIO                                        GPIOD
  17. #define BOARD_LCD_PORT_SCLK_BASE                                 PMD
  18. #define BOARD_LCD_GPIO_SCLK_PIN                                    (1U)

  19. #define BOARD_LCD_CS_GPIO                                          GPIOD
  20. #define BOARD_LCD_PORT_CS_BASE                                   PMD
  21. #define BOARD_LCD_GPIO_CS_PIN                                      (2U)

  22. #define BOARD_LCD_DC_GPIO                                         GPIOD
  23. #define BOARD_LCD_PORT_DC_BASE                                  PMD
  24. #define BOARD_LCD_GPIO_DC_PIN                                     (3U)

  25. #define BOARD_LCD_RES_GPIO                                       GPIOD
  26. #define BOARD_LCD_PORT_RES_BASE                                PMD
  27. #define BOARD_LCD_GPIO_RES_PIN                                   (8U)

  28. #define BOARD_LCD_BLK_GPIO                                       GPIOD
  29. #define BOARD_LCD_PORT_BLK_BASE                                PMD
  30. #define BOARD_LCD_GPIO_BLK_PIN                                   (9U)

  31. //-----------------LCD端口定义----------------

  32. #define LCD_SCLK_Clr() PINS_WritePin(BOARD_LCD_SCLK_GPIO,BOARD_LCD_GPIO_SCLK_PIN,0)//SCL SCLK
  33. #define LCD_SCLK_Set() PINS_WritePin(BOARD_LCD_SCLK_GPIO,BOARD_LCD_GPIO_SCLK_PIN,1)

  34. #define LCD_CS_Clr()   PINS_WritePin(BOARD_LCD_CS_GPIO,BOARD_LCD_GPIO_CS_PIN,0)//CS
  35. #define LCD_CS_Set()   PINS_WritePin(BOARD_LCD_CS_GPIO,BOARD_LCD_GPIO_CS_PIN,1)

  36. #define LCD_MOSI_Clr() PINS_WritePin(BOARD_LCD_MOSI_GPIO,BOARD_LCD_GPIO_MOSI_PIN,0)//SDA MOSI
  37. #define LCD_MOSI_Set() PINS_WritePin(BOARD_LCD_MOSI_GPIO,BOARD_LCD_GPIO_MOSI_PIN,1)

  38. #define LCD_DC_Clr()   PINS_WritePin(BOARD_LCD_DC_GPIO,BOARD_LCD_GPIO_DC_PIN,0)//DC
  39. #define LCD_DC_Set()   PINS_WritePin(BOARD_LCD_DC_GPIO,BOARD_LCD_GPIO_DC_PIN,1)

  40. #define LCD_RES_Clr()  PINS_WritePin(BOARD_LCD_RES_GPIO,BOARD_LCD_GPIO_RES_PIN,0)//RES
  41. #define LCD_RES_Set()  PINS_WritePin(BOARD_LCD_RES_GPIO,BOARD_LCD_GPIO_RES_PIN,1)

  42. #define LCD_BLK_Clr()  PINS_WritePin(BOARD_LCD_BLK_GPIO,BOARD_LCD_GPIO_BLK_PIN,0)//BLK
  43. #define LCD_BLK_Set()  PINS_WritePin(BOARD_LCD_BLK_GPIO,BOARD_LCD_GPIO_BLK_PIN,1)

  44. void LCD_GPIO_Init(void);//初始化GPIO
  45. void LCD_Writ_Bus(uint8_t dat);//模拟SPI时序
  46. void LCD_WR_DATA8(uint8_t dat);//写入一个字节
  47. void LCD_WR_DATA(uint16_t dat);//写入两个字节
  48. void LCD_WR_REG(uint8_t dat);//写入一个指令
  49. void LCD_Address_Set(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2);//设置坐标函数
  50. void LCD_Init(void);//LCD初始化
  51. #endif
lcd_init.c
  1. #include "lcd_init.h"
  2. #include "board.h"
  3. #include "g32a1xxx_clock.h"
  4. #include "osif.h"

  5. /******************************************************************************
  6.       函数说明:LCD串行数据写入函数
  7.       入口数据:dat  要写入的串行数据
  8.       返回值:  无
  9. ******************************************************************************/
  10. void LCD_Writ_Bus(u8 dat)
  11. {        
  12.         u8 i;
  13.         LCD_CS_Clr();
  14.         for(i=0;i<8;i++)
  15.         {                          
  16.                 LCD_SCLK_Clr();
  17.                 if(dat&0x80)
  18.                 {
  19.                    LCD_MOSI_Set();
  20.                 }
  21.                 else
  22.                 {
  23.                    LCD_MOSI_Clr();
  24.                 }
  25.                 LCD_SCLK_Set();
  26.                 dat<<=1;
  27.         }        
  28.   LCD_CS_Set();        
  29. }

  30. /******************************************************************************
  31.       函数说明:LCD写入数据
  32.       入口数据:dat 写入的数据
  33.       返回值:  无
  34. ******************************************************************************/
  35. void LCD_WR_DATA8(u8 dat)
  36. {
  37.         LCD_Writ_Bus(dat);
  38. }

  39. /******************************************************************************
  40.       函数说明:LCD写入数据
  41.       入口数据:dat 写入的数据
  42.       返回值:  无
  43. ******************************************************************************/
  44. void LCD_WR_DATA(u16 dat)
  45. {
  46.         LCD_Writ_Bus(dat>>8);
  47.         LCD_Writ_Bus(dat);
  48. }

  49. /******************************************************************************
  50.       函数说明:LCD写入命令
  51.       入口数据:dat 写入的命令
  52.       返回值:  无
  53. ******************************************************************************/
  54. void LCD_WR_REG(u8 dat)
  55. {
  56.         LCD_DC_Clr();//写命令
  57.         LCD_Writ_Bus(dat);
  58.         LCD_DC_Set();//写数据
  59. }

  60. /******************************************************************************
  61.       函数说明:设置起始和结束地址
  62.       入口数据:x1,x2 设置列的起始和结束地址
  63.                 y1,y2 设置行的起始和结束地址
  64.       返回值:  无
  65. ******************************************************************************/
  66. void LCD_Address_Set(u16 x1,u16 y1,u16 x2,u16 y2)
  67. {
  68.         if(USE_HORIZONTAL==0)
  69.         {
  70.                 LCD_WR_REG(0x2a);//列地址设置
  71.                 LCD_WR_DATA(x1+2);
  72.                 LCD_WR_DATA(x2+2);
  73.                 LCD_WR_REG(0x2b);//行地址设置
  74.                 LCD_WR_DATA(y1+1);
  75.                 LCD_WR_DATA(y2+1);
  76.                 LCD_WR_REG(0x2c);//储存器写
  77.         }
  78.         else if(USE_HORIZONTAL==1)
  79.         {
  80.                 LCD_WR_REG(0x2a);//列地址设置
  81.                 LCD_WR_DATA(x1+2);
  82.                 LCD_WR_DATA(x2+2);
  83.                 LCD_WR_REG(0x2b);//行地址设置
  84.                 LCD_WR_DATA(y1+1);
  85.                 LCD_WR_DATA(y2+1);
  86.                 LCD_WR_REG(0x2c);//储存器写
  87.         }
  88.         else if(USE_HORIZONTAL==2)
  89.         {
  90.                 LCD_WR_REG(0x2a);//列地址设置
  91.                 LCD_WR_DATA(x1+1);
  92.                 LCD_WR_DATA(x2+1);
  93.                 LCD_WR_REG(0x2b);//行地址设置
  94.                 LCD_WR_DATA(y1+2);
  95.                 LCD_WR_DATA(y2+2);
  96.                 LCD_WR_REG(0x2c);//储存器写
  97.         }
  98.         else
  99.         {
  100.                 LCD_WR_REG(0x2a);//列地址设置
  101.                 LCD_WR_DATA(x1+1);
  102.                 LCD_WR_DATA(x2+1);
  103.                 LCD_WR_REG(0x2b);//行地址设置
  104.                 LCD_WR_DATA(y1+2);
  105.                 LCD_WR_DATA(y2+2);
  106.                 LCD_WR_REG(0x2c);//储存器写
  107.         }
  108. }

  109. void LCD_Init(void)
  110. {
  111.         /* Enable Clock to Port D */
  112.         CLOCK_SYS_ConfigModuleClock(PMD_CLK, NULL);
  113.         PINS_SetMuxModeSel(BOARD_LCD_PORT_MOSI_BASE, BOARD_LCD_GPIO_MOSI_PIN, PM_MUX_AS_GPIO);
  114.         PINS_SetMuxModeSel(BOARD_LCD_PORT_SCLK_BASE, BOARD_LCD_GPIO_SCLK_PIN, PM_MUX_AS_GPIO);
  115.         PINS_SetMuxModeSel(BOARD_LCD_PORT_CS_BASE, BOARD_LCD_GPIO_CS_PIN, PM_MUX_AS_GPIO);
  116.         PINS_SetMuxModeSel(BOARD_LCD_PORT_DC_BASE, BOARD_LCD_GPIO_DC_PIN, PM_MUX_AS_GPIO);
  117.         PINS_SetMuxModeSel(BOARD_LCD_PORT_RES_BASE, BOARD_LCD_GPIO_RES_PIN, PM_MUX_AS_GPIO);
  118.         PINS_SetMuxModeSel(BOARD_LCD_PORT_BLK_BASE, BOARD_LCD_GPIO_BLK_PIN, PM_MUX_AS_GPIO);
  119.         PINS_SetPinIntSel(BOARD_LCD_PORT_MOSI_BASE, BOARD_LCD_GPIO_MOSI_PIN, PM_DMA_INT_DISABLED);
  120.         PINS_SetPinIntSel(BOARD_LCD_PORT_SCLK_BASE, BOARD_LCD_GPIO_SCLK_PIN, PM_DMA_INT_DISABLED);
  121.         PINS_SetPinIntSel(BOARD_LCD_PORT_CS_BASE,  BOARD_LCD_GPIO_CS_PIN, PM_DMA_INT_DISABLED);
  122.         PINS_SetPinIntSel(BOARD_LCD_PORT_DC_BASE,  BOARD_LCD_GPIO_DC_PIN, PM_DMA_INT_DISABLED);
  123.         PINS_SetPinIntSel(BOARD_LCD_PORT_RES_BASE, BOARD_LCD_GPIO_RES_PIN, PM_DMA_INT_DISABLED);
  124.         PINS_SetPinIntSel(BOARD_LCD_PORT_BLK_BASE, BOARD_LCD_GPIO_BLK_PIN, PM_DMA_INT_DISABLED);
  125.         
  126.         PINS_SetPins(BOARD_LCD_MOSI_GPIO, 1U << BOARD_LCD_GPIO_MOSI_PIN);
  127.         PINS_SetPins(BOARD_LCD_SCLK_GPIO, 1U << BOARD_LCD_GPIO_SCLK_PIN);
  128.         PINS_SetPins(BOARD_LCD_CS_GPIO, 1U << BOARD_LCD_GPIO_CS_PIN);
  129.         PINS_SetPins(BOARD_LCD_DC_GPIO, 1U << BOARD_LCD_GPIO_DC_PIN);
  130.         PINS_SetPins(BOARD_LCD_RES_GPIO, 1U << BOARD_LCD_GPIO_RES_PIN);
  131.         PINS_SetPins(BOARD_LCD_BLK_GPIO, 1U << BOARD_LCD_GPIO_BLK_PIN);

  132.         PINS_SetPinDir(BOARD_LCD_MOSI_GPIO, BOARD_LCD_GPIO_MOSI_PIN, 1U);
  133.         PINS_SetPinDir(BOARD_LCD_SCLK_GPIO, BOARD_LCD_GPIO_SCLK_PIN, 1U);
  134.         PINS_SetPinDir(BOARD_LCD_CS_GPIO, BOARD_LCD_GPIO_CS_PIN, 1U);
  135.         PINS_SetPinDir(BOARD_LCD_DC_GPIO, BOARD_LCD_GPIO_DC_PIN, 1U);
  136.         PINS_SetPinDir(BOARD_LCD_RES_GPIO, BOARD_LCD_GPIO_RES_PIN, 1U);
  137.         PINS_SetPinDir(BOARD_LCD_BLK_GPIO, BOARD_LCD_GPIO_BLK_PIN, 1U);
  138.         
  139.         LCD_RES_Clr();//复位
  140.         OSIF_TimeDelay(10);
  141.         LCD_RES_Set();
  142.         OSIF_TimeDelay(10);
  143.         LCD_BLK_Set();//打开背光
  144.         OSIF_TimeDelay(120);
  145.         LCD_WR_REG(0x11); //Sleep out
  146.         OSIF_TimeDelay(120);

  147.         LCD_WR_REG(0xB1);
  148.         LCD_WR_DATA8(0x05);
  149.         LCD_WR_DATA8(0x3C);
  150.         LCD_WR_DATA8(0x3C);
  151.         LCD_WR_REG(0xB2);
  152.         LCD_WR_DATA8(0x05);
  153.         LCD_WR_DATA8(0x3C);
  154.         LCD_WR_DATA8(0x3C);
  155.         LCD_WR_REG(0xB3);
  156.         LCD_WR_DATA8(0x05);
  157.         LCD_WR_DATA8(0x3C);
  158.         LCD_WR_DATA8(0x3C);
  159.         LCD_WR_DATA8(0x05);
  160.         LCD_WR_DATA8(0x3C);
  161.         LCD_WR_DATA8(0x3C);
  162.         LCD_WR_REG(0xB4);
  163.         LCD_WR_DATA8(0x03);
  164.         LCD_WR_REG(0xC0);
  165.         LCD_WR_DATA8(0x28);
  166.         LCD_WR_DATA8(0x08);
  167.         LCD_WR_DATA8(0x04);
  168.         LCD_WR_REG(0xC1);
  169.         LCD_WR_DATA8(0XC0);
  170.         LCD_WR_REG(0xC2);
  171.         LCD_WR_DATA8(0x0D);
  172.         LCD_WR_DATA8(0x00);
  173.         LCD_WR_REG(0xC3);
  174.         LCD_WR_DATA8(0x8D);
  175.         LCD_WR_DATA8(0x2A);
  176.         LCD_WR_REG(0xC4);
  177.         LCD_WR_DATA8(0x8D);
  178.         LCD_WR_DATA8(0xEE);
  179.         LCD_WR_REG(0xC5);  
  180.         LCD_WR_DATA8(0x1A);
  181.         LCD_WR_REG(0x36); //MX, MY, RGB mode
  182.         if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x00);
  183.         else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC0);
  184.         else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x70);
  185.         else LCD_WR_DATA8(0xA0);
  186.         LCD_WR_REG(0xE0);
  187.         LCD_WR_DATA8(0x04);
  188.         LCD_WR_DATA8(0x22);
  189.         LCD_WR_DATA8(0x07);
  190.         LCD_WR_DATA8(0x0A);
  191.         LCD_WR_DATA8(0x2E);
  192.         LCD_WR_DATA8(0x30);
  193.         LCD_WR_DATA8(0x25);
  194.         LCD_WR_DATA8(0x2A);
  195.         LCD_WR_DATA8(0x28);
  196.         LCD_WR_DATA8(0x26);
  197.         LCD_WR_DATA8(0x2E);
  198.         LCD_WR_DATA8(0x3A);
  199.         LCD_WR_DATA8(0x00);
  200.         LCD_WR_DATA8(0x01);
  201.         LCD_WR_DATA8(0x03);
  202.         LCD_WR_DATA8(0x13);
  203.         LCD_WR_REG(0xE1);
  204.         LCD_WR_DATA8(0x04);
  205.         LCD_WR_DATA8(0x16);
  206.         LCD_WR_DATA8(0x06);
  207.         LCD_WR_DATA8(0x0D);
  208.         LCD_WR_DATA8(0x2D);
  209.         LCD_WR_DATA8(0x26);
  210.         LCD_WR_DATA8(0x23);
  211.         LCD_WR_DATA8(0x27);
  212.         LCD_WR_DATA8(0x27);
  213.         LCD_WR_DATA8(0x25);
  214.         LCD_WR_DATA8(0x2D);
  215.         LCD_WR_DATA8(0x3B);
  216.         LCD_WR_DATA8(0x00);
  217.         LCD_WR_DATA8(0x01);
  218.         LCD_WR_DATA8(0x04);
  219.         LCD_WR_DATA8(0x13);
  220.         LCD_WR_REG(0x3A); //65k mode
  221.         LCD_WR_DATA8(0x05);
  222.         LCD_WR_REG(0x29); //Display on
  223. }
main.c
  1. #include "user_config.h"
  2. #include "g32a1xxx_pins.h"
  3. #include "board.h"
  4. #include <stdio.h>
  5. #include "osif.h"
  6. #include "lcd.h"
  7. #include "lcd_init.h"
  8. #include "pic.h"

  9. typedef struct
  10. {
  11.         unsigned char Index[2];
  12.         unsigned char Msk[32];
  13. }typFNT_GB16;

  14. extern const typFNT_GB16 tfont16[];

  15. #define LED_GPIO            GPIOD
  16. #define BLUE_LED_PIN        (0U)
  17. #define RED_LED_PIN         (15U)
  18. #define GREEN_LED_PIN       (16U)

  19. #define WHITE_LED_PIN       (~0x00018001)

  20. /*!
  21. * [url=home.php?mod=space&uid=247401]@brief[/url]   Pins module initialization LED light
  22. */
  23. void PINS_Led_Init()
  24. {
  25.     /* Enable Clock to Port D */
  26.     CLOCK_SYS_ConfigModuleClock(PMD_CLK, NULL);
  27.     /* Set pin mode */
  28.     PINS_SetMuxModeSel(LED_RED_PORT_BASE, LED_RED_PIN, PM_MUX_AS_GPIO);
  29.     PINS_SetMuxModeSel(LED_GREEN_PORT_BASE, LED_GREEN_PIN, PM_MUX_AS_GPIO);
  30.     PINS_SetMuxModeSel(LED_BLUE_PORT_BASE, LED_BLUE_PIN, PM_MUX_AS_GPIO);
  31.     /* Set pin interrupt */
  32.     PINS_SetPinIntSel(LED_RED_PORT_BASE, LED_RED_PIN, PM_DMA_INT_DISABLED);
  33.     PINS_SetPinIntSel(LED_GREEN_PORT_BASE, LED_GREEN_PIN, PM_DMA_INT_DISABLED);
  34.     PINS_SetPinIntSel(LED_BLUE_PORT_BASE, LED_BLUE_PIN, PM_DMA_INT_DISABLED);
  35.     /* GPIO Initialization */
  36.     PINS_SetPins(LED_RED_GPIO_BASE, 1U << LED_RED_PIN);
  37.     PINS_SetPins(LED_GREEN_GPIO_BASE, 1U << LED_GREEN_PIN);
  38.     PINS_SetPins(LED_BLUE_GPIO_BASE, 1U << LED_BLUE_PIN);
  39.     /* Set pin as output */
  40.     PINS_SetPinDir(LED_RED_GPIO_BASE, LED_RED_PIN, 1U);
  41.     PINS_SetPinDir(LED_GREEN_GPIO_BASE, LED_GREEN_PIN, 1U);
  42.     PINS_SetPinDir(LED_BLUE_GPIO_BASE, LED_BLUE_PIN, 1U);
  43. }

  44. void Display_title(void)
  45. {
  46.         LCD_Fill(0,0,LCD_W,LCD_H,LIGHTBLUE);
  47.         LCD_ShowIntNum(8,10,2025,4,BLUE,GREEN,16);
  48.         LCD_ShowChinese(40,10,&tfont16[0],BLUE,GREEN,16,0);
  49.         LCD_ShowChinese(56,10,&tfont16[1],BLUE,GREEN,16,0);
  50.         LCD_ShowChinese(72,10,&tfont16[2],BLUE,GREEN,16,0);
  51.         LCD_ShowChinese(88,10,&tfont16[3],BLUE,GREEN,16,0);
  52.         LCD_ShowChinese(104,10,&tfont16[4],BLUE,GREEN,16,0);
  53.         LCD_ShowChinese(8,30,&tfont16[5],BLUE,GREEN,16,0);
  54.         LCD_ShowChinese(24,30,&tfont16[6],BLUE,GREEN,16,0);
  55.         LCD_ShowChinese(40,30,&tfont16[7],BLUE,GREEN,16,0);
  56.         LCD_ShowChinese(56,30,&tfont16[8],BLUE,GREEN,16,0);
  57.         LCD_ShowString(72,30,"A1465",RED,GREEN,16,0);
  58.         LCD_ShowChinese(8,50,&tfont16[9],BLUE,GREEN,16,0);
  59.         LCD_ShowChinese(24,50,&tfont16[10],BLUE,GREEN,16,0);
  60.         LCD_ShowChinese(40,50,&tfont16[11],BLUE,GREEN,16,0);
  61.         LCD_ShowChinese(56,50,&tfont16[12],BLUE,GREEN,16,0);
  62.         LCD_ShowChinese(72,50,&tfont16[13],BLUE,GREEN,16,0);
  63.         LCD_ShowChinese(88,50,&tfont16[14],BLUE,GREEN,16,0);
  64.         LCD_ShowChinese(104,50,&tfont16[15],BLUE,GREEN,16,0);
  65.         LCD_ShowString(43,140,"2025-01-05",BLUE,GREEN,16,0);
  66.         OSIF_TimeDelay(500);
  67. }

  68. /*!
  69. * [url=home.php?mod=space&uid=247401]@brief[/url]   Main function
  70. */
  71. int main(void)
  72. {
  73.     /* Initialize clock */
  74.     CLOCK_SYS_Init(&g_clockConfig);
  75.     /* led init */
  76.     PINS_Led_Init();
  77.     /* uart init */
  78.     COM_Init();
  79.     /* Initialize LCD */
  80.     LCD_Init();
  81.     OSIF_TimeDelay(200U);
  82.     LCD_Fill(0,0,LCD_W,LCD_H,YELLOW);
  83.     OSIF_TimeDelay(200);
  84.     LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
  85.     PINS_WritePins(LED_GPIO,WHITE_LED_PIN);
  86.     while (1)
  87.     {
  88.                                 PINS_ClrPins(LED_RED_GPIO_BASE, 1U << LED_RED_PIN);
  89.                                 PINS_SetPins(LED_GREEN_GPIO_BASE, 1U << LED_GREEN_PIN);
  90.                                 PINS_SetPins(LED_BLUE_GPIO_BASE, 1U << LED_BLUE_PIN);
  91.                                 OSIF_TimeDelay(200);
  92.                                 PINS_SetPins(LED_RED_GPIO_BASE, 1U << LED_RED_PIN);
  93.                                 PINS_ClrPins(LED_GREEN_GPIO_BASE, 1U << LED_GREEN_PIN);
  94.                                 PINS_SetPins(LED_BLUE_GPIO_BASE, 1U << LED_BLUE_PIN);
  95.                                 OSIF_TimeDelay(200);
  96.                                 PINS_SetPins(LED_RED_GPIO_BASE, 1U << LED_RED_PIN);
  97.                                 PINS_SetPins(LED_GREEN_GPIO_BASE, 1U << LED_GREEN_PIN);
  98.                                 PINS_ClrPins(LED_BLUE_GPIO_BASE, 1U << LED_BLUE_PIN);
  99.                                 OSIF_TimeDelay(200);
  100.                                 PINS_SetPins(LED_RED_GPIO_BASE, 1U << LED_RED_PIN);
  101.                                 PINS_SetPins(LED_GREEN_GPIO_BASE, 1U << LED_GREEN_PIN);
  102.                                 PINS_SetPins(LED_BLUE_GPIO_BASE, 1U << LED_BLUE_PIN);
  103.                                 LCD_ShowPicture(0,0,128,160,gImage_1);
  104.                                 OSIF_TimeDelay(800);
  105.                                 Display_title();
  106.     }
  107. }
五、画图效果
画图采用“Img2Lcd”工具,轻松实现由图片转C代码的处理,至于中文字符的生成,可借助“PCtoLCD2002”工具,如见以下附件,具体使用方法这里不再赘述。
Image2Lcd 2.9.zip (506.51 KB, 下载次数: 2)
PCtoLCD2002.zip (886.17 KB, 下载次数: 2)
使用工具导入图片后设置如下,导出则是C数组,直接调用则行。
极小海毛绒玩偶.png
屏上画出来的效果如下:
画图.png
驱动程序点屏效果展现如下:
点屏.zip (1.16 MB, 下载次数: 2)
点屏.gif
可怜的小弗朗士 发表于 2025-1-7 15:43 | 显示全部楼层
这个极小海的玩偶好可爱
沉浮的茶叶 发表于 2025-1-8 17:15 | 显示全部楼层
这个是软件模拟的吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

1102

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部