【LCD】段式液晶显示很暗 芯片型号:FM33LG048
#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 = {0};
void LcdDisplayRefresh(void)
{
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG0, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG1, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG2, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG3, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG4, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG5, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG6, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG7, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG8, dispBuf);
FL_LCD_WriteData(LCD, FL_LCD_DATA_REG9, dispBuf);
}
// true: 点亮; false: 熄灭
void LcdDisplayBIT(uint32_t x, uint32_t y, bool value)
{
FL_LCD_4COMDisplay(dispBuf, x - 1, y - 1, value);
LcdDisplayRefresh();
}
这种情况 一般是 某个引脚配错,或者开启了,不该开启的seg_en,
将引脚减少到最小,只保留com 与 一个seg脚 ,seg_en也只开启一个。看看是否正常。如果正常,那就是某个引脚配错了 顾博文 发表于 2021-5-25 15:19
这种情况 一般是 某个引脚配错,或者开启了,不该开启的seg_en,
将引脚减少到最小,只保留com 与 一个seg ...
你好安照你说的方式测试过了现象依旧,显示还是很暗!
Better 发表于 2021-5-31 11:54
你好安照你说的方式测试过了现象依旧,显示还是很暗!
你确认下这个液晶是不是3V的。这个不应该啊。量下vdd是不是3V,再用示波器量下com与seg。com脚当接示波器探头的地,看看波形是不是 3V,
页:
[1]