以下是贵公司的写例程: /* ********************************************************************** ** CH452_Write 写命令 ********************************************************************** */ void CH452_Write(Int16U cmd) { CH452_I2C_Start2(); CH452_WriteByte((Int8U)(cmd >> 7) & CH452_I2C_MASK | CH452_I2C_ADDR1); CH452_WriteByte((Int8U)cmd); CH452_I2C_STOP(); } 以下是我自己修改的写例程: void CH452_Write(Int16U cmd) { CH452_I2C_Start2(); CH452_WriteByte((Int8U)(cmd >> 8)); CH452_WriteByte((Int8U)cmd); CH452_I2C_STOP(); }
以下是对CH452参数做出的修改: /* 常用命令 */ #define CH452_CMD_NOP 0x0000 /* 空操作 */ //#define CH452_CMD_RESET 0x0201 /* 复位 */
#define CH452_CMD_RESET 0x6401 /* 复位 */ // //0110 0100 0000 0001
#define CH452_CMD_SLEEP 0x0202 /* 进入睡眠状态 */ #define CH452_CMD_SYSOFF 0x0400 /* 关闭显示,关闭键盘 */ //#define CH452_CMD_SYSON0 0x0402 /* 关闭显示,开启键盘 */
#define CH452_CMD_SYSON0 0x6802 /* 关闭显示,开启键盘 */ // //0110 1000 0000 0010
#define CH452_CMD_SYSON1 0x0403 /* 开启显示,开启键盘 */
//#define CH452_GET_KEY 0x0700 /* 获取按键代码 */
#define CH452_GET_KEY 0x6fff /* 获取按键代码 */ // //0110 1111 1111 1111
#define CH452_CMD_ACK 0x07FF /* 使能I2C返回ack应答 */ 其他部分未做改动,按我的理解这样是可以对其进行读写的,按键按下也可以接收到CH452的按键中断,为什么我接收不到正确的数据呢????无论哪个按键按下我接收到的都是“FF”,求指点迷津???