I2C制御のキャラクタ液晶(PCF8574T)の制御ライブラリ

キャラクタ液晶をI2C制御に変換するアダプタが売られていたので、制御ライブラリを作ってみました。
中身はただのシリパラ変換みたいです。

↓こういうやつ↓

jp.banggood.com

作ったライブラリはこちら 。
初期化処理と、指定した行に指定した文字列を送信する関数だけです。

github.com


こんなAPIです

PCF8574T_Init

initialize LCD.

void PCF8574T_Init(uint8_t i2c_addr, Delay_Func delay_func, I2C_Write_Func i2c_func);
param description
i2c_addr PCF8574T address. normally 0x27
delay_func delay function ptr
i2c_func i2c write function ptr
// I2c Write Function
typedef void (*I2C_Write_Func)(uint8_t addr, uint8_t *send_data, uint8_t send_data_len);
// Delay Function
typedef void (*Delay_Func)(uint16_t delay_time_ms);

PCF8574T_displayString

put string to display.
The string must be ended by \0 (null).

void PCF8574T_displayString(char *string, uint8_t line);
param description
string string to display
line line number (1 or 2)

Example (stm32 HAL)

#include "PCF8574T_LCD_Driver.h"

void stm_i2c_write(uint8_t addr, uint8_t *send_data, uint8_t send_data_len)
{
    HAL_I2C_Master_Transmit(&hi2c1, addr<<1, send_data, send_data_len, 1000);
}
void stm_delay(uint16_t delay_ms)
{
    HAL_Delay(delay_ms);
}

int main(void)
{
    PCF8574T_Init(0x27, stm_delay, stm_i2c_write);
    char outString[] = "sample string";
    PCF8574T_displayString(outString, 1);
}