⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdshow.c

📁 数控电源的液晶显示
💻 C
📖 第 1 页 / 共 2 页
字号:
    dis_cls();


    dis_one_char(0,0,'5',0); //5.  版本信息
    dis_one_char(0,1,'.',0);
    dis_one_char(0,2,0x7f,1);
    dis_one_char(0,3,0x7f,1);
    dis_one_zi(0,2,x17,0,1);
    dis_one_zi(0,3,x18,0,1);
    dis_one_zi(0,4,x19,0,1);
    dis_one_zi(0,5,x20,0,1);
    dis_one_char(0,12,0x7f,1);
    dis_one_char(0,13,0x7f,1);
    dis_one_char(0,14,0x7f,1);
    dis_one_char(0,15,0x7f,1);

    dis_one_char(1,0,'6',1); //6.退         出
    dis_one_char(1,1,'.',1);


    dis_one_zi(1,2,x21,1,1);
    dis_one_zi(1,3,x22,1,1);
    dis_one_zi(1,4,x11,1,1);
    dis_one_zi(1,5,x12,1,1);

 

}

void d6(void)
{
    dis_cls();
    dis_one_char(0,0,'5',1); //5.软件版本信息
    dis_one_char(0,1,'.',1);

    dis_one_zi(0,2,x17,1,1);
    dis_one_zi(0,3,x18,1,1);
    dis_one_zi(0,4,x19,1,1);
    dis_one_zi(0,5,x20,1,1);


    dis_one_char(1,0,'6',0); //6.退         出
    dis_one_char(1,1,'.',0);
    dis_one_char(1,2,0x7f,1);
    dis_one_char(1,3,0x7f,1);
    dis_one_zi(1,2,x21,0,1);
    dis_one_zi(1,3,x22,0,1);
    dis_one_zi(1,4,x11,0,1);
    dis_one_zi(1,5,x12,0,1);
    dis_one_char(1,12,0x7f,1);
    dis_one_char(1,13,0x7f,1);
    dis_one_char(1,14,0x7f,1);
    dis_one_char(1,15,0x7f,1);
}

void d7_8_10_11_13_14_16_17(uchar disnum,uchar danwei,uchar sel_exit)
{

    dis_cls();

    dis_one_zi(0,0,x23,1,1);  //当前电压
    dis_one_zi(0,1,x24,1,1);

    switch (danwei)
    {
    case 'V':
    {
        dis_one_zi(0,2,x2,1,1);
        dis_one_zi(0,3,x3,1,1);
        break;
    }

    case 'A':
    {
        dis_one_zi(0,2,x2,1,1);
        dis_one_zi(0,3,x4,1,1);
        break;
    }

    case 'W':
    {
        dis_one_zi(0,2,x5,1,1);
        dis_one_zi(0,3,x6,1,1);
        break;
    }

    case 'C':
    {
        dis_one_zi(0,2,x9,1,1);
        dis_one_zi(0,3,x10,1,1);
        break;
    }
    }

    print_num(0,8,disnum,danwei,1);

 

    switch (sel_exit)
    {
    case 0:
    {
        dis_one_zi(2,3,x25,1,1); //修改
        dis_one_zi(2,4,x26,1,1);
        dis_one_char(3,5,0x7f,1);
        dis_one_zi(3,3,x21,0,1);  //退出(反显)
        dis_one_zi(3,4,x22,0,1);
        dis_one_char(3,10,0x7f,1);
        break;
    }

    case 1:
    {
        dis_one_char(2,5,0x7f,1);
        dis_one_zi(2,3,x25,0,1); //修改(反显)
        dis_one_zi(2,4,x26,0,1);
        dis_one_char(2,10,0x7f,1);
        dis_one_zi(3,3,x21,1,1);  //退出
        dis_one_zi(3,4,x22,1,1);
        break;
    }


    }


}

void d7(void)
{
    d7_8_10_11_13_14_16_17(v,'V',1);

}

void d8(void)
{
    d7_8_10_11_13_14_16_17(v,'V',0);

}

void d9_12_15_18(uchar disnum,uchar disnum_new,uchar danwei)
{

    dis_cls();
    dis_one_zi(0,0,x27,1,1);  //原值
    dis_one_zi(0,2,x28,1,1);


    dis_one_zi(2,0,x29,1,1); //新设定
    dis_one_zi(2,1,x11,1,1);
    dis_one_zi(2,2,x30,1,1);

    print_num(0,6,disnum,danwei,1);

    print_num(2,6,disnum_new,danwei,1);

}

void d9(void)
{
    d9_12_15_18(v,v_new,'V');
}


//-------------------------------------------------------------------
void d10(void)
{
    d7_8_10_11_13_14_16_17(i,'A',1);
}

void d11(void)
{
    d7_8_10_11_13_14_16_17(v,'V',0);

}

void d12(void)
{
    d9_12_15_18(i,i_new,'A');

}
//-------------------------------------------------------------------------

void d13(void)
{
    d7_8_10_11_13_14_16_17(p,'W',1);
}

void d14(void)
{
    d7_8_10_11_13_14_16_17(p,'W',0);

}

void d15(void)
{
    d9_12_15_18(p,p_new,'W');
}

//-------------------------------------------------------------------------

void d16(void)
{
    d7_8_10_11_13_14_16_17(t,'C',1);
}

void d17(void)
{
    d7_8_10_11_13_14_16_17(t,'C',0);

}

void d18(void)
{
    d9_12_15_18(t,t_new,'C');
}

void d19_26(uchar dis_num,uchar dis_num_new,uchar danwei)
{
    print_num(0,6,dis_num,danwei,1);
    print_num(2,6,dis_num_new,danwei,1);


}

void d19(void)
{
    if (++v_new==251)
        v_new=0;
    d19_26(v,v_new,'V');
}
void d20(void)
{
    if (v_new==0)
        v_new=251;
    v_new--;

    d19_26(v,v_new,'V');
}
void d21(void)
{
    if (++i_new==201)
        i_new=0;
    d19_26(i,i_new,'A');
}
void d22(void)
{
    if (i_new==0)
        i_new=201;
    i_new--;
    d19_26(i,i_new,'A');
}
void d23(void)
{
    if (++p_new==51)
        p_new=0;
    d19_26(p,p_new,'W');
}
void d24(void)
{
    if (p_new==0)
        p_new=51;
    p_new--;
    d19_26(p,p_new,'W');
}
void d25(void)
{
    if (++t_new==101)
        t_new=0;
    d19_26(t,t_new,'C');
}
void d26(void)
{
    if (t_new==0)
        t_new=101;
    t_new--;
    d19_26(t,t_new,'C');
}


void d27(void)
{
    dis_cls();
    delay(200);
// dis_one_zi(0,0,x17,1,1);  //版本设计
// dis_one_zi(0,1,x18,1,1);
// dis_one_zi(2,0,x19,1,1);
// dis_one_zi(2,1,x20,1,1);


}

void d28(void)
{
    dis_cls();
    dis_one_zi(1,2,x11,1,1);  //设置成功
    dis_one_zi(1,3,x12,1,1);
    dis_one_zi(1,4,x31,1,1);
    dis_one_zi(1,5,x32,1,1);
    dis_one_char(1,12,'!',1);
    v=v_new;
    i=i_new;
    p_new=v*i;
    p=p_new;
    t=t_new;

    delay(1200);
    keyfuncindex=0;
    d0();
}


typedef struct
{
    uchar keystateindex;
    uchar keydnstate;
    uchar keyupstate;
    uchar keycrstate;
    void(*currentoperate)();
}
kbdtabstruct;

kbdtabstruct code keytab[size_of_keybd_menu]=
    { //第一行表示在0级菜单时按下向下键则转到1级菜单
        //按下向上键则转1级菜单,按下回车键则转5级菜单
        //    下 上 回车

        { 0, 0, 0, 1, (* d0)},
        { 1, 2, 6, 7, (* d1)},
        { 2, 3, 1,10, (* d2)},
        { 3, 4, 2,13, (* d3)},
        { 4, 5, 3,16, (* d4)},
        { 5, 6, 4,27, (* d5)},
        { 6, 1, 5, 0, (* d6)},
        { 7, 8, 7, 9, (* d7)},
        { 8, 8, 7, 1, (* d8)},
        { 9,20,19, 1, (* d9)},//电压调节
        {10,11,10,12, (*d10)},
        {11,11,10, 2, (*d11)},
        {12,22,21, 2, (*d12)},//电流调节
        {13,14,13,15, (*d13)},
        {14,14,13, 3, (*d14)},
        {15,24,23, 3, (*d15)},//功率调节
        {16,17,16,18, (*d16)},
        {17,17,16, 4, (*d17)},
        {18,26,25, 4, (*d18)},//温度调节

        {19,20,19,28, (*d19)},//V-up
        {20,20,19,28, (*d20)},//V-down
        {21,22,21,28, (*d21)},//I-up
        {22,22,21,28, (*d22)},//I-down
        {23,24,23,28, (*d23)},//P-up
        {24,24,23,28, (*d24)},//P-down
        {25,26,25,28, (*d25)},//T-up
        {26,26,25,28, (*d26)},//T-down
        {27, 5, 5, 5, (*d27)},//软件信息
        {28, 0, 0, 0, (*d28)} //设置成功
    };
void getkeyinput(void)
{
    uint counter=0;
    uchar key_value;
re:
    counter++;
    P1=0xff;
    key_value=P1;
    if (key_value==0xff)
    {
        if (keyfuncindex>0 && keyfuncindex<28 && counter==4000)
        {

            counter=0;
            keyfuncindex=0;
            d0();
        }
        delay(1);
        goto re;
    }


    key_value=key_value&0xe0;
    delay(50);
    counter=0;
    switch (key_value)
    {
    case 96:
    {
        keyfuncindex=keytab[keyfuncindex].keycrstate;
        break;
    }
    case 160:
    {
        keyfuncindex=keytab[keyfuncindex].keyupstate;
        break;
    }
    case 192:
    {
        keyfuncindex=keytab[keyfuncindex].keydnstate;
        break;
    }
    default:
        goto re;
    }

    keyfuncptr=keytab[keyfuncindex].currentoperate;
    (*keyfuncptr)();
    delay(150);
}


void sys_auto_check(void)
{
    uchar xx,c=4;

    dis_one_zi(0,2,x33,1,1);
    dis_one_zi(0,3,x34,1,1);
    dis_one_zi(0,4,x35,1,1);
    dis_one_zi(0,5,x36,1,1);


    while (--c!=0)
    {
        for (xx=3;xx<13;xx++)
        {
            dis_one_char(2,xx-1,'>',1);
            dis_one_char(2,xx  ,'>',1);
            dis_one_char(2,xx+1,'>',1);

            delay(200);
            dis_one_char(2,xx-1,' ',1);
            dis_one_char(2,xx  ,' ',1);
            dis_one_char(2,xx+1,' ',1);
        }
    }
}

void main(void)
{
    v=v_new=00;
    i=i_new=02;
    p=p_new=00;
    t=t_new=00;
    keyfuncindex=0;
    lcd_init();
    sys_auto_check();
    d0();
    while (1)
        getkeyinput();


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -