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

📄 lcd2demo_85j90_r0.c

📁 是关于PIC单片机(型号是PIC18f85j90)实现液晶显示的一个DEMO
💻 C
📖 第 1 页 / 共 3 页
字号:
		case C: S4AON; S4BOFF;S4COFF;S4DON; S4EON; S4FON; S4GOFF;break;
		case E: S4AON; S4BOFF;S4COFF;S4DON; S4EON; S4FON; S4GON; break;
		case F: S4AON; S4BOFF;S4COFF;S4DOFF;S4EON; S4FON; S4GON; break;
		case H: S4AOFF;S4BON; S4CON; S4DOFF;S4EON; S4FON; S4GON; break;
		case L: S4AOFF;S4BOFF;S4COFF;S4DON; S4EON; S4FON; S4GOFF;break;
		case P: S4AON; S4BON; S4COFF;S4DOFF;S4EON; S4FON; S4GON; break;

		case No_Disp: S4NumOFF;
    }
}
//**********************************************************************
void S5Num (unsigned char num)
{
	switch (num)
    {
		case 0: S5AON; S5BON; S5CON; S5DON; S5EON; S5FON; S5GOFF;break;
		case 1: S5AOFF;S5BON; S5CON; S5DOFF;S5EOFF;S5FOFF;S5GOFF;break;
		case 2: S5AON; S5BON; S5COFF;S5DON; S5EON; S5FOFF;S5GON; break;
		case 3: S5AON; S5BON; S5CON; S5DON;	S5EOFF;S5FOFF;S5GON; break;
		case 4: S5AOFF;S5BON; S5CON; S5DOFF;S5EOFF;S5FON; S5GON; break;
		case 5: S5AON; S5BOFF;S5CON; S5DON; S5EOFF;S5FON; S5GON; break;
		case 6: S5AON; S5BOFF;S5CON; S5DON; S5EON; S5FON; S5GON; break;
		case 7: S5AON; S5BON; S5CON; S5DOFF;S5EOFF;S5FOFF;S5GOFF;break;
		case 8: S5AON; S5BON; S5CON; S5DON; S5EON; S5FON; S5GON; break;
		case 9: S5AON; S5BON; S5CON; S5DON; S5EOFF;S5FON; S5GON; break;
		case A: S5AON; S5BON; S5CON; S5DOFF;S5EON; S5FON; S5GON; break;
		case C: S5AON; S5BOFF;S5COFF;S5DON; S5EON; S5FON; S5GOFF;break;
		case E: S5AON; S5BOFF;S5COFF;S5DON; S5EON; S5FON; S5GON; break;
		case F: S5AON; S5BOFF;S5COFF;S5DOFF;S5EON; S5FON; S5GON; break;
		case H: S5AOFF;S5BON; S5CON; S5DOFF;S5EON; S5FON; S5GON; break;
		case L: S5AOFF;S5BOFF;S5COFF;S5DON; S5EON; S5FON; S5GOFF;break;
		case P: S5AON; S5BON; S5COFF;S5DOFF;S5EON; S5FON; S5GON; break;

		case No_Disp: S5NumOFF;
    }
}
//**********************************************************************
void S6Num (unsigned char num)
{
	switch (num)
    {
		case 0: S6AON; S6BON; S6CON; S6DON; S6EON; S6FON; S6GOFF;break;
		case 1: S6AOFF;S6BON; S6CON; S6DOFF;S6EOFF;S6FOFF;S6GOFF;break;
		case 2: S6AON; S6BON; S6COFF;S6DON; S6EON; S6FOFF;S6GON; break;
		case 3: S6AON; S6BON; S6CON; S6DON;	S6EOFF;S6FOFF;S6GON; break;
		case 4: S6AOFF;S6BON; S6CON; S6DOFF;S6EOFF;S6FON; S6GON; break;
		case 5: S6AON; S6BOFF;S6CON; S6DON; S6EOFF;S6FON; S6GON; break;
		case 6: S6AON; S6BOFF;S6CON; S6DON; S6EON; S6FON; S6GON; break;
		case 7: S6AON; S6BON; S6CON; S6DOFF;S6EOFF;S6FOFF;S6GOFF;break;
		case 8: S6AON; S6BON; S6CON; S6DON; S6EON; S6FON; S6GON; break;
		case 9: S6AON; S6BON; S6CON; S6DON; S6EOFF;S6FON; S6GON; break;
		case A: S6AON; S6BON; S6CON; S6DOFF;S6EON; S6FON; S6GON; break;
		case C: S6AON; S6BOFF;S6COFF;S6DON; S6EON; S6FON; S6GOFF;break;
		case E: S6AON; S6BOFF;S6COFF;S6DON; S6EON; S6FON; S6GON; break;
		case F: S6AON; S6BOFF;S6COFF;S6DOFF;S6EON; S6FON; S6GON; break;
		case H: S6AOFF;S6BON; S6CON; S6DOFF;S6EON; S6FON; S6GON; break;
		case L: S6AOFF;S6BOFF;S6COFF;S6DON; S6EON; S6FON; S6GOFF;break;
		case P: S6AON; S6BON; S6COFF;S6DOFF;S6EON; S6FON; S6GON; break;

		case No_Disp: S6NumOFF;
    }
}
//**********************************************************************
void S7Num (unsigned char num)
{
	switch (num)
    {
		case 0: S7AON; S7BON; S7CON; S7DON; S7EON; S7FON; S7GOFF;break;
		case 1: S7AOFF;S7BON; S7CON; S7DOFF;S7EOFF;S7FOFF;S7GOFF;break;
		case 2: S7AON; S7BON; S7COFF;S7DON; S7EON; S7FOFF;S7GON; break;
		case 3: S7AON; S7BON; S7CON; S7DON;	S7EOFF;S7FOFF;S7GON; break;
		case 4: S7AOFF;S7BON; S7CON; S7DOFF;S7EOFF;S7FON; S7GON; break;
		case 5: S7AON; S7BOFF;S7CON; S7DON; S7EOFF;S7FON; S7GON; break;
		case 6: S7AON; S7BOFF;S7CON; S7DON; S7EON; S7FON; S7GON; break;
		case 7: S7AON; S7BON; S7CON; S7DOFF;S7EOFF;S7FOFF;S7GOFF;break;
		case 8: S7AON; S7BON; S7CON; S7DON; S7EON; S7FON; S7GON; break;
		case 9: S7AON; S7BON; S7CON; S7DON; S7EOFF;S7FON; S7GON; break;
		case A: S7AON; S7BON; S7CON; S7DOFF;S7EON; S7FON; S7GON; break;
		case C: S7AON; S7BOFF;S7COFF;S7DON; S7EON; S7FON; S7GOFF;break;
		case E: S7AON; S7BOFF;S7COFF;S7DON; S7EON; S7FON; S7GON; break;
		case F: S7AON; S7BOFF;S7COFF;S7DOFF;S7EON; S7FON; S7GON; break;
		case H: S7AOFF;S7BON; S7CON; S7DOFF;S7EON; S7FON; S7GON; break;
		case L: S7AOFF;S7BOFF;S7COFF;S7DON; S7EON; S7FON; S7GOFF;break;
		case P: S7AON; S7BON; S7COFF;S7DOFF;S7EON; S7FON; S7GON; break;

		case No_Disp: S7NumOFF;
    }
}
//**********************************************************************
void S8Num (unsigned char num)
{
	switch (num)
    {
		case 0: S8AON; S8BON; S8CON; S8DON; S8EON; S8FON; S8GOFF;break;
		case 1: S8AOFF;S8BON; S8CON; S8DOFF;S8EOFF;S8FOFF;S8GOFF;break;
		case 2: S8AON; S8BON; S8COFF;S8DON; S8EON; S8FOFF;S8GON; break;
		case 3: S8AON; S8BON; S8CON; S8DON;	S8EOFF;S8FOFF;S8GON; break;
		case 4: S8AOFF;S8BON; S8CON; S8DOFF;S8EOFF;S8FON; S8GON; break;
		case 5: S8AON; S8BOFF;S8CON; S8DON; S8EOFF;S8FON; S8GON; break;
		case 6: S8AON; S8BOFF;S8CON; S8DON; S8EON; S8FON; S8GON; break;
		case 7: S8AON; S8BON; S8CON; S8DOFF;S8EOFF;S8FOFF;S8GOFF;break;
		case 8: S8AON; S8BON; S8CON; S8DON; S8EON; S8FON; S8GON; break;
		case 9: S8AON; S8BON; S8CON; S8DON; S8EOFF;S8FON; S8GON; break;
		case A: S8AON; S8BON; S8CON; S8DOFF;S8EON; S8FON; S8GON; break;
		case C: S8AON; S8BOFF;S8COFF;S8DON; S8EON; S8FON; S8GOFF;break;
		case E: S8AON; S8BOFF;S8COFF;S8DON; S8EON; S8FON; S8GON; break;
		case F: S8AON; S8BOFF;S8COFF;S8DOFF;S8EON; S8FON; S8GON; break;
		case H: S8AOFF;S8BON; S8CON; S8DOFF;S8EON; S8FON; S8GON; break;
		case L: S8AOFF;S8BOFF;S8COFF;S8DON; S8EON; S8FON; S8GOFF;break;
		case P: S8AON; S8BON; S8COFF;S8DOFF;S8EON; S8FON; S8GON; break;

		case No_Disp: S8NumOFF;
    }
}
//**********************************************************************
void BarGraph (unsigned char Count)
{
	if (BGCNT > Count)
	{
		switch (Count)
		{
			case 1: X2OFF;
			case 2: X3OFF;
			case 3: X4OFF;
			case 4: X5OFF;
			case 5: X6OFF;
			case 6: X7OFF;
			case 7: X8OFF;
			case 8: X9OFF;
			case 9: X10OFF;
			case 10: X11OFF;
			case 11: X12OFF;
			case 12: X13OFF;
			case 13: X14OFF;
			case 14: X15OFF;
			case 15: X16OFF;
			case 16: X17OFF;
			case 17: X18OFF;
			case 18: X19OFF;
			case 19: X20OFF;
		}
	}

if (BGCNT <= Count)
  {
	switch (Count)
	{
		case 20: X20ON;
		case 19: X19ON;
		case 18: X18ON;
		case 17: X17ON;
		case 16: X16ON;
		case 15: X15ON;
		case 14: X14ON;
		case 13: X13ON;
		case 12: X12ON;
		case 11: X11ON;
		case 10: X10ON;
		case  9: X9ON;
		case  8: X8ON;
		case  7: X7ON;
		case  6: X6ON;
		case  5: X5ON;
		case  4: X4ON;
		case  3: X3ON;
		case  2: X2ON;
		case  1: X1ON;
	 }
   }
BGCNT = Count;
}
//**********************************************************************
void CirGraph (unsigned char Count)
{
	CGOFF;
	switch (Count)
	{
		case 9: X28ON;
		case 8: X29ON;
		case 7: X30ON;
		case 6: X31ON;
		case 5: X32ON;
		case 4: X33ON;
		case 3: X34ON;
		case 2: X35ON;
		case 1: X36ON;
		case 0: X27ON;
	}

}
//**********************************************************************
void LCD_CONFIG_CP (void)
{
    // Configure the LCD Regulator
	 LCDREGbits.BIAS2  = 1;
	 LCDREGbits.BIAS1  = 1;
	 LCDREGbits.BIAS0  = 1;
	 LCDREGbits.MODE13 = 1;
	 LCDREGbits.CKSEL1 = 1; //01 - TMR1 OSC, 10 - FRC 8 MHz
	 LCDREGbits.CKSEL0 = 1; //11 - INTRC 31 KHz; 00- No VLCAP
	 LCDREGbits.CPEN   = 1;

	// Select the frame clock prescaler using bits LP3:LP0
	 LCDPSbits.WFT     = 0;   //0 - TypeA
	 LCDPSbits.BIASMD  = 0;
	 LCDPSbits.LP3 = 0;
	 LCDPSbits.LP2 = 1;
	 LCDPSbits.LP1 = 0;
	 LCDPSbits.LP0 = 0;

	// Configure all LCD pins as inputs.
	// On Power on reset all pins are configured as inputs.

	// Configure the appropriate pins to function as segment drivers
	// using the LCDSEx registers
	// Always disable Seg 27, 28, 30 & 32 for this board for 85J90 devices.

	 LCDSE0 = 0xFF;
	 LCDSE1 = 0xFF;
	 LCDSE2 = 0xFF;
	 LCDSE3 = 0xA7; // Disable Seg30, Seg28 and Seg27
	 LCDSE4 = 0x00; // Disable unused segments
	 LCDSE5 = 0x70; // Disable unused segments

	// Configure the LCD module for the following using the LCDCON reg
	 LCDCONbits.CS1   = 1; // 00 Sys Clock, 01 TMR1 Clk
	 LCDCONbits.CS0   = 1; // 1x INTRC
	 LCDCONbits.LMUX1 = 1;
	 LCDCONbits.LMUX0 = 1;

	// Enable the LCD module by setting bit LCDEN
	 LCDCONbits.LCDEN = 1;

}
//**********************************************************************
void LCD_CONFIG_R (void)
{
    // Configure the LCD Regulator
	 LCDREGbits.BIAS2  = 1;
	 LCDREGbits.BIAS1  = 1;
	 LCDREGbits.BIAS0  = 1;
	 LCDREGbits.MODE13 = 1;
	 LCDREGbits.CKSEL1 = 0; //01 - TMR1 OSC, 10 - FRC 8 MHz
	 LCDREGbits.CKSEL0 = 0; //11 - INTRC 31 KHz; 00- No VLCAP
	 LCDREGbits.CPEN   = 0;

	// Select the frame clock prescaler using bits LP3:LP0
	 LCDPSbits.WFT     = 0;   //0 - TypeA
	 LCDPSbits.BIASMD  = 0;
	 LCDPSbits.LP3 = 0;
	 LCDPSbits.LP2 = 1;
	 LCDPSbits.LP1 = 0;
	 LCDPSbits.LP0 = 0;

	// Configure all LCD pins as inputs.
	// On Power on reset all pins are configured as inputs.

	// Configure the appropriate pins to function as segment drivers
	// using the LCDSEx registers
	// Always disable Seg 27, 28, 30 & 32 for this board for 85J90 devices.
	 LCDSE0 = 0xFF;
	 LCDSE1 = 0xFF;
	 LCDSE2 = 0xFF;
	 LCDSE3 = 0xA7; // Disable Seg30, Seg28 and Seg27
	 LCDSE4 = 0x00; // Disable unused segments
	 LCDSE5 = 0x70; // Disable unused segments

	// Configure the LCD module for the following using the LCDCON reg
	 LCDCONbits.CS1   = 1; // 00 Sys Clock, 01 TMR1 Clk
	 LCDCONbits.CS0   = 1; // 1x INTRC
	 LCDCONbits.LMUX1 = 1;
	 LCDCONbits.LMUX0 = 1;

	// Enable the LCD module by setting bit LCDEN
	 LCDCONbits.LCDEN = 1;

}
//**********************************************************************
void DisplayOn (void)
{
	S1ON; S2ON; S3ON; S4ON; S5ON; S6ON; S7ON; S8ON; S9ON; S10ON;
	S11ON; S12ON; S13ON; X26ON; X25ON; X24ON; X23ON; X22ON; X21ON;
	X20ON; X19ON; X18ON; X17ON; X16ON; X15ON; X14ON; X13ON;	X12ON;
	X11ON; X10ON; X9ON; X8ON; X7ON; X6ON; X5ON; X4ON; X3ON; X2ON;
	X1ON; F1ON; F2ON; F3ON; F4ON; X27ON; X28ON; X29ON; X30ON; X31ON;
	X32ON; X33ON; X34ON; X35ON; X36ON; S1AON; S1BON; S1CON; S1DON;
	S1EON; S1FON; S1GON; S2AON; S2BON; S2CON; S2DON; S2EON; S2FON;
	S2GON; COLON; S3AON; S3BON; S3CON; S3DON; S3EON; S3FON; S3GON;
	S4AON; S4BON; S4CON; S4DON; S4EON; S4FON; S4GON; DP1ON; S5AON;
	S5BON; S5CON; S5DON; S5EON; S5FON; S5GON; S6AON; S6BON; S6CON;
	S6DON; S6EON; S6FON; S6GON; S7AON; S7BON; S7CON; S7DON; S7EON;
	S7FON; S7GON; DP2ON; S8AON; S8BON; S8CON; S8DON; S8EON; S8FON;
	S8GON;

}
//**********************************************************************
void DisplayOff (void)
{
	S1OFF; S13OFF;
	S2OFF; S3OFF; S4OFF; S5OFF; S6OFF; S7OFF; S8OFF; S9OFF; S10OFF;
	S11OFF; S12OFF; X26OFF; X25OFF; X24OFF; X23OFF; X22OFF; X21OFF;
	X20OFF; X19OFF; X18OFF; X17OFF; X16OFF; X15OFF; X14OFF; X13OFF;
	X12OFF; X11OFF; X10OFF; X9OFF; X8OFF; X7OFF; X6OFF; X5OFF; X4OFF;
	X3OFF; X2OFF; X1OFF; F1OFF; F2OFF; F3OFF; F4OFF; X27OFF; X28OFF;
	X29OFF; X30OFF; X31OFF; X32OFF; X33OFF; X34OFF; X35OFF; X36OFF;
	S1AOFF;	S1BOFF;	S1COFF;	S1DOFF;	S1EOFF;	S1FOFF;	S1GOFF;	S2AOFF;
	S2BOFF;	S2COFF;	S2DOFF;	S2EOFF;	S2FOFF;	S2GOFF;	COLOFF;	S3AOFF;
	S3BOFF;	S3COFF;	S3DOFF;	S3EOFF;	S3FOFF;	S3GOFF;	S4AOFF;	S4BOFF;
	S4COFF;	S4DOFF;	S4EOFF;	S4FOFF;	S4GOFF;	DP1OFF;	S5AOFF;	S5BOFF;
	S5COFF;	S5DOFF;	S5EOFF;	S5FOFF;	S5GOFF;	S6AOFF;	S6BOFF;	S6COFF;
	S6DOFF;	S6EOFF;	S6FOFF;	S6GOFF;	S7AOFF;	S7BOFF;	S7COFF;	S7DOFF;
	S7EOFF;	S7FOFF;	S7GOFF;	DP2OFF;	S8AOFF;	S8BOFF;	S8COFF;	S8DOFF;
	S8EOFF;	S8FOFF;	S8GOFF;

}
//**********************************************************************

void Delay3 (void)
{
  unsigned int temp1, temp2;

 for (temp2=0;temp2<15000;temp2++);
}

void Delay_LP (void)
{
	TMR3H = 0xE8;
	TMR3L = 0xFF;
	T3CONbits.TMR3CS = 1; //Ext Timer1 Osc
	T3CONbits.T3SYNC = 1;
	T3CONbits.TMR3ON = 1;
	PIR2bits.TMR3IF = 0;
	PIE2bits.TMR3IE = 1;  //Enable Interrupt
	Sleep();
	PIE2bits.TMR3IE = 0;
	T3CONbits.TMR3ON = 0;
}

void Delay_LP1 (void)
{
	TMR3H = 0xE0;
	TMR3L = 0xFF;
	T3CONbits.TMR3CS = 1; //Ext Timer1 Osc
	T3CONbits.T3SYNC = 1;
	T3CONbits.TMR3ON = 1;
	PIR2bits.TMR3IF = 0;
	PIE2bits.TMR3IE = 1;  //Enable Interrupt
	Sleep();
	PIE2bits.TMR3IE = 0;
	T3CONbits.TMR3ON = 0;
}


⌨️ 快捷键说明

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