www.pudn.com > EFA.rar > Display.c


#include  
#include "define.h" 
#include "Global.h" 
 
/************************************************************* 
* 屏幕全显示  
* dat: 0x00 清屏;0xFF 满屏显示 
**************************************************************/ 
void Display_All(unsigned char dat) 
{ 
    CH452_Write_1(CH452_DIG0 | dat); 
    CH452_Write_1(CH452_DIG1 | dat); 
    CH452_Write_1(CH452_DIG2 | dat); 
    CH452_Write_1(CH452_DIG3 | dat); 
    CH452_Write_1(CH452_DIG4 | dat); 
    CH452_Write_1(CH452_DIG5 | dat); 
     
    CH452_Write_2(CH452_DIG0 | dat); 
    CH452_Write_2(CH452_DIG1 | dat); 
    CH452_Write_2(CH452_DIG2 | dat); 
    CH452_Write_2(CH452_DIG3 | dat); 
    CH452_Write_2(CH452_DIG4 | dat); 
    CH452_Write_2(CH452_DIG5 | dat); 
    CH452_Write_2(CH452_DIG6 | dat); 
     
    CH452_Write_3(CH452_DIG0 | dat); 
    CH452_Write_3(CH452_DIG1 | dat); 
    CH452_Write_3(CH452_DIG2 | dat); 
    CH452_Write_3(CH452_DIG3 | dat); 
    CH452_Write_3(CH452_DIG4 | dat); 
    CH452_Write_3(CH452_DIG5 | dat); 
    CH452_Write_3(CH452_DIG6 | dat); 
    CH452_Write_3(CH452_DIG7 | dat); 
} 
 
/************************************************************* 
* 数码管显示  
*  
**************************************************************/ 
void Display_LED(void) 
{ 
    if(Display_LED_En != 0x01) return; 
    Display_LED_En = 0x0; 
     
    Display_O2_Flow(Value_O2_Cur2);          // 显示氧气流量值 
    Display_N2O_Air_Flow(Value_N2O_Air_Cur2);// 显示笑气或空气值 
    Display_Qfg_Flow(Qfg_Flow_Cur);          // 显示Qfg流量值 
    Display_FiO2(FiO2_Cur);                  // 显示氧浓度值 
} 
 
/************************************************************* 
* 氧气流量显示  
* dat: 显示的流量值 
**************************************************************/ 
void Display_O2_Flow(unsigned int dat) 
{ 
    unsigned int Temp; 
     
    if(dat == Value_O2_Pre2) return; 
    Value_O2_Pre2 = dat; 
     
    Temp = dat; 
    if(Temp >= 1000) 
    { 
        CH452_Write_1(CH452_DIG0 | str[(unsigned char)(Temp/1000)]); 
        CH452_Write_1(CH452_DIG1 | str[((unsigned char)((Temp/100))%10)] | ST); 
        CH452_Write_1(CH452_DIG2 | str[((unsigned char)((Temp/10))%10)]); 
    } 
    else 
    { 
        CH452_Write_1(CH452_DIG0 | str[((unsigned char)((Temp/100))%10)] | ST); 
        CH452_Write_1(CH452_DIG1 | str[((unsigned char)((Temp/10))%10)]); 
        CH452_Write_1(CH452_DIG2 | str[(unsigned char)(Temp%10)]); 
    } 
} 
 
/************************************************************* 
* 笑气或空气流量显示  
* dat: 显示的流量值 
**************************************************************/ 
void Display_N2O_Air_Flow(unsigned int dat) 
{ 
    unsigned int Temp; 
    if(dat == Value_N2O_Air_Pre2) return; 
    Value_N2O_Air_Pre2 = dat; 
     
    Temp = dat; 
    if(Temp >= 1000) 
    { 
        CH452_Write_1(CH452_DIG3 | str[(unsigned char)(Temp/1000)]); 
        CH452_Write_1(CH452_DIG4 | str[((unsigned char)((Temp/100))%10)] | ST); 
        CH452_Write_1(CH452_DIG5 | str[((unsigned char)((Temp/10))%10)]); 
    } 
    else 
    { 
        CH452_Write_1(CH452_DIG3 | str[((unsigned char)((Temp/100))%10)] | ST); 
        CH452_Write_1(CH452_DIG4 | str[((unsigned char)((Temp/10))%10)]); 
        CH452_Write_1(CH452_DIG5 | str[(unsigned char)(Temp%10)]); 
    } 
} 
 
/************************************************************* 
* 混合气流量显示  
* dat: 显示的流量值 
**************************************************************/ 
void Display_Qfg_Flow(unsigned int dat) 
{ 
    unsigned int Temp; 
    unsigned char t; 
    if(dat == Qfg_Flow_Pre) return; 
    Qfg_Flow_Pre = dat;     
     
    Temp = dat; 
    t = (unsigned char)(Temp/1000); 
     
    if(t == 0) CH452_Write_2(CH452_DIG0 | str[10]);  
    else CH452_Write_2(CH452_DIG0 | str[t]); 
     
    CH452_Write_2(CH452_DIG1 | str[((unsigned char)((Temp/100))%10)] | ST); 
    CH452_Write_2(CH452_DIG2 | str[((unsigned char)((Temp/10))%10)]); 
    CH452_Write_2(CH452_DIG3 | str[(unsigned char)(Temp%10)]); 
} 
 
/************************************************************* 
* 氧气浓度显示  
* dat: 显示的浓度值(0~999) 
**************************************************************/ 
void Display_FiO2(unsigned int dat) 
{ 
    unsigned int Temp; 
    unsigned char t; 
    if(dat == FiO2_Pre) return; 
    FiO2_Pre = dat; 
     
    Temp = dat;    
    if(Temp >= 1000) 
    { 
        CH452_Write_2(CH452_DIG4 | str[1]); 
        CH452_Write_2(CH452_DIG5 | str[0]); 
        CH452_Write_2(CH452_DIG6 | str[0]); 
        return; 
    }     
    t = (unsigned char)(Temp/100);     
    if(t == 0) CH452_Write_2(CH452_DIG4 | str[10]);  
    else CH452_Write_2(CH452_DIG4 | str[t]); 
     
    CH452_Write_2(CH452_DIG5 | str[((unsigned char)((Temp/10))%10)] | ST); 
    CH452_Write_2(CH452_DIG6 | str[(unsigned char)(Temp%10)]); 
} 
 
/************************************************************* 
* 光柱显示  
**************************************************************/ 
void Display_Column(void) 
{ 
    if(Display_Column_En != 0x01) return; 
    Display_Column_En = 0x0; 
     
    Display_O2_Column(O2_Column_Cur); 
    Display_N2O_Air_Column(N2O_Air_Column_Cur); 
} 
 
/************************************************************* 
* 氧气光柱显示:每一次都重新显示  
* dat: 显示的量程(0~30) 
*************************************************************/ 
void Display_O2_Column(unsigned char dat) 
{ 
    unsigned char t; 
    if(dat == O2_Column_Pre) return; 
    O2_Column_Pre = dat; 
     
    t = dat; 
    if(t <= 8)  
    { 
        CH452_Write_3(CH452_DIG0 | column[t]);  
        CH452_Write_3(CH452_DIG1); 
        CH452_Write_3(CH452_DIG2); 
        CH452_Write_3(CH452_DIG3 | 0x40*LED1); 
    } 
    else if(t > 8 && t <= 16) 
    { 
        CH452_Write_3(CH452_DIG0 | column[8]); 
        CH452_Write_3(CH452_DIG1 | column[t%8]); 
        CH452_Write_3(CH452_DIG2); 
        CH452_Write_3(CH452_DIG3 | 0x40*LED1); 
    } 
    else if(t > 16 && t <= 24) 
    { 
        CH452_Write_3(CH452_DIG0 | column[8]); 
        CH452_Write_3(CH452_DIG1 | column[8]); 
        CH452_Write_3(CH452_DIG2 | column[t%8]); 
        CH452_Write_3(CH452_DIG3 | 0x40*LED1); 
    } 
    else 
    { 
        CH452_Write_3(CH452_DIG0 | column[8]); 
        CH452_Write_3(CH452_DIG1 | column[8]); 
        CH452_Write_3(CH452_DIG2 | column[8]); 
        CH452_Write_3(CH452_DIG3 | column[t%8] | 0x40*LED1);  
    } 
} 
 
/************************************************************* 
* 笑气空气光柱显示:每一次都重新显示  
* dat: 显示的量程(0~30) 
*************************************************************/ 
void Display_N2O_Air_Column(unsigned char dat) 
{ 
    unsigned char t; 
    if(dat == N2O_Air_Column_Pre) return; 
    N2O_Air_Column_Pre = dat; 
     
    t = dat; 
    if(t <= 8)  
    { 
        CH452_Write_3(CH452_DIG4 | column[t]);  
        CH452_Write_3(CH452_DIG5); 
        CH452_Write_3(CH452_DIG6); 
        CH452_Write_3(CH452_DIG7 | 0x40*LED3 | 0x80*LED2); 
    } 
    else if(t > 8 && t <= 16) 
    { 
        CH452_Write_3(CH452_DIG4 | column[8]); 
        CH452_Write_3(CH452_DIG5 | column[t%8]); 
        CH452_Write_3(CH452_DIG6); 
        CH452_Write_3(CH452_DIG7 | 0x40*LED3 | 0x80*LED2); 
    } 
    else if(t > 16 && t <= 24) 
    { 
        CH452_Write_3(CH452_DIG4 | column[8]); 
        CH452_Write_3(CH452_DIG5 | column[8]); 
        CH452_Write_3(CH452_DIG6 | column[t%8]); 
        CH452_Write_3(CH452_DIG7 | 0x40*LED3 | 0x80*LED2); 
    } 
    else 
    { 
        CH452_Write_3(CH452_DIG4 | column[8]); 
        CH452_Write_3(CH452_DIG5 | column[8]); 
        CH452_Write_3(CH452_DIG6 | column[8]); 
        CH452_Write_3(CH452_DIG7 | column[t%8] | 0x40*LED3 | 0x80*LED2);  
    } 
}