optical/NxFuncs/keyled/tm1637.h

135 lines
3.9 KiB
C
Raw Permalink Normal View History

2025-09-04 01:45:08 +00:00
#ifndef __TM1637_H__
#define __TM1637_H__
#include "config.h"
#ifndef LEDKEY_TM1637
#define LEDKEY_TM1637 0
#endif
// tm1637 <20>ṩ 8x2<78><32><EFBFBD><EFBFBD> <20><> 6 <20><>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ŀ<EFBFBD><C4BF><EFBFBD>
//-----------------------------------------------------------------
/*
-------------------------------------------------------------------------------------------------
| bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0 | <EFBFBD><EFBFBD>ͬģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
|-----------------------|-----------------------|-----------------------------------------------|
| | | | | 0 | 0 | д<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | | | | 1 | 0 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
| 0 1 | | | 0 | | | <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
| | | | 1 | | | <EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD>ַ
| | | 0 | | | | <EFBFBD><EFBFBD>ͨģʽ
| | | 1 | | | | <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
|-----------------------|-----------------------|-----------------------------------------------|
| | | 0 | 0 | 0 | 0 | <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ַ0
| <EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | | 0 | 0 | 0 | 1 | <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ַ1
| 1 1 | | 0 | 0 | 1 | 0 | <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ַ2
| | | 0 | 0 | 1 | 1 | <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ַ3
| | | 0 | 1 | 0 | 0 | <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ַ4
| | | 0 | 1 | 0 | 1 | <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ַ5
|-----------------------|-----------------------|-----------------------------------------------|
| | | | 0 | 0 | 0 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 1/16
| <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | | | 0 | 0 | 1 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 2/16
| 1 0 | | | 0 | 1 | 0 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 4/16
| | | | 0 | 1 | 1 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 10/16
| | | | 1 | 0 | 0 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 11/16
| | | | 1 | 0 | 1 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 12/16
| | | | 1 | 0 | 0 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 13/16
| | | | 1 | 0 | 1 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 14/16
| | | 0 | | | | <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
| | | 1 | | | | <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>
|-----------------------|-----------------------|-----------------------------------------------|
<EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>оƬ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ͽӿ<EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>׼I2C<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>е<EFBFBD>ַ<EFBFBD>ֶΣ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>ֽڵĴ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> LSB <EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD> MSB<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD>оƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>I2Cʵ<EFBFBD>֡<EFBFBD>
*/
//--------------------------
// bit7 bit6 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define DATA_CMD_BITS 0x40 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ADDR_CMD_BITS 0xC0 // <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3A8>ʾ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>
#define DISP_CTRL_BITS 0x80 // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//--------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bit1 bit0
#define WRITE_LED_REG 0x00 // д<><D0B4><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʾ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#define READ_KEY_VAL 0x02 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bit2
#define ADDR_AUTO_INC 0x00 // <20><>ַ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
#define ADDR_FIXED 0x04 // <20><>ַ<EFBFBD>̶<EFBFBD>
//--------------------------
// <20><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
#define LED_REG_BEG_ADDR 0x00
#define LED_REG1_ADDR (LED_REG_BEG_ADDR+0x00)
#define LED_REG2_ADDR (LED_REG_BEG_ADDR+0x01)
#define LED_REG3_ADDR (LED_REG_BEG_ADDR+0x02)
#define LED_REG4_ADDR (LED_REG_BEG_ADDR+0x03)
#define LED_REG5_ADDR (LED_REG_BEG_ADDR+0x04)
#define LED_REG6_ADDR (LED_REG_BEG_ADDR+0x05)
//--------------------------
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
#define DISP_OFF 0x00
#define DISP_ON 0x08
#define DISP_LEV(lev) ((lev)&0x07)
//---------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD> <20><>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KEY_NONE 0xFF
#define KEY_K1SG1 0xF7
#define KEY_K1SG2 0xF6
#define KEY_K1SG3 0xF5
#define KEY_K1SG4 0xF4
#define KEY_K1SG5 0xF3
#define KEY_K1SG6 0xF2
#define KEY_K1SG7 0xF1
#define KEY_K1SG8 0xF0
#define KEY_K2SG1 0xEF
#define KEY_K2SG2 0xEE
#define KEY_K2SG3 0xED
#define KEY_K2SG4 0xEC
#define KEY_K2SG5 0xEB
#define KEY_K2SG6 0xEA
#define KEY_K2SG7 0xE9
#define KEY_K2SG8 0xE8
//------------------------------------------------------------------------------
// <20><>ȡ<EFBFBD><C8A1>ֵ
u8 TM1637ReadKey(void);
// д<><D0B4>ʾ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>(<28><>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>)
void TM1637WriteLedData(u8 baddr, u8 * pBuff, u8 disp);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾģʽ(<28><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>)
void TM1637SetLedDisp(u8 disp);
//------------------------------------------------------------------------------
//
#endif