📄 board.bak
字号:
break;
}
case 2:
{
led_pos=led_pos-1;
if(led_pos==0)
led_pos=2;
break;
}
case 1:
{
led_pos=led_pos-1;
if(led_pos==0)
led_pos=1;
break;
}
default:break;
}
break;
}
default:break;
}
}
break;
}
case RESET_KEY:
{
if(confirm==0x31)//只有在故障查看菜单中才能进行软件复位
{
if(key_sample_count_h>5)
{
key_sample_count_h=0;
if(function_key_kind==0)//没有其它功能键按下的情况下才能处理复位
{
function_key_kind=4;//4表示是复位键
send_kind=send_kind|SEND_KEY;
send_ask_set_flag=0;
send_ask_fault_flag=0;
point_flag=0;
high_led_number=4;
led_pos=0;
confirm=0;
led01=10;//F.--
led02=10;
led03=15;
led04=19;
fault_show_flag=0;
fault_data=0;
}
}
}
break;
}
default:
{
key_sample_count_h=0;
break;
}
}
}
//================================
//程序说明:读取显示序号
//================================
show_mode()
{
led_data=led01+led02*10;
if(led_data>40)//参数个数限幅
led_data=40;
if(led_data==0)//参数个数限幅
led_data=1;
led_pos=0;
confirm=0x11;
}
//========================================================
//程序说明:读取主机故障堆栈,序号在前,表示最新发生的故障
//========================================================
fault_mode()
{
led_data=led01+led02*10;
if(led_data>20)//参数个数限幅
led_data=20;
if(led_data==0)//参数个数限幅
led_data=1;
led_pos=0;
confirm=0x31;
}
//==================================
//程序说明:根据接收到的数据,用于显示
//实时刷新
//==================================
value_show()
{
show_num++;
if(show_num>2)
{
show_num=1;
if(confirm==0x11)
{
if(show_data>=0)
{
neg_flag=0;
buffer=show_data;
}
else
{
neg_flag=1;
buffer=-show_data;
}
if(led_data==4)//4号参数进行1位小数
point_flag=1;
else if((led_data>=26)&&(led_data<=28))
point_flag=2;
else if((led_data==6)||(led_data==24)||(led_data==25)||(led_data==5)||(led_data==19))
point_flag=2;
else
point_flag=0; //其他参数不需要进行小数点处理
chd_show();
}
}
}
//================================
//程序说明:读取设置序号
//================================
set_mode()
{
led_data=led01+led02*10;
//以后只要在这里进行修改,即可以完成厂家面板和用户面板的区别。
/* if(led_data>18)//参数个数限幅
led_data=18;
if(led_data==0)//参数个数限幅
led_data=1;*/
if(led_data>70)
led_data=70;
if(led_data==0)//参数个数限幅
led_data=1;
led_pos=1;
confirm=0x21;
}
//================================
//程序说明:根据收到的数据,用于显示
//只刷新一次
//================================
set_show()
{
if(confirm==0x21)
{
if((send_kind&SEND_FU)==0)
{
set_rev_flag=1;
send_ask_set_flag=0;
}
if(set_data>=0)
{
neg_flag=0;
buffer=set_data;
}
else
{
neg_flag=1;
buffer=-set_data;
}
if(led_data==2)//2号参数需要进行小数点处理
point_flag=2;
else //其他参数不需要进行小数点处理
point_flag=0;
//根据设置参数的最大范围来显示数码管
switch(led_data)
{
case 1:case 3:
{
high_led_number=3;
break;
}
case 2:
{
high_led_number=4;
break;
}
case 11:case 5:
{
high_led_number=2;
break;
}
case 4:case 6:case 7:case 8:case 9:case 10:case 12:case 13:case 14:case 15:case 16:
{
high_led_number=1;
break;
}
default:
{
high_led_number=4;
break;
}
}
//==================================
chd();
}
}
//================================
//程序说明:根据收到的数据,用于显示
//只刷新一次
//================================
fault_show()
{
high_led_number=4;
if(confirm==0x31)
{
if((send_kind&SEND_FAULT_STACK)==0)
{
send_ask_fault_flag=0;
}
if(error_data>=0)
{
neg_flag=0;
buffer=error_data;
}
else
{
neg_flag=1;
buffer=-error_data;
}
chd();
led03=27;
led04=18;
}
}
//===============================
//程序说明:将led上设置的值读入
//==============================
set_value()
{
led_pos=0;
//============================
switch(led_data)
{
case 1:case 3:
{
high_led_number=3;
break;
}
case 2:
{
high_led_number=4;
break;
}
case 11:case 5:
{
high_led_number=2;
break;
}
case 4:case 6:case 7:case 8:case 9:case 10:case 12:case 13:case 14:case 15:case 16:
{
high_led_number=1;
break;
}
default:
{
high_led_number=4;
break;
}
}
//===================================
rev_chd();
set_data=buffer;
if(led_data==5)
{
set_data=(long)set_data*1.5*0.4*6*2.048*100/(1.5*5);//最大电流设置的转换,60欧姆采样电阻
}
}
//================================
//程序说明:将数字拆分为几个数码管显示值
//================================
chd()
{
led01=buffer%10;
buffer=buffer/10;
led02=buffer%10;
buffer=buffer/10;
led03=buffer%10;
led04=buffer/10;
if(neg_flag!=0)
led04=10;
switch(high_led_number)
{
case 1:
{
led02=15;
led03=15;
led04=15;
break;
}
case 2:
{
led03=15;
led04=15;
break;
}
case 3:
{
led04=15;
break;
}
default:break;
}
}
//===============================
//程序说明:显示菜单显示的几个数码管值
//===============================
chd_show()
{
led01=buffer%10;
buffer=buffer/10;
led02=buffer%10;
buffer=buffer/10;
led03=buffer%10;
led04=buffer/10;
//========================================
switch(point_flag) //根据小数点位置的不同,处理最高位是零的情况。
{
case 0:
{
if(led04==0)
{
led04=15;
if(led03==0)
{
led03=15;
if(led02==0)
{
led02=15;
}
}
}
break;
}
case 1:
{
if(led04==0)
{
led04=15;
if(led03==0)
{
led03=15;
}
}
break;
}
case 2:
{
if(led04==0)
{
led04=15;
}
break;
}
default:break;
}
if(led_data==19)
{
led04=10;//-
led03=led02;
led02=led01;
led01=10;//-
}
//=================================
if(neg_flag!=0)
led04=10;
}
//================================
//程序说明:将数码管显示值合并
//================================
rev_chd()
{
switch(high_led_number)
{
case 4:
{
buffer=led01+led02*10+led03*100+led04*1000;
break;
}
case 1:
{
buffer=led01;
break;
}
case 2:
{
buffer=led01+led02*10;
break;
}
case 3:
{
buffer=led01+led02*10+led03*100;
break;
}
default:break;
}
}
//================================
//程序说明:根据指针读取显示字符
//================================
getcode()
{
const int *p;
p=led_table;
ledcode01=*(p+led01);
ledcode01flash=*(p+led01);
ledcode02=*(p+led02);
ledcode02flash=*(p+led02);
ledcode03=*(p+led03);
ledcode03flash=*(p+led03);
ledcode04=*(p+led04);
ledcode04flash=*(p+led04);
switch(led_pos)
{
case 1:
{
ledcode01flash=0xff;
break;
}
case 2:
{
ledcode02flash=0xff;
break;
}
case 3:
{
ledcode03flash=0xff;
break;
}
case 4:
{
ledcode04flash=0xff;
break;
}
default:break;
}
if(fault_show_flag==1)//存在故障,则需要闪烁的效果
{
ledcode01flash=0xff;
ledcode02flash=0xff;
ledcode03flash=0xff;
ledcode04flash=0xff;
}
if(point_flag==1)//表示在倒数第二位显示小数点
{
ledcode02=ledcode02&0xfe;
ledcode02flash=ledcode02flash&0xfe;
}
if(point_flag==2)//表示在倒数第三位显示小数点
{
ledcode03=ledcode03&0xfe;
ledcode03flash=ledcode03flash&0xfe;
}
}
//================================
//程序说明:键盘采样
//================================
key_sample()
{
char i;
char key_sample_bit=0;
CLK=0;
SL=0;
CLK=1;
SL=1;//时钟上升沿发送锁存信号
for(i=0;i<8;i++)
{
CLK=0;
if(QH==0)//采到低电平表示有键按下
{
key_sample_bit=0x1;
}
else
{
key_sample_bit=0;
}
CLK=1;
key_sample_code=key_sample_code|(key_sample_bit<<(7-i));//键值合成
}
}
//===============================
//程序说明:系统主程序
//===============================
void main()
{
PCON=0;
AUXR=0x40;
TH0=0xfc; //1ms
TL0=0x66;
ET0=1;
SCON=0x50;
TH1=0xF1; //23.8345kb
TL1=0xF1;
ES=1;
TMOD=0x21;
EA=1;
TR0=1;
TR1=1;
/*eeprom_erase();
eeprom_write();*/
//===========================start
led_show_value[0]=0xff;
led_show_value[1]=0xff;
led_show_value[2]=0xff;
led_show_value[3]=0xff;
led01=10;
led02=11;
led03=12;
led04=10;
//==================================
show_data=0;//系统显示数据清零
set_data=0;//系统设置数据清零
fault_data=0;//系统故障清零
sys_state=0;//系统状态清零
light_power_flag=1;
//============================
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -