819|6

1280

帖子

0

资源

纯净的硅(高级)

【GD32L233C-START测评】 LCD5110屏的显示驱动 [复制链接]

前面介绍过I2C接口的OLED屏显示驱动,这次介绍的是SPI接口的显示屏驱动,该显示屏是一款用用于诺基亚手机的显示屏LCD5110,该显示屏的显示效果如图1和图2所示。

image-20220412131321-1.png  

图1显示效果

image-20220412131322-2.png  

图2显示效果

该显示屏与开发板的连接关系为:

CLK--- PB10

DIN ---PB11

DC --- PB13

RST ---PB14

CS ---PB15

其引脚输出高低电平的语句定义为:

#define LCD_CLK_L  gpio_bit_resset(GPIOB, GPIO_PIN_10)

#define LCD_CLK_H  gpio_bit_set(GPIOB, GPIO_PIN_10)

#define LCD_DIN_L  gpio_bit_reset(GPIOB, GPIO_PIN_11)

#define LCD_DIN_H  gpio_bit_set(GPIOB, GPIO_PIN_11)

#define LCD_DC_L   gpio_bit_reset(GPIOB, GPIO_PIN_13)

#define LCD_DC_H   gpio_bit_set(GPIOB, GPIO_PIN_13)

#define LCD_RST_L  gpio_bit_reset(GPIOB, GPIO_PIN_14)

#define LCD_RST_H  gpio_bit_set(GPIOB, GPIO_PIN_14)

#define LCD_CS_L   gpio_bit_reset(GPIOB, GPIO_PIN_15)

#define LCD_CS_H   gpio_bit_set(GPIOB, GPIO_PIN_15)

 

显示屏的初始化函数为:

void LCD5110_Init(void)
{
    delay_1ms(800);
    LCD_reset_hard;
    LCD_write_cmd(0x21);
    LCD_write_cmd(0x06);
    LCD_write_cmd(0x13);
    LCD_write_cmd(0xc8);
    LCD_write_cmd(0x20);
    LCD_write_cmd(0x0c);
    LCD_write_cmd(Y_Page_Addr);
    LCD_write_cmd(X_Col_Addr);
    LCD_clr_scr();
}

实现字节数据发送的函数为:

void LCD_write_byte(unsigned char wbyte, unsigned char dat_cmd)
{
    unsigned char i;
    LCD_CS_L;
    if(dat_cmd)
    {
        LCD_DC_H;
    }
    else
    {
        LCD_DC_L;
    }
    for(i = 8; i; i--)
    {
        if(wbyte & 0x80)
        {
            LCD_DIN_H;
        }
        else
        {
            LCD_DIN_L;
        }
        Delay_us(2);
        LCD_CLK_L;
        wbyte <<= 1;
        Delay_us(2);
        LCD_CLK_H;
    }
    LCD_CS_H;
}

 

清除显示屏的函数为:

void LCD_clr_scr(void)
{
    unsigned int i;
    LCD_write_cmd(X_Col_Addr);
    LCD_write_cmd(Y_Page_Addr);
    for(i = 504; i; i--) LCD_write_dat(0x00);
}

 

字符显示函数为:

void LCD_printc(unsigned char x, unsigned char y, unsigned char c_dat)
{
    unsigned char i, j;
    c_dat -= 32;
    x <<= 3;
    y <<= 1;
    for(j = 0; j < 2; j++)
    {
        LCD_pos_byte(x, (y + j));
        for(i = 0; i < 8; i++)
        LCD_write_dat(Font_code[c_dat][8 * j + i]);
    }
}

 

字符串的显示函数为:

void LCD_prints(unsigned char x, unsigned char y, unsigned char *s_dat)
{
    while(*s_dat && x < 10)
    {
        LCD_printc(x++, y, *s_dat);
        s_dat++;
    }
}

 

实现图示效果的主程序为:

int main(void)
{
         rcu_periph_clock_enable(RCU_GPIOB);
         gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_10 | GPIO_PIN_11| GPIO_PIN_13| GPIO_PIN_14| GPIO_PIN_15);
         gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10 | GPIO_PIN_11| GPIO_PIN_13| GPIO_PIN_14| GPIO_PIN_15);
         delay_1ms(500);
         LCD5110_Init();
         LCD_prints(0,0,"GD32L233C");
         LCD_prints(0,1,"LCD5110 ");
         LCD_prints(0,2,"jinglixixi");
         while(1);
}

 

此帖出自GD32 MCU论坛

回复

1409

帖子

3

资源

版主

这屏5年前我还有几块,在吃灰,想不到楼主也有呀,看来南征少场多年的老将呀!

点评

哈哈,暴露履历了。不过有了迪文屏后在接触它们的机会不多了。  详情 回复 发表于 2022-4-12 20:30

回复

1271

帖子

0

资源

版主

我也想说和楼上一样的话,这个屏幕是我在大学的时候用的,哈哈,记得好像是诺基亚某款手机屏幕。

点评

逐渐都是时代的标志了  详情 回复 发表于 2022-4-12 20:35

回复

1280

帖子

0

资源

纯净的硅(高级)

lugl4313820 发表于 2022-4-12 14:00 这屏5年前我还有几块,在吃灰,想不到楼主也有呀,看来南征少场多年的老将呀!

哈哈,暴露履历了。不过有了迪文屏后在接触它们的机会不多了。


回复

1280

帖子

0

资源

纯净的硅(高级)

wangerxian 发表于 2022-4-12 18:19 我也想说和楼上一样的话,这个屏幕是我在大学的时候用的,哈哈,记得好像是诺基亚某款手机屏幕。

逐渐都是时代的标志了


回复

1409

帖子

3

资源

版主

很高兴看到你们,还在单片机工作,中国有你们,有希望呀。

点评

一起努力!!!  详情 回复 发表于 2022-4-13 00:34

回复

1280

帖子

0

资源

纯净的硅(高级)

lugl4313820 发表于 2022-4-12 20:55 很高兴看到你们,还在单片机工作,中国有你们,有希望呀。

一起努力!!!


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

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/8 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表