查看: 4806|回复: 3

【LCD】段式液晶显示很暗 芯片型号:FM33LG048

[复制链接]

0

主题

1

帖子

54

积分

中级工程师

Rank: 2

积分
54
发表于 2021-5-25 10:28:26 | 显示全部楼层 |阅读模式
#include "lcd.h"

void LcdInit(void)
{
    FL_GPIO_InitTypeDef gpioInitStruction;
    FL_LCD_InitTypeDef lcdInitStruction;

    // GPIO Init
    gpioInitStruction.mode = FL_GPIO_MODE_ANALOG;
    gpioInitStruction.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    gpioInitStruction.pull = FL_DISABLE;
    gpioInitStruction.analogSwitch = FL_DISABLE;

    gpioInitStruction.pin = FL_GPIO_PIN_0 | FL_GPIO_PIN_1 | FL_GPIO_PIN_2 |
        FL_GPIO_PIN_3 | FL_GPIO_PIN_4 ;
    FL_GPIO_Init(GPIOA, &gpioInitStruction);

    gpioInitStruction.pin = FL_GPIO_PIN_4 | FL_GPIO_PIN_5 | FL_GPIO_PIN_6 |
        FL_GPIO_PIN_7 | FL_GPIO_PIN_8 | FL_GPIO_PIN_9 | FL_GPIO_PIN_10 |
        FL_GPIO_PIN_11 | FL_GPIO_PIN_13 | FL_GPIO_PIN_14;
    FL_GPIO_Init(GPIOB, &gpioInitStruction);

    gpioInitStruction.pin = FL_GPIO_PIN_4 | FL_GPIO_PIN_5 | FL_GPIO_PIN_6 |
        FL_GPIO_PIN_7 | FL_GPIO_PIN_8 | FL_GPIO_PIN_9 | FL_GPIO_PIN_10 |
        FL_GPIO_PIN_11 | FL_GPIO_PIN_12;
    FL_GPIO_Init(GPIOC, &gpioInitStruction);

    gpioInitStruction.pin = FL_GPIO_PIN_0 | FL_GPIO_PIN_1 | FL_GPIO_PIN_2 |
        FL_GPIO_PIN_3 | FL_GPIO_PIN_4 | FL_GPIO_PIN_5;
    FL_GPIO_Init(GPIOD, &gpioInitStruction);

    // LCD Init
    lcdInitStruction.biasCurrent         =   FL_LCD_BIAS_CURRENT_HIGH;
    lcdInitStruction.mode                =   FL_LCD_DRIVER_MODE_INNER_RESISTER;
    lcdInitStruction.biasVoltage         =   FL_LCD_BIAS_VOLTAGE_LEVEL15;
    lcdInitStruction.biasMode            =   FL_LCD_BIAS_MODE_3BIAS;
    lcdInitStruction.waveform            =   FL_LCD_WAVEFORM_TYPEA;
    lcdInitStruction.COMxNum             =   FL_LCD_COM_NUM_4COM;
    lcdInitStruction.displayFreq         =   64;
    lcdInitStruction.flickOnTime         =   0;
    lcdInitStruction.flickOffTime        =   0;               
    FL_LCD_Init(LCD, &lcdInitStruction);

    // COM and SEG Init
    FL_LCD_EnableCOMEN(LCD, FL_LCD_COMEN_COM0);
    FL_LCD_EnableCOMEN(LCD, FL_LCD_COMEN_COM1);
    FL_LCD_EnableCOMEN(LCD, FL_LCD_COMEN_COM2);
    FL_LCD_EnableCOMEN(LCD, FL_LCD_COMEN_COM3);

    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG3);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG4);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG5);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG6);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG7);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG8);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG9);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG10);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG11);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG12);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG13);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG14);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG15);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG16);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG17);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG18);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG19);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG20);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG21);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG22);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG23);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG24);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG25);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG26);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG27);
    FL_LCD_EnableSEGEN0(LCD, FL_LCD_SEGEN0_SEG28);   
    FL_LCD_Enable(LCD);
}

void LcdDisplayAll(bool state)
{
    if (state == true)
    {
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG0, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG1, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG2, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG3, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG4, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG5, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG6, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG7, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG8, 0xffffffff);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG9, 0xffffffff);
    }
    else
    {
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG0, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG1, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG2, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG3, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG4, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG5, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG6, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG7, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG8, 0x00000000);
        FL_LCD_WriteData(LCD, FL_LCD_DATA_REG9, 0x00000000);
    }
}

uint32_t dispBuf[10] = {0};

void LcdDisplayRefresh(void)
{
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG0, dispBuf[0]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG1, dispBuf[1]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG2, dispBuf[2]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG3, dispBuf[3]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG4, dispBuf[4]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG5, dispBuf[5]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG6, dispBuf[6]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG7, dispBuf[7]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG8, dispBuf[8]);
    FL_LCD_WriteData(LCD, FL_LCD_DATA_REG9, dispBuf[9]);
}

// true: 点亮; false: 熄灭
void LcdDisplayBIT(uint32_t x, uint32_t y, bool value)
{   
    FL_LCD_4COMDisplay(dispBuf, x - 1, y - 1, value);
    LcdDisplayRefresh();
}


微信图片_20210525102628.jpg
微信图片_20210525102623.jpg
微信图片_20210525102615.jpg
回复

使用道具 举报

155

主题

847

帖子

4665

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4665
发表于 2021-5-25 15:19:13 | 显示全部楼层
这种情况 一般是 某个引脚配错,或者开启了,不该开启的seg_en,
将引脚减少到最小,只保留com 与 一个seg脚 ,seg_en也只开启一个。看看是否正常。如果正常,那就是某个引脚配错了
回复

使用道具 举报

0

主题

1

帖子

54

积分

中级工程师

Rank: 2

积分
54
 楼主| 发表于 2021-5-31 11:54:16 | 显示全部楼层
顾博文 发表于 2021-5-25 15:19
这种情况 一般是 某个引脚配错,或者开启了,不该开启的seg_en,
将引脚减少到最小,只保留com 与 一个seg ...

你好  安照你说的方式测试过了  现象依旧,显示还是很暗!
11.png
回复

使用道具 举报

155

主题

847

帖子

4665

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4665
发表于 2021-6-1 09:12:55 | 显示全部楼层
Better 发表于 2021-5-31 11:54
你好  安照你说的方式测试过了  现象依旧,显示还是很暗!

你确认下这个液晶是不是3V的。这个不应该啊。量下vdd是不是3V,再用示波器量下com与seg。com脚当接示波器探头的地,看看波形是不是 3V,
回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表