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 继电器2
|
|
com6:1, //symbol_relay_1 继电器1
|
|
com5:1, //symbol_switch_6 开关6
|
|
com4:1, //symbol_switch_5 开关5
|
|
com3:1, //symbol_switch_4 开关4
|
|
com2:1, //symbol_switch_3 开关3
|
|
com1:1, //symbol_switch_2 开关2
|
|
com0:1; //symbol_switch_1 开关1
|
|
} seg_0;
|
|
struct {
|
|
uint8_t com7:1, //symbol_float 平---尖峰平谷
|
|
com6:1, //symbol_demand 需量
|
|
com5:1, //symbol_zero 零序
|
|
com4:1, //symbol_Hz 单位Hz
|
|
com3:1, //symbol_% %
|
|
com2:1, //symbol_h 单位h
|
|
com1:1, //symbol_var 单位var
|
|
com0:1; //symbol_k 单位k --- kvarh
|
|
} seg_1;
|
|
struct {
|
|
uint8_t com7:1, //symbol_tip 尖---尖峰平谷
|
|
com6:1, //symbol_peak 峰---尖峰平谷
|
|
com5:1, //symbol_h 单位h
|
|
com4:1, //symbol_A 单位A
|
|
com3:1, //symbol_V 单位V
|
|
com2:1, //symbol_V 单位V ---W
|
|
com1:1, //symbol_k 单位k ---kVVAh
|
|
com0:1; //none
|
|
} seg_2;
|
|
struct {
|
|
uint8_t com7:1, //symbol_total 总
|
|
com6:1, //symbol_harmonic 谐波
|
|
com5:1, //symbol_cosφ 功率因数
|
|
com4:1, //symbol_S
|
|
com3:1, //symbol_E
|
|
com2:1, //symbol_Q
|
|
com1:1, //symbol_P PQES
|
|
com0:1; //symbol_P8_2 第二个冒号上面的点,point_8
|
|
} seg_3;
|
|
struct {
|
|
uint8_t com7:1, //symbol_month 月
|
|
com6:1, //symbol_combination 组合
|
|
com5:1, //symbol_positive 正
|
|
com4:1, //symbol_reverse 反
|
|
com3:1, //symbol_direction 向---正|反向
|
|
com2:1, //symbol_U 电压符号
|
|
com1:1, //symbol_I 电流符号
|
|
com0:1; //symbol_last 上---上1X月
|
|
} seg_4;
|
|
struct {
|
|
uint8_t com7:1, //symbol_digit1_7bit---上1X月:个位
|
|
com6:1,
|
|
com5:1,
|
|
com4:1,
|
|
com3:1,
|
|
com2:1,
|
|
com1:1,
|
|
com0:1; //symbol_decade_1 上1x月:十位
|
|
} seg_5;
|
|
struct {
|
|
uint8_t com7:1, //symbol_vally 谷---尖峰平谷
|
|
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 小数点: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 小数点|第二个冒号下面的点,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 小数点: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 小数点|第一个冒号下面的点,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 小数点: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 小数点: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 小数点: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 第一个冒号上面的点,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
|