📄 vfd_hw.h
字号:
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** Description : VFD Driver Header File ****************/
/*************** ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Harrison Hsieh ****************/
/**********************************************************************/
#include "..\..\Pindef.h" //add by danvar070614 for VFD
BYTE xdata _bVfdKeyScan;
BYTE xdata _bVfdState; // for vfd state machine
#ifdef VFD_SUPPORT
#ifndef _VFD_HW_H_
#define _VFD_HW_H_
#ifndef _SHM_CHK_C_
//sbit STROBE_PIN = P1^5;
//sbit DATA_PIN = P1^4;
//sbit STROBE_PIN = P1^5;//danvar070614
sbit DATA_PIN = P1^7;
#ifdef BANK_NO
#if (BANK_NO > 4)
sbit CLK_PIN = P1^6;
//sbit CLK_PIN = P1^3;
#else
//sbit CLK_PIN = P1^2;
sbit CLK_PIN = P1^3;
#endif
#else
//sbit CLK_PIN = P1^2;
sbit CLK_PIN = P1^3;
#endif
#endif /* !_SHM_CHK_C_ */
#ifdef VFD_16311
#define QUEUEMARKSIZE 6
#elif defined(LCD_HT1621)
#define QUEUEMARKSIZE 4
#else
#define QUEUEMARKSIZE 3
#endif
BYTE xdata _bVfdQueueMark[QUEUEMARKSIZE]; // for 16311
//BYTE xdata _bVfdUpdateWrIdx; // may replace it in DRAM
BOOL _fgVfdHold;
BOOL _fgVfdFlash;
BYTE xdata _bLedPort;
#ifdef PANEL_LED
BOOL _fgLedChange;
BYTE _bLedState;
BOOL _fgLedOnOff;
#endif
BYTE xdata _bVfdDiscPos;
BYTE xdata _bVfdTimer;
BYTE xdata _bVfdFlashTimer;
BYTE xdata _bVfdPulseLvl;
// never change
#define VFD_ADDR_LIMIT 50
#define VFD_UNKNOWN_ADDR 0xff
#ifdef VFD_16311
#define VFD_MAX_ADDR 48 // for 16311
#elif defined(LCD_HT1621)
#define VFD_MAX_ADDR 32 // for HT1621
#else
#define VFD_MAX_ADDR 22 // for 16312
#endif
#ifdef LCD_HT1621
#define LCD_CMD 0x04
#define LCD_WRITE 0x05
#define LCD_READ 0x06
#define LCD_SYS_DIS 0x00
#define LCD_SYS_EN 0x01
#define LCD_OFF 0x02
#define LCD_ON 0x03
#define LCD_TIMER_DIS 0x04
#define LCD_WDT_DIS 0x05
#define LCD_TIMER_EN 0x06
#define LCD_WDT_EN 0x07
#define LCD_TONE_OFF 0x08
#define LCD_TONE_ON 0x09
#define LCD_CLR_TIMER 0x0c
#define LCD_CLR_WDT 0x0e
#define LCD_XTAL_32K 0x14
#define LCD_RC_256K 0x18
#define LCD_EXT_256K 0x1c
#define LCD_BIAS12_COM2 0x20 // 1/2 bias, 2 commons
#define LCD_BIAS12_COM3 0x24 // 1/2 bias, 3 commons
#define LCD_BIAS12_COM4 0x28 // 1/2 bias, 4 commons
#define LCD_BIAS13_COM2 0x21 // 1/3 bias, 2 commons
#define LCD_BIAS13_COM3 0x25 // 1/3 bias, 3 commons
#define LCD_BIAS13_COM4 0x29 // 1/3 bias, 4 commons
#define LCD_TONE_4K 0x40
#define LCD_TONE_2K 0x60
#define LCD_IRQ_DIS 0x80
#define LCD_IRQ_EN 0x88
#define LCD_F1 0xa0
#define LCD_F2 0xa1
#define LCD_F4 0xa2
#define LCD_F8 0xa3
#define LCD_F16 0xa4
#define LCD_F32 0xa5
#define LCD_F64 0xa6
#define LCD_F128 0xa7
#define LCD_TOPT 0xe0
#define LCD_TNORMAL 0xe3
#endif // LCD_HT1621
#define DATA_SET_INC 0x40 // increamental address(to display memory)
#define DATA_SET_FIX 0x44 // fixed address(to display memory
#define DATA_SET_LED 0x41 // write data to led port
#define ADDR_SET 0xC0
#define KEY_SCAN 0x42
#ifdef VFD_16311
#define SCANSIZE 48
#else
#define SCANSIZE 24
#endif
// may change depends on customer's VFD
#define VFD_DISP_MEM_SIZE VFD_MAX_ADDR
#define VFD_SEG_BAK_SIZE MAX_SEG_SEQ_NUM
#define VFD_SHADOW_TOTAL_SZ (VFD_DISP_MEM_SIZE * 2) + (VFD_SEG_BAK_SIZE * 2) + 4
#define SI_VFD_TMPBUF_START SI_VFD_SHADOW_START + VFD_DISP_MEM_SIZE
#define SI_VFD_UPDATE_WRIDX SI_VFD_SEG_ORG + VFD_SEG_BAK_SIZE
#define SI_VFD_PULSEWIDTH SI_VFD_UPDATE_WRIDX + 1
#define SI_VFD_SEG_BAK SI_VFD_TMPBUF_START + VFD_DISP_MEM_SIZE
#define SI_VFD_SEG_ORG SI_VFD_SEG_BAK + VFD_SEG_BAK_SIZE
// hardware related macro
/*#define vVfdStrobe(fgFlag) { \
STROBE_PIN = fgFlag; \
_nop_(); \
}*/
#define vVfdStrobe(fgFlag) { \
InitIoPIN_GPIO2(0);\
WriteIoPIN_GPIO2(fgFlag);\
_nop_(); \
}
#define vVfdClk(fgFlag) { \
CLK_PIN = fgFlag; \
_nop_(); \
}
#define vVfdData(fgFlag) { \
DATA_PIN = fgFlag; \
_nop_(); \
}
#define vVfdCombineBit(bData) DATA_PIN = (bData & 0x1)
// queue/ring buffer related define
#define vVfdSetQueueMark(bAddr) _bVfdQueueMark[(bAddr >> 3)] = (_bVfdQueueMark[(bAddr >> 3)] | (1 << (bAddr % 8)))
#define vVfdClrQueueMark(bAddr) _bVfdQueueMark[(bAddr >> 3)] = (_bVfdQueueMark[(bAddr >> 3)] & (~(1 << (bAddr % 8))))
#define fgVfdQueueMark(bAddr) ((_bVfdQueueMark[(bAddr >> 3)] & (1 << (bAddr % 8))) > 0)
// local function defined here
static void vVfdUpdate(BYTE bTmp) large;
static void vVfdWrite(BYTE bAddr) large;
static void vVfdWriteQueue(BYTE bAddr, BYTE bData) large;
static void vVfdUpdateState(void) large; // update into the VFD display memory
static void vVfdSequenceUpdate(BYTE bSize, BYTE *pbData, WORD wSegInfo) large;
static void vVfdLedUpdate(void) large;
static void vVfdKeyScan(BOOL fgPwrDown) large;
static void vVfdRecoverSeg(void) large;
static void vVfdDirectWrite(BYTE bAddr, BYTE bData) large;
static void vVfdFlashState(void) large;
static void vDirectSequenceUpd(BYTE bSize,BYTE *pbData, WORD wSegInfo) large;
// VFD state
#define VFD_STATE_MEM_UPDATE 0
#define VFD_STATE_LED_UPDATE 1
#define VFD_STATE_KEY_SCAN 2
#endif
#else
code BYTE _pbVfdDummy[] = {
0
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -