📄 display.c.bak
字号:
{
if((Ddata->_Channal&0X1c00)==0x1c00)D->Mode=C_LCM_Mode13;//if(Data->_Channal&4)LCM->Mode=C_LCM_Mode13;
}
if(D->Mode==C_LCM_Mode15||D->Mode==C_LCM_Mode14||D->Mode==C_LCM_Mode13)
{
if((Ddata->_Channal&0Xe000)==0xe000)D->Mode=C_LCM_ALAMC;//if(Data->_Channal&8)LCM->Mode=C_LCM_ALAMC;
}
if(m!=D->Mode)D->Timer=0,D->FLAG=1;
// CHK_DISP_MODE(Ddata->_Channal,&D->Mode);
}
/////////////////////////////////////
Int16U ALAMC_mode_setion(Int16U m,Int16U n)
{
if(n<=(m*3))
{
LCMCmd(0x1);
LCMCmd(0x2);
return C_LCM_TEMRH;
}
else return m;
}
/////////////////////////////////////////////
void Display_mode_setion_ALAMC(_LCD *D,Int16U c)
{
Int16U b;
if(++D->Timer>=D->Comp)
{
D->Timer=0,D->Mode++;
D->Mode=ALAMC_mode_setion(D->Mode,c);
}
}
////////////////////////////////
Int16U BCD(Int16U B)
{
Int16U a,b;
a=B/100;
if(a>=10)a=9;
a<<=8;
B=B%100;
b=B/10;
b<<=4;
B=B%10;
B=a+b+B ;
return B;
}
void Disp_Table_Sub(Int16U *p,Int16U addrs,Int16U d)
{
Int16U a,b,c;
c=*p;
a=BCD(*p);
if(a>=0x100)
{
if(*p<0xfe)
{
b=a>>4;
WriteOneChar(addrs,b,1);
b=a&0xf;
b=ASCII_TAB[b];
WriteASCIIChar(addrs+1,b,32,0);
}else
{
WriteASCIIChar(addrs,'-','-',0);
WriteASCIIChar(addrs+1,'-','-',0);
}
}else
{
WriteOneChar(addrs,a,1);
WriteASCIIChar(addrs+1,32,32,0);
}
a=BCD(*++p),addrs+=3;
if(a>=0x100||a==0||c>=0xfe)
{
if(c<0xfe&&a!=0)
{
b=a>>4;
b=ASCII_TAB[b];
WriteASCIIChar(addrs,b,'.',0);
b=a&0xf;
b=ASCII_TAB[b];
WriteASCIIChar(addrs+1,b,'V',0);
}else
{
WriteASCIIChar(addrs,'-','-',0);
WriteASCIIChar(addrs+1,'-','-',0);
}
}else
{
if(*p>=21)b=0X28;
else b=0X10;
if((a>b)||(d!=0))
{
b=a&0xf;
b=ASCII_TAB[b];
WriteASCIIChar(addrs+1,b,'V',0);
b=a>>4;
b=ASCII_TAB[b];
WriteASCIIChar(addrs,b,'.',0);
}else
{
WriteASCIIChar(addrs+1,32,32,0);
WriteASCIIChar(addrs,32,32,0);
}
}
}
////////////////////////////////
void Disp_Table(Int16U *point,volatile Int16U n,Int16U m)
{
Int16U a,b;
Int8U x,addr;
if(n&0x4)n=1;
else n=0;
addr=0x93,b=m;
switch(m&7)
{
case 1:
Disp_Table_Sub(point,0x93,n);
break;
case 2:
point+=4;
Disp_Table_Sub(point,0x93,n);
break;
case 3:
Disp_Table_Sub(point,0x93,n);
point+=4;
Disp_Table_Sub(point,0x8b,n);
break;
case 4:
point+=8;
Disp_Table_Sub(point,0x93,n);
break;
case 5:
Disp_Table_Sub(point,0x93,n);
point+=8;
Disp_Table_Sub(point,0x8b,n);
break;
case 6:
point+=4;
Disp_Table_Sub(point,0x93,n);
point+=4;
Disp_Table_Sub(point,0x8b,n);
break;
case 7:
Disp_Table_Sub(point,0x93,n);
point+=4;
Disp_Table_Sub(point,0x8b,n);
point+=4;
Disp_Table_Sub(point,0x9b,n);
break;
}
#if 0
if(m&1)b=0xFFFE;
else
if(m&2)point+=4,b=0xFFFD;
else
if(m&4)point+=8,b=0xFFFB;
if(m!=0)
Disp_Table_Sub(point,0x93,n);
m&=b;
if(m&2)point+=4,b=0xFFFD;
else
if(m&4)point+=8,b=0xFFFB;
if(m!=0)
Disp_Table_Sub(point,0x8b,n);
m&=b;
if(m&1)
if(m&4)point+=8;
if((m&4)!=0)
Disp_Table_Sub(point,0x9b,n);
#endif
}
///////////////////////////////
Int16U display_Fault(Int16U _Over,Int16U _Fast,Int16U _Room,Int16U _Low,Int16U _Fault)
{
Int16U i,ii,iii,n,m;
iii=m=0;
if( _Over||_Fast||_Room||_Low||_Fault)WriteChar(0x81,6,TAB_FAU);
else WriteChar(0x92,5,NOFAULT_TAB);
for(i=0;i<C_RF_MAX_COUNT;++i)
{
ii=1<<i;
if((_Fault&1)&&((ii&iii)==0))
{
iii|=ii;
if(++m>=4)return 0;
if(m==1)n=0x90;
if(m==2)n=0x88;
if(m==3)n=0x98;
WriteOneChar(n,TAB_FAU_D[i],0);
WriteChar(++n,6,TAB_FAU_C);
}
_Fault>>=1;
if((_Over&1)&&((ii&iii)==0))
{
iii|=ii;
if(++m>=4)return 0;
if(m==1)n=0x90;
if(m==2)n=0x88;
if(m==3)n=0x98;
WriteOneChar(n,TAB_FAU_D[i],0);
WriteChar(++n,6,TAB_OVER_C);
}
_Over>>=1;
if((_Room&1)&&((ii&iii)==0))
{
iii|=ii;
if(++m>=4)return 0;
if(m==1)n=0x90;
if(m==2)n=0x88;
if(m==3)n=0x98;
WriteOneChar(n,TAB_FAU_D[i],0);
WriteChar(++n,7,TAB_Room_C);
}
_Room>>=1;
if((_Fast&1)&&((ii&iii)==0))
{
iii|=ii;
if(++m>=4)return 0;
if(m==1)n=0x90;
if(m==2)n=0x88;
if(m==3)n=0x98;
WriteOneChar(n,TAB_FAU_D[i],0);
WriteChar(++n,6,TAB_Fast_C);
}
_Fast>>=1;
if((_Low&1)&&((ii&iii)==0))
{
iii|=ii;
if(++m>=4)return 0;
if(m==1)n=0x90;
if(m==2)n=0x88;
if(m==3)n=0x98;
WriteOneChar(n,TAB_FAU_D[i],0);
WriteChar(++n,6,TAB_Low_C);
}
_Low>>=1;
}
return 0;
}
///////////////////////////////
void WritePicture(Int16U *pos)
{
Int16U a,b,c,TempData;
for(a=0;a<0x20;a++)
{
LCMCmd(0x34); // 8bit I/F, extend command
LCMCmd(0x80|a); // Y address
LCMCmd(0x80); // X address
// 8bit I/F, basic command, graphic on
for(b=0;b<8;b++)
{
c=a*8+b;
TempData=*(pos+c);
LCMData(TempData>>8);
LCMData(TempData&0xff);
}
for(b=0;b<8;++b)
{
c=(a+32)*8+b;
TempData=*(pos+c);
LCMData(TempData>>8);
LCMData(TempData&0xff);
}
}
LCMCmd(0x30);
LCMCmd(0x1);
LCMCmd(0x36);
}
///////////////////////////////
//disp_line(History[0].Spacecount,History[0].ATemper,Ddata->_Yorder);
//////////////////////////////
void disp_line(Int8U His_Space,Int8U *p,volatile Int16U DIV1,Int8U x)
{
Int16U b,a,c,d,e,f,g;
Int16U LineReg[512];
//if(DIV>=18)DIV=0;
for(a=0;a<512;++a)LineReg[a]=ORDER_TAB[a];
LineReg[15]=TAB_1[x];
LineReg[23]=TAB_2[x];
LineReg[31]=TAB_3[x];
LineReg[39]=TAB_4[x];
LineReg[47]=TAB_5[x];
LineReg[55]=TAB_6[x];
LineReg[63]=TAB_7[x];
LineReg[71]=TAB_8[x];
LineReg[8]|=TAB_DIV1[DIV1];
LineReg[16]|=TAB_DIV2[DIV1];
LineReg[24]|=TAB_DIV3[DIV1];
LineReg[32]|=TAB_DIV4[DIV1];
LineReg[40]|=TAB_DIV5[DIV1];
LineReg[48]|=TAB_DIV6[DIV1];
LineReg[56]|=TAB_DIV7[DIV1];
LineReg[64]|=TAB_DIV8[DIV1];
DIV1=LINE_DIV_TAB[DIV1];
c=*p;
if(c>=0xfe)c=0;
c*=10;
c/=DIV1;//Y轴
if(c>50)c=50;
for(a=0;a<His_Space;++a)
{
b=*p;
if(b>=0xfe)b=0;
b*=10;
b/=DIV1;//Y轴
if(b>50)b=50;
if(b>=c)
{
e=ORDER_TABX[a];//列
f=ORDER_TABXBIT[a];//位
for(g=c;g<=b;++g)
{
d=8*(58-g)+e;
LineReg[d]|=f;
}
}else
if(b<c)
{
d=8*(58-b)+ORDER_TABX[a];//列
LineReg[d]|=ORDER_TABXBIT[a];//位
e=ORDER_TABX[a-1];//列
f=ORDER_TABXBIT[a-1];//位
for(g=b;g<=c;++g)
{
d=8*(58-g)+e;
LineReg[d]|=f;
}
}
c=b,p++;
}
WritePicture(&LineReg[0]);
}
////////////////////////////////
////////////////////////////////
//disp_Timer(&Year[0],Ddata->_A_Tembuf,Ddata->_A_RHbuf)
Int8U disp_Timer(Int8U *p,Int16U temp,Int16U rh,Int8U *pos,Int16U m)
{
Int16U a;
if(*pos==1||(m!=0))
{
if(*pos==1)
{
LCMCmd(0x30);
LCMCmd(0x1);
}
LCMCmd(0x2);
WriteChar(0x90,4,TEM_TAB);
WriteChar(0x81,5,RH_TAB);
if(temp<0xfe)
{
if(temp>=(100+30))a=49;
else a=32;
if(temp<30)a='-';
WriteASCIIChar(0x94,':',a,0);
if(temp<30)temp=30-temp;
else
{
if(temp>=130)temp-=130;
else temp-=30;
}
a=BCD(temp);
WriteOneChar(0x95,a,1);
WriteOneChar(0x96,'度',0);
}else
{
WriteASCIIChar(0x94,':',32,0);
WriteASCIIChar(0x95,'-','-',0);
WriteASCIIChar(0x96,'-','-',0);
}
a=WEEKCHAR[*(p+3)&7];
WriteOneChar(0x8b,'星',0);
WriteOneChar(0x8c,'期',0);
WriteOneChar(0x8d,a,0);
a=*(p+2);
WriteOneChar(0x9a,a&0x3f,1);
WriteOneChar(0x9b,'点',0);
a=*(p+1);
WriteOneChar(0x9c,a&0X7F,1);
WriteOneChar(0x9d,'分',0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -