📄 lcd2demo_85j90_r0.c
字号:
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 + -