温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

STM8L段码屏驱动原理及例程是怎样的

发布时间:2021-12-03 18:21:25 来源:亿速云 阅读:225 作者:柒染 栏目:互联网科技

本篇文章为大家展示了STM8L段码屏驱动原理及例程是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

STM8L段码屏驱动过程如下:

一,根据硬件连接查看DATASHEET设定相关寄存器,即确定了COMx。

二,DATASHEET里COMx对应的RAM地址制作出下表:

STM8L段码屏驱动原理及例程是怎样的

STM8L段码屏驱动原理及例程是怎样的

LCD段码屏厂家提供的资料填到表格中,操作LCD RAM即可。

三,以下两个例子供参考:

1.

void LCD_showLevel(u8 Chan, u8 Level)
{
u8 i, adr, mask;

    barCH1 = Level2Bar[(Level-1)/8+LcdFlashCh2];    
    barCH2 = Level2Bar[(Level-1)/8+LcdFlashCh3];
  if (Chan == 0)
    {
  
        

        for (i=0;i<barCH1;i++)
        {

            LCD->RAM[LCD_Level1[i*2]] |= LCD_Level1[i*2+1];
            
        }    
        
        for (;i<10;i++)
        {

            LCD->RAM[LCD_Level1[i*2]] &= ~(LCD_Level1[i*2+1]);
        }
    
    } else 
    {

            
        
          for (i=0;i<barCH2;i++)
          {
        
            LCD->RAM[LCD_Level2[i*2]] |= (LCD_Level2[i*2+1]);
          }
            
        for (;i<10;i++)
            
            LCD->RAM[LCD_Level2[i*2]] &= ~(LCD_Level2[i*2+1]);
        
    }    
}

2.

void LCD_showNum(u8 Minute)
{
    if (Minute == 0)
    {
        DrawDigit(1,10);                //Draw white space in digit 4
        DrawDigit(2,11);                //Draw "C" in digit 5)
    }
    else if (Minute < 10)
    {                                                    //for minute smaller than 10
        DrawDigit(1,10);                //Draw white space in digit 4
        DrawDigit(2,Minute);        //Draw Minute in digit 5
    }
    else 
    {                                                    //for minute larger than 10
        DrawDigit(1,Minute/10);    //Draw minute in digit 4,5
        DrawDigit(2,Minute%10);    
    }
    OFF_TIME;
    OFF_MIN;
}

void DrawDigit(u8 loc, u8 value)
{
u8 v, i;

    v = DigitSeg[value];

    for (i=0;i<7;i++)
    {
        if (v & 1)
            LCD->RAM[Digits[loc][i*2]] |= Digits[loc][i*2+1];
        else
            LCD->RAM[Digits[loc][i*2]] &= ~Digits[loc][i*2+1];
            
        v = (v >> 1);    
    }
}

const u8 Digits[][] = 
{
  {11,64,  8,4,    4,64,   1,4,   1,8,   8,8,   4,128 },
    {10,32,     7,2,       3,32,   0,2,   0,1,   7,1,   3,16     }, 
  {10,128, 7,8,    3,128,     0,8,   0,4,     7,4,   3,64  }, 
};

//                                0     1     2     3     4     5     6     7     8     9     " "   "C"
u8 DigitSeg[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x00, 0x39 };
数组元素奇数为地址,偶数为值,即要显示的那一位。

上述内容就是STM8L段码屏驱动原理及例程是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI