资讯详情

单片机驱动LCD完整代码

#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); }

标签: g14hdcrq流量传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台