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

📄 vfd_ctrl.h

📁 车载电子影音系统dvd播放系统原程序代码
💻 H
字号:
/*****************************************************************************

 vfd_ctrl.h     -       This file is for VFD controller, All varibles and functions 
                                are HW relative. 
                                1. PANEL_Initial() : Initial VFD controller 
                                2. PANEL_KeyScan() : Panel KeyScan function, include SW Key
                                3. _Hardware_CTRL(): Transfer dispalyram.
                                4. _LightVFD_LED() : Light VFD Led.
                                5. _OutByteVFD()   : Write one BYTE to VFD controller.
                                6. _InByteVFD()    : Read one BYTE key data from VFD controller
                                -------------------------------------------------------------
                                Version 2.00
                                -------------------------------------------------------------
                                Copyright (c) 2000, Cheertek Corp. All rights reserved. 

******************************************************************************/
BYTE __icVFDnow=0;

#ifndef NO_PANEL
#include "key.h"
#include "tft.h"
// ************************ For EVAL_P2 ************************
/*
#define GPIO_FPCS          GPIO_GP0
#define GPIO_FPSCK         GPIO_GP1
#define GPIO_FPSDA         GPIO_GP2
#define GPIO_RED_LED       GPIO_GP3
#define GPIO_GREEN_LED     GPIO_GP3

#define GPIO_FPCS_HI       (GPIO_FPCS | GPIO_PH)
#define GPIO_FPCS_LO       (GPIO_FPCS | GPIO_PL)
#define GPIO_FPSCK_HI      (GPIO_FPSCK | GPIO_PH)
#define GPIO_FPSCK_LO      (GPIO_FPSCK | GPIO_PL)
#define GPIO_FPSDA_HI      (GPIO_FPSDA | GPIO_PH)
#define GPIO_FPSDA_LO      (GPIO_FPSDA | GPIO_PL)
#define GPIO_RED_LED_HI    (GPIO_RED_LED | GPIO_PH)
#define GPIO_RED_LED_LO    (GPIO_RED_LED | GPIO_PL)
#define GPIO_GREEN_LED_HI  (GPIO_GREEN_LED | GPIO_PH)
#define GPIO_GREEN_LED_LO  (GPIO_GREEN_LED | GPIO_PL)
#define GPIO_LED_OUTPUT    (0x0001<<GPIO_RED_LED)

#ifdef  EMULATOR_DOS
#define _VFD_CS_HI(void)        {HAL_WriteGPIO(GPIO_FPCS_HI);}
#define _VFD_CS_LO(void)        {HAL_WriteGPIO(GPIO_FPCS_LO);}
#define _VFD_SCK_HI(void)       {HAL_WriteGPIO(GPIO_FPSCK_HI);}
#define _VFD_SCK_LO(void)       {HAL_WriteGPIO(GPIO_FPSCK_LO);}
#define _VFD_SDA_HI(void)       {HAL_WriteGPIO(GPIO_FPSDA_HI);}
#define _VFD_SDA_LO(void)       {HAL_WriteGPIO(GPIO_FPSDA_LO);}
#define _VFD_SDA_READ(void)     (0)
#else
#define _VFD_CS_HI(void)        {HAL_WriteGPIO(GPIO_FPCS_HI);}
#define _VFD_CS_LO(void)        {HAL_WriteGPIO(GPIO_FPCS_LO);}
#define _VFD_SCK_HI(void)       {HAL_WriteGPIO(GPIO_FPSCK_HI);}
#define _VFD_SCK_LO(void)       {HAL_WriteGPIO(GPIO_FPSCK_LO);}
#define _VFD_SDA_HI(void)       {HAL_WriteGPIO(GPIO_FPSDA_HI);}
#define _VFD_SDA_LO(void)       {HAL_WriteGPIO(GPIO_FPSDA_LO);}
#define _VFD_SDA_READ(void)     (HAL_ReadGPIO(GPIO_FPSDA)?1:0)
#endif
*/
// *****************     // for  fuss   dv9970&9990 ********************************************
#define PIO_P4_0_LINE            0x01
#define PIO_P4_1_LINE            0x02
#define PIO_P4_2_LINE            0x04
#define PIO_P4_3_LINE            0x08


#ifdef  TFT_CONTROL
#define TFT_KEYP55   0x20
#define TFT_KEYP56   0x40
#define TFT_KEYP57   0x80
#endif



//#define KEYLINETHREE                0X40

#define GPIO_GP0_LINE          GPIO_GP0
#define GPIO_GP1_LINE          GPIO_GP1
#define GPIO_GP2_LINE          GPIO_GP2
#define GPIO_GP3_LINE          GPIO_GP3
//#define GPIO_GP7_LINE          GPIO_GP7

//#define GPIO_GP7_HI        (GPIO_GP7_LINE | GPIO_PH)          
//#define GPIO_GP7_LO       (GPIO_GP7_LINE | GPIO_PL)


    
// ************************ For EVAL_P5 ************************     

#define GPIO_FPCS          GPIO_GP6
#define GPIO_RED_LED       GPIO_GP3
#define GPIO_GREEN_LED     GPIO_GP2

#define GPIO_FPCS_HI       (GPIO_FPCS | GPIO_PH)
#define GPIO_FPCS_LO       (GPIO_FPCS | GPIO_PL)
#define GPIO_RED_LED_HI    (GPIO_RED_LED | GPIO_PH)
#define GPIO_RED_LED_LO    (GPIO_RED_LED | GPIO_PL)
#define GPIO_GREEN_LED_HI  (GPIO_GREEN_LED | GPIO_PH)
#define GPIO_GREEN_LED_LO  (GPIO_GREEN_LED | GPIO_PL)
#define GPIO_LED_OUTPUT    (0x0001<<GPIO_RED_LED)

#ifdef  EMULATOR_DOS
//#define _VFD_CS_HI(void)        {W99AV_OutIndex(0x700000A6); W99AV_OutData(0x00000000);}
//#define _VFD_CS_LO(void)        {W99AV_OutIndex(0x700000A6); W99AV_OutData(0x00000008);}
#define _VFD_CS_HI(void)        {EPP_WritePort(PORT_P3,3,1);}
#define _VFD_CS_LO(void)        {EPP_WritePort(PORT_P3,3,0);}
#define _VFD_SCK_HI(void)       {EPP_WritePort(PORT_P3,4,1);}
#define _VFD_SCK_LO(void)       {EPP_WritePort(PORT_P3,4,0);}
#define _VFD_SDA_HI(void)       {EPP_WritePort(PORT_P3,5,1);}
#define _VFD_SDA_LO(void)       {EPP_WritePort(PORT_P3,5,0);}
#define _VFD_SDA_READ(void)     (0)
#else
//#define _VFD_CS_HI(void)        {P4 |= 0x08;}
//#define _VFD_CS_LO(void)        {P4 &= ~0x08;}
#define _VFD_CS_HI(void)        {HAL_WriteGPIO(GPIO_FPCS_HI);}
#define _VFD_CS_LO(void)        {HAL_WriteGPIO(GPIO_FPCS_LO);}
#define _VFD_SCK_HI(void)       {__sbI2Csclk=1;}
#define _VFD_SCK_LO(void)       {__sbI2Csclk=0;}
#define _VFD_SDA_HI(void)       {__sbI2Csdat=1;}
#define _VFD_SDA_LO(void)       {__sbI2Csdat=0;}
#define _VFD_SDA_READ(void)     (__sbI2Csdat?1:0)
#endif

// *************************************************************

extern BYTE _bDisplayRam[VFD_GRID_ARRAY];
#endif

#pragma NOAREGS
#pragma DISABLE
void _OutByteVFD(BYTE bByte)
{
#ifndef NO_PANEL
    for(_bPanelTemp1=0;_bPanelTemp1<8;_bPanelTemp1++)
    {
        _VFD_SCK_LO();
        if(bByte & 0x01)
        {
            _VFD_SDA_HI();
        }
        else
        {
            _VFD_SDA_LO();
        }
        _VFD_SCK_HI();
        bByte>>=1;
    }
#endif
}

#pragma NOAREGS
void _Hardware_CTRL(void)
{
#ifndef NO_PANEL
  if(__icVFDnow==0x01)
	return;
//    __icVFDnow=0x01;

    _VFD_CS_LO();
    _OutByteVFD(SETCOMMAND_WRITEDISPLAY);                 // Command 2
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(SET_ADDRESS);                             // Command 3
    for(_bPanelTemp2=0;_bPanelTemp2<VFD_GRID_ARRAY;_bPanelTemp2++)
        _OutByteVFD(_bDisplayRam[_bPanelTemp2]);
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(VFD_DISP_MODE);                           // Command 1
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(VFD_CTRL_MODE);                           // Command 4
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    __icVFDnow=0x00;
#endif
}

void PANEL_Initial(void)
{
#ifndef NO_PANEL
    _VFD_CS_HI();
    _bLettArray = aMessageLoading;

    for(_bPanelTemp1=0;_bPanelTemp1<VFD_GRID_ARRAY;_bPanelTemp1++)
        _bDisplayRam[_bPanelTemp1]=0;

    for(_bPanelTemp1=0;_bPanelTemp1<VFD_LETTNUM;_bPanelTemp1++)
        _bLettTimeMessage[_bPanelTemp1]=_bLettArray[_bPanelTemp1];

#ifndef POWERON_STANDBY
    _LETT_To_DisplayRam();
#endif

    __icVFDnow=0x01;

    _VFD_CS_LO();
    _OutByteVFD(0x87);                                    // Command 4
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(SETCOMMAND_WRITEDISPLAY);                 // Command 2
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(SET_ADDRESS);                             // Command 3
    for(_bPanelTemp2=0;_bPanelTemp2<VFD_GRID_ARRAY;_bPanelTemp2++)
        _OutByteVFD(_bDisplayRam[_bPanelTemp2]);
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(0x02);                                    // Command 1
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(0x87);                                    // Command 4
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(0x03);                                    // Command 1
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    _VFD_CS_LO();
    _OutByteVFD(0x8f);                                    // Command 4
    _VFD_CS_HI();
    for(_bPanelTemp1=0;_bPanelTemp1<4;_bPanelTemp1++){}

    __icVFDnow=0x00;

#ifndef POWERON_STANDBY
    HAL_WriteGPIO(GPIO_GREEN_LED_HI);
    HAL_WriteGPIO(GPIO_RED_LED_LO);
#endif



#endif
}

#pragma NOAREGS
#pragma DISABLE
BYTE PANEL_KeyScan(void)
{
//#ifndef NO_PANEL
#ifdef ENABLE_PANEL_KEYSCAN
    static BYTE _bPANEL_Count;
//  FOR  FUSS DV9970&9990
#ifdef SUPPORT_AVIN
	if((__bTftAvSwitchFlag==1)&&((__dwCountSystem-__dwTftAvSwitchTime)>COUNT_2_SEC))
	{
		__bTftAvSwitchFlag=0;
		__dwTftAvSwitchTime=0;
		TFT_HW_Switch_ON_OFF(TRUE);
	}
	if(__bAvInStatus==DVD_OUTPUT_STATUS)
	{
		if((!__bTtfKeyPowerFlag)&&(__btPowerDown)&&__bAvINPowerKeyEnable)
			{
				return KEY_POWER;
			}
	}
	else
		{
			if((!__btPowerDown)&&__bAvINPowerKeyEnable)
			{
				return KEY_POWER;
			}
		}
#endif
	if(__bTftLowBatt)
		{
			return KEY_NO_KEY;
		}

        HAL_WriteGPIO(0x80 | GPIO_GP0_LINE);
        HAL_WriteGPIO(0x80 | GPIO_GP1_LINE);
        HAL_WriteGPIO(0x80 | GPIO_GP2_LINE);
        HAL_WriteGPIO(0x80 | GPIO_GP3_LINE);
		
	// HAL_WriteGPIO(0x80 | GPIO_GP7_LINE);
   //	 P4 |= PIO_P4_2_LINE;	
   //   P4 |= 0x04 ;
//#define PIO_P4_1_LINE            0x01
// #define PIO_P4_2_LINE           0x02
//#define PIO_P4_6_LINE            0x40
//#define PIO_P4_7_LINE            0x80
      //  HAL_WriteGPIO( GPIO_GP7_HI);        

 P4 |= PIO_P4_0_LINE;	
     P4 &= ~0x01 ; 
 P4 |= PIO_P4_1_LINE;	   
 P4 |= PIO_P4_2_LINE;	    
 P4 |= PIO_P4_3_LINE;	
    



	 //  HAL_WriteGPIO(0x00 |GPIO_GP7_LINE);      //  PL   scan key
         // __sbKEYtwo  = 1;        //  PH    
        //   P4 |= 0x40 ;                //PH
	 // __sbKEYthree = 1;       //  PH
         // __sbKEYfour  = 1;      //   PH
		 
       if       (! HAL_ReadGPIO(0))

		 return  (aScanMap[0]) ;
		 
       else if  (! HAL_ReadGPIO(1))

		  return (aScanMap[1]);

	else	  if       (! HAL_ReadGPIO(2))
		  return(aScanMap[2]) ;
		 
	else	  if       (! HAL_ReadGPIO(3))
		  return (aScanMap[3]);    //for  DV9970&9990


 P4 |= PIO_P4_0_LINE;	    
 P4 |= PIO_P4_1_LINE;	
     P4 &= ~ 0x02 ; 
 P4 |= PIO_P4_2_LINE;	     
 P4 |= PIO_P4_3_LINE;	
   

		
   //   HAL_WriteGPIO(0x80 |GPIO_GP7_LINE); //PH
    //     __sbKEYtwo  = 0;        //  PL    scan  key

//	  P4|= 0x40 ;                //Ph
	 // __sbKEYthree = 1;       //  PH
  //    __sbKEYfour  = 1;      //   PH
         
         
        if       (! HAL_ReadGPIO(0))

		 return  (aScanMap[4]) ;
		 
       else if  (! HAL_ReadGPIO(1))

		  return (aScanMap[5]);

	else	  if       (! HAL_ReadGPIO(2))
		  return(aScanMap[6]) ;
		 
	else	  if       (! HAL_ReadGPIO(3))
		  return (aScanMap[7]);          

	

     P4 |= PIO_P4_0_LINE;    
    P4 |= PIO_P4_1_LINE;    
    P4 |= PIO_P4_2_LINE;	
     P4 &= ~0x04 ; 
    P4 |= PIO_P4_3_LINE;	
     
	              
		
     //    HAL_WriteGPIO(0x80 |GPIO_GP7_LINE); //PH
     //     __sbKEYtwo  = 1;        //  PH    
     //      P4 &= 0x00 ;  
        //__sbKEYthree = 0;       //  PL    scan  key
   //       __sbKEYfour  = 1;      //   PH
			   
        if       (! HAL_ReadGPIO(0))

		 return  (aScanMap[8]) ;
		 
       else if  (! HAL_ReadGPIO(1))

		  return (aScanMap[9]);

	else	  if       (! HAL_ReadGPIO(2))
		  return(aScanMap[10]) ;
		 
	else	  if       (! HAL_ReadGPIO(3))
		  return (aScanMap[11]);           
		  
	 P4 |= PIO_P4_0_LINE;	
         P4 |= PIO_P4_1_LINE;	
         P4 |= PIO_P4_2_LINE;     
         P4 |= PIO_P4_3_LINE;	
         P4 &= ~ 0x08 ; 
	              
      //  HAL_WriteGPIO(0x80 |GPIO_GP7_LINE); //PH
       //    __sbKEYtwo  = 1;        //  PH    
        //   P4 |= 0x40 ;                 //PH
       // __sbKEYthree = 1;       //  PH    
      //    __sbKEYfour  = 0;      //   PL   SCAN  key
			   
        if       (! HAL_ReadGPIO(0))

		 return  (aScanMap[12]);
		 
       else if  (! HAL_ReadGPIO(1))

		  return (aScanMap[13]);

	else	  if       (! HAL_ReadGPIO(2))
		  return (aScanMap[14]);
		 
	else	  if       (! HAL_ReadGPIO(3))
		  return (aScanMap[15]);                      
#ifdef TFT_CONTROL
//for  yashi  tft control

// P5 bit map  7 6 5 4 3 2 1 0

        P5CON  |= (TFT_KEYP55  | TFT_KEYP56 | TFT_KEYP57 ); // output port
	        P5 |= (TFT_KEYP55  | TFT_KEYP56 | TFT_KEYP57 );    // all pull high
	        
	 P5CON &= ~TFT_KEYP55  ;
	  if(!(P5&TFT_KEYP55))
	               return (aScanMap[20]);//size
	  
         P5CON &=~ TFT_KEYP56 ;    
	    if(!(P5&TFT_KEYP56))
                      return (aScanMap[18]);  //up
		
      P5CON &=~ TFT_KEYP57  ;   
	    if(!(P5&TFT_KEYP57))
                       return (aScanMap[16]);  //mode   
			  
           P5CON  |= (TFT_KEYP55  | TFT_KEYP56  ); // output port
	      P5 |= TFT_KEYP55;    // pull high	     
		 P5 &= ~TFT_KEYP56; 	 //pull low
        P5CON &=~TFT_KEYP55;     //read mode
             if(!(P5&TFT_KEYP55))
             	{
             		P5|=TFT_KEYP56;
			P5CON&=~TFT_KEYP56;
			if(P5&TFT_KEYP56)
             			 return (aScanMap[17]);//reverse
             		else
             			 return (aScanMap[20]);//size
             	}
			  
	 P5CON  |= (TFT_KEYP55  | TFT_KEYP56  ); // output port		  
              P5 |= TFT_KEYP56;  //pull  hight p5.5&p5.6  again  
		 P5 &= ~TFT_KEYP55; 	 	
          P5CON &=~TFT_KEYP56; 
             if(!(P5&TFT_KEYP56))
             	{
             		P5|=TFT_KEYP55;
			P5CON&=~TFT_KEYP55;
			if(P5&TFT_KEYP55)
             			 return (aScanMap[19]);//reverse
             		else
             			 return (aScanMap[18]);//size
             	}
#endif

#endif
    return KEY_NO_KEY;

}

⌨️ 快捷键说明

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