CH422 具有硬件实现的 2 线串行接口,包含 2 根信号线:串行数据时钟输入线 SCL、串行数据输入和输出线 SDA。采用的IIC通信,时序如下:
从实例得出,上表的48H为寄存器操作地址,01H为操作命令,也就是说驱动CH422的写入时序为:起始信号—发送寄存器地址—接收应答—发送操作命令—接收应答—终止信号。
CH422写指令代码:
void CH422_WriteReg(uint8_t RegAddress, uint8_t Data)
{
MyI2C_Start(); //I2C起始
MyI2C_SendByte(RegAddress); //发送寄存器地址
MyI2C_ReceiveAck(); //接收应答
MyI2C_SendByte(Data); //发送要写入寄存器的数据
MyI2C_ReceiveAck(); //接收应答
MyI2C_Stop(); //I2C终止
}
CH422初始化:
CH422分IO扩展功能和数码管自动扫描功能,使用数码管自动扫描功能,由手册得出,配置CH422功能的寄存器地址为01001000B,即0x48;数码管模式为05H;
void CH422_Init(void)
{
MyI2C_Init(); //先初始化底层的I2C
CH422_WriteReg(0x48, 0x05); //配置CH422为数码管模式
}
CH422显示数码管:
由数据手册得出:控制数码管的地址为70H、72H、74H、76H,对这些地址写入相应的数据驱动数码管显示。
uint8_t bcdcode[16] = {0X3F, 0X06, 0X5B, 0X4F, 0X66, 0X6D, 0X7D, 0X07, 0X7F, 0X6F,\
0X77, 0X7C, 0X58, 0X5E, 0X79, 0X71};
//数码管显示0—F
uint16_t i = 123 ;
uint8_t Num,tNum,mNum;
Num = i % 10;
tNum = i /10 %10;
mNum = i / 100;
CH422_WriteReg(0x74,bcdcode[Num]);
CH422_WriteReg(0x72,bcdcode[tNum]);
CH422_WriteReg(0x70,bcdcode[mNum]);