OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4598|回复: 1

段码屏代码解释,看不懂装载函数与buff数组

[复制链接]

6

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2019-9-24
在线时间
69 小时
发表于 2020-7-31 08:38:00 | 显示全部楼层 |阅读模式
3金钱
STC官网上的段码屏驱动程序这部份内容看得不是很明白,求高手费心解释,断码屏原理我是理解的,扫描函数也懂,装载显示这个不明白,还有buff这个数组


/*
MCU PIN        P17   P16   P15  P14 P13  P12  P11  P10  P27  P26  P25  P24   P23  P22  P21  P20
LCD PIN         1     2     3    4   5    6    7    8    9    10   11   12    13   14   15   16
LCD PIN name  SEG11 SEG10 SEG9 SEG8 SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0  COM3 COM2 COM1 COM0
               --    1D    2:   2D   2.   3D   4:   4D   4.   5D   5.   6D   COM3
                           1E    1C    2E   2C   3E   3C   4E   4C   5E   5C   6E   6C        COM2
                           1G    1B    2G   2B   3G   3B   4G   4B   5G   5B   6G   6B             COM1
                           1F    1A    2F   2A   3F   3A   4F   4A   5F   5A   6F   6A                  COM0

                        B7        B6        B5        B4        B3        B2        B1        B0

buff[0]:        --        1D        2:        2D        2.        3D        4:        4D
buff[1]:        1E        1C        2E        2C        3E        3C        4E        4C
buff[2]:        1G        1B        2G        2B        3G        3B        4G        4B
buff[3]:        1F        1A        2F        2A        3F        3A        4F        4A
buff[4]:        4.        5D        5.        6D        --        --        --        --
buff[5]:        5E        5C        6E        6C        --        --        --        --
buff[6]:        5G        5B        6G        6B        --        --        --        --
buff[7]:        5F        5A        6F        6A        --        --        --        --

*/

/****************** 对第1~6数字装载显示函数 ***************************/

u8        code T_LCD_mask[4]  = {~0xc0,~0x30,~0x0c,~0x03};   //1100 0000         0011 0000         0000 1100 0000 0011
u8        code T_LCD_mask4[4] = {~0x40,~0x10,~0x04,~0x01};   //0100 0000   0001 0000   0000 0100 0000 0001

void        LCD_load(u8 n,u8 dat)                //n为第几个数字,为1~6,dat为要显示的数字        10us@22.1184MHZ
{
        u8        i,k;
        u8        *p;

        if((n == 0) || (n > 6))        return;
        i = t_display[dat];

        if(n <= 4)        //1~4
        {
                n--;
                p = LCD_buff;
        }
        else
        {
                n = n - 5;
                p = &LCD_buff[4];
        }

        k = 0;
        if(i & 0x08)        k |= 0x40;                //D
        *p = (*p & T_LCD_mask4[n]) | (k>>2*n);
        p++;

        k = 0;
        if(i & 0x04)        k |= 0x40;                //C
        if(i & 0x10)        k |= 0x80;                //E
        *p = (*p & T_LCD_mask[n]) | (k>>2*n);
        p++;

        k = 0;
        if(i & 0x02)        k |= 0x40;                //B
        if(i & 0x40)        k |= 0x80;                //G
        *p = (*p & T_LCD_mask[n]) | (k>>2*n);
        p++;

        k = 0;
        if(i & 0x01)        k |= 0x40;                //A
        if(i & 0x20)        k |= 0x80;                //F
        *p = (*p & T_LCD_mask[n]) | (k>>2*n);
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2019-2-15
在线时间
29 小时
发表于 2020-8-1 10:56:44 | 显示全部楼层
你这问题说的不清楚,让人家怎么回答?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表