293 lines
11 KiB
C
293 lines
11 KiB
C
|
/****************************************************************************
|
|||
|
*
|
|||
|
* Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|||
|
*
|
|||
|
* This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics Ltd and MAY NOT
|
|||
|
* be copied by any method or incorporated into another program without
|
|||
|
* the express written consent of Aerospace C.Power. This Information or any portion
|
|||
|
* thereof remains the property of Aerospace C.Power. The Information contained herein
|
|||
|
* is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|||
|
* liability for its use in any way and conveys no license or title under
|
|||
|
* any patent or copyright and makes no representation or warranty that this
|
|||
|
* Information is free from patent or copyright infringement.
|
|||
|
*
|
|||
|
* ****************************************************************************/
|
|||
|
|
|||
|
#ifndef _INCLUDE_LCD_HT16K23_H_
|
|||
|
#define _INCLUDE_LCD_HT16K23_H_
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
/* Maximum of the display ram length. */
|
|||
|
#define HT16K23_MAX_DISPLAY_RAM_LEN 15
|
|||
|
|
|||
|
/* bitmap of the lcd keypad.*/
|
|||
|
typedef enum {
|
|||
|
HT16K23_K0_BIT = 1, /* K0_BIT 00000001*/
|
|||
|
HT16K23_K1_BIT = 2, /* K1_BIT 00000010*/
|
|||
|
HT16K23_K2_BIT = 4, /* K2_BIT 00000100*/
|
|||
|
HT16K23_K3_BIT = 8, /* K3_BIT 00001000*/
|
|||
|
}keypad_bit_map;
|
|||
|
|
|||
|
/* the lcd work status.*/
|
|||
|
enum {
|
|||
|
HT16K23_STAT_STANDBY = 0, /* standby mode*/
|
|||
|
HT16K23_STAT_NORMAL = 1, /* normal mode*/
|
|||
|
};
|
|||
|
|
|||
|
typedef union _display_bitmap {
|
|||
|
uint8_t display_data[HT16K23_MAX_DISPLAY_RAM_LEN];
|
|||
|
struct {
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_relay_2 <20>̵<EFBFBD><CCB5><EFBFBD>2
|
|||
|
com6:1, //symbol_relay_1 <20>̵<EFBFBD><CCB5><EFBFBD>1
|
|||
|
com5:1, //symbol_switch_6 <20><><EFBFBD><EFBFBD>6
|
|||
|
com4:1, //symbol_switch_5 <20><><EFBFBD><EFBFBD>5
|
|||
|
com3:1, //symbol_switch_4 <20><><EFBFBD><EFBFBD>4
|
|||
|
com2:1, //symbol_switch_3 <20><><EFBFBD><EFBFBD>3
|
|||
|
com1:1, //symbol_switch_2 <20><><EFBFBD><EFBFBD>2
|
|||
|
com0:1; //symbol_switch_1 <20><><EFBFBD><EFBFBD>1
|
|||
|
} seg_0;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_float ƽ---<2D><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
|||
|
com6:1, //symbol_demand <20><><EFBFBD><EFBFBD>
|
|||
|
com5:1, //symbol_zero <20><><EFBFBD><EFBFBD>
|
|||
|
com4:1, //symbol_Hz <20><>λHz
|
|||
|
com3:1, //symbol_% %
|
|||
|
com2:1, //symbol_h <20><>λh
|
|||
|
com1:1, //symbol_var <20><>λvar
|
|||
|
com0:1; //symbol_k <20><>λk --- kvarh
|
|||
|
} seg_1;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_tip <20><>---<2D><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
|||
|
com6:1, //symbol_peak <20><>---<2D><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
|||
|
com5:1, //symbol_h <20><>λh
|
|||
|
com4:1, //symbol_A <20><>λA
|
|||
|
com3:1, //symbol_V <20><>λV
|
|||
|
com2:1, //symbol_V <20><>λV ---W
|
|||
|
com1:1, //symbol_k <20><>λk ---kVVAh
|
|||
|
com0:1; //none
|
|||
|
} seg_2;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_total <20><>
|
|||
|
com6:1, //symbol_harmonic г<><D0B3>
|
|||
|
com5:1, //symbol_cos<6F><73> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
com4:1, //symbol_S
|
|||
|
com3:1, //symbol_E
|
|||
|
com2:1, //symbol_Q
|
|||
|
com1:1, //symbol_P PQES
|
|||
|
com0:1; //symbol_P8_2 <20>ڶ<EFBFBD><DAB6><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>,point_8
|
|||
|
} seg_3;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_month <20><>
|
|||
|
com6:1, //symbol_combination <20><><EFBFBD><EFBFBD>
|
|||
|
com5:1, //symbol_positive <20><>
|
|||
|
com4:1, //symbol_reverse <20><>
|
|||
|
com3:1, //symbol_direction <20><>---<2D><>|<7C><><EFBFBD><EFBFBD>
|
|||
|
com2:1, //symbol_U <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
|
|||
|
com1:1, //symbol_I <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
com0:1; //symbol_last <20><>---<2D><>1X<31><58>
|
|||
|
} seg_4;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_digit1_7bit---<2D><>1X<31><58>:<3A><>λ
|
|||
|
com6:1,
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1; //symbol_decade_1 <20><>1x<31><78>:ʮλ
|
|||
|
} seg_5;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_vally <20><>---<2D><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
|
|||
|
com6:1, //symbol_digit9_7bit
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1;
|
|||
|
} seg_6;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_P9 С<><D0A1><EFBFBD><EFBFBD>:decimal point
|
|||
|
com6:1, //symbol_digit8_7bit
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1;
|
|||
|
} seg_7;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_P7_2 С<><D0A1><EFBFBD><EFBFBD>|<7C>ڶ<EFBFBD><DAB6><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>,point_7
|
|||
|
com6:1, //symbol_digit7_7bit
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1;
|
|||
|
} seg_8;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_P6 С<><D0A1><EFBFBD><EFBFBD>:decimal point
|
|||
|
com6:1, //symbol_digit6_7bit
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1;
|
|||
|
} seg_9;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_P4_1 С<><D0A1><EFBFBD><EFBFBD>|<7C><>һ<EFBFBD><D2BB>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>,point_4
|
|||
|
com6:1, //symbol_digit5_7bit
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1;
|
|||
|
} seg_10;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_P3 С<><D0A1><EFBFBD><EFBFBD>:decimal point
|
|||
|
com6:1, //symbol_digit4_7bit
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1;
|
|||
|
} seg_11;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_P2 С<><D0A1><EFBFBD><EFBFBD>:decimal point
|
|||
|
com6:1, //symbol_digit3_7bit
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1;
|
|||
|
} seg_12;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_P1 С<><D0A1><EFBFBD><EFBFBD>:decimal point
|
|||
|
com6:1, //symbol_digit2_7bit
|
|||
|
com5:1,
|
|||
|
com4:1,
|
|||
|
com3:1,
|
|||
|
com2:1,
|
|||
|
com1:1,
|
|||
|
com0:1;
|
|||
|
} seg_13;
|
|||
|
struct {
|
|||
|
uint8_t com7:1, //symbol_c
|
|||
|
com6:1, //symbol_b bc
|
|||
|
com5:1, //symbol_a
|
|||
|
com4:1, //symbol_b ab
|
|||
|
com3:1, //symbol_c
|
|||
|
com2:1, //symbol_a va
|
|||
|
com1:1, //none
|
|||
|
com0:1; //symbol_P5_1 <20><>һ<EFBFBD><D2BB>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>,point_5
|
|||
|
} seg_14;
|
|||
|
}display_ram_bitmap;
|
|||
|
/* COM value of digit 0 ~ 9
|
|||
|
#define NUM_0 (1<<0)|(1<<1)|(1<<2)|(1<<4)|(1<<5)|(1<<6) //1110111 0x77
|
|||
|
#define NUM_1 (1<<1)|(1<<4) //0010010 0x12
|
|||
|
#define NUM_2 (1<<0)|(1<<1)|(1<<6)|(1<<5)|(1<<3) //1101011 0x6b
|
|||
|
#define NUM_3 (1<<0)|(1<<1)|(1<<3)|(1<<4)|(1<<6) //1011011 0x5b
|
|||
|
#define NUM_4 (1<<1)|(1<<4)|(1<<3)|(1<<2) //0011110 0x1e
|
|||
|
#define NUM_5 (1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<6) //1011101 0x5d
|
|||
|
#define NUM_6 (1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<6)|(1<<5) //1111101 0x7d
|
|||
|
#define NUM_7 (1<<0)|(1<<1)|(1<<4) //0010011 0x13
|
|||
|
#define NUM_8 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6) //1111111 0x7f
|
|||
|
#define NUM_9 (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<6) //1011111 0x5f
|
|||
|
*/
|
|||
|
}display_bitmap;
|
|||
|
|
|||
|
/* The upper app callback function
|
|||
|
* used to get the pressed key, reference HT16K23_K0_XXX.
|
|||
|
*/
|
|||
|
typedef uint8_t(* iot_lcd_key_handle_cb)(uint8_t which_key);
|
|||
|
|
|||
|
/*
|
|||
|
@brief iot_lcd_key_handle_register() - register lcd key handle callback func.
|
|||
|
@param: keycb the lcd key handle callback func.
|
|||
|
return: ERR_OK:success.
|
|||
|
* ERR_FAIL:failed.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_key_handle_register(iot_lcd_key_handle_cb keycb);
|
|||
|
|
|||
|
/*
|
|||
|
@brief lcd_init() - lcd i2c init, open lcd, clear screen.
|
|||
|
return: ERR_OK:success.
|
|||
|
* ERR_FAIL:failed.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_init();
|
|||
|
|
|||
|
/*
|
|||
|
@brief iot_lcd_int_init() - init interrupt
|
|||
|
return: ERR_OK:success.
|
|||
|
* ERR_FAIL:failed.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_int_init();
|
|||
|
|
|||
|
/*
|
|||
|
@brief lcd_stand_by_set() - set system mode to standby
|
|||
|
return: ERR_OK:success.
|
|||
|
* ERR_FAIL:failed.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_set_standby();
|
|||
|
|
|||
|
/*
|
|||
|
@brief iot_lcd_set_weakup() - set system mode to normal working.
|
|||
|
return: ERR_OK:success.
|
|||
|
* ERR_FAIL:failed.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_set_weakup();
|
|||
|
|
|||
|
/*
|
|||
|
@brief iot_lcd_get_status() - get lcd work status, normal or standy.
|
|||
|
return: reference HT16K23_STAT_XXX.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_get_status();
|
|||
|
|
|||
|
/*
|
|||
|
@brief lcd_clear_screen() - clear lcd screen
|
|||
|
return: ERR_OK:success.
|
|||
|
* ERR_FAIL:failed.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_clear_screen();
|
|||
|
|
|||
|
/*
|
|||
|
@brief iot_lcd_get_display_data() - query display status.
|
|||
|
@param: display_buf the buffer that save display ram data.
|
|||
|
return: ERR_OK:success.
|
|||
|
* ERR_FAIL:failed.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_get_display_data(display_bitmap *display_buf);
|
|||
|
|
|||
|
/*
|
|||
|
@brief iot_lcd_set_display_data() - set display data.
|
|||
|
@param: display_data data that set to the display memory.
|
|||
|
@param: data_len the length of the display data.
|
|||
|
return: ERR_OK:success.
|
|||
|
* ERR_FAIL:failed.
|
|||
|
*/
|
|||
|
uint8_t iot_lcd_set_display_data(display_bitmap *display_data);
|
|||
|
|
|||
|
/*
|
|||
|
@brief iot_poll_read_key_data() - poll read ram key data
|
|||
|
If enable interrupt,when interrupt triggered will call it.
|
|||
|
otherwise upper-app polling call is required
|
|||
|
* @return which key was pressed.
|
|||
|
* ERR_FAIL: something error.
|
|||
|
*/
|
|||
|
uint8_t iot_poll_read_key_data();
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
#endif //IOT_LED_H
|