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

📄 display.h

📁 NEC527多功能电表完整源代码,包括LCD驱动,显示,计量,存储,整个527驱动程序!
💻 H
字号:
#ifndef _DISPLAY_H_
#define _DISPLAY_H_

#define LCD_ADDR_PCF8576                     0x70
#define LCD_ADDR_START                         0x00
#define LCD_DISPLAY_OFF                        0xD0
#define LCD_DISPLAY_ON                          0xD8
#define LCD_PARTS_SELECT                      0xE0
#define LCD_FLASH_CON                           0xF0

#define LCD_SEG_A   BIT3
#define LCD_SEG_B   BIT2
#define LCD_SEG_C   BIT1
#define LCD_SEG_D   BIT4
#define LCD_SEG_E   BIT5
#define LCD_SEG_F   BIT7
#define LCD_SEG_G   BIT6
#define LCD_SEG_H   BIT0

#define LCD_CODE_INFO_0                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_C|LCD_SEG_D|LCD_SEG_E|LCD_SEG_F)
#define LCD_CODE_INFO_1                       (LCD_SEG_B|LCD_SEG_C)
#define LCD_CODE_INFO_2                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_D|LCD_SEG_E|LCD_SEG_G)
#define LCD_CODE_INFO_3                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_C|LCD_SEG_D|LCD_SEG_G)
#define LCD_CODE_INFO_4                       (LCD_SEG_B|LCD_SEG_C|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_5                       (LCD_SEG_A|LCD_SEG_C|LCD_SEG_D|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_6                       (LCD_SEG_A|LCD_SEG_C|LCD_SEG_D|LCD_SEG_E|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_7                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_C)
#define LCD_CODE_INFO_8                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_C|LCD_SEG_D|LCD_SEG_E|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_9                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_C|LCD_SEG_D|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_A                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_C|LCD_SEG_E|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_b                       (LCD_SEG_C|LCD_SEG_D|LCD_SEG_E|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_C                       (LCD_SEG_A|LCD_SEG_D|LCD_SEG_E|LCD_SEG_F)
#define LCD_CODE_INFO_d                       (LCD_SEG_B|LCD_SEG_C|LCD_SEG_D|LCD_SEG_E|LCD_SEG_G)
#define LCD_CODE_INFO_E                       (LCD_SEG_A|LCD_SEG_D|LCD_SEG_E|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_F                       (LCD_SEG_A|LCD_SEG_E|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_G                       (LCD_SEG_A|LCD_SEG_C|LCD_SEG_D|LCD_SEG_E|LCD_SEG_F)
#define LCD_CODE_INFO_H                       (LCD_SEG_B|LCD_SEG_C|LCD_SEG_E|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_i                       (LCD_SEG_C)
#define LCD_CODE_INFO_L                       (LCD_SEG_D|LCD_SEG_E|LCD_SEG_F)
#define LCD_CODE_INFO_n                       (LCD_SEG_C|LCD_SEG_E|LCD_SEG_G)
#define LCD_CODE_INFO_o                       (LCD_SEG_C|LCD_SEG_D|LCD_SEG_E|LCD_SEG_G)
#define LCD_CODE_INFO_P                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_E|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_q                       (LCD_SEG_A|LCD_SEG_B|LCD_SEG_C|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_r                       (LCD_SEG_E|LCD_SEG_G)
#define LCD_CODE_INFO_R                       (LCD_SEG_A|LCD_SEG_E|LCD_SEG_F)
#define LCD_CODE_INFO_S                       (LCD_SEG_A|LCD_SEG_C|LCD_SEG_D|LCD_SEG_F|LCD_SEG_G)
#define LCD_CODE_INFO_t                       (LCD_SEG_C|LCD_SEG_G)
#define LCD_CODE_INFO_U                       (LCD_SEG_B|LCD_SEG_C|LCD_SEG_D|LCD_SEG_E|LCD_SEG_F)
#define LCD_CODE_INFO_u                       (LCD_SEG_C|LCD_SEG_D|LCD_SEG_E)
#define LCD_CODE_INFO__                       (LCD_SEG_G)
#define LCD_CODE_INFO_EQUAL                   (LCD_SEG_D|LCD_SEG_G)
#define LCD_CODE_INFO_NONE                    (               0               )

#define DISP_MAX_ITEM                           48
#define DISPLAY_ITEM 27
#define DISPLAY_ITEM_BYTE 4

#define LCD_CODE_ADDR_01                        3
#define LCD_CODE_ADDR_02                        4
#define LCD_CODE_ADDR_03                        5
#define LCD_CODE_ADDR_04                        6
#define LCD_CODE_ADDR_05                        7
#define LCD_CODE_ADDR_06                        8
#define LCD_CODE_ADDR_07                        9
#define LCD_CODE_ADDR_08                        10
#define LCD_CODE_ADDR_09                        11
#define LCD_CODE_ADDR_10                        12
#define LCD_CODE_ADDR_11                        13
#define LCD_CODE_ADDR_12                        14

#define LCD_CN_INFO_ADDR_MNUM                   18
#define LCD_CN_INFO_MNUM                        BIT2

#define LCD_CN_INFO_ADDR_UNUM                   18
#define LCD_CN_INFO_UNUM                        BIT1

#define LCD_CN_INFO_ADDR_TIME                   17
#define LCD_CN_INFO_TIME                        BIT1

#define LCD_CN_INFO_ADDR_DATE                   17
#define LCD_CN_INFO_DATE                        BIT0

#define LCD_CN_INFO_ADDR_WEEK                   18
#define LCD_CN_INFO_WEEK                        BIT5

#define LCD_CN_INFO_ADDR_ZONE                   18
#define LCD_CN_INFO_ZONE                        BIT0

#define LCD_CN_INFO_ADDR_POT                    18 
#define LCD_CN_INFO_POT                         BIT4 

#define LCD_CN_INFO_ADDR_ACTIVE                 17
#define LCD_CN_INFO_ACTIVE                      BIT5

#define LCD_CN_INFO_ADDR_REACTIVE               17
#define LCD_CN_INFO_REACTIVE                    BIT4

#define LCD_CN_INFO_ADDR_SUM                    17
#define LCD_CN_INFO_SUM                         BIT6 

#define LCD_CN_INFO_ADDR_PEAK                   17 
#define LCD_CN_INFO_PEAK                        BIT7

#define LCD_CN_INFO_ADDR_APEX                   17 
#define LCD_CN_INFO_APEX                        BIT2 

#define LCD_CN_INFO_ADDR_CALM                   17
#define LCD_CN_INFO_CALM                        BIT3 

#define LCD_CN_INFO_ADDR_VALE                   18
#define LCD_CN_INFO_VALE                        BIT6

#define LCD_CN_INFO_ADDR_PWR                    18
#define LCD_CN_INFO_PWR                         BIT7

#define LCD_CN_INFO_ADDR_REQ                    18
#define LCD_CN_INFO_REQ                         BIT3

#define LCD_CN_INFO_ADDR_POSITIVE               16
#define LCD_CN_INFO_POSITIVE                    BIT5

#define LCD_CN_INFO_ADDR_REVERSE                16
#define LCD_CN_INFO_REVERSE                     BIT4

#define LCD_CN_INFO_ADDR_WINTER                 2
#define LCD_CN_INFO_WINTER                      BIT6

#define LCD_CN_INFO_ADDR_COM                    5
#define LCD_CN_INFO_COM                         BIT0

#define LCD_CN_INFO_ADDR_PGM                    1
#define LCD_CN_INFO_PGM                         BIT0

#define LCD_CN_INFO_ADDR_CONSTANT               1
#define LCD_CN_INFO_CONSTANT                    BIT6

#define LCD_CN_INFO_ADDR_PWRCUT                 1
#define LCD_CN_INFO_PWRCUT                      BIT5

#define LCD_CN_INFO_ADDR_COVERUP                1
#define LCD_CN_INFO_COVERUP                     BIT4

#define LCD_CN_INFO_ADDR_COVERDOWN              1
#define LCD_CN_INFO_COVERDOWN                   BIT7

#define LCD_CN_INFO_ADDR_TIMES                  1
#define LCD_CN_INFO_TIMES                       BIT2

#define LCD_CN_INFO_ADDR_ALARM                  1
#define LCD_CN_INFO_ALARM                       BIT3

#define LCD_CN_INFO_ADDR_LOWPWR                 1
#define LCD_CN_INFO_LOWPWR                      BIT1

#define LCD_CN_INFO_ADDR_LOSTPHASE              2
#define LCD_CN_INFO_LOSTPHASE                   BIT5

#define LCD_EN_INFO_ADDR_IA                     2
#define LCD_EN_INFO_IA                          BIT2

#define LCD_EN_INFO_ADDR_IB                     2
#define LCD_EN_INFO_IB                          BIT3

#define LCD_EN_INFO_ADDR_IC                     2
#define LCD_EN_INFO_IC                          BIT7

#define LCD_EN_INFO_ADDR_UA                     2
#define LCD_EN_INFO_UA                          BIT1

#define LCD_EN_INFO_ADDR_UB                     2
#define LCD_EN_INFO_UB                          BIT0

#define LCD_EN_INFO_ADDR_UC                     2
#define LCD_EN_INFO_UC                          BIT4

#define LCD_EN_INFO_ADDR_BPS                    6
#define LCD_EN_INFO_BPS                         BIT0

#define LCD_EN_INFO_ADDR_TEMP                   7
#define LCD_EN_INFO_TEMP                        BIT0

#define LCD_EN_INFO_ADDR_WATT                   16
#define LCD_EN_INFO_WATT                        BIT6

#define LCD_EN_INFO_ADDR_VAR                    16
#define LCD_EN_INFO_VAR                         BIT7

#define LCD_SY_INFO_ADDR_S                      0
#define LCD_SY_INFO_ADDR_S1                     0
#define LCD_SY_INFO_S1                          BIT0
#define LCD_SY_INFO_ADDR_S2                     0
#define LCD_SY_INFO_S2                          BIT1
#define LCD_SY_INFO_ADDR_S3                     0
#define LCD_SY_INFO_S3                          BIT2
#define LCD_SY_INFO_ADDR_S4                     0
#define LCD_SY_INFO_S4                          BIT3
#define LCD_SY_INFO_ADDR_S5                     0
#define LCD_SY_INFO_S5                          BIT7
#define LCD_SY_INFO_ADDR_S6                     0
#define LCD_SY_INFO_S6                          BIT6
#define LCD_SY_INFO_ADDR_S7                     0
#define LCD_SY_INFO_S7                          BIT5
#define LCD_SY_INFO_ADDR_S8                     0
#define LCD_SY_INFO_S8                          BIT4
#define LCD_SY_INFO_ADDR_S9                     14
#define LCD_SY_INFO_S9                          BIT0

#define LCD_SY_INFO_ADDR_PEAK                   16
#define LCD_SY_INFO_PEAK                        BIT3

#define LCD_SY_INFO_ADDR_APEX                   16
#define LCD_SY_INFO_APEX                        BIT2

#define LCD_SY_INFO_ADDR_CALM                   16
#define LCD_SY_INFO_CALM                        BIT1

#define LCD_SY_INFO_ADDR_VALE                   16
#define LCD_SY_INFO_VALE                        BIT0

#define LCD_SY_INFO_ADDR_P1                     3
#define LCD_SY_INFO_P1                          BIT0
#define LCD_SY_INFO_ADDR_P2                     4
#define LCD_SY_INFO_P2                          BIT0
#define LCD_SY_INFO_ADDR_P6                     8
#define LCD_SY_INFO_P6                          BIT0
#define LCD_SY_INFO_ADDR_P7                     9
#define LCD_SY_INFO_P7                          BIT0
#define LCD_SY_INFO_ADDR_P8                     10
#define LCD_SY_INFO_P8                          BIT0
#define LCD_SY_INFO_ADDR_P9                     11
#define LCD_SY_INFO_P9                          BIT0
#define LCD_SY_INFO_ADDR_P10                    12
#define LCD_SY_INFO_P10                         BIT0
#define LCD_SY_INFO_ADDR_P11                    13
#define LCD_SY_INFO_P11                         BIT0

#define LCD_SY_INFO_ADDR_M1                     15
#define LCD_SY_INFO_M1                          BIT7
#define LCD_SY_INFO_ADDR_M2                     15
#define LCD_SY_INFO_M2                          BIT6
#define LCD_SY_INFO_ADDR_M3                     15
#define LCD_SY_INFO_M3                          BIT5
#define LCD_SY_INFO_ADDR_M4                     15
#define LCD_SY_INFO_M4                          BIT4
#define LCD_SY_INFO_ADDR_N1                     15
#define LCD_SY_INFO_N1                          BIT3
#define LCD_SY_INFO_ADDR_N2                     15
#define LCD_SY_INFO_N2                          BIT2
#define LCD_SY_INFO_ADDR_N3                     15
#define LCD_SY_INFO_N3                          BIT1
#define LCD_SY_INFO_ADDR_N4                     15
#define LCD_SY_INFO_N4                          BIT0

#define LCD_INFO_2CODE_H_                       0
#define LCD_INFO_2CODE_L_                       2

#define DISP_COLON_FRONT()  \
{  \
    LCDMEM[LCD_SY_INFO_ADDR_P7]|=LCD_SY_INFO_P7;  \
    LCDMEM[LCD_SY_INFO_ADDR_P8]|=LCD_SY_INFO_P8;  \
}

#define DISP_COLON_REAR()  \
{  \
    LCDMEM[LCD_SY_INFO_ADDR_P6]|=LCD_SY_INFO_P6;  \
    LCDMEM[LCD_SY_INFO_ADDR_P10]|=LCD_SY_INFO_P10;  \
}

#define DISP_UNION_W()  (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S2|LCD_SY_INFO_S3|LCD_SY_INFO_S4))
#define DISP_UNION_KW()   (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S1|LCD_SY_INFO_S2|LCD_SY_INFO_S3|LCD_SY_INFO_S4))
#define DISP_UNION_KWH()   (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S1|LCD_SY_INFO_S2|LCD_SY_INFO_S3|LCD_SY_INFO_S4|LCD_SY_INFO_S6|LCD_SY_INFO_S7|LCD_SY_INFO_S8))
#define DISP_UNION_AH()     (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S4|LCD_SY_INFO_S5|LCD_SY_INFO_S6|LCD_SY_INFO_S7|LCD_SY_INFO_S8))
#define DISP_UNION_VAR()    (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S2|LCD_SY_INFO_S4|LCD_SY_INFO_S5|LCD_SY_INFO_S6|LCD_SY_INFO_S7|LCD_SY_INFO_S8))
#define DISP_UNION_KVAR()   (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S1|LCD_SY_INFO_S2|LCD_SY_INFO_S4|LCD_SY_INFO_S5|LCD_SY_INFO_S7))
#define DISP_UNION_KVARH() (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S1|LCD_SY_INFO_S2|LCD_SY_INFO_S4|LCD_SY_INFO_S5|LCD_SY_INFO_S6|LCD_SY_INFO_S7|LCD_SY_INFO_S8);LCDMEM[LCD_SY_INFO_ADDR_S9]|=LCD_SY_INFO_S9)
#define DISP_UNION_KVAH()  (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S1|LCD_SY_INFO_S2|LCD_SY_INFO_S4|LCD_SY_INFO_S5|LCD_SY_INFO_S6|LCD_SY_INFO_S7|LCD_SY_INFO_S8))
#define DISP_UNION_KVA()   (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S1|LCD_SY_INFO_S2|LCD_SY_INFO_S4|LCD_SY_INFO_S5))
#define DISP_UNION_V()   (LCDMEM[LCD_SY_INFO_ADDR_S]|=LCD_SY_INFO_S2)
#define DISP_UNION_A()  (LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S4|LCD_SY_INFO_S5))

#define DISP_CN_MNUM()  (LCDMEM[LCD_CN_INFO_ADDR_MNUM]|=LCD_CN_INFO_MNUM)
#define DISP_CN_UNUM()  (LCDMEM[LCD_CN_INFO_ADDR_UNUM]|=LCD_CN_INFO_UNUM)
#define DISP_CN_DATE()  (LCDMEM[LCD_CN_INFO_ADDR_DATE]|=LCD_CN_INFO_DATE)
#define DISP_CN_TIME()  (LCDMEM[LCD_CN_INFO_ADDR_DATE]|=LCD_CN_INFO_TIME)

#define LCD_DISP_FLG_ACTIVE BIT0
#define LCD_DISP_FLG_REFIND BIT1
#define LCD_DISP_FLG_PAGEUP BIT2
#define LCD_DISP_FLG_PAGEDOWN BIT3
#define LCD_DISP_FLG_PWR_SUM BIT4
#define LCD_DISP_NEXT BIT5
#define LCD_DISP_TIME BIT6
#define LCD_DISP_ALL BIT7

#define LCD_FLASH_FLAG BIT0
#define LCD_DISPLAY_ON_FLAG BIT1
#define LCD_DISPLAY_OFF_FLAG BIT2

#define DISP_POWER_CNT    12

extern const unsigned char _disp_power_item[];
extern const unsigned char _LcdCodeHex[16];

extern unsigned char LcdDispFlag;
extern unsigned char LCDMEM[20];
extern unsigned char LcdStopInterval;
extern unsigned char UserKeyDownNum;

#define  DISPLAY_PAGE_DOWN    1
#define  DISPLAY_PGAE_UP         2
#define  ACTIVE_PROGRAM          3

#ifdef _TEMPERATURE
extern signed char CurrentTemperature;
#endif

extern void ClearLcd(void);
extern void LargeLedDisplay4Code3Bcd(unsigned char pos,unsigned short data);
extern void LargeLedDisplay6Bcd(unsigned char *data);
extern void DisplayDateTimeData(unsigned char *dt);
extern void DisplayReinit(void);
extern void DisplayContentReinit(void);
extern void DisplayRefresh(void);
extern void InitDisplayPageInfo(void);
extern void OnDisplayPageUp(void);
extern void OnDisplayPageDown(void);
extern void IrKeyDispose(void);
extern void LcdDisplayOpen(void);
extern void LcdDisplayControl(uchar time);
extern void LcdDisplayClose();

#endif


⌨️ 快捷键说明

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