STM32

I2C로 LCD 제어해보기

찬영_00 2024. 11. 25. 16:39

STM32407VE 에서 I2C를 먼저 설정해주자

 

설정은 이렇게만 해주고 코드를 작성하자.

 

코드는 다음과 같다.

라이브러리는 https://github.com/alixahedi/i2c-lcd-stm32

 

GitHub - alixahedi/i2c-lcd-stm32: i2c lcd STM32 library

i2c lcd STM32 library. Contribute to alixahedi/i2c-lcd-stm32 development by creating an account on GitHub.

github.com

이곳에서 제공해준 라이브러리를 사용한다.

 

I2C_HandleTypeDef hi2c1;
I2C_LCD_HandleTypeDef lcd1;

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_RTC_Init();
  MX_USART2_UART_Init();
  MX_I2C1_Init();
  /* USER CODE BEGIN 2 */
  char str1[20];
  int16_t count = 0;
  lcd1.hi2c = &hi2c1;
  lcd1.address = 0x4E;
  lcd_init(&lcd1);

  lcd_clear(&lcd1);
  lcd_puts(&lcd1, "STM32 I2C LCD");
  lcd_gotoxy(&lcd1, 0, 1);
  lcd_puts(&lcd1, "Library Demo");
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  lcd_clear(&lcd1);
	  lcd_puts(&lcd1, "STM32 I2C LCD");
	  lcd_gotoxy(&lcd1, 0, 1);
	  sprintf(str1, "count=%3d", count++);
	  lcd_puts(&lcd1, str1);
	  HAL_Delay(500);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

 

다른 플랫폼에서도 구동시켜보았는데 LCD가 불량인것같다. 그래도 자세히 보면 보이니 참고바란다.

https://youtu.be/LH4xN56aGUU

 

'STM32' 카테고리의 다른 글

STM32 익히기 1)  (0) 2024.12.02
RTC사용해보기  (0) 2024.11.26
STM32F407VE - 기초 7) Timer  (0) 2024.11.25
MCU Internal 온도 측정하기  (0) 2024.11.24
STM32F407VE - 기초 6) ADC-2  (0) 2024.11.24