关于段码液晶的扫描程序部分,求解答

2019-07-15 13:20发布

u8        LCD_buff[8];
u8        scan_index;

/****************** LCD段码扫描函数 ***************************/
u8        code T_COM[4]={0x08,0x04,0x02,0x01};

void        LCD_scan(void)        //5us @22.1184MHZ
{
        u8        j;

        j = scan_index >> 1;
        P2n_pure_input(0x0f);                //全部COM输出高阻, COM为中点电压
        if(scan_index & 1)                                //反相扫描
        {
                P1 = ~LCD_buff[j];                        //
                P2 = ~(LCD_buff[j|4] & 0xf0);
        }
        else                                                        //正相扫描
        {
                P1 = LCD_buff[j];
                P2 = LCD_buff[j|4] & 0xf0;
        }
        P2n_push_pull(T_COM[j]);                //某个COM设置为推挽输出
        if(++scan_index >= 8)        scan_index = 0;

}
/*
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
                         --    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        --        --        --        --

*/
以上是段码液晶的段码扫描函数部分,我想问的是LCD_buff这个数组如何在扫描后变成buff[0~7]这几个数组并能分别控制各个段码的,有点想不明白

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
小雄322
1楼-- · 2019-07-15 13:48
LCD_buff应该是有初始化的,每次从LCD_buff[j]取值赋予P1口,LCD_buff[j|4]取值赋予P2口(低四位清0) 最佳答案
PCB41640303
2楼-- · 2019-07-15 17:59
if(scan_index & 1)                                //反相扫描
这一句更不明白,scan_index这个变量初值是什么?

一周热门 更多>