📄 function.c
字号:
if(Dis_Buf[3]==10) Dis_Buf[3] = 0;
}
}
}
} break;
}
case Down_Move : //下移按键
{
if(Seg_Flag==2) //对数码管第三位(4为数据的千位)进行减计数操作
{
Dis_Buf[3]--;
if(Dis_Buf[3]<0) Dis_Buf[3] = 9;
}
if(Seg_Flag==3) //对数码管第四位(4为数据的千位)进行减计数操作
{
Dis_Buf[2]--;
if(Dis_Buf[2]<0) //百位减到0对千位借位
{
Dis_Buf[2] = 9;
Dis_Buf[3] --;
if(Dis_Buf[3]<0) Dis_Buf[3] = 9;
}
}
if(Seg_Flag==4) //对数码管第五位(4为数据的千位)进行减计数操作
{
Dis_Buf[1]--;
if(Dis_Buf[1]<0)//十位减到0对百位借位
{
Dis_Buf[1] = 9;
Dis_Buf[2] --;
if(Dis_Buf[2]<0)//百位减到0对千位借位
{
Dis_Buf[2] = 9;
Dis_Buf[3] --;
if(Dis_Buf[3]<0) Dis_Buf[3] = 9;
}
}
}
if(Seg_Flag==5) //对数码管第六位(4为数据的千位)进行减计数操作
{
Dis_Buf[0]--;
if(Dis_Buf[0]<0) //个位减到0对十位借位
{
Dis_Buf[0] = 9;
Dis_Buf[1] --;
if(Dis_Buf[1]<0)//十位减到0对百位借位
{
Dis_Buf[1] = 9;
Dis_Buf[2] --;
if(Dis_Buf[2]<0)//百位减到0对千位借位
{
Dis_Buf[2] = 9;
Dis_Buf[3] --;
if(Dis_Buf[3]<0) Dis_Buf[3] =9;
}
}
}
} break;
}
default : break;
}//end switch(GetKey)
DispPresent_Data[DisMode_Num_aa] =Dis_Buf[3]*1000+Dis_Buf[2]*100+Dis_Buf[1]*10+Dis_Buf[0];
}
else if(flag == 0)
{
Dis_Buf[3] = DispPresent_Data[DisMode_Num_aa]/1000; //获取GetKey的千位
Dis_Buf[2] = DispPresent_Data[DisMode_Num_aa]%1000/100; //获取GetKey的百位
Dis_Buf[1] = DispPresent_Data[DisMode_Num_aa]%100/10; //获取GetKey的十位
Dis_Buf[0] = DispPresent_Data[DisMode_Num_aa]%10; //获取GetKey的个位
switch(GetKey) //判断在按下设置键后按下的是:加(2)还是减(18 )
{
case Left_Move : //左移
{
Seg_Flag = Seg_Flag - 1;
if(Seg_Flag<lowseg_num)
{
Seg_Flag = 5;
}
break;
}
case Right_Move : //右移
{
Seg_Flag = Seg_Flag + 1;
if(Seg_Flag>5)
{
Seg_Flag = lowseg_num;
}break;
}
case Down_Move :
{
if(Seg_Flag==3) //对数码管第四位(4为数据的百位)进行加计数操作
{
Dis_Buf[2]++;
if(Dis_Buf[2]==10)//百位加到十对千位进位
{
Dis_Buf[2] = 0;
}
}
if(Seg_Flag==4) //对数码管第五位(4为数据的十位)进行加计数操作
{
Dis_Buf[1]++;
if(Dis_Buf[1]==10)//十位加到十对百位进位
{
Dis_Buf[1] = 0;
Dis_Buf[2] ++;
if(Dis_Buf[2]==10)//百位加到十对千位进位
{
Dis_Buf[2] = 0;
}
}
}
if(Seg_Flag==5) //对数码管第六位(4为数据的个位)进行加计数操作
{
Dis_Buf[0]++;
if(Dis_Buf[0]==10)//个位加到十对十位进位
{
Dis_Buf[0] = 0;
Dis_Buf[1] ++;
if(Dis_Buf[1]==10)//十位加到十对百位进位
{
Dis_Buf[1] = 0;
Dis_Buf[2] ++;
if(Dis_Buf[2]==10)//百位加到十对千位进位
{
Dis_Buf[2] = 0;
}
}
}
} break;
}
case Up_Move:
{
if(Seg_Flag==3) //对数码管第四位(4为数据的千位)进行减计数操作
{
Dis_Buf[2]--;
if(Dis_Buf[2]<0) //百位减到0对千位借位
{
Dis_Buf[2] = 9;
}
}
if(Seg_Flag==4) //对数码管第五位(4为数据的千位)进行减计数操作
{
Dis_Buf[1]--;
if(Dis_Buf[1]<0)//十位减到0对百位借位
{
Dis_Buf[1] = 9;
}
}
if(Seg_Flag==5) //对数码管第六位(4为数据的千位)进行减计数操作
{
Dis_Buf[0]--;
if(Dis_Buf[0]<0) //个位减到0对十位借位
{
Dis_Buf[0] = 9;
Dis_Buf[1] --;
if(Dis_Buf[1]<0)//十位减到0对百位借位
{
Dis_Buf[1] = 9;
Dis_Buf[2] --;
if(Dis_Buf[2]<0)//百位减到0对千位借位
{
Dis_Buf[2] = 9;
}
}
}
} break;
}
default : break;
}//end switch(GetKey)
DispPresent_Data[DisMode_Num_aa] =Dis_Buf[3]*1000+Dis_Buf[2]*100+Dis_Buf[1]*10+Dis_Buf[0];
DispPresent_Data[DisMode_Num_aa] = 0 -DispPresent_Data[DisMode_Num_aa];
}
}
/***************************************************
函数名:Flash_Display()
功能: 设置参数的数码管闪烁函数
参数:
说明:Seg_Flag需要闪烁的位
****************************************************/
void Flash_Display(unsigned char Seg_Flag)
{
switch(Seg_Flag)
{
case 5: ZLG7290_FlashShow_One(0x01);Delay(500); break;
case 4: ZLG7290_FlashShow_One(0x02);Delay(500);break;
case 3: ZLG7290_FlashShow_One(0x04);Delay(500); break;
case 2: ZLG7290_FlashShow_One(0x08);Delay(500); break;
default : break;
}
}
/***************************************************
函数名:Display()
功能:
参数:
说明:MOde_flag 模式标志0_3 Function_Num段号0-39 Flash_Num闪烁的位置
****************************************************/
void Display(unsigned char MOde_flag,unsigned char Function_Num,unsigned char Flash_Num)
{
unsigned char DisMode_Num = 0;
DisMode_Num = MOde_flag*30+Function_Num;//计算大数组中的位置
if(DisMode_Num>=170)//用于报警和故障代码 (都显示ER)
{
if((Error_Num_Temp & 0x80) == 0x00 )
{
Error_Num_Temp |= 0x80;
ZLG7290_Download_Display(ZLG7290_DpRam, 0,0,Disp_Char_Code[160]);//显示代码"E"
ZLG7290_Download_Display(ZLG7290_DpRam+1,0,0,Disp_Char_Code[161]);//显示代码"R"
}
if((Error_Num_Temp & 0x7f) != Error_Num)
{
Error_Num_Temp = 0x80 | Error_Num;
ClearAll(2,5);
ZLG7290_Download_Display(ZLG7290_DpRam+2,0,0,Error_Num);
DispValue(ZLG7290_DpRam+4,Error_Table[Error_Num]);
}
Flash_Num_Temp = 0xff; //从报警切换为其他显示模式时,强制刷新一次显示值。
}
else
{
Error_Num_Temp = 0x40;
if((DisMode_Num>150) && (DisMode_Num_Temp != DisMode_Num))
{
if(Set_Right[DisMode_Num]!=2)
{
if(Set_Right[DisMode_Num]==1)
{
ZLG7290_Download_Display(ZLG7290_DpRam, 1,0,(Disp_Char_Code[DisMode_Num]&0xFF00)>>8);//显示代码
ZLG7290_Download_Display(ZLG7290_DpRam+1,1,0,Disp_Char_Code[DisMode_Num]&0x00Ff);
}
else
{
ZLG7290_Download_Display(ZLG7290_DpRam, 1,0,(Disp_Char_Code[DisMode_Num]&0xFF00)>>8);//显示代码
ZLG7290_Download_Display(ZLG7290_DpRam+1,0,0,Disp_Char_Code[DisMode_Num]&0x00Ff);
}
}
}
else if((DisMode_Num<=150) && (DisMode_Num_Temp != DisMode_Num))
{ if(Set_Right[DisMode_Num]!=2)
{
if(Set_Right[DisMode_Num]==1)
{
ZLG7290_Download_Display(ZLG7290_DpRam, 0,0,(Disp_Char_Code[DisMode_Num]&0xFF00)>>8);//显示代码
ZLG7290_Download_Display(ZLG7290_DpRam+1,1,0,Disp_Char_Code[DisMode_Num]&0x00Ff);
}
else
{
ZLG7290_Download_Display(ZLG7290_DpRam, 0,0,(Disp_Char_Code[DisMode_Num]&0xFF00)>>8);//显示代码
ZLG7290_Download_Display(ZLG7290_DpRam+1,0,0,Disp_Char_Code[DisMode_Num]&0x00Ff);
}
}
}
if((DispPresent_Data[DisMode_Num] != DispPresent_Data_Temp) ||(Flash_Num_Temp != Flash_Num))
{
Init_Display(Disp_accuracy[DisMode_Num],DispPresent_Data[DisMode_Num]); //显示相应数据
Flash_Display(Flash_Num);//闪烁选定位
}
DispPresent_Data_Temp = DispPresent_Data[DisMode_Num];
Flash_Num_Temp = Flash_Num;
}
DisMode_Num_Temp = DisMode_Num;
}
/***************************************************
函数名:GPIO_Port_F_ISR()
功能: GPIOF的中断服务函数
参数:
说明:
****************************************************/
void GPIO_Port_B_ISR(void)
{
unsigned long ulStatus;
ulStatus = GPIOPinIntStatus(GPIO_PORTB_BASE , true); // 读取中断状态
GPIOPinIntClear(GPIO_PORTB_BASE , ulStatus); // 清除中断状态,重要
if ( ulStatus & GPIO_PIN_0 ) // 如果PD1的中断状态有效
{
FlagINT = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -