[综合信息]

华大单片机HC32L136笔段式段码LCD显示

[复制链接]
2305|31
手机看帖
扫描二维码
随时随地手机跟帖
键盘手没手|  楼主 | 2021-1-26 22:58 | 显示全部楼层 |阅读模式
华大单片机LCD简介

华大单片机LCD 控制器是一款适用于单色无源液晶显示器(LCD)的数字控制器/驱动器,以HC32L136K8TA为例,最多具有8 个公用端子(COM)和 40 个区段端子(SEG),用以驱动 160 (4x40)或 288 (8x36)个 LCD 图像元素。其它型号端子的确切数量取决于数据手册中所述的器件引脚。


使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 22:59 | 显示全部楼层
LCD 主要特性
高度灵活的帧速率控制。
支持静态、1/2、1/3、1/4、1/6 和 1/8 占空比。
支持 1/2、1/3 偏置。
多达 16 个寄存器的 LCD 数据 RAM。
可通过软件配置 LCD 的对比度。
3 种驱动波形生成方式
– 内部电阻分压、外部电阻分压,外部电容分压方式
– 可通过软件配置内部电阻分压方式的功耗,从而匹配 LCD 面板所需的电容电荷
支持低功耗模式:LCD 控制器可在 Active、Sleep、DeepSleep 模式下进行显示。
可配置帧中断。
支持 LCD 闪烁功能且可配置多种闪烁频率
未使用的 LCD 区段和公共引脚可配置为数字或模拟功能。

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:00 | 显示全部楼层
9056660102e6540ee4.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:02 | 显示全部楼层
LCD 驱动波形
LCD 支持 5 种占空比(Duty)的驱动波形:静态、1/2、1/3、1/4、1/6 和 1/8,由LCD_CR0.Duty 进行设置。LCD 支持 2 种偏置(Bias)的驱动波形:1/2、1/3,由LCD_CR0.Bias 进行设置。建议的组合方式如下表所示:
1119760102ea602da4.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:07 | 显示全部楼层
LCD Bias 产生电路
LCD 的 Bias 电压具有 3 种来源:内部电阻分压、外部电阻分压、外部电容分压。当选择内部电阻分压时,芯片会自动切换内部的电路以产生符合 Bias 和 Duty 的电压。当选择外部电阻分压或外部电容分压时,需要用户在芯片的外围引脚搭建相关电路。

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:08 | 显示全部楼层
内部电阻模式
内部电阻模式 VLCDH,VLCD1~VLCD3 可以作为 LCD SEG 输出或者 IO 端口使用。内部电阻模式,LCD 的驱动电压由 CR0.Contrast 控制,如下表所示: 5722360103056e241b.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:09 | 显示全部楼层
由于内部电阻驱动方式,无需外部电路支持。当选择内部电阻分压时,芯片会自动切换到内部的电路,这种模式驱动能力较弱。
当选择1/2bias时,大功耗/中功耗/小功耗的电阻分别为 240K/360K/720K;
当选择1/3bias时,大功耗/中功耗/小功耗的电阻分别为 360K/540K/1080K。
通过内部LCD_CR0中的Contrast调整电压使得VLCD电压 = LCD屏电压。

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:09 | 显示全部楼层
54448601030ad2c2ec.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:10 | 显示全部楼层
60453601030dde1d9f.png

使用特权

评论回复
评论
键盘手没手 2021-1-26 23:11 回复TA
注意: – Rx 为可调电阻,用于调节 LCD 显示对比度。 – 根据使用 LCD 屏幕选择合适的电阻 R。 
键盘手没手|  楼主 | 2021-1-26 23:12 | 显示全部楼层
67947601031291a24f.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:13 | 显示全部楼层
LCD显示模式
华大单片机根据把SEG或COM放在寄存器的方式不同分为显示模式0(MODE = 0)和显示模式1(MODE =1)。下面都以1/4Duty为例列出两种显示模式。

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:14 | 显示全部楼层
955916010318d38458.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:15 | 显示全部楼层
92038601031d751ec7.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:16 | 显示全部楼层
LCD驱动讲解
下面以芯缘意码HC32LFx3x-STK-V2.0开发板为例,讲解如何使用华大MCU HC32L136K8TA来驱动显示LCD段码屏。 584576010323f41eae.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:17 | 显示全部楼层
LCD屏真值表 356446010329a130fa.png
QQ截图20200819233452.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:21 | 显示全部楼层
开发板接口电路 279996010337b248c4.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:24 | 显示全部楼层
管脚配置代码

/********************************************************************************
** \brief  初始化外部GPIO引脚
**
** \return 无
******************************************************************************/
void App_PortCfg(void)
{
    Gpio_SetAnalogMode(GpioPortA, GpioPin9);  //COM0
    Gpio_SetAnalogMode(GpioPortA, GpioPin10); //COM1
    Gpio_SetAnalogMode(GpioPortA, GpioPin11); //COM2
    Gpio_SetAnalogMode(GpioPortA, GpioPin12); //COM3   

    Gpio_SetAnalogMode(GpioPortA, GpioPin8);  //SEG0
    Gpio_SetAnalogMode(GpioPortC, GpioPin9);  //SEG1
    Gpio_SetAnalogMode(GpioPortC, GpioPin8);  //SEG2
    Gpio_SetAnalogMode(GpioPortC, GpioPin7);  //SEG3
    Gpio_SetAnalogMode(GpioPortC, GpioPin6);  //SEG4
    Gpio_SetAnalogMode(GpioPortB, GpioPin15); //SEG5
    Gpio_SetAnalogMode(GpioPortB, GpioPin14); //SEG6
    Gpio_SetAnalogMode(GpioPortB, GpioPin13); //SEG7   
}

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:25 | 显示全部楼层
LCD屏参数
486876010347ea9466.png

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:28 | 显示全部楼层
/********************************************************************************
** \brief  配置LCD
**
** \return 无
******************************************************************************/
void App_LcdCfg(void)
{
    stc_lcd_cfg_t LcdInitStruct;
    stc_lcd_segcom_t LcdSegCom;

    LcdSegCom.u32Seg0_31 = 0xffffff00;                              ///< 配置LCD_POEN0寄存器 开启SEG0~SEG7
    LcdSegCom.stc_seg32_51_com0_8_t.seg32_51_com0_8 = 0xffffffff;   ///< 初始化LCD_POEN1寄存器 全部关闭输出端口
    LcdSegCom.stc_seg32_51_com0_8_t.segcom_bit.Com0_3 = 0;          ///< 使能COM0~COM3
    LcdSegCom.stc_seg32_51_com0_8_t.segcom_bit.Mux = 1;             ///< Mux=0,Seg32_35=0,BSEL=1表示:选择外部电容工作模式,内部电阻断路
    LcdSegCom.stc_seg32_51_com0_8_t.segcom_bit.Seg32_35 = 0xf;
    Lcd_SetSegCom(&LcdSegCom);                                      ///< LCD COMSEG端口配置

    LcdInitStruct.LcdBiasSrc = LcdExtCap;                           ///< 电容分压模式,需要外部电路配合
    LcdInitStruct.LcdDuty = LcdDuty4;                               ///< 1/4duty
    LcdInitStruct.LcdBias = LcdBias3;                               ///< 1/3 BIAS
    LcdInitStruct.LcdCpClk = LcdClk2k;                              ///< 电压泵时钟频率选择2kHz
    LcdInitStruct.LcdScanClk = LcdClk128hz;                         ///< LCD扫描频率选择128Hz
    LcdInitStruct.LcdMode = LcdMode0;                               ///< 选择模式0
    LcdInitStruct.LcdClkSrc = LcdRCL;                               ///< LCD时钟选择RCL
    LcdInitStruct.LcdEn   = LcdEnable;                              ///< 使能LCD模块
    Lcd_Init(&LcdInitStruct);
}

LCD参数配置

使用特权

评论回复
键盘手没手|  楼主 | 2021-1-26 23:33 | 显示全部楼层
建立LCD映射表
我们可以根据屏的真值表来完成笔段定义,把表中的PIN5和PIN6定义为一个字节,PIN5为低位。其它PIN定义方法相同。宏定义代码如下:
#define LCDSEG_A 0x01
#define LCDSEG_B 0x10
#define LCDSEG_C 0x40
#define LCDSEG_D 0x80
#define LCDSEG_E 0x04
#define LCDSEG_F 0x02
#define LCDSEG_G 0x20
#define LCDPOINT1P 0x08
#define LCDPOINT2P 0x08
#define LCDPOINT3P 0x08
#define LCDPOINT4P 0x08

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

1082

帖子

0

粉丝