⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.c

📁 一个电表的程序
💻 C
📖 第 1 页 / 共 2 页
字号:




/*===========================================================================
* Copyright (c) 2004,三星科技有限公司 
* All rights reserved.
* 
* 文件名称:display.c
* 文件标识:
* 摘    要:DDS188
*          
* 
* 当前版本:V 1.0
* 作    者:叶孟军
* 修改内容:
* 开始日期:2005年7月25日
* 完成日期:2005年7月

==============================================================================*/
#include 	"iodefine.h"
#include	"extern.h"

#define 	HELLO_Code 		11
#define 	END_Code		22  
#define 	ERROR_Code 		33
#define 	E2ERR_Code 		44
#define 	R8025ERR_Code 	55

#define		EngyTtl_CODE		0x9010 
#define 	EngyTar2_CODE		0x9012
#define 	LEngyTtl_CODE		0xe310
#define 	LEngyTar2_CODE		0xe312

const unsigned char Lcd_Data[17]={0x7d,0x60,0x3e,0x7a,0x63,0x5b,0x5f,0x70,
								//	0    1    2    3    4    5    6   7 
								   0x7f,0x7b,0x67,0x1f,0x0d,0x77,0x46,0x6e,0x00};
  		    					//	8    9    H    E     L   R     n    d   不显
  		    					
    					

void RDtWk_Dtr_Disp(void);			//日期显示
void RTm_Dtr_Disp(void);			//时间显示
void Volatage_Disp(void); 			//电压显示
void Current_Disp(void); 			//电流显示
void Freq_Disp(void); 			//频率显示
void Enger0_disp(void);				//总电量显示
void  PowerDwn_Disp(void)
{
    if(Time1s_Flg2)
	 {
	    Time1s_Flg2 = 0;
        RStpDspTm_Dtr[0] --;
		if(RStpDspTm_Dtr[0] == 0x00)
		 {
		    RStpDspTm_Dtr[0] = 0x09;
          }
		if(RStpDspTm_Dtr[0] < RShftDspTm_Dtr[0])
		 {
		    Clr_Buffer();		//停显
          }
        else
		 {
            Enger0_disp();			//当前总电量显示
		  }		
      }
  	Load_LcdRam();
   }//switch end

void F_DispMain_Disp(void)
{
    Open_Disp =1;			//LCD处于一直显示状态
//   	ClsLcd_Jdg_Disp();		//开关显示判断	
    Trigger_Disp();			//触发显示判断
    Proceed_1s_Disp();
    OutPtDt_Disp(); 
	Load_LcdRam();
}


/*===================================================================
====函数说明:触发信号处理。
====		 
====函数入口:无。
====函数出口:无。
====================================================================*/
void Trigger_Disp(void)								
{
	E2Err_Disp = 0;
	R8025Err_Disp = 0;																								
	if(DispAllOn_Flg  == 0x38)
	{
		DispAllOn_Flg  = 0;                                  				
	    Disp_WORD = 0;
	    AllFlg_Disp = 1;
	    CtDown_Disp = 3;
	}
	else if(Hello_Flg == 0x38) 
	{
		Hello_Flg = 0;                                            
	    Disp_WORD = 0;                                            
	    Hello_Disp = 1;                                            
	    CtDown_Disp = 3;
	}
	else if((End_Flg == 0x38) && ((Disp_WORD & 0x7ff3) == 0))
	{		
//		End_Trig = 0;     
        End_Flg = 0x00;                                                 
	    Disp_WORD = 0;                                            
	    End_Disp = 1;                                            
	    CtDown_Disp = 3;
	} 
	else if(ClbrtTm_Trig)
	{
		ClbrtTm_Trig = 0;                                            
	    Disp_WORD = 0;                                            
	    ClbrtTm_Disp = 1;                                            
	    CtDown_Disp = 7;
	} 
	else if(ComDisp_Trig)		        
	{
		ComDisp_Trig = 0;
		NewComDisp_Disp = 1;                                             
	    Disp_WORD = 0;                                            
	    ComDisp_Disp = 1;                                            
	    CtDown_Disp = RShftDspTm_Dtr[0];
	} 
	else if(KeyDisp_Trig)				        
	{
		KeyDisp_Trig = 0;                                            
	    Disp_WORD = 0;                                            
	    KeyDisp_Disp = 1;                                            
	    CtDown_Disp = RShftDspTm_Dtr[0];
	    KeyTrig_Disp();			//键显子程序
	} 
}

/*===================================================================
====函数说明:1秒信号处理。
====		 
====函数入口:无。
====函数出口:无。
====================================================================*/

void Proceed_1s_Disp(void)
{
   if(NewComDisp_Tm > 60)			//通信触发显示信号计时
	{
		TmSctNo_Disp = 9;
	 }
   else
	{
		NewComDisp_Tm++;
	 }
   if(E2Err_Disp)
	{
		return;
	 }
   else
	{
	   if(Time1s_Flg2 == 1)
		{
			Time1s_Flg2 = 0;
			if((Shut_Disp != 1) || (CtDown_Disp != 0))
			 {
				CtDown_Disp--;
				if(NghtCtDown_Disp !=0)
				 {
				    NghtCtDown_Disp--;
					if(NghtCtDown_Disp == 0)
					 {
						if(Disp_WORD == 0)
						 {
							CtDown_Disp = 0;
						}
					}
				}
			}
			if(CtDown_Disp == 0)
			{
                DispComm_Flg = 0x00;
				if(Hello_Disp)
				{
					Hello_over = 1;
				}
				else
				{
					if((Disp_WORD & 0xfffd)== 0)
					{
						if(Open_Disp)
						{
							Shut_Disp = 0;
							Rtt_Disp();
						}
						else if(NghtCtDown_Disp != 0)
						{
							Shut_Disp = 0;
							Rtt_Disp();
						}
						else
						{
							Shut_Disp = 1;			//关显示
						}
					}
					else
					{
						Disp_WORD = 0;
						Stop_Disp = 0;	//置轮显标识
						if(Open_Disp)
						{
							Rtt_Disp();
						}
						else
						{
							NghtCtDown_Disp = 180;
							Rtt_Disp();
						}
					}
				}
			}
		}
	}//else end				
}

/*===================================================================
====函数说明:显示数据输出函数。
====		 
====函数入口:无。
====函数出口:无。
====================================================================*/
void Enger0_disp(void)				//总电量显示
{
  Engy_Disp(EngyTtl_CODE);	
  LcdBuf_Disp[1] |= 0x80;	//正方向显示 
}


void Enger1_disp(void)		//上月总电量显示
{
  LcdBuf_Disp[9] = 0x02;	//上月显示 
  Engy_Disp(0xe310);	
  LcdBuf_Disp[1] |= 0x80;	//正方向显示 
}

void Enger2_disp(void)		//上月总电量显示
{
  LcdBuf_Disp[9] = 0x03;	//上上月显示   
  Engy_Disp(0xe320);	
  LcdBuf_Disp[1] |= 0x80;	//正方向显示 
}

void Enger3_disp(void)		//反向总电量显示
{
  Engy_Disp(0x9020);	
  LcdBuf_Disp[0] |= 0x80;	//反方向显示 
}



////////////////////////////////////////////////////////////////////

void OutPtDt_Disp(void)
{
	unsigned char i;
	for(i=0;i<8;i++)
     {
        LcdBuf_Disp[i] =0x00;
      }
    if(Power_Flg.BYTE ==  0x01)
     {
        LcdBuf_Disp[8] = 0x00;
      }
    else
     {
        LcdBuf_Disp[8] &= 0x0a;
      }
    LcdBuf_Disp[9] &= 0x00;
	if(AllFlg_Disp)
	{
		AllToBuf_Disp();
	}
	else if(Hello_Disp)
	{
		CommTrig_Disp(HELLO_Code);
		if(Hello_over)
		{
			Hello_over = 0;
			Hello_Disp = 0;
		}      
	}
	else if(End_Disp)
	{
		CommTrig_Disp(END_Code);
	}
/*	else if(Error_Disp)
	{
		CommTrig_Disp(ERROR_Code);
	}*/
	else if(ClbrtTm_Disp)
	{
	   RTm_Dtr_Disp();   
	}
	else if(KeyDisp_Disp)
	{
		switch(RKeyDspNo_Dtr[KeyPnter_Disp])
		{
			case 0x00:
			Enger0_disp();			//当前总电量显示		
			break;                              
			                                    
			case 0x01:                          
			Enger1_disp();			//上月总电量显示
			break;

			case 0x02:                          
			Enger2_disp();			//上上月电量显示
			break;

			case 0x03:                          
			Enger3_disp();			//反向电量显示
			break;	
		
			case 0x04:              //日期显示            
		    RDtWk_Dtr_Disp();
			break;

            case 0x05:				//时间显示
            RTm_Dtr_Disp();      
            break;
  
			case 0x06:
			UsrNoTobuf_Disp();		//表号显示
			break;			
			
			case 0x07:				//脉冲常数显示
            AUtRdTm_Disp();
            break;
		
			default:
            KeyPnter_Disp = 0x00;
//            RTm_Dtr_Disp();   
			break;
		}
	}
/*	else if(E2Err_Disp)
	{
		CommTrig_Disp(E2ERR_Code);
	}*/
/*	else if(R8025Err_Disp)
	{
		CommTrig_Disp(R8025ERR_Code);
	}*/
	else if(Shut_Disp)
	{
		Clr_Buffer();			//关显
	}
	else						//轮显
	{
		if(Stop_Disp)
		{
			Clr_Buffer();		//停显
		}
		else
		{	
          switch(RRttDspNo_Dtr[RttPnter_Disp])
			{
			case 0x00:
			Enger0_disp();			//当前总电量显示		
			break;                              
			                                    
			case 0x01:                          
			Enger1_disp();			//上月总电量显示
			break;

			case 0x02:                          
			Enger2_disp();			//上上月电量显示
			break;

			case 0x03:                          
			Enger3_disp();			//反向电量显示
			break;	
		
			case 0x04:              //日期显示            
		    RDtWk_Dtr_Disp();
			break;

            case 0x05:				//时间显示
            RTm_Dtr_Disp();      
            break;
  
			case 0x06:
			UsrNoTobuf_Disp();		//表号显示
			break;			
			
			case 0x07:				//脉冲常数显示
            AUtRdTm_Disp();
            break;
		

			default:
            RttPnter_Disp = 0;
			break;
			}//switch end
		}//else end
	}
}


/*===================================================================
====函数说明:正常轮显子函数。
====		 
====函数入口:无。
====函数出口:无。
====================================================================*/

void Rtt_Disp(void)
{
	if(!Stop_Disp)
	{
		Stop_Disp = 1;
		CtDown_Disp = RStpDspTm_Dtr[0];
		if(CtDown_Disp != 0)
		{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -