📄 lcd.c
字号:
{
d1_4(3);
}
void d4(void)
{
d1_4(4);
}
void d5(void)
{
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 + -