?? tp6315_fp.c
字號:
/* **************************************************************************************
* Copyright (c) 2004 ZORAN Corporation, All Rights Reserved
* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
*
* File: $Workfile: TP6315_fp.c $
*
* Description:
* ============
* NEC front Panel definition
*
* Log:
* ====
****************************************************************************************
* Updates:
****************************************************************************************
* 1 Dec.18, 2004 JerryLin
* First created
****************************************************************************************/
#include "Config.h" // Global Configuration - do not remove!
#include "Config.h" // Global Configuration - do not remove!
#include "Include\sysdefs.h"
#include "Playcore\Timing\timing.h"
#include "FP\fp_ll.h"
#include "FP\TP6315_fp\TP6315_fp.h"
#include "FP\NEC_FP\nec_io.h"
#ifdef TP6315_FP
/****************************************************************************/
static BYTE p_keycode[BYTES_USED_TO_SCANKEY];
/****************************************************************************/
void VFD_LL_Init(BYTE grid_count)
{
BYTE i;
for (i=0; i<BYTES_USED_TO_SCANKEY; i++)
p_keycode[i] = 0;
VFD_LL_SetGrid(grid_count);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_CLK(1);
delay_us(1);
}
/****************************************************************************/
void VFD_LL_SetGrid(BYTE grid_count)
{
BYTE real_grid_value;
switch (grid_count)
{
case 4:
real_grid_value = G4_S24;
break;
case 5:
real_grid_value = G5_S23;
break;
case 6:
real_grid_value = G6_S22;
break;
case 7:
real_grid_value = G7_S21;
break;
case 8:
real_grid_value = G8_S20;
break;
case 9:
real_grid_value = G9_S19;
break;
case 10:
real_grid_value = G10_S18;
break;
case 11:
real_grid_value = G11_S17;
break;
case 12:
real_grid_value = G12_S16;
default:
real_grid_value = G10_S18;
break;
}
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( DISPLAY_MODE| real_grid_value );
delay_us(1);
}
/****************************************************************************/
void VFD_LL_SetDim(BYTE vfd_dim_level)
{
BYTE real_dim_value;
switch (vfd_dim_level)
{
case 0:
real_dim_value = 0; // DIM off
break;
case 1:
real_dim_value = GON|DIM_1_16;
break;
case 2:
real_dim_value = GON|DIM_2_16;
break;
case 3:
real_dim_value = GON|DIM_4_16;
break;
case 4:
real_dim_value = GON|DIM_10_16;
break;
case 5:
real_dim_value = GON|DIM_11_16;
break;
case 6:
real_dim_value = GON|DIM_12_16;
break;
case 7:
real_dim_value = GON|DIM_13_16;
break;
case 8:
real_dim_value = GON|DIM_14_16;
break;
default:
real_dim_value = GON|DIM_14_16;
break;
}
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( DISPLAY_CONTROL | real_dim_value );
delay_us(1);
}
/****************************************************************************/
void VFD_LL_WriteDisplayRAM( BYTE grid, WORD data )
{
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (3*grid));
delay_us(1);
VFD_LL_WriteByte( (BYTE) (data & 0x00ff) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (3*grid+1));
delay_us(1);
VFD_LL_WriteByte( (BYTE) (data >> 8) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
}
/****************************************************************************/
void VFD_LL_WriteDisplayRAM_InDword( BYTE grid, DWORD data )
{
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3));
delay_us(1);
VFD_LL_WriteByte( (BYTE) (data & 0x00ff) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3+1));
delay_us(1);
VFD_LL_WriteByte( (BYTE) ((data >> 8) & 0x00ff) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_DISPLAY ));
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE) ADDRESS_SETTING | (grid*3+2));
delay_us(1);
VFD_LL_WriteByte( (BYTE) ((data >> 16) & 0x00ff) );
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
}
/****************************************************************************/
void VFD_LL_RefreshLED( BYTE led )
{
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | WRITE_LIGHTS ));
delay_us(1);
VFD_LL_WriteByte( led );
delay_us(1);
Set_Fp_STB(1);
}
BYTE VFD_LL_ReadKeyScan( BYTE*** Key_Code )
{
BYTE i;
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
/*
* Note: The wait states are necessary because
* FP needs to have some time between
* writes.
*/
delay_us(1);
VFD_LL_WriteByte( (BYTE)(DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | READ_KEYSCAN ));
Set_FpDout_To_Input();
for (i=0; i<BYTES_USED_TO_SCANKEY; i++)
{
delay_us(1);
VFD_LL_ReadByte( p_keycode+i );
}
Set_FpDout_To_Output();
delay_us(1);
Set_Fp_STB(1);
**Key_Code = p_keycode;
return BYTES_USED_TO_SCANKEY;
}
/****************************************************************************/
void VFD_LL_ReadInputs( BYTE** inputs )
{
/* THIS FUNCTION IS INVALID AND NOT USED IN THIS VFD CONTROLLER.
delay_us(1);
Set_Fp_STB(1);
delay_us(1);
Set_Fp_STB(0);
delay_us(1);
VFD_LL_WriteByte( DATA_SETTING | NORMAL_OPERATION | ADDRESS_INCREASE | READ_INPUTS );
delay_us(1);
VFD_LL_ReadByte( *inputs );
delay_us(1);
Set_Fp_STB(1);
*/
// avoid compiling warning
inputs = inputs;
}
/****************************************************************************/
static void VFD_LL_WriteByte( BYTE byte )
{
BYTE i;
for( i=0x01; (i<=0x80 && i!=0); i<<=1 )
{
Set_Fp_CLK(0);
Set_Fp_DOUT((byte & i) ? 1:0);
Set_Fp_CLK(1);
}
}
/****************************************************************************/
static void VFD_LL_ReadByte( BYTE *byte )
{
BYTE i;
Set_Fp_CLK(1);
*byte = 0; // Clear byte first
for( i=0; i<7; i++ )
{
Set_Fp_CLK(0);
*byte |= ( Get_Fp_DIN() ? 0x80:0 );
Set_Fp_CLK(1);
*byte >>= 1;
}
Set_Fp_CLK(0);
*byte |= ( Get_Fp_DIN() ? 0x80:0 );
Set_Fp_CLK(1);
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -