Interface Guide: Controlling LCD1602 Character Displays on 8051 Microcontrollers

The LCD1602 is a character-oriented liquid crystal display capable of rendering two lines of 16 alphanumeric symbols per line. Its internal architecture divides each character cell into 5x7 or 5x10 vertical dot grids. Due to rigid spatial spacing and the absence of pixel-level control, complex graphical rendering is unsupported. Direct communic ...

Posted on Fri, 11 Sep 2026 16:05:09 +0000 by mbaroz

Understanding STM32 Reset and Clock Configuration with RCC

Reset Mechanisms STM32 microcontrollers support three primary reset categories: system reset, power-on reset, and backup domain reset. System reset encompasses five different reset sources, with the NRST pin reset being the most commonly used method in minimum system designs. This hardware reset triggers when the NRST pin is pulled low, resetti ...

Posted on Wed, 09 Sep 2026 16:43:48 +0000 by Boerboel649

Controlling GPIO Inputs and Outputs in Zynq-7000 Linux Kernel Modules

Kernel Space GPIO ManipulationFor the FMQL45T900 platform based on the Zynq-7000 architecture, controlling pins from the kernel space requires determining the correct GPIO index. When utilizing EMIO5 exported from Vivado, the corresponding system GPIO number calculates to 431. The device tree mapping for this pin appears as <&portc 5 0x0 ...

Posted on Wed, 09 Sep 2026 16:05:36 +0000 by Bike Racer

Designing an ECG Acquisition System with STM32

System Overview An ECG acquisision system captures human electrocardiogram (ECG) signals through electrode arrays. The signals undergo signal conditioning (amplification and filtering) before being processed by an STM32 microcontroller for analog-to-digital conversion (ADC), digital filtering, and feature extraction (e.g., heart rate, QRS compl ...

Posted on Fri, 04 Sep 2026 16:23:27 +0000 by beselabios

Implementing a Temporary Key-Value Cache in LVGL-C

LVGL is developed in C, which is a powerful language but often requires custom implementations of complex data structures for real-world projects. LVGL follows an object-oriented programming design approach. Based on this concept, we can design a Map-like data structuer similar to Java to cache temporary data, facilitating UI data binding in co ...

Posted on Wed, 02 Sep 2026 16:06:28 +0000 by chapm4

Implementing Analog Data Acquisition with PCF8591 and 8051 Microcontroller

Hardware Interface and FunctionalityThe PCF8591 is an 8-bit CMOS data acquisition device that integrates four analog inputs, one analog output, and an I2C serial interface. It is widely used in embedded systems for processing analog signals such as light intensity and temperature. In this configuration, an STC90C51 microcontroller serves as the ...

Posted on Tue, 25 Aug 2026 16:18:19 +0000 by Talon

Implementing Singly Linked List CRUD Operations in C

Node Structure Definition A singly linked list is constructed as a sequence of nodes, where each node contains a data field and a pointer to the subsequent node. The following structure defines a node with an integer identifier and a text label. typedef struct ListNode { int id; char description[32]; struct ListNode* next; } ListNod ...

Posted on Sun, 23 Aug 2026 16:41:43 +0000 by kampbell411

Analog-to-Digital Conversion with STM32 Microcontrollers

Understanding ADC in Embedded Systems Analog-to-Digital Converters (ADCs) serve as a critical interface between analog signals and digital systems. In STM32 microcontrollers like the STM32F103C8T6, the ADC module provides precise conversion of analog voltages into digital values, enabling digital processing of real-world signals. 12-bit succes ...

Posted on Sun, 23 Aug 2026 16:09:41 +0000 by mwichmann4

Implementing Custom Boot Menus in U-Boot for Allwinner T527

Experimental Environment Hardware: Forlinx OK-T527 Development Board Software: Allwinner Longan SDK (U-Boot version 2018) U-Boot Initialization Flow To understand how to inject a custom menu, we must first examine the entry point for U-Boot's main logic. The core execution loop is defined in /common/main.c, specifically within the main_loop() ...

Posted on Sat, 22 Aug 2026 16:21:37 +0000 by ottoman_

Configuring GPIO Interrupt Input in Linux for Zynq-7000 and FMQL45T900 Platforms

The example presented here demonstrates how to configure an interrupt-based GPIO enput within the Linux kernel driver for FMQL45T900, which shares similarities with Zynq-7000 platforms. To begin, determine the correct GPIO number corresponding to the physical pin. For instance, EMIO5 maps to GPIO number 431 on the FMQL45T900 platform. In Vivado ...

Posted on Thu, 13 Aug 2026 16:38:18 +0000 by mkohan