在 灵动微电子MM32 EVB-L0136 开发板 上,提供了一块SLCD屏,具体如下:
image.png

官方也提供了演示程序slcd_basic,能够按照段位进行显示,效果如下:
image.png
image.png

然而,如果需要实际显示数字的话,需要对SLCD屏的显示原理有一定的了解,然后去细致的操控。
这对很多同学而言,都有点点难度。不少同学望着一块大好的SLCD屏而不能马上投入应用,因此扼腕叹息。

经过研究灵动微电子曾经流传过的旧版代码,提取了其中针对MM32 EVB-L0136中SLCD部分的代码,并适配到新的代码架构中,达到了如下的显示效果:
image.png

上图中,各个部分的显示,直接调用函数,告知要显示的数字或者符号,就能直接显示,相关的调用如下:
image.png

相关的代码,已经开源到了:https://gitee.com/honestqiao/MM32_SLCD_ADVANCE
代码的具体结构如下:
image.png

基础的代码,来自于slcd_basic,然后引入了SLCD/slcd.c、SLCD/slcd.h即可。
引入后,新的main.c如下:【因为插入代码没有格式,无奈只好贴图了,具体请查看开源的代码】
image.png

上述代码中,main()部分为:
/*
  • * Functions.
  • */
  • int main(void)
  • {
  •     // 开发板初始化
  •     BOARD_Init();
  •     // SLCD初始化
  •     app_slcd_init();
  •     // SLCD清屏
  •     LCD_Clear();
  •     // 大数字区域显示
  •     for(uint8_t i=0;i<6;i++) {
  •         LCD_DisplayNumber1(i, '0'+i, 1);
  •         app_delay(100u);
  •     }
  •     // 小数字区域显示
  •     for(uint8_t i=0;i<4;i++) {
  •         LCD_DisplayNumber2(i, '0'+i, 1);
  •         app_delay(100u);
  •     }
  •     // 符号显示
  •     for(uint8_t i=0;i<10;i++) {
  •         LCD_DisplayUnit(i, 1);
  •         app_delay(100u);
  •     }
  •     uint32_t c = 0;
  •     while (1)
  •     {
  •         // SLCD段码位显示测试
  •         // app_slcd_display();
  •         // SLCD显示整体测试
  •         // LCD_DisplayDataUpdate();
  •         // SLCD大数字显示
  •         LCD_DisplayNumbers1(c%1000000);
  •         // SLCD小数字显示
  •         LCD_DisplayNumbers2(c%10000);
  •         // 符号显示
  •         LCD_DisplayUnit(c%10, c/10%2);
  •         // 延时
  •         app_delay(100u);
  •         c++;
  •     }
  • }
  • 复制代码
    在上述代码中,app_slcd_init()app_delay()来自slacd_basic,我们可以直接调用。
    LCD_Clear()、LCD_DisplayNumber1()、LCD_DisplayNumber2()、LCD_DisplayUnit()、LCD_DisplayNumbers1()、LCD_DisplayNumbers2()、LCD_DisplayDataUpdate()则由新加入的SLCD库部分提供。
    通过上述调用,我们就能够在代码中,轻松的控制SLCD屏了,以下各个部分都能控制显示:
    image.png
    image.png

    另外,在数字显示区域,还能够显示部分字母,但是受限于7段液晶,只能显示部分字母,具体如下:
    image.png

    一点小小遗憾的是,在上述官方手册关于引脚映射途中,有部分引脚是没有使用的,所以有部分字符,板子上的SLCD是没有的。
    image.png

    运行提供的演示代码,最终效果如下:

    • slcd 屏清屏
    • 逐字点亮

      • 大数字区域,从左至右,从0递增到5,逐字点亮,同时点亮对应的小数点
      • 小数字区域,从左至右,从0递增到3,逐字点亮,同时点亮对应的小数点
      • 各符号依次点亮,一共10个

    • 循环显示

      • 大数字区域,从0开始自增显示,小数字区域,同步从0开始自增显示
      • 数字区域显示的同时,符号依次点亮,然后依次熄灭
    实测视频如下: