📄 display.c
字号:
/*===========================================================================
* 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 + -