微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 基于GD32F450开发板的LCD5110屏显示

基于GD32F450开发板的LCD5110屏显示

时间:10-02 整理:3721RD 点击:

以最小系统面目出现的GD32F450开发板,若不为它配上一个合适的显示器件用起来将是一个比较棘手的事。

起初是使用老套路将I2C接口的双色OLED屏点亮,尝试了许多次没如意,只得暂时放弃,看起来GD32F450与GD32F190相差还是比较大,无奈只好先改为LCD5110屏。

LCD5110屏还是比较好用的,且大家用的也比较多,具有实用价值。为了减少连线,这里采用的方式比较简便,就是直接将LCD5110屏插入开发板的插排上,以使LCD5110屏的引脚与GD32F450建立如下的连接:

2--GND--GND    3--SCE--PE2    4--RESET--PE5     5--D/C--PE6    6--SDIN--PE4

7--SCLK--PD0    8--LED--PD1


令人吐槽的是为什么宁愿空出一个引脚也不在该位置提供一个3.3V的VDD,无奈只好飞一条电源线以使LCD5110工作,详见下图所示。


为使LCD5110正常运行,相应的引脚输出高、低电平的定义如下:

  1. #define sce_1 gpio_bit_set(GPIOE, GPIO_PIN_2);
  2. #define sce_0 gpio_bit_reset(GPIOE, GPIO_PIN_2);

  3. #define dc_1 gpio_bit_set(GPIOE, GPIO_PIN_6);
  4. #define dc_0 gpio_bit_reset(GPIOE, GPIO_PIN_6);

  5. #define RST_1 gpio_bit_set(GPIOE, GPIO_PIN_5);
  6. #define RST_0 gpio_bit_reset(GPIOE, GPIO_PIN_5);

  7. #define LCD_SCLK_1 gpio_bit_set(GPIOD, GPIO_PIN_0);
  8. #define LCD_SCLK_0 gpio_bit_reset(GPIOD, GPIO_PIN_0);

  9. #define LCD_SDIN_1 gpio_bit_set(GPIOE, GPIO_PIN_4);
  10. #define LCD_SDIN_0 gpio_bit_reset(GPIOE, GPIO_PIN_4);

复制代码

对引脚的配置函数如下:

  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.         RST_0;
  11.         delay(100);
  12.         RST_1;
  13.         delay(100);
  14.         RST_0;
  15.         delay(100);
  16.         RST_1;
  17.         delay(100);
  18. }

复制代码

对应的初始化函数如下:

  1. void LCD_init(void)
  2. {
  3. LCD_write_byte(0x21,0);
  4. LCD_write_byte(0xc3,0);
  5.     LCD_write_byte(0x10, 0);
  6. LCD_write_byte(0x20,0);
  7. LCD_write_byte(0x0C,0);
  8. LCD_clear();
  9. }

复制代码

在字符库及相关函数的配合下,使用如下的主函数即可得到图示的显示效果。

  1. int main(void)
  2. {
  3. SPI_CONFIG();
  4. LCD_init();
  5. LCD_write_english_string(0,0,"GD32 Colibri- ",0);
  6. LCD_write_english_string(0,1," - F450VE",0);
  7. LCD_write_english_string(0,3,"ARM Cortex-M4",0);
  8. LCD_write_english_string(0,5,"  2017.4.20",0);
  9. LED_Init();
  10. rcu_periph_clock_enable(RCU_GPIOB);
  11. gpio_mode_set  (GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,   GPIO_PIN_4);
  12. gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_4);         GPIO_BOP(GPIOB) = GPIO_PIN_4;
  13.            while (1);
  14. }

复制代码


先收藏了  感谢小编分享  为以后需要做准备

深圳万达行电子,专业生产整流二极管以及整流桥堆,QQ2471806688,欢迎咨询下单

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top