📄 menu.c
字号:
{
switch(keyval)
{
case key_up:
mod_value=mod_value+key_mov;
if(mod_value>9999)mod_value=9999;
get_pos();//小数点位置
dis_flag=0; //高低4位标置 1-高4位 0-低4位
display_num(mod_value);//数字显示
break;
case key_down:
mod_value=mod_value-key_mov;
if(mod_value<-1999)mod_value=-1999;
get_pos();//小数点位置
dis_flag=0;//高低4位标置
display_num(mod_value);//数字显示
break;
case key_set:
ref_table[ref_df]=mod_value;
store_ref(ref_df);//保存参数值
page_point=10;
renew_page_high(mnu_du0);
mod_value=ref_table[ref_du0];
//set_flag=0;
dis_flag=0;
display_num(ref_table[ref_du0]);
break;
//case key_ent:
}
}
/********************************************
函数名: mnu_hdl_du0
功能: 设定显示零点
形式参数:无
返回值:无
********************************************/
void mnu_hdl_du0(void)
{
switch(keyval)
{
case key_up:
mod_value=mod_value+key_mov;
if(mod_value>9999)mod_value=9999;
get_pos();//小数点位置
dis_flag=0; //高低4位标置 1-高4位 0-低4位
display_num(mod_value);//数字显示
break;
case key_down:
mod_value=mod_value-key_mov;
if(mod_value<-1999)mod_value=-1999;
get_pos();//小数点位置
dis_flag=0;//高低4位标置
display_num(mod_value);//数字显示
break;
case key_set:
ref_table[ref_du0]=mod_value;
store_ref(ref_du0);//保存参数值
page_point=11;
renew_page_high(mnu_duf);
mod_value=ref_table[ref_duf];
//set_flag=0;
dis_flag=0;
display_num(ref_table[ref_duf]);
break;
//case key_ent:
}
}
/********************************************
函数名: mnu_hdl_duf
功能: 设定显示满点
形式参数:无
返回值:无
********************************************/
void mnu_hdl_duf(void)
{
switch(keyval)
{
case key_up:
mod_value=mod_value+key_mov;
if(mod_value>9999)mod_value=9999;
get_pos();//小数点位置
dis_flag=0; //高低4位标置 1-高4位 0-低4位
display_num(mod_value);//数字显示
break;
case key_down:
mod_value=mod_value-key_mov;
if(mod_value<-1999)mod_value=-1999;
get_pos();//小数点位置
dis_flag=0;//高低4位标置
display_num(mod_value);//数字显示
break;
case key_set:
ref_table[ref_duf]=mod_value;
store_ref(ref_duf);//保存参数值
mnu_return();//返回主菜单
break;
//case key_ent:
}
}
/********************************************
函数名: mnu_hdl_ot
功能: 给定输出电流
形式参数:无
返回值:无
********************************************/
void mnu_hdl_ot(void)
{
switch(keyval)
{
case key_up:
mod_value=mod_value+key_mov;
if(mod_value>9999)mod_value=9999;
point_pos=2;//小数点位置
dis_flag=0; //高低4位标置 1-高4位 0-低4位
display_num(mod_value);//数字显示
//////电流输出
break;
case key_down:
mod_value=mod_value-key_mov;
if(mod_value<0)mod_value=0;
point_pos=2;//小数点位置
dis_flag=0;//高低4位标置
display_num(mod_value);//数字显示
//////电流输出
break;
case key_set:
mnu_return();//返回主菜单
break;
//case key_ent:
}
}
/********************************************
函数名: mnu_hdl_rtx
功能: 阻标定
形式参数:无
返回值:无
********************************************/
void mnu_hdl_rtx(void)
{
if(key_set)
mnu_hdl_rtx_set();
}
void mnu_hdl_rtx_set(void)//volt_range
{
if(set_flag==1)
{
store_ref(ref_buffer+volt_range1-counter);
switch(page_point)
{
case mnu_rt1:
volt_range1++;
point_pos_1++;
//renew_page_high(mnu_rt1);
if(volt_range1==5)
{
ref_buffer=ref_rt2;
page_point=mnu_rt2;
volt_range1=1;
renew_page_high(mnu_rt2);
counter=1;
point_pos_1=1;
//init_flag=1;
}
break;
case mnu_rt2:
volt_range1++;
point_pos_1++;
if(volt_range1==5)
{
ref_buffer=ref_rt3;
page_point=mnu_rt3;
volt_range1=2;
renew_page_high(mnu_rt3);
counter=2;
point_pos_1=2;
//init_flag=1;
}
break;
case mnu_rt3:
volt_range1++;
point_pos_1++;
if(volt_range1==5)
{
ref_buffer=ref_rt4;
page_point=mnu_rt4;
volt_range1=3;
renew_page_high(mnu_rt4);
counter=3;
point_pos_1=3;
//init_flag=1;
}
break;
case mnu_rt4:
volt_range1++;
point_pos_1++;
if(volt_range1==5)
{
ref_buffer=ref_rt5;
page_point=mnu_rt5;
volt_range1=4;
renew_page_high(mnu_rt5);
counter=4;
point_pos_1=4;
//init_flag=1;
}
break;
case mnu_rt5:
volt_range1++;
point_pos_1++;
if(volt_range1==5)
{
//menu_point++;
volt_range1=1;
set_flag=0;
dem_flag=0;
mnu_return();
}
break;
}
sub_function2();//waitcy 2007-9-11 20:25
}
}
/********************************************
函数名: mnu_hdl_tc0
功能: 偶标定
形式参数:无
返回值:无
********************************************/
void mnu_hdl_tc0(void)
{
if(key_set)
mnu_hdl_tc0_set();
}
void mnu_hdl_tc0_set(void)//volt_range
{
if(set_flag==1)
{
store_ref(ref_buffer+volt_range1-counter);
switch(page_point)
{
case mnu_tc0:
volt_range1++;
point_pos_1++;
if(volt_range1==5)
{
ref_buffer=ref_tcf;
page_point=mnu_tcf;
volt_range1=1;
renew_page_high(mnu_tcf);
counter=1;
point_pos_1=1;
//init_flag=1;
}
break;
case mnu_tcf:
volt_range1++;
point_pos_1++;
if(volt_range1==5)
{
//menu_point++;
volt_range1=1;
set_flag=0;
dem_flag=0;
mnu_return();
}
break;
}
sub_function2();//waitcy 2007-9-11 20:25
}
}
//void mnu_hdl_rtx_ent(void)
//{
//}
void sub_function2(void)
{
ADC0MD = 0x80; // 使能ADC0 ADC0=空闲模式
switch(volt_range1)
{
case 1:
ADC0CN = 0x16;//3;
break;
case 2:
ADC0CN = 0x15;//2;
break;
case 3:
ADC0CN = 0x14;//1;
break;
case 4:
ADC0CN = 0x14;//0;
break;
}
ADC0MD |= 0x83; // 启动连续转换
}
/********************************************
函数名: store_ref
功能: 保存参数值
形式参数:add-数据地址
返回值:无
********************************************/
void store_ref(unsigned char add)
{
char xdata * data byte;
byte=ref_table+add;//指针计算
SMbus_24c02_write(2*add,*byte);
byte++;
SMbus_24c02_write(2*add+1,*byte);
}
/********************************************
函数名: load_ref
功能: 加载参数值
形式参数:无
返回值:无
********************************************/
void load_ref(void)
{
unsigned char i;
char xdata * data byte;
SMbus_24c02_read(0x7f);
if(Dat_24C02!=0xaa)
{ //24c02未初始化
for(i=0;i<16;i++)
{
ref_table[i]=default_ref_table[i];
SMbus_24c02_write(i,ref_table[i]);
}
SMbus_24c02_write(0x7f,0xaa);//设置初始化标志
}
else
{ //24C02已初始化
byte=ref_table;
for(i=0;i<82;i++)
{
SMbus_24c02_read(i);
*byte=Dat_24C02;
byte++;
}
}
}
/********************************************
函数名: mnu_return
功能: 返回主菜单
形式参数:无
返回值:无
********************************************/
void mnu_return(void)
{
point_pos=0;
dis_flag=1;
page_point=mnu_main;
mod_value=mod_bak;
display_num(mod_value);
renew_page_low(mnu_null);
}
/********************************************
函数名: display_num
功能: 显示数字
形式参数:num-数字值
返回值:无
********************************************/
void display_num(int num)
{
bit bdata pos_flag;
unsigned int num_temp,i,j;
unsigned char num_display[4];
if(num<0)
{
pos_flag=0; //正负号标志 1-正号 0-负号
num_temp=~num;
num_temp+=1;
}
else
{
pos_flag=1;
num_temp=num;
}
for(i=0;i<4;i++)
{
num_display[i]=num_temp%10;
num_temp/=10;
}
zero_flag=0;
if(dis_flag)
{//高4位
for(j=0;j<3;j++)
{
if((num_display[3-j]==0)&&(zero_flag==0))
{
if(point_pos<(4-j))
display[7-j]=0xff;
else
{
zero_flag=1;
if((point_pos==4)&&(num_display[3]==0)&&(pos_flag==0))
{
display[7]=0xff;
continue;
}
else
display[7-j]=num_code[num_display[3-j]];
}
}
else
{
zero_flag=1;
display[7-j]=num_code[num_display[3-j]];
}
}
if(point_pos!=0)display[3+point_pos]&=chr_dot; //显示小数点
display[4]=num_code[num_display[0]]; //最后一位
if(!pos_flag)display[7]&=chr_sub; //显示负号
}
else
{//低4位
for(j=0;j<3;j++)
{
if((num_display[3-j]==0)&&(zero_flag==0))
{
if(point_pos<(4-j))
display[3-j]=0xff;
else
{
zero_flag=1;
if((point_pos==4)&&(num_display[3]==0)&&(pos_flag==0))
{
display[3]=0xff;
continue;
}
else
display[3-j]=num_code[num_display[3-j]];
}
}
else
{
zero_flag=1;
display[3-j]=num_code[num_display[3-j]];
}
}
if(point_pos!=0)display[point_pos-1]&=chr_dot; //显示小数点
display[0]=num_code[num_display[0]]; //最后一位
if(dem_flag&&point_pos==1)display[0]&=chr_dot;
if(!pos_flag)display[3]&=chr_sub; //显示负号
}
}
/********************************************
函数名: renew_disp_high
功能: 更新高四位显示
形式参数:item-显示字段索引号
返回值:无
********************************************/
void renew_page_high(unsigned char item)
{
unsigned char i;
for(i=0;i<4;i++)
{
display[7-i]=Tab_Menu_Item[item][i];
}
}
/********************************************
函数名: renew_disp_low
功能: 更新低四位显示
形式参数:item-显示字段索引号
返回值:无
********************************************/
void renew_page_low(unsigned char item)
{
unsigned char i;
for(i=0;i<4;i++)
{
display[3-i]=Tab_Menu_Item[item][i];
}
}
/*************************************************
函数名 get_pos
功能 根据目前的分度,判断小数点位置
参数 void
影响资源 point_pos
调用函数
*************************************************/
void get_pos(void)
{
if(ref_table[ref_sn]<rt_start)
{
point_pos=0; ////////送显十进制数时 小数点的位置1~4 右->左 为函数lcd_show_dec的参数
}
else
point_pos=2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -