📄 menu_func.c
字号:
/*---------------------------文本输入------------------------------*/
void Menu_TextInput()
{
uchar x,y,j;
bit cs3=1;
clrscr();
KeyInputTemp=0;
while (NowKey!=KEY_ESC) // 按ESC键退出
{
EX0=1;
GetTextInput();
if (KeyInputTemp==1) // 输出数字
{
num_disp(cs3,x,y,TextInputTemp);
y+=8;
if(y==64) // 输出8个数字时换右屏
{
cs3=!cs3;
y=0;
j++;
}
if(j==2) // 输出16个数字时换行
{
x+=2;
j=0;
}
if(x==8)
{
x=0;
clrscr();
}
KeyInputTemp=0;
}
}
Menu_Back();
}
/*------------温度监测--------------*/
void Menu_DispTmp()
{
clrscr();
config_18b20();
chn_disp(0,0,2,16,1,2,hz_view_1);
while(NowKey!=KEY_ESC)
{
EX0=1;
get_tmp();
if(tmp>99)
{
num_disp(0,0,0,tmp/100); //显示百位
num_disp(0,0,8,tmp/10%10); //显示十位
num_disp(0,0,16,tmp%100%10); //显示个位
chn_disp(0,24,2,8,1,1,hz_dot);
num_disp(0,0,32,tmpd); //小数点后一位
chn_disp(0,40,2,8,1,1,hz_oc);
}
else
{
num_disp(0,0,8,tmp/10);
num_disp(0,0,16,tmp%10);
if(tmp_f)
{
chn_disp(0,0,2,8,1,1,hz_s_); //显示负号
}
else chn_disp(0,0,2,8,1,1,hz_null); // 不显示负号
chn_disp(0,24,2,8,1,1,hz_dot);
num_disp(0,0,32,tmpd);
// con_disp(0,0,40,tmpd%10); //小数点后两位
chn_disp(0,40,2,8,1,1,hz_oc);
}
}
Menu_Back();
}
/*--------------步进电机--------------------*/
void Menu_Motor_s()
{
uchar P_motor[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};
uchar i=0;
clrscr();
EX0=1;
COM8255=0x82;
while(NowKey!=KEY_ESC)
{
EX0=1;
if (NowKey==KEY_1)
{
PC8255=P_motor[i];
delay(254);
i++;
NowKey=0xff;
if(i==8)
{
i=0;
}
}
if(NowKey==KEY_2)
{
i--;
if(i>7)
{
i=7;
}
NowKey=0xff;
PC8255=P_motor[i];
delay(254);
}
}
}
void Menu_MemoryData()
{
//uchar idata temp1[]={0x02,0x04,0x99,0x76,0x47};
uchar idata *temp2,addr=0x02;
// uchar i,j,x,y;
// bit cs3;
// cs3=1;
clrscr();
Ipt9555(temp2);
temp2++;
num_disp(1,0,0,(*temp2)>>4);
num_disp(1,0,8,(*temp2) & 0x0f);
/* W24C32(addr,temp1,5);
R24C32(addr,temp2,5);
for (i=0;i<5;i++)
{
con_disp(cs3,x,y,*temp2>>4);
y+=8;
con_disp(cs3,x,y,*temp2&0x0f);
y+=8;
if(y==64) // 输出8个数字时换右屏
{
cs3=!cs3;
y=0;
j++;
}
if(j==2) // 输出16个数字时换行
{
x+=2;
j=0;
}
if(x==8)
{
x=0;
clrscr();
}
}*/
while(1);
Menu_Back();
}
/*-------------模数转换--------*/
void Menu_ADC0832()
{
uchar adtemp;
clrscr();
EX0=1;
chn_disp(0,0,2,8,1,2,hz_in); //IN
chn_disp(0,24,2,8,1,1,hz_mh); //:
chn_disp(2,0,2,8,1,2,hz_in); //in
chn_disp(2,24,2,8,1,1,hz_mh);
chn_disp(4,0,2,8,1,2,hz_in);
chn_disp(4,24,2,8,1,1,hz_mh);
chn_disp(6,0,2,8,1,2,hz_in);
chn_disp(6,24,2,8,1,1,hz_mh);
num_disp(1,0,16,0);
num_disp(1,2,16,1);
num_disp(1,4,16,2);
num_disp(1,6,16,3);
num_disp(0,0,16,4);
num_disp(0,2,16,5);
num_disp(0,4,16,6);
num_disp(0,6,16,7);
while(NowKey!=KEY_ESC)
{
AD0809_IN0=0X00;
delay(200);
adtemp=AD0809_IN0;
num_disp(1,0,32,(adtemp&0xf0)>>4);
num_disp(1,0,40,(adtemp&0x0f));
}
Menu_Back();
}
/*--------------数模转换-------------------*/
void Menu_DAC0808()
{
uchar cs3,x,y,j,ADCtemp;
cs3=1;
clrscr();
NowKey=0xff;
while (NowKey!=KEY_OK)
{
EX0=1;
GetTextInput();
if(KeyInputTemp==1)
{
ADCtemp<<=4;
ADCtemp+=TextInputTemp;
num_disp(cs3,x,y,TextInputTemp);
y+=8;
if(y==64) // 输出8个数字时换右屏
{
cs3=!cs3;
y=0;
j++;
}
if(j==2) // 输出16个数字时换行
{
x+=2;
j=0;
}
if(x==8)
{
x=0;
clrscr();
}
KeyInputTemp=0;
}
}
Opt9555(Cmd_op0,ADCtemp);
while(NowKey!=KEY_ESC);
Menu_Back();
}
/*---------------- 与PC通信--串口接收--------------*/
void Menu_SerialReceive_PC()
{
uchar cs3,x,y,j;
uchar PSerial;
clrscr();
cs1=1;
cs2=0;
chn_disp(0,0,2,16,1,2,hz_test_1); //显示起始行
chn_disp(0,32,2,16,1,2,hz_test_2);
cs1=0;
cs2=1;
chn_disp(0,32,2,16,1,2,hz_test);
chn_disp(0,0,2,16,1,2,hz_jishi);
x=2;
y=0;
cs3=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
while (1)
{
EX0=1;
while(!RI)
if (NowKey==KEY_ESC) goto Exit_SerialReceive;
RI=0;
PSerial=SBUF;
num_disp(cs3,x,y,PSerial&0x0f);
y+=8;
if(y==64) // 输出8个数字时换右屏
{
cs3=!cs3;
y=0;
j++;
}
if(j==2) // 输出16个数字时换行
{
x+=2;
j=0;
}
if(x==8)
{
x=2;
clrscr();
}
}
Exit_SerialReceive:
NowKeyReg=0;
Menu_Back();
}
/*------------------与PC通信--串口发送-----------------*/
void Menu_SerialSend_PC()
{
uchar cs3,x,y,k,j;
uchar PSerial;
clrscr();
cs1=1;
cs2=0;
chn_disp(0,0,2,16,1,2,hz_test_1); //显示起始行
chn_disp(0,32,2,16,1,2,hz_test_3);
cs1=0;
cs2=1;
chn_disp(0,32,2,16,1,2,hz_test);
chn_disp(0,0,2,16,1,2,hz_jishi);
x=2;
y=0;
cs3=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x40;
while (NowKey!=KEY_ESC)
{
EX0=1;
GetTextInput();
if(KeyInputTemp==1)
{
PSerial<<=4;
PSerial+=TextInputTemp;
num_disp(cs3,x,y,TextInputTemp);
k++;
if(k==2)
{
k=0;
SBUF=PSerial;
while(!TI);
TI=0;
}
y+=8;
if(y==64) // 输出8个数字时换右屏
{
cs3=!cs3;
y=0;
j++;
}
if(j==2) // 输出16个数字时换行
{
x+=2;
j=0;
}
if(x==8)
{
x=2;
clrscr();
}
KeyInputTemp=0;
}
}
Menu_Back();
}
void Menu_SerialReceive_MCU()
{
}
void Menu_SerialSend_MCU()
{
}
/*----------------返回菜单--------*/
void Menu_Back()
{
NowKey=0xff;
clrscr();
JudgeHLight();
}
/*----------------版本说明------------*/
void MenuFunction_Help_2()
{
DispFaceBmp();
NowKey=0xff;
EX0=1;
while(NowKey==0xff); // 按任意键退出
Menu_Back();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -