查看: 146|回复: 0

[GD32F450方案分享] 基于GD32F450开发板的LCD5110屏显示

[复制链接]

89

主题

2

好友

1862

积分

进士

Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 373 天

    连续签到: 1 天

    [LV.9]以坛为家II

    爱板会员勋章 活跃会员勋章

    发表于 2017-4-20 09:14:06 |显示全部楼层
    本帖最后由 jinglixixi 于 2017-4-20 09:23 编辑

    以最小系统面目出现的GD32F450开发板,若不为它配上一个合适的显示器件用起来将是一个比较棘手的事。
    起初是使用老套路将I2C接口的双色OLED屏点亮,尝试了许多次没如意,只得暂时放弃,看起来GD32F450GD32F190相差还是比较大,无奈只好先改为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.3VVDD,无奈只好飞一条电源线以使LCD5110工作,详见下图所示。
    图片1.png


    为使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. }
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|爱板网 |网站地图  

    GMT+8, 2017-6-28 13:20 , Processed in 0.105757 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部