查看: 3943|回复: 0

基于GD32F450开发板的TFT串口屏图像显示

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2017-5-26 09:01:07 | 显示全部楼层 |阅读模式
    分享到:
    在实现LCD5110屏显示之后,本打算完成I2C接口的OLED屏显示,无奈经多次测试似乎在GD32F450上无法实现,故只得进行SPI接口的2.2TFT彩色屏测试。
    为了便于连线,TFT屏与GD32F450开发板的连接是通过Arduino接口,相应的连接关系如下:
    CS -- PE2    REST -- PE5    DC -- PE6      SDI -- PE4     SCK -- PD0    LED+ -- PD1
    GND可直接从Arduino接口取用,而稍有遗憾的是3.3V 电源则要从其位置引用。
    在相应引脚设置为输出模式的情况下,其输出高低电平的语句定义如下:  
    1. #define LCD_CS_High() gpio_bit_set(GPIOE, GPIO_PIN_2);
    2. #define LCD_CS_Low()  gpio_bit_reset(GPIOE, GPIO_PIN_2);

    3. #define LCD_REST_High() gpio_bit_set(GPIOE, GPIO_PIN_5);
    4. #define LCD_REST_Low()  gpio_bit_reset(GPIOE, GPIO_PIN_5);

    5. #define LCD_DC_High() gpio_bit_set(GPIOE, GPIO_PIN_6);
    6. #define LCD_DC_Low()  gpio_bit_reset(GPIOE, GPIO_PIN_6);

    7. #define LCD_SDI_High() gpio_bit_set(GPIOE, GPIO_PIN_4);
    8. #define LCD_SDI_Low()  gpio_bit_reset(GPIOE, GPIO_PIN_4);

    9. #define LCD_SCK_High() gpio_bit_set(GPIOD, GPIO_PIN_0);
    10. #define LCD_SCK_Low()  gpio_bit_reset(GPIOD, GPIO_PIN_0);

    11. #define LCD_LED_High() gpio_bit_set(GPIOD, GPIO_PIN_1);
    12. #define LCD_LED_Low()  gpio_bit_reset(GPIOD, GPIO_PIN_1);
    复制代码
    在其它函数基本不变的情况下,即可实现TFT屏的显示驱动。
    为实现图像的显示,可将图像数据存放到数组中以供读取,实现的显示效果如图所示。
    图片1.png
    对应的引脚配置函数为:
    1. void SPI_CONFIG()
    2. {
    3. rcu_periph_clock_enable(RCU_GPIOE);
    4. gpio_mode_set          (GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,   GPIO_PIN_2| GPIO_PIN_5| GPIO_PIN_6| GPIO_PIN_4);
    5. gpio_output_options_set(GPIOE, GPIO_OTYPE_PP,    GPIO_OSPEED_50MHZ,GPIO_PIN_2| GPIO_PIN_5| GPIO_PIN_6| GPIO_PIN_4);
    6. rcu_periph_clock_enable(RCU_GPIOD);
    7. gpio_mode_set          (GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,   GPIO_PIN_0| GPIO_PIN_1);
    8. gpio_output_options_set(GPIOD, GPIO_OTYPE_PP,    GPIO_OSPEED_50MHZ,GPIO_PIN_0| GPIO_PIN_1);
    9. GPIO_BOP(GPIOD) = GPIO_PIN_1;
    10.         rcu_periph_clock_enable(RCU_GPIOB);
    11. gpio_mode_set          (GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_NONE,   GPIO_PIN_14);
    12. gpio_output_options_set(GPIOB, GPIO_OTYPE_PP,   GPIO_OSPEED_50MHZ, GPIO_PIN_14);
    13. }
    复制代码
    初始化函数为:
    1. void Lcd_Init(void)
    2. {   
    3. LCD_REST_Low();
    4. delay_1ms(20);   
    5. LCD_REST_High();
    6. delay_1ms(20);
    7.     LCD_CS_Low();  
    8. LCD_WR_REG(0xCB);   
    9.     LCD_WR_DATA8(0x39);
    10.     LCD_WR_DATA8(0x2C);
    11.     LCD_WR_DATA8(0x00);
    12.     LCD_WR_DATA8(0x34);
    13.     LCD_WR_DATA8(0x02);
    14.     LCD_WR_REG(0xCF);  
    15.     LCD_WR_DATA8(0x00);
    16.     LCD_WR_DATA8(0XC1);
    17.     LCD_WR_DATA8(0X30);
    18.     LCD_WR_REG(0xE8);  
    19.     LCD_WR_DATA8(0x85);
    20.     LCD_WR_DATA8(0x00);
    21.     LCD_WR_DATA8(0x78);
    22.     LCD_WR_REG(0xEA);  
    23.     LCD_WR_DATA8(0x00);
    24.     LCD_WR_DATA8(0x00);
    25.     LCD_WR_REG(0xED);  
    26.     LCD_WR_DATA8(0x64);
    27.     LCD_WR_DATA8(0x03);
    28.     LCD_WR_DATA8(0X12);
    29.     LCD_WR_DATA8(0X81);
    30.     LCD_WR_REG(0xF7);  
    31.     LCD_WR_DATA8(0x20);
    32.     LCD_WR_REG(0xC0);      
    33.     LCD_WR_DATA8(0x23);   
    34.     LCD_WR_REG(0xC1);      
    35.     LCD_WR_DATA8(0x10);   
    36.     LCD_WR_REG(0xC5);      
    37.     LCD_WR_DATA8(0x3e);   
    38.     LCD_WR_DATA8(0x28);
    39.     LCD_WR_REG(0xC7);      
    40.     LCD_WR_DATA8(0x86);   
    41.     LCD_WR_REG(0x36);      
    42.     LCD_WR_DATA8(0x48);   
    43.     LCD_WR_REG(0x3A);   
    44.     LCD_WR_DATA8(0x55);
    45.     LCD_WR_REG(0xB1);   
    46.     LCD_WR_DATA8(0x00);  
    47.     LCD_WR_DATA8(0x18);
    48.     LCD_WR_REG(0xB6);     
    49.     LCD_WR_DATA8(0x08);
    50.     LCD_WR_DATA8(0x82);
    51.     LCD_WR_DATA8(0x27);  
    52.     LCD_WR_REG(0xF2);     
    53.     LCD_WR_DATA8(0x00);
    54.     LCD_WR_REG(0x26);     
    55.     LCD_WR_DATA8(0x01);
    56.     LCD_WR_REG(0xE0);     
    57.     LCD_WR_DATA8(0x0F);
    58.     LCD_WR_DATA8(0x31);
    59.     LCD_WR_DATA8(0x2B);
    60.     LCD_WR_DATA8(0x0C);
    61.     LCD_WR_DATA8(0x0E);
    62.     LCD_WR_DATA8(0x08);
    63.     LCD_WR_DATA8(0x4E);
    64.     LCD_WR_DATA8(0xF1);
    65.     LCD_WR_DATA8(0x37);
    66.     LCD_WR_DATA8(0x07);
    67.     LCD_WR_DATA8(0x10);
    68.     LCD_WR_DATA8(0x03);
    69.     LCD_WR_DATA8(0x0E);
    70.     LCD_WR_DATA8(0x09);
    71.     LCD_WR_DATA8(0x00);
    72.     LCD_WR_REG(0XE1);   
    73.     LCD_WR_DATA8(0x00);
    74.     LCD_WR_DATA8(0x0E);
    75.     LCD_WR_DATA8(0x14);
    76.     LCD_WR_DATA8(0x03);
    77.     LCD_WR_DATA8(0x11);
    78.     LCD_WR_DATA8(0x07);
    79.     LCD_WR_DATA8(0x31);
    80.     LCD_WR_DATA8(0xC1);
    81.     LCD_WR_DATA8(0x48);
    82.     LCD_WR_DATA8(0x08);
    83.     LCD_WR_DATA8(0x0F);
    84.     LCD_WR_DATA8(0x0C);
    85.     LCD_WR_DATA8(0x31);
    86.     LCD_WR_DATA8(0x36);
    87.     LCD_WR_DATA8(0x0F);
    88.     LCD_WR_REG(0x11);     
    89.     delay_1ms(120);
    90.     LCD_WR_REG(0x29);     
    91.     LCD_WR_REG(0x2c);
    92. }
    复制代码
    图像显示函数为:
    1. void show_pic(const unsigned char *p)
    2. {
    3. int i,j;
    4. unsigned char picH,picL;
    5.     Address_set(0,0,LCD_W-1,LCD_H-1);
    6. for(i=0;i<240;i++)
    7. {
    8.   for(j=0;j<320;j++)
    9.   {
    10.   picH=*p++;
    11.   picL=*p++;
    12.   LCD_WR_DATA8(picH);
    13.   LCD_WR_DATA8(picL);
    14.   }
    15.   }
    16. }
    复制代码
    主函数为:
    1. int main(void)
    2. {
    3. systick_config();
    4. SPI_CONFIG();
    5. Lcd_Init();
    6. show_pic(gImage_123);
    7. while (1);
    8. }
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 20:12 , Processed in 0.125983 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.