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

📄 lcd2demo_85j90_r0.c

📁 是关于PIC单片机(型号是PIC18f85j90)实现液晶显示的一个DEMO
💻 C
📖 第 1 页 / 共 3 页
字号:
			S_1 = Default;
			S_2 = Default;

			F4ON; MCHPON; VaritronixON;
			BarGraph(20);
			S1FON;S1EON;S1DON;S1CON;S1GON; 	// b
			S2FON;S2EON; 					// i
			S3Num(A); 						// A
			S4Num(5);						// S
			S5GON;

			Temp_bits.ch = 0;
			Temp_bits.location.b2 = LCDREGbits.BIAS2;
			Temp_bits.location.b1 = LCDREGbits.BIAS1;
			Temp_bits.location.b0 = LCDREGbits.BIAS0;

			while (S_2 == Default)
			{
			 Delay_LP(); 					//Delay for Key press
			 if (PORTAbits.RA6 == 0)
				{
					if (Temp_bits.ch <7) Temp_bits.ch++;
				}
			 else if (PORTAbits.RA7 == 0)
				{
					if (Temp_bits.ch > 0) Temp_bits.ch--;
				}

 			 LCDREGbits.BIAS2 = Temp_bits.location.b2;
	         LCDREGbits.BIAS1 = Temp_bits.location.b1;
			 LCDREGbits.BIAS0 = Temp_bits.location.b0;

			 S6Num(Temp_bits.location.b2);
			 S7Num(Temp_bits.location.b1);
			 S8Num(Temp_bits.location.b0);
			}

			DemoCode = F_1;
			DisplayOff();
			OSCCONbits.IRCF2 = 1;
		}
	}

}//END Main

//**********************************************************************
// End of Main Program
//**********************************************************************
//----------------------------------------------------------------------------
// High priority interrupt vector

#pragma code InterruptVectorHigh = 0x08
void
InterruptVectorHigh (void)
{
  _asm
    goto InterruptHandlerHigh //jump to interrupt routine
  _endasm
}

//----------------------------------------------------------------------------
// High priority interrupt routine

#pragma code
#pragma interrupt InterruptHandlerHigh

void
InterruptHandlerHigh ()
{

    if (PIR1bits.TMR1IF == 1)
    {
		PIR1bits.TMR1IF = 0;
		SEC++;
		if (SEC > 59){ SEC = 0; MIN++;}
		if (MIN > 59){ MIN = 0; HR++;}
		if (HR > 23 ) { HR = 0;}

		TMR1H = 0x80;
    	SEC_FLAG = ~SEC_FLAG;
		SEC_FG = 1;
	}

	if (PIR1bits.ADIF == 1)
	{
		PIR1bits.ADIF = 0;
		Temp = ADCON0 & 0x3C;
		if ( Temp == 0){an0voltage = ((unsigned int)(ADRESH) << 8) + ADRESL;}
		if ( Temp == 8){an2voltage = ((unsigned int)(ADRESH) << 8) + ADRESL;}
	}

	if (INTCONbits.RBIF == 1)
	{
		INTCONbits.RBIF = 0;
		Port_bits.ch = PORTB;
		if (Port_bits.location.b7 == 1){S_2 = Pressed;}
		if (Port_bits.location.b6 == 1){S_1 = Pressed;}
	}

	if (PIR2bits.TMR3IF == 1)
    {
		PIR2bits.TMR3IF = 0;
		TMR3FG = 1;
    }

}
//**********************************************************************
void Thermometer (void)
{
	if (SEC_FLAG == 0)
	{
	j= 2*(Reading - 392);
	k= HEX2BIN (j); //to display in C
	Temp_Display_C (k);
	}
	else
	{
	j = 36*(Reading - 303);
	k = HEX2BIN (j); //to display in F
	Temp_Display_F (k);
	}
}
//**********************************************************************
void Temp_Display_C(unsigned short long i)
{
  BCD.S_Long = i;
  S5Num (No_Disp);
  S6Num (BCD.Nib.c);
  S7Num (BCD.Nib.b);
  S8Num (BCD.Nib.a);
  DP2ON;X25ON;X26OFF;
  TempIndic (BCD.Nib.c);
}
//**********************************************************************
void Temp_Display_F(unsigned short long i)
{
  BCD.S_Long = i;
  if (BCD.Nib.e == 0) S5Num(No_Disp);
  else S5Num (BCD.Nib.e);
  S6Num (BCD.Nib.d);
  S7Num (BCD.Nib.c);
  S8Num (BCD.Nib.b);
  DP2ON;X26ON;X25OFF;
}
//**********************************************************************
void Voltmeter (void)
{
	j= an0voltage * BD_VLTG_x10_InHex;
	k= HEX2BIN (j);
	VoltM_Display (k);
	BarGraph(an0voltage/50);
}
//**********************************************************************
void VoltM_Display (unsigned short long i)
{
  BCD.S_Long = i;
  S4Num (BCD.Nib.e);
  S5Num (BCD.Nib.d);
  //S6Num (BCD.Nib.c);  //Optional for LSBs
  //S7Num (BCD.Nib.b);
  //S8Num (BCD.Nib.a);
  DP1ON;
  //BttryIndic (BCD.Nib.e);
  //Unused
}
//**********************************************************************
unsigned short long HEX2BIN (unsigned int Binary)
{
unsigned short long Result ;

Result = 0;

for (i=0; i<16; i++)
 {
   Result = Result << 1;
   if (Binary >= 32768) Result++;
   if (i < 15){ Result = AdjustBCD(Result);}
   Binary = Binary << 1;
 }

return Result ;
}
//**********************************************************************
unsigned short long AdjustBCD (unsigned short long R)
{
unsigned char R0,R1,R2;

BCD.S_Long = R;

if ((BCD.Nib.a + 3) > 7) BCD.Nib.a += 3;
if ((BCD.Nib.b + 3) > 7) BCD.Nib.b += 3;
if ((BCD.Nib.c + 3) > 7) BCD.Nib.c += 3;
if ((BCD.Nib.d + 3) > 7) BCD.Nib.d += 3;
if ((BCD.Nib.e + 3) > 7) BCD.Nib.e += 3;
if ((BCD.Nib.f + 3) > 7) BCD.Nib.f += 3;

R = BCD.S_Long;

return R;
}
//**********************************************************************
void LLine (unsigned int i)
{
  In.Int = i;
  S6Num (In.Nib.c);
  S7Num (In.Nib.b);
  S8Num (In.Nib.a);
}
//**********************************************************************
void ULine (unsigned short long i)
{
  BCD.S_Long = i;
  if (i < 0x10000) S1Num(No_Disp);
  else S1Num (BCD.Nib.e);
  if (i < 0x1000) S2Num(No_Disp);
  else S2Num (BCD.Nib.d);
  if (i < 0x100) S3Num(No_Disp);
  else S3Num (BCD.Nib.c);
  S4Num (BCD.Nib.b);
  S5Num (BCD.Nib.a);
}
//**********************************************************************
void TempIndic (unsigned char i)
{
  S5ON;
  if (i >= 5)
	{ S6ON; S7ON; S8ON;}
  else if (i >= 2)
	{ S6OFF; S7ON; S8ON;}
  else if (i >= 1)
	{ S6OFF; S7OFF; S8ON;}
}
//**********************************************************************
void BttryIndic (unsigned char i)
{
  S9ON;
  if (i >= 3)
	{ S10ON; S12ON; S11ON;}
  if (i == 2)
	{ S10OFF; S12ON; S11ON;}
  if (i == 1)
	{ S10OFF; S12OFF; S11ON;}
}


//**********************************************************************
void RTC_Display(void)
{
	BCD.S_Long = HEX2BIN (SEC);
	S6Num (BCD.Nib.b);
	S7Num (BCD.Nib.a);
	CirGraph(BCD.Nib.a);
	BCD.S_Long = HEX2BIN (MIN);
	S3Num (BCD.Nib.b);
	S4Num (BCD.Nib.a);
	BCD.S_Long = HEX2BIN (HR);
	S1Num (BCD.Nib.b);
	S2Num (BCD.Nib.a);
	COLON;
}
//**********************************************************************
void S1Num (unsigned char num)
{
	switch (num)
    {
		case 0: S1AON; S1BON; S1CON; S1DON; S1EON; S1FON; S1GOFF;break;
		case 1: S1AOFF;S1BON; S1CON; S1DOFF;S1EOFF;S1FOFF;S1GOFF;break;
		case 2: S1AON; S1BON; S1COFF;S1DON; S1EON; S1FOFF;S1GON; break;
		case 3: S1AON; S1BON; S1CON; S1DON;	S1EOFF;S1FOFF;S1GON; break;
		case 4: S1AOFF;S1BON; S1CON; S1DOFF;S1EOFF;S1FON; S1GON; break;
		case 5: S1AON; S1BOFF;S1CON; S1DON; S1EOFF;S1FON; S1GON; break;
		case 6: S1AON; S1BOFF;S1CON; S1DON; S1EON; S1FON; S1GON; break;
		case 7: S1AON; S1BON; S1CON; S1DOFF;S1EOFF;S1FOFF;S1GOFF;break;
		case 8: S1AON; S1BON; S1CON; S1DON; S1EON; S1FON; S1GON; break;
		case 9: S1AON; S1BON; S1CON; S1DON; S1EOFF;S1FON; S1GON; break;
		case A: S1AON; S1BON; S1CON; S1DOFF;S1EON; S1FON; S1GON; break;
		case C: S1AON; S1BOFF;S1COFF;S1DON; S1EON; S1FON; S1GOFF;break;
		case E: S1AON; S1BOFF;S1COFF;S1DON; S1EON; S1FON; S1GON; break;
		case F: S1AON; S1BOFF;S1COFF;S1DOFF;S1EON; S1FON; S1GON; break;
		case H: S1AOFF;S1BON; S1CON; S1DOFF;S1EON; S1FON; S1GON; break;
		case L: S1AOFF;S1BOFF;S1COFF;S1DON; S1EON; S1FON; S1GOFF;break;
		case P: S1AON; S1BON; S1COFF;S1DOFF;S1EON; S1FON; S1GON; break;

		case No_Disp: S1NumOFF;
    }
}
//**********************************************************************
void S2Num (unsigned char num)
{
	switch (num)
    {
		case 0: S2AON; S2BON; S2CON; S2DON; S2EON; S2FON; S2GOFF;break;
		case 1: S2AOFF;S2BON; S2CON; S2DOFF;S2EOFF;S2FOFF;S2GOFF;break;
		case 2: S2AON; S2BON; S2COFF;S2DON; S2EON; S2FOFF;S2GON; break;
		case 3: S2AON; S2BON; S2CON; S2DON;	S2EOFF;S2FOFF;S2GON; break;
		case 4: S2AOFF;S2BON; S2CON; S2DOFF;S2EOFF;S2FON; S2GON; break;
		case 5: S2AON; S2BOFF;S2CON; S2DON; S2EOFF;S2FON; S2GON; break;
		case 6: S2AON; S2BOFF;S2CON; S2DON; S2EON; S2FON; S2GON; break;
		case 7: S2AON; S2BON; S2CON; S2DOFF;S2EOFF;S2FOFF;S2GOFF;break;
		case 8: S2AON; S2BON; S2CON; S2DON; S2EON; S2FON; S2GON; break;
		case 9: S2AON; S2BON; S2CON; S2DON; S2EOFF;S2FON; S2GON; break;
		case A: S2AON; S2BON; S2CON; S2DOFF;S2EON; S2FON; S2GON; break;
		case C: S2AON; S2BOFF;S2COFF;S2DON; S2EON; S2FON; S2GOFF;break;
		case E: S2AON; S2BOFF;S2COFF;S2DON; S2EON; S2FON; S2GON; break;
		case F: S2AON; S2BOFF;S2COFF;S2DOFF;S2EON; S2FON; S2GON; break;
		case H: S2AOFF;S2BON; S2CON; S2DOFF;S2EON; S2FON; S2GON; break;
		case L: S2AOFF;S2BOFF;S2COFF;S2DON; S2EON; S2FON; S2GOFF;break;
		case P: S2AON; S2BON; S2COFF;S2DOFF;S2EON; S2FON; S2GON; break;

		case No_Disp: S2NumOFF;
    }
}
//**********************************************************************
void S3Num (unsigned char num)
{
	switch (num)
    {
		case 0: S3AON; S3BON; S3CON; S3DON; S3EON; S3FON; S3GOFF;break;
		case 1: S3AOFF;S3BON; S3CON; S3DOFF;S3EOFF;S3FOFF;S3GOFF;break;
		case 2: S3AON; S3BON; S3COFF;S3DON; S3EON; S3FOFF;S3GON; break;
		case 3: S3AON; S3BON; S3CON; S3DON;	S3EOFF;S3FOFF;S3GON; break;
		case 4: S3AOFF;S3BON; S3CON; S3DOFF;S3EOFF;S3FON; S3GON; break;
		case 5: S3AON; S3BOFF;S3CON; S3DON; S3EOFF;S3FON; S3GON; break;
		case 6: S3AON; S3BOFF;S3CON; S3DON; S3EON; S3FON; S3GON; break;
		case 7: S3AON; S3BON; S3CON; S3DOFF;S3EOFF;S3FOFF;S3GOFF;break;
		case 8: S3AON; S3BON; S3CON; S3DON; S3EON; S3FON; S3GON; break;
		case 9: S3AON; S3BON; S3CON; S3DON; S3EOFF;S3FON; S3GON; break;
		case A: S3AON; S3BON; S3CON; S3DOFF;S3EON; S3FON; S3GON; break;
		case C: S3AON; S3BOFF;S3COFF;S3DON; S3EON; S3FON; S3GOFF;break;
		case E: S3AON; S3BOFF;S3COFF;S3DON; S3EON; S3FON; S3GON; break;
		case F: S3AON; S3BOFF;S3COFF;S3DOFF;S3EON; S3FON; S3GON; break;
		case H: S3AOFF;S3BON; S3CON; S3DOFF;S3EON; S3FON; S3GON; break;
		case L: S3AOFF;S3BOFF;S3COFF;S3DON; S3EON; S3FON; S3GOFF;break;
		case P: S3AON; S3BON; S3COFF;S3DOFF;S3EON; S3FON; S3GON; break;

		case No_Disp: S3NumOFF;
    }
}
//**********************************************************************
void S4Num (unsigned char num)
{
	switch (num)
    {
		case 0: S4AON; S4BON; S4CON; S4DON; S4EON; S4FON; S4GOFF;break;
		case 1: S4AOFF;S4BON; S4CON; S4DOFF;S4EOFF;S4FOFF;S4GOFF;break;
		case 2: S4AON; S4BON; S4COFF;S4DON; S4EON; S4FOFF;S4GON; break;
		case 3: S4AON; S4BON; S4CON; S4DON;	S4EOFF;S4FOFF;S4GON; break;
		case 4: S4AOFF;S4BON; S4CON; S4DOFF;S4EOFF;S4FON; S4GON; break;
		case 5: S4AON; S4BOFF;S4CON; S4DON; S4EOFF;S4FON; S4GON; break;
		case 6: S4AON; S4BOFF;S4CON; S4DON; S4EON; S4FON; S4GON; break;
		case 7: S4AON; S4BON; S4CON; S4DOFF;S4EOFF;S4FOFF;S4GOFF;break;
		case 8: S4AON; S4BON; S4CON; S4DON; S4EON; S4FON; S4GON; break;
		case 9: S4AON; S4BON; S4CON; S4DON; S4EOFF;S4FON; S4GON; break;
		case A: S4AON; S4BON; S4CON; S4DOFF;S4EON; S4FON; S4GON; break;

⌨️ 快捷键说明

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