| 开发板集成了SLCD,这种屏其实在日常的计算器、空调遥控器等应用方面比较常见,多应用于低功耗产品。不过在此之前并不知道是叫“SLCD屏”,所谓SLCD即“拼接专用液晶屏”,SLCD是液晶(LCD)的一个高档衍生品种,采用世界最先进的工业级的液晶面板,使用寿命长达6万小时。SLCD是一个完整的拼接显示单元,既能单独作为显示器使用,又可以拼接成超大屏幕使用。实现功能包括:单屏分割显示、单屏单独显示、任意组合显示、全屏拼接、竖屏显示,图像边框可选补偿或遮盖等。 灵动微MM32L0130系列MCU具有片上SLCD液晶显示控制器,SLCD驱动器是用于单色无源液晶显示器(SLCD)的数字驱动器,具有多达8个公共端和多达63个分段端,SLCD引脚最多为64个,因此最多可驱动240(60x4)或448(56x8)个段码。MM32L0136C7P板上SLCD特性如下:
 • 可驱动40x4或36x8个段码
 • 任意LCD引脚可配置成为COM或SEG功能
 • 内置电荷泵,在电源电压下降时依然保持液晶屏清晰
 • 支持静态、1/2、1/3、1/4、1/6和1/8占空比
 • 可配置1/2、1/3和1/4偏压
 • 对比度可调
 • 显示帧率灵活控制
 • 内置16*32bit显示数据寄存器,用于存储显示数据
 • 支持闪烁功能,可选择闪烁1~8个段码或全部段码,频率0.5Hz/1Hz/2Hz/4Hz可配
 • 可在除关机模式以外的所有低功耗模式下使用
 SLCD驱动模块系统框图如下:
 
   配置显示数据寄存器,官方给出如下示意图
 
   
   开发板上的SLCD的引脚映射图如下,实验的效果正如图中所注明的,没用到的字符不会被显现。
 
   测试一下SLCD屏的字符显示,实现计数累计,字符循环显示效果,部分代码如下:
 
 void slcd_test(void)
{
    slcd_init();
    while(1) 
      {
        LCD_DisplayDataUpdate();
        DELAY_Ms(10);
       }
}
void slcd_init(void)
{
    u32 slcd_clk_source_freq;
    SLCD_InitTypeDef slcd_struct;
    SLCD_Prescaler_TypeDef pre_value = SLCD_Prescaler_1;
    SLCD_Divider_TypeDef   div_value = SLCD_Divider_16;
    RCC_APB1PeriphClockCmd(RCC_APB1ENR_PWR, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1ENR_BKP, ENABLE); 
    if(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) {
        RCC_BackupResetCmd(ENABLE);
        RCC_BackupResetCmd(DISABLE);
        PWR_BackupAccessCmd(ENABLE);
        RCC_LSEConfig(RCC_LSE_OFF);
    }
    else {
        PWR_BackupAccessCmd(ENABLE); 
    }
    RCC_SLCD_ClockCmd(SLCD, ENABLE); 
    SLCD_DeInit();
工程编译完成后,下载到开发板中后,SLCD屏上显示数字不断累加,左上角显示四位整数值。void LCD_Clear(void)
{
    SLCD->DR0  = 0;
    SLCD->DR1  = 0;
    SLCD->DR2  = 0;
    SLCD->DR3  = 0;
    SLCD->DR4  = 0;
    SLCD->DR5  = 0;
    SLCD->DR6  = 0;
    SLCD->DR7  = 0;
    SLCD->DR8  = 0;
    SLCD->DR9  = 0;
    SLCD->DR10 = 0;
    SLCD->DR11 = 0;
    SLCD->DR12 = 0;
    SLCD->DR13 = 0;
    SLCD->DR14 = 0;
    SLCD->DR15 = 0;
}
  此次分享就到这儿了,非常感谢坛友提供的参考资料,后续有时间再深入探究SLCD的实现原理,咱们后会有期。
 
   
 |