Jhd-2x16-i2c Proteus May 2026

The JHD-2x16-I2C is a 16-character by 2-line alphanumeric LCD module equipped with a PCF8574 I2C backpack. This backpack converts the standard 16-pin parallel interface of the HD44780 controller into a simple two-wire I2C interface (SDA, SCL), significantly reducing the number of GPIO pins required from a microcontroller.

In the Proteus Design Suite, there is no direct component labeled strictly "JHD-2x16-I2C". Instead, simulation is achieved by combining a standard LM016L (or similar HD44780-compatible 16x2 LCD) with a PCF8574 I/O expander. This paper provides a comprehensive guide to simulating this setup.

| Problem | Likely Cause | Solution | | :--- | :--- | :--- | | LCD shows dark blocks (row of squares) | Contrast wrong, or LCD not initialized | Adjust pot; ensure lcd.init() and lcd.backlight() called | | No display, backlight only | Missing I2C communication | Check SDA/SCL pull-ups; verify address (0x20 vs 0x27) | | Garbage characters | RW pin floating or wrong 4-bit initialization | Tie RW to GND; use lcd.init() not lcd.begin() | | Proteus I2C debugger shows NACK | Wrong address or PCF8574 not powered | Set address exactly as A0-A2; check VDD | | "I2C Slave not responding" | Pull-ups missing | Add 4.7k resistors on SDA/SCL | jhd-2x16-i2c proteus

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Initialize LCD with address 0x27, 16 columns, 2 rows LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() Wire.begin(); // Initialize I2C bus lcd.init(); // Initialize LCD lcd.backlight(); // Turn on backlight The JHD-2x16-I2C is a 16-character by 2-line alphanumeric

lcd.setCursor(0, 0); lcd.print("Proteus I2C LCD"); lcd.setCursor(0, 1); lcd.print("Hello World!");

void loop() // Scroll the second line lcd.setCursor(0, 1); lcd.print("Counter: "); lcd.print(millis() / 1000); delay(500); void loop() // Scroll the second line lcd

Scroll al inicio