Jhd2x16i2c Proteus Exclusive Page
JHD2X16I2C is a specific 16x2 LCD module with a built-in I2C serial interface, commonly used in Proteus for its simplified wiring compared to standard parallel LCDs. 1. Component Setup in Proteus
To simulate this module, you need to add the correct devices to your schematic: Pick the Device : Open the component picker (
) and search for "LCD1602" or "PCF8574". While some versions of Proteus include the JHD2X16I2C directly, you often need to pair a standard (16x2 LCD) with a I2C I/O expander to replicate its behavior.
: Place the microcontroller (e.g., Arduino Uno) and the LCD/I2C module onto your workspace. Arduino Forum 2. Wiring Connections jhd2x16i2c proteus exclusive
The I2C version significantly reduces pin usage to just four connections: : Connect the module’s power pin to a 5V source. GND to Ground : Connect to the common ground. SDA (Data) : Connect to the microcontroller's SDA pin (e.g., on Arduino Uno). SCL (Clock) : Connect to the microcontroller's SCL pin (e.g., on Arduino Uno). 3. Finding the I2C Address
A common issue in Proteus is using the wrong hex address in your code:
2. Menu System for Arduino/PIC
Program a rotary encoder to navigate a menu displayed on the JHD2x16i2c. Test button debouncing and screen refresh rates. Because the simulation is cycle-accurate, you can optimize your delay loops. JHD2X16I2C is a specific 16x2 LCD module with
2. How to Use jhd2x16i2c in Proteus
1. I2C Data Logger Simulator
Combine the JHD2x16i2c with a DS3231 RTC (real-time clock) and an EEPROM. Use the LCD to display real-time timestamp and last logged value. The exclusive simulation allows you to debug the multi-slave I2C bus without soldering.
Features
- Displays 2 rows × 16 characters.
- I2C interface via PCF8574-compatible I/O expander.
- Backlight control and adjustable contrast.
- Uses only two wires for data (SDA, SCL) plus power and ground.
- Compatible with standard HD44780 instruction set through the expander.
Step 3: Exclusive Arduino Code (Adjusted for Proteus)
Standard LiquidCrystal_I2C libraries often fail in Proteus. Use this modified initialization:
#include <Wire.h> #include <LiquidCrystal_I2C.h>// Address 0x27 or 0x3F (check your PCF8574) LiquidCrystal_I2C lcd(0x27, 16, 2); Displays 2 rows × 16 characters
void setup() Wire.begin(); // Exclusive Proteus delay sequence delay(100); lcd.init(); delay(100); lcd.backlight(); delay(50); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Proteus Exclusive"); lcd.setCursor(0, 1); lcd.print("I2C OK");
void loop() // Blink cursor as a heartbeat lcd.setCursor(15, 1); lcd.print(millis() / 1000 % 10); delay(500);
Why this works: The extra delay() calls force the Proteus I2C co-simulator to respect the LCD’s slow startup timing.
Step 1: Place Component
- Search for
jhd2x16i2cin the Pick Devices dialog. - Place it on the schematic.