This repository contains the source code for the LCD Digital Clock development project. Visit the "LCD Digital Clock" section on my website for more details: https://jackklee.com/portfolio/lcd-digital-clock.
- Designed the system architecture and developed all software layers (hardware abstraction, BSP, application) to implement an LCD digital clock, which displays time and date information in real‐time
- Used STM32CubeIDE for software development and debugging, and a logic analyzer for testing
Demonstration video: https://youtu.be/3YQeoxAJBNw
- Operating system: Ubuntu 22.04 LTS
- Integrated Development Environment (IDE): STM32 CubeIDE Version 1.10.1
- Application layer implements the logic to read the current time and data information from the RTC module and display it on the LCD using the APIs provided by the underlying software layers.
- BSP layer provides the Application layer with APIs to control the Tiny RTC (DS1307) Module and the 16x2 Character LCD (HD44780U).
- Hardware abstraction layer provides the BSP layer with APIs to control the MCU peripherals such as GPIO, I2C, and USART.
- Hardware abstraction layer
- Device header: stm32f407xx.h
- GPIO driver: stm32f407xx_gpio_driver.h, stm32f407xx_gpio_driver.c
- SPI driver: stm32f407xx_spi_driver.h, stm32f407xx_spi_driver.c
- I2C driver: stm32f407xx_i2c_driver.h, stm32f407xx_i2c_driver.c
- USART driver: stm32f407xx_usart_driver.h, stm32f407xx_usart_driver.c
- BSP layer
- RTC: rtc_ds1307.h, rtc_ds1307.c
- LCD: lcd_hd44780u.h, lcd_hd44780u.c
- Application layer
- LCD digital clock: lcd_digital_clock.c