#include “global.h”
#include “lcd.h”
#define cLcdCharStartIndex 0 #define cLcdCharCnt 52
#define COM0 0x08 // 0x01 #define COM1 0x04 //0x02 #define COM2 0x02 //0x04 #define COM3 0x01 //0x08
enum Pin5{T1=COM0,T2=COM1,T3=COM2,T4=COM3}; enum Pin6{A7=COM0,F7=COM1,E7=COM2,D7=COM3}; enum Pin7{T8=COM0,B7=COM1,G7=COM2,C7=COM3}; enum Pin8{A8=COM0,F8=COM1,E8=COM2,D8=COM3}; enum Pin9{B8=COM0,G8=COM1,C8=COM2,T9=COM3}; enum Pin10{A9=COM0,F9=COM1,E9=COM2,D9=COM3}; enum Pin11{B9=COM0,G9=COM1,C9=COM2,T10=COM3}; enum Pin12{S2=COM0,S3=COM1,S4=COM2,S5=COM3}; enum Pin13{A10=COM0,F10=COM1,E10=COM2,D10=COM3}; enum Pin14{T11=COM0,B10=COM1,G10=COM2,C10=COM3}; enum Pin15{A11=COM0,F11=COM1,E11=COM2,D11=COM3}; enum Pin16{B11=COM0,G11=COM1,C11=COM2,T12=COM3}; enum Pin17{S1=COM0,S10=COM1,S9=COM2,S8=COM3}; enum Pin18{A16=COM0,F16=COM1,E16=COM2,D16=COM3}; enum Pin19{T15=COM0,B16=COM1,G16=COM2,C16=COM3}; enum Pin20{A17=COM0,F17=COM1,E17=COM2,D17=COM3}; enum Pin21{B17=COM0,G17=COM1,C17=COM2,T16=COM3}; enum Pin22{A18=COM0,F18=COM1,E18=COM2,D18=COM3}; enum Pin23{B18=COM0,G18=COM1,C18=COM2,T17=COM3}; enum Pin24{N241=COM0,N242=COM1,T23=COM2,T24=COM3}; enum Pin25{T20=COM0,T21=COM1,T22=COM2,T25=COM3}; enum Pin30{B21=COM0,G21=COM1,C21=COM2,T18=COM3}; enum Pin31{A21=COM0,F21=COM1,E21=COM2,D21=COM3}; enum Pin32{B20=COM0,G20=COM1,C20=COM2,N321=COM3}; enum Pin33{A20=COM0,F20=COM1,E20=COM2,D20=COM3}; enum Pin34{B19=COM0,G19=COM1,C19=COM2,N341=COM3}; enum Pin35{A19=COM0,F19=COM1,E19=COM2,D19=COM3}; enum Pin36{B23=COM0,G23=COM1,C23=COM2,T19=COM3}; enum Pin37{A23=COM0,F23=COM1,E23=COM2,D23=COM3}; enum Pin38{B22=COM0,G22=COM1,C22=COM2,N381=COM3}; enum Pin39{A22=COM0,F22=COM1,E22=COM2,D22=COM3}; enum Pin40{B15=COM0,G15=COM1,C15=COM2,T14=COM3}; enum Pin41{A15=COM0,F15=COM1,E15=COM2,D15=COM3}; enum Pin42{B14=COM0,G14=COM1,C14=COM2,S6=COM3}; enum Pin43{A14=COM0,F14=COM1,E14=COM2,D14=COM3}; enum Pin44{B13=COM0,G13=COM1,C13=COM2,S7=COM3}; enum Pin45{A13=COM0,F13=COM1,E13=COM2,D13=COM3}; enum Pin46{T13=COM0,B12=COM1,G12=COM2,C12=COM3}; enum Pin47{A12=COM0,F12=COM1,E12=COM2,D12=COM3}; enum Pin48{B6=COM0,G6=COM1,C6=COM2,T7=COM3}; enum Pin49{A6=COM0,F6=COM1,E6=COM2,D6=COM3}; enum Pin50{B5=COM0,G5=COM1,C5=COM2,N501=COM3}; enum Pin51{A5=COM0,F5=COM1,E5=COM2,D5=COM3}; enum Pin52{B4=COM0,G4=COM1,C4=COM2,N521=COM3}; enum Pin53{A4=COM0,F4=COM1,E4=COM2,D4=COM3}; enum Pin54{T6=COM0,B3=COM1,G3=COM2,C3=COM3}; enum Pin55{A3=COM0,F3=COM1,E3=COM2,D3=COM3}; enum Pin56{B2=COM0,G2=COM1,C2=COM2,N561=COM3}; enum Pin57{A2=COM0,F2=COM1,E2=COM2,D2=COM3}; enum Pin58{B1=COM0,G1=COM1,C1=COM2,T5=COM3}; enum Pin59{A1=COM0,F1=COM1,E1=COM2,D1=COM3};
#define SEG_TYPE1 A1,B1,C1,D1,E1,F1,G1 //B.G,C #define SEG_TYPE2 A7,B7,C7,D7,E7,F7,G7
typedef struct { uint8_t Pin; //SEG0 typedef 相当于X uint8_t Dat; //相当于Y }Seg[cLcdCharCnt];
typedef union {
uint8_t SegBuf[cLcdCharCnt]; struct { uint8_t PIN8; //SEG0 typedef uint8_t PIN7; //1 uint8_t PIN6; //2 uint8_t PIN5; //3 uint8_t PIN59; //4 uint8_t PIN58; //5 uint8_t PIN57; //6 uint8_t PIN56; //7 uint8_t PIN55; //8 uint8_t PIN54; // 9 uint8_t PIN53; //10 uint8_t PIN52; //11 uint8_t PIN47; //12 uint8_t PIN46; //13 uint8_t PIN45; //14 uint8_t PIN44; //15 uint8_t PIN43; //16 uint8_t PIN42; //17 uint8_t PIN41; //18 uint8_t PIN40; //19 uint8_t PIN39; //20 uint8_t PIN38; //21 uint8_t PIN60; //空22 uint8_t PIN37; //23 uint8_t PIN32; //24 uint8_t PIN31; //25 uint8_t PIN30; //26 uint8_t PIN25; //27 uint8_t PIN24; //28 uint8_t PIN23; //29 uint8_t PIN22; //30 uint8_t PIN21; //31 uint8_t PIN20; //32 uint8_t PIN19; //33 uint8_t PIN18; //34 uint8_t PIN17; //35 uint8_t PIN16; //36 uint8_t PIN15; //37 uint8_t PIN14; //38 uint8_t PIN13; //39 uint8_t PIN12; //40 uint8_t PIN11; //41 uint8_t PIN10; // 42 uint8_t PIN9; //43 uint8_t PIN51; //44 uint8_t PIN50; //45 uint8_t PIN49; //46 uint8_t PIN48; //47 uint8_t PIN36; //48 uint8_t PIN35; //49 uint8_t PIN34; //50 uint8_t PIN33; //51 }Seg; }lcdFlag; lcdFlag LCD_SEG;
#define LCD_DATE LCD_SEG.Seg
uint8_t LCDSegBuf[cLcdCharCnt];
/* void SEG_Test() { uint16_t i; for(i=0;i<2*cLcdCharCnt;i ) { LCD_SEG.SegBuf[i]; } } */ void Up_lcd(void)
uint16_t i,k=0;
uint8_t buf;
for(i=0;i<cLcdCharCnt;i++)
{
if((i%2)==0) //0 2 4 ....
{
k=i/2;
buf=LCD_SEG.SegBuf[i]&0x0f;
buf=buf<<4;
LCDSegBuf[k]=buf; //
}
else //1 /3 /5
{
LCDSegBuf[k]|=LCD_SEG.SegBuf[i]; //0 ,1 ,2 低位
}
}
tm1729_disp(LCDSegBuf,cLcdCharCnt/2);
}
void Test_LCD(void) {
LCD_DATE.PIN60=0x00;
SolaSymbol(1);
TypeCInSymbol(1);
FanSymbol(1);
AcInSymbol(1);
DcOutSymbol(1);
TypeCOutSymbol(1);
InSymbol(1);
OutSymbol(1);
TempColSymbol(1);
UsbOutSymbol(1);
AcOutSymbol(1);
TempHotSymbol(1);//
ErrorCode(Test_buf,1);
PerNum(Test_buf, 1);
PerGird(Test_buf3, 1);
InputNum(Test_buf1,1);
OutputNum(Test_buf1,1);
HZNum(Test_buf,1);
VolNum(Test_buf1,1);
ChgTime(Test_buf2);
DisTime(Test_buf2);
}
void SegClr(uint8_t *dat)
{
uint16_t i;
for(i=0;i<cLcdCharCnt;i++)
{
//LCD_SEG.SegBuf[i]=0;
*dat=0;
dat++;
}
}
void SegSet(uint8_t *dat) { uint16_t i; for(i=0;i<cLcdCharCnt;i++) { // LCD_SEG.SegBuf[i]=0xff; *dat=0xff; dat++;
}
}
void ClrDat(void) {
//SegClr(LCDSegBuf);
//SegClr(LCD_SEG.SegBuf);
memset(LCDSegBuf, 0X00, cLcdCharCnt); //
memset(LCD_SEG.SegBuf, 0X00, cLcdCharCnt);
}
//enum SEG_D{a=0x01,b=0x02,c=0x04,d=0x08};
//enum Pin0{COM0,COM1,COM2,COM3};
//enum aaa{a=,b,c,d};
/* typedef enum { COM0=0x01,COM1=0x02,COM2=0x04,COM3=0x08, } SEG_D; */
void InitHT162X(void) {
/* GPIO_LCD(); SendCmd(0x01); //sys EN SendCmd(0X03); //LCD ON SendCmd(0X18); //RC 256 SendCmd(0X29); //1/3 Bias,1/4 Duty SendCmd(0X0F); Clr_1621(); */ }
/*************************** void ShowEN(uint8_t en,uint8_t *p)
函数名:void ShowEN(uint8_t en,uint8_t *p) 功能:显示与否 *********************************/ void ShowEn(uint8_t en,uint16_t *p) { if(en==0) { *p=10; } }
void DigitHandel(Digit_Type *p) {
Digit_Num(p->data,p->LB,p->HB,p->a,p->b,p->c,p->d,p->e,p->f,p->g);
}
void CallInPut(uint16_t dat) {
Digit_Type Dit;
//Dit.LCD_DATE.PIN11;
// dot=&LCD_DATE.PIN9;
/*
d1A=&LCD_DATE.PIN6;
d1B=&LCD_DATE.PIN7;
d2A=&LCD_DATE.PIN8;
d2B=&LCD_DATE.PIN9;
d3A=&LCD_DATE.PIN10;
d3B=&LCD_DATE.PIN11;
*/
DigitHandel(&Dit);
}
void Digit_Num(uint8_t data,uint8_t *LB,uint8_t *HB,uint8_t a,uint8_t b,uint8_t c,uint8_t d,uint8_t e,uint8_t f,uint8_t g) { switch(data) { case 0: {
(*LB)|=a; //A
(*HB)|=b; //B*
(*HB)|=c; //C
(*LB)|=d; //D*
(*LB)|=e; //E *
(*LB)|=f; //F *
(*HB)&=~g; //G
};
break;
case 1:
{
(*LB)&=~a; //A
(*HB)|=b; //B
(*HB)|=c; //C
(*LB)&=~d; //D
(*LB)&=~e; //E
(*LB)&=~f; //F
(*HB)&=~g; //G
};
break;
case 2:
{
(*LB)|=a; //A
(*HB)|=b; //B
(*HB)&=~c; //C
(*LB)|=d; //D
(*LB)|=e; //E
(*LB)&=~f; //F
(*HB)|=g; //G
};
break;
case 3:
{
(*LB)|=a; //A
(*HB)|=b; //B
(*HB)|=c; //C
(*LB)|=d; //D
(*LB)&=~e; //E
(*LB)&=~f; //F
(*HB)|=g; //G
};
break;
case 4:
{
(*LB)&=~a; //A
(*HB)|=b; //B
(*HB)|=c; //C
(*LB)&=~d; //D
(*LB)&=~e; //E
(*LB)|=f; //F
(*HB)|=g; //G
};
break;
case 5:
{
(*LB)|=a; //A
(*HB)&=~b; //B
(*HB)|=c; //C
(*LB)|=d; //D
(*LB)&=~e; //E
(*LB)|=f; //F
(*HB)|=g; //G
};
break;
case 6:
{
(*LB)|=a; //A
(*HB)&=~b; //B
(*HB)|=c; //C
(*LB)|=d; //D
(*LB)|=e; //E
(*LB)|=f; //F
(*HB)|=g; //G
};
break;
case 7:
{
(*LB)|=a; //A
(*HB)|=b; //B
(*HB)|=c; //C
(*LB)&=~d; //D
(*LB)&=~e; //E
(*LB)&=~f; //F
(*HB)&=~g; //G
};
break;
case 8:
{
(*LB)|=a; //A
(*HB)|=b; //B
(*HB)|=c; //C
(*LB)|=d; //D
(*LB)|=e; //E
(*LB)|=f; //F
(*HB)|=g; //G
};
break;
case 9:
{
(*LB)|=a; //A
(*HB)|=b; //B
(*HB)|=c; //C
(*LB)|=d; //D
(*LB)&=~e; //E
(*LB)|=f; //F
(*HB)|=g; //G
};
break;
default:
{
(*LB)&=~a; //A
(*HB)&=~b; //B
(*HB)&=~c; //C
(*LB)&=~d; //D
(*LB)&=~e; //E
(*LB)&=~f; //F
(*HB)&=~g; //G
}
break;
}
}
/********************* void InputNum(uint16_t dat) 显示输入4位数码管
***********************/
void InputNum(uint16_t dat,uint8_t en) { uint16_t buf; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN49,&LCD_DATE.PIN48,SEG_TYPE1); // Digit_Num(buf,&LCD_DATE.PIN55,&LCD_DATE.PIN54,SEG_TYPE2); // dat=dat/10; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN51,&LCD_DATE.PIN50,SEG_TYPE1); // Digit_Num(buf,&LCD_DATE.PIN53,&LCD_DATE.PIN52,SEG_TYPE1); // dat=dat/10; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN53,&LCD_DATE.PIN52,SEG_TYPE1); //Digit_Num(buf,&LCD_DATE.PIN51,&LCD_DATE.PIN50,SEG_TYPE1); // dat=dat/10; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN55,&LCD_DATE.PIN54,SEG_TYPE2); //Digit_Num(buf,&LCD_DATE.PIN49,&LCD_DATE.PIN48,SEG_TYPE1); //
SetSymbol(&LCD_DATE.PIN48,T7,en);
SetSymbol(&LCD_DATE.PIN54,T6,en);
/*
if(en==0) { LCD_DATE.PIN48&=~T7; //W LCD_DATE.PIN54&=~T6; //input } else { LCD_DATE.PIN48|=T7; //W LCD_DATE.PIN54|=T6; //input }
*/
}
void InputNum_Clr(void) { uint16_t buf; buf=10; Digit_Num(buf,&LCD_DATE.PIN55,&LCD_DATE.PIN54,SEG_TYPE2); // Digit_Num(buf,&LCD_DATE.PIN53,&LCD_DATE.PIN52,SEG_TYPE1); // Digit_Num(buf,&LCD_DATE.PIN51,&LCD_DATE.PIN50,SEG_TYPE1); // Digit_Num(buf,&LCD_DATE.PIN49,&LCD_DATE.PIN48,SEG_TYPE1); // LCD_DATE.PIN48&=~T7; LCD_DATE.PIN54&=~T6; //input
}
/**************************** 函数名:void OutputNum(uint16_t dat) 功能:显示输出4位数码管
****************************/ void OutputNum(uint16_t dat,uint8_t en) { uint16_t buf; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN41,&LCD_DATE.PIN40,SEG_TYPE1); // dat=dat/10; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN43,&LCD_DATE.PIN42,SEG_TYPE1); // dat=dat/10; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN45,&LCD_DATE.PIN44,SEG_TYPE1); // dat=dat/10; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN47,&LCD_DATE.PIN46,SEG_TYPE2); //
SetSymbol(&LCD_DATE.PIN40,T14,en); //W
SetSymbol(&LCD_DATE.PIN46,T13,en); //input
/*
if(en==0)
{
LCD_DATE.PIN40&=~T14; //W
LCD_DATE.PIN46&=~T13; //input
}
else
{
LCD_DATE.PIN40|=T14; //W
LCD_DATE.PIN46|=T13; //input
}
*/
}
void OutputNum_Clr(void) { uint16_t buf; buf=10; Digit_Num(buf,&LCD_DATE.PIN47,&LCD_DATE.PIN46,SEG_TYPE2); // Digit_Num(buf,&LCD_DATE.PIN45,&LCD_DATE.PIN44,SEG_TYPE1); // Digit_Num(buf,&LCD_DATE.PIN43,&LCD_DATE.PIN42,SEG_TYPE2); // Digit_Num(buf,&LCD_DATE.PIN41,&LCD_DATE.PIN40,SEG_TYPE1); // LCD_DATE.PIN40&=~T14; LCD_DATE.PIN46&=~T13; //input
}
/***********************************
if(RemainTime>=60)
{
if(RemainTime>=600)
{
TimeHour(RemainTime/60,0);
}
else
{
TimeHour(RemainTime/6,1);
}
}
else
{
TimeMin(RemainTime);
}
***************************************/ void TimeHour(uint16_t dat,uint16_t chn,uint8_t en) {
// uint16_t hour,min;
uint16_t buf,buf1;
uint8_t *dot,*d1A,*d2A,*d3A,*d1B,*d2B,*d3B,*H;
if(chn==0)
{
H=&LCD_DATE.PIN11;
dot=&LCD_DATE.PIN9;
d1A=&LCD_DATE.PIN6;//高位
d1B=&LCD_DATE.PIN7;
d2A=&LCD_DATE.PIN8;
d2B=&LCD_DATE.PIN9;
d3A=&LCD_DATE.PIN10;
d3B=&LCD_DATE.PIN11;
}
else
{
H=&LCD_DATE.PIN23;
dot=&LCD_DATE.PIN21;
d1A=&LCD_DATE.PIN18;
d1B=&LCD_DATE.PIN19;
d2A=&LCD_DATE.PIN20;
d2B=&LCD_DATE.PIN21;
d3A=&LCD_DATE.PIN22;
d3B=&LCD_DATE.PIN23;
}
*H|=T10; //显示H图标
if(en==0)
{
buf=10;
Digit_Num(buf,d1A,d1B,SEG_TYPE2); //
Digit_Num(buf,d2A,d2B,SEG_TYPE1); //
Digit_Num(buf,d3A,d3B,SEG_TYPE1); //
*H&=~T10;
*dot&=~T9; //不显示小数点
}
else if(dat>=6000)
{
dat=dat/60;
*dot&=~T9; //不显示小数点
buf=dat%10;
Digit_Num(buf,d3A,d3B,SEG_TYPE1); //
dat=dat/10;
buf=dat%10;
Digit_Num(buf,d2A,d2B,SEG_TYPE1); //
dat=dat/10;
buf=dat%10;
Digit_Num(buf,d1A,d1B,SEG_TYPE2); //
}
else
{
*dot|=T9; //显示小数点
buf1=dat%60; //小数点
buf1=buf1/6;// 0.1=6MIN进制
Digit_Num(buf1,d3A,d3B,SEG_TYPE1); //小数点
dat=dat/60; //转换到60MIN=1h
buf=dat%10;
Digit_Num(buf,d2A,d2B,SEG_TYPE1); //
dat=dat/10;
buf=dat%10;
Digit_Num(buf,d1A,d1B,SEG_TYPE2); //
}
}
/******************* 函数名:void PerNum(uint16_t dat) 功能:显示百分比数值
***********************/ void PerNum(uint16_t dat,uint8_t en) {
uint16_t buf;
uint8_t *d1A,*d2A,*d3A,*d1B,*d2B,*d3B;
//*H=LCD_DATE.PIN11;
// *dot=LCD_DATE.PIN15;
d1A=&LCD_DATE.PIN15;
d1B=&LCD_DATE.PIN16;
d2A=&LCD_DATE.PIN13;
d2B=&LCD_DATE.PIN14;
d3A=&LCD_DATE.PIN14; //100
d3B=&LCD_DATE.PIN16; //%
buf=dat%10;
ShowEn(en,&buf);
Digit_Num(buf,d1A,d1B,SEG_TYPE1); //
/*
if(dat<10)
{
buf=10;
}
else
{
dat=dat/10;
buf=dat%10;
}
*/
dat=dat/10;
buf=dat%10;
ShowEn(en,&buf);
Digit_Num(buf,d2A,d2B,SEG_TYPE2); //
dat=dat/10;
buf=dat%10;
if(buf==1) //100
{
*d3A|=T11;
}
else
{
*d3A&=~T11;
}
SetSymbol(d3B,T12,en);
/*
if(en==0)
{
*d3B&=~T12;
}
else
*d3B|=T12;
*/
// Digit_Num(buf,&LCD.PIN6,&LCD.PIN5,A1,B1,C1,D1,E1,F1,G1); //
}
/********************************* 函数名:void PerGird(uint16_t dat) 功能:百分比格数
**********************************/
void PerGird(uint16_t dat,uint8_t en) { uint16_t buf; uint8_t *A1,*A2,*A3,*A4,*A5,*A6,*A7,*A8,*A9,*A10;
A1=&LCD_DATE.PIN17;
A2=&LCD_DATE.PIN12;
A3=&LCD_DATE.PIN12;
A4=&LCD_DATE.PIN12;
A5=&LCD_DATE.PIN12;
A6=&LCD_DATE.PIN42;
A7=&LCD_DATE.PIN44;
A8=&LCD_DATE.PIN17;
A9=&LCD_DATE.PIN17;
A10=&LCD_DATE.PIN17;
buf=dat;
if(en==0)
{
buf=10;
}
switch (buf)
{ case 0: { //S1|=LCD_DATE.PIN16 *A1&=~S1; *A2&=~S2; *A3&=~S3; *A4&=~S4; *A5&=~S5; *A6&=~S6; *A7&=~S7; *A8&=~S8; *A9&=~S9; *A10&=~S10;
}
break;
case 1:
{
*A1|=S1;
*A2&=~S2;
*A3&=~S3;
*A4&=~S4;
*A5&=~S5;
*A6&=~S6;
*A7&=~S7;
*A8&=~S8;
*A9&=~S9;
*A10&=~S10;
}
break;
case 2:
{
*A1|=S1;
*A2|=S2;
*A3&=~S3;
*A4&=~S4;
*A5&=~S5;
*A6&=~S6;
*A7&=~S7;
*A8&=~S8;
*A9&=~S9;
*A10&=~S10;
}
break;
case 3:
{
*A1|=S1;
*A2|=S2;
*A3|=S3;
*A4&=~S4;
*A5&=~S5;
*A6&=~S6;
*A7&=~S7;
*A8&=~S8;
*A9&=~S9;
*A10&=~S10;
}
break;
case 4:
{
*A1|=S1;
*A2|=S2;
*A3|=S3;
*A4|=S4;
*A5&=~S5;
*A6&=~S6;
*A7&=~S7;
*A8&=~S8;
*A9&=~S9;
*A10&=~S10;
}
break;
case 5:
{
*A1|=S1;
*A2|=S2;
*A3|=S3;
*A4|=S4;
*A5|=S5;
*A6&=~S6;
*A7&=~S7;
*A8&=~S8;
*A9&=~S9;
*A10&=~S10;
}
break;
case 6:
{
*A1|=S1;
*A2|=S2;
*A3|=S3;
*A4|=S4;
*A5|=S5;
*A6|=S6;
*A7&=~S7;
*A8&=~S8;
*A9&=~S9;
*A10&=~S10;
}
break;
case 7:
{
*A1|=S1;
*A2|=S2;
*A3|=S3;
*A4|=S4;
*A5|=S5;
*A6|=S6;
*A7|=S7;
*A8&=~S8;
*A9&=~S9;
*A10&=~S10;
}
break;
case 8:
{
*A1|=S1;
*A2|=S2;
*A3|=S3;
*A4|=S4;
*A5|=S5;
*A6|=S6;
*A7|=S7;
*A8|=S8;
*A9&=~S9;
*A10&=~S10;
}
break;
case 9:
{
*A1|=S1;
*A2|=S2;
*A3|=S3;
*A4|=S4;
*A5|=S5;
*A6|=S6;
*A7|=S7;
*A8|=S8;
*A9|=S9;
*A10&=~S10;
}
break;
case 10:
{
*A1|=S1;
*A2|=S2;
*A3|=S3;
*A4|=S4;
*A5|=S5;
*A6|=S6;
*A7|=S7;
*A8|=S8;
*A9|=S9;
*A10|=S10;
}
break;
default:
{
*A1&=~S1;
*A2&=~S2;
*A3&=~S3;
*A4&=~S4;
*A5&=~S5;
*A6&=~S6;
*A7&=~S7;
*A8&=~S8;
*A9&=~S9;
*A10&=~S10;
}
break;
} }
/*************************** 函数名:void ErrorCode(uint16_t dat) 功能:故障代码显示
*************************/ void ErrorCode(uint16_t dat,uint8_t en) {
uint16_t buf;
uint8_t *d1A,*d2A,*d1B,*d2B,*d3B;
d1A=&LCD_DATE.PIN59;
d1B=&LCD_DATE.PIN58;
d2A=&LCD_DATE.PIN57;
d2B=&LCD_DATE.PIN56;
//*d3A=LCD_DATE.PIN14; //100
d3B=&LCD_DATE.PIN5; //%
SetSymbol(d3B,T1,en);
if(en==0)
{
Digit_Num(10,d1A,d1B,SEG_TYPE1); //
Digit_Num(10,d2A,d2B,SEG_TYPE1); //
// *d3B&=~T1;
}
else
{
buf=dat%10;
Digit_Num(buf,d2A,d2B,SEG_TYPE1); //
dat=dat/10;
buf=dat%10;
if(buf!=0)
Digit_Num(buf,d1A,d1B,SEG_TYPE1); //
else
Digit_Num(10,d1A,d1B,SEG_TYPE1);
//*d3B|=T1;
}
}
/**************************** 函数名:void OutputNum(uint16_t dat) 功能:显示输出4位数码管 位置 19 20 21 ****************************/ void VolNum(uint16_t dat,uint8_t en) { uint16_t buf;
buf=dat%10;
ShowEn(en,&buf);
Digit_Num(buf,&LCD_DATE.PIN31,&LCD_DATE.PIN30,SEG_TYPE1); //
dat=dat/10;
buf=dat%10;
ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN33,&LCD_DATE.PIN32,SEG_TYPE1); // dat=dat/10; buf=dat%10; ShowEn(en,&buf); Digit_Num(buf,&LCD_DATE.PIN35,&LCD_DATE.PIN34,SEG_TYPE1); //
SetSymbol(&LCD_DATE.PIN30,T18,en);
/*
if(en==0)
{
LCD_DATE.PIN30&=~T18; //V
}
else
{
LCD_DATE.PIN30|=T18; //V
}
*/
}
/**************************** 函数名:void OutputNum(uint16_t dat) 功能:显示输出4位数码管 位置 22 23 ****************************/ void HZNum(uint16_t dat,uint8_t en) { uint16_t buf;
buf=dat%10;
ShowEn(en,&buf);
Digit_Num(buf,&LCD_DATE.PIN37,&LCD_DATE.PIN36,SEG_TYPE1); //
dat=dat/10;
buf=dat%10;
ShowEn(en,&buf);
Digit_Num(buf,&LCD_DATE.PIN39,&LCD_DATE.PIN38,SEG_TYPE1); //
SetSymbol(&LCD_DATE.PIN36,T19,en);
/*
if(en==0)
{
LCD_DATE.PIN36&=~T19; //HZ
}
else
{
LCD_DATE.PIN36|=T19; //HZ
//LCD_DATE.PIN46|=T13; //input
}
*/
}
//LCD_SEG.Seg.PIN8|=T8;
void SetSymbol(uint8_t *pin,uint8_t t,uint8_t en) {
//*pin|=t;
if(en==1)
{
(*pin)|=t;
}
else
{
(*pin)&=~t;
}
}
/*************************
函数名:void AcIN(uint8_t en) 功能:AC符号 **************************/ void AcInSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN5,T2,en); }
/*******************************
函数名:void FanSymbol(uint8_t en) 功能:风扇符号 ******************************/ void FanSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN5,T3,en); }
/************************* 函数名:void TypeCInSymbol(uint8_t en) 功能:TYPE充电符号
**********************/ void TypeCInSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN5,T4,en); }
/******************************** 函数名:void SolaSymbol(uint8_t en) 功能:太阳能充电符号
*****************************/ void SolaSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN58,T5,en); }
/***************************** 函数名:void InSymbol(uint8_t en) 功能:充电中符号
LCD_SEG.Seg.PIN8|=T8; ********************************/ void InSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN7,T8,en); //LCD_SEG.Seg.PIN8|=T8;
}
void OutSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN19,T15,en); }
void AcOutSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN25,T20,en); }
void UsbOutSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN25,T21,en); } void TypeCOutSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN25,T22,en); } void DcOutSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN24,T23,en); }
void TempHotSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN24,T24,en); }
void TempColSymbol(uint8_t en) { SetSymbol(&LCD_DATE.PIN25,T25,en); }
/**************************
函数名:void DisTime(uint16_t dat) 功能:放电时间 *************************/ void DisTime(uint16_t dat) { TimeHour(dat,1,1); }
/*************************** 函数名:void ChgTime(uint16_t dat) 功能:充电时间
*****************************/
void ChgTime(uint16_t dat) { TimeHour(dat,0,1); }
/************************************ 函数名:void Disp_Num(uint16_t dat,void(*fun)(uint16_t)) 功能:调用显示函数
*************************************/ void Disp_Num(uint16_t dat,void(*fun)(uint16_t,uint8_t)) { (*fun)(dat,1); }