Информации о том, что из себя представляет LCD на базе HD44780, в интернете очень много. Даже на этом сайте две статьи на эту тему (первая и вторая). Однако в этой статье речь пойдет не о нём, а о библиотеках Pi4J, что позволяют работать с данным дисплеем из Java.
Pi4J предоставляет 3 библиотеки для этих целей:
com.pi4j.wiringpi.Lcd— это библиотека, позволяющая получать доступ к жидкокристаллическим дисплеям с параллельным интерфейсом через GPIO пины. Все методы этого класса нативные, так как вызываются функции wiringPi напрямую. Грубо говоря — это библиотекаlcd.h, но только на Java.com.pi4j.component.lcd.impl.GpioLcdDisplay— это ООП версияcom.pi4j.wiringpi.Lcd, что удобнее использовать. Для записи данных на дисплей используются функцииcom.pi4j.wiringpi.Lcd.com.pi4j.component.lcd.impl.I2CLcdDisplay— это библиотека для работы с жидкокристаллическими дисплеями через I2C (IIC/TWI), а именно — адаптер на чипе PCF8574. В таком случае для управления дисплеем будет использоваться всего 2 провода вместо 6 или 10.
Pi4J предоставляет возможность работы с LCD из Java на Raspberry Pi, Banana Pi, Orange Pi, Nano Pi и Odroid. Все классы и интерфейсы находятся в пакетах com.pi4j.component.lcd.*; com.pi4j.wiringpi.*; и com.pi4j.gpio.extension.pcf.*.
Ниже представлены описания интерфейсов/классов и примеры программ.
Класс Lcd
Как я уже писал выше, эта библиотека аналогична «wiringPi». Ниже вы найдёте пример программы, которая показывает, как использовать эту библиотеку для отображения строк на ЖК-дисплее.
Все нативные методы класса Lcd:
public static native int lcdInit(int rows, int cols, int bits, int rs, int strb, int d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7); public static native void lcdHome(int handle); public static native void lcdClear(int handle); public static native void lcdDisplay(int handle, int state); public static native void lcdCursor(int handle, int state); public static native void lcdCursorBlink(int handle, int state); public static native void lcdPosition(int handle, int x, int y); public static native void lcdCharDef(int handle, int index, byte data[]); public static native void lcdPutchar(int handle, byte data); public static native void lcdPuts(int handle, String data);
Описание этих функций вы найдёте здесь.
Схема подключения LCD в 4-битном режиме
Пример программы в 4-битном режиме
Прежде всего, мы должны выбрать платформу, иначе программа будет работать с ошибками или вообще не будет работать. В моем случае это Orange Pi PC.
PlatformManager.setPlatform(Platform.ORANGEPI);
Затем нам нужно инициализировать контроллер GPIO для работы с ним. Если он не может быть инициализирован, будет сгенерировано исключение.
if (Gpio.wiringPiSetup() != 0) {
throw new Exception("An error has occurred and the initialization of the GPIO has failed");
}
После этого мы можем инициализировать экземпляр ЖК-дисплея.
int lcdHandle = Lcd.lcdInit(
LCD_ROWS, /* количество строк */
LCD_COLUMNS, /* количество символов */
LCD_BITS, /* количество бит, используемых для связи с ЖК-дисплеем */
LCD_RS, /* LCD бит RS */
LCD_E, /* LCD бит Enable */
LCD_D4, /* LCD бит данных 4 */
LCD_D5, /* LCD бит данных 5 */
LCD_D6, /* LCD бит данных 6 */
LCD_D7, /* LCD бит данных 7 */
0, 0, 0, 0);
Метод lcdInit генерирует идентификатор lcdHandle, который будет использоваться для связи именно с этим ЖК-дисплеем.
import com.pi4j.platform.Platform;
import com.pi4j.platform.PlatformManager;
import com.pi4j.wiringpi.Gpio;
import com.pi4j.wiringpi.Lcd;
public class WiringPiLcd4Bit {
public final static int LCD_ROWS = 2;
public final static int LCD_ROW_1 = 0;
public final static int LCD_ROW_2 = 1;
public final static int LCD_COLUMNS = 16;
public final static int LCD_BITS = 4;
public final static int LCD_RS = 4; /* RS - Выбор регистра */
public final static int LCD_E = 5; /* E - Еnable (строб по спаду) */
public final static int LCD_D4 = 21; /* D4 - бит данных */
public final static int LCD_D5 = 22; /* D5 - бит данных */
public final static int LCD_D6 = 23; /* D6 - бит данных */
public final static int LCD_D7 = 24; /* D7 - бит данных */
public static void main(String[] args) throws Exception {
PlatformManager.setPlatform(Platform.ORANGEPI);
if (Gpio.wiringPiSetup() != 0) {
throw new Exception("An error has occurred and the initialization of the GPIO has failed");
}
int lcdHandle = Lcd.lcdInit(
LCD_ROWS, /* количество строк */
LCD_COLUMNS, /* количество символов */
LCD_BITS, /* количество бит, используемых для связи с ЖК-дисплеем */
LCD_RS, /* LCD бит RS */
LCD_E, /* LCD бит Enable */
LCD_D4, /* LCD бит данных 4 */
LCD_D5, /* LCD бит данных 5 */
LCD_D6, /* LCD бит данных 6 */
LCD_D7, /* LCD бит данных 7 */
0, 0, 0, 0);
/* проверяет инициализацию LCD */
if (lcdHandle == -1) {
throw new Exception("LCD INIT FAILED");
}
Lcd.lcdClear(lcdHandle);
Lcd.lcdPosition(lcdHandle, 0, LCD_ROW_1);
Lcd.lcdPuts(lcdHandle, "site:micro-pi.ru");
Lcd.lcdPosition(lcdHandle, 0, LCD_ROW_2);
Lcd.lcdPuts(lcdHandle, "Hello, world!");
}
}
Проверяем код:
- создаём java файл и вставляем код;
nano WiringPiLcd4Bit.java
- компилируем файл;
javac -classpath .:classes:/opt/pi4j/lib/'*' WiringPiLcd4Bit.java
- запускаем программу.
sudo java -classpath .:classes:/opt/pi4j/lib/'*' WiringPiLcd4Bit
Интерфейс LCD
Интерфейс LCD содержит методы для передачи строк и символов на ЖК-дисплей. Интерфейс реализован в двух классах GpioLcdDisplay и I2CLcdDisplay, первый работает с GPIO, а второй работает с I2C контроллером PCF8574.
getRowCount() и getColumnCount()
Методы возвращают число строк и символов соответственно.
int getRowCount(); int getColumnCount();
clear()
Метод void clear() возвращает курсор в начало экрана, заодно стирая всё, что было на дисплее до этого. Метод void clear(int row) стирает один ряд, а void clear(int row, int column, int length) — только нужную часть текста.
void clear(); void clear(int row); void clear(int row, int column, int length);
setCursorHome() и setCursorPosition()
Метод setCursorHome() устанавливает курсор в исходное положение; setCursorPosition() устанавливает положение курсора для последующего ввода текста.
void setCursorHome(); void setCursorPosition(int row); void setCursorPosition(int row, int column);
write(…)
Записывает строку данных на ЖК-дисплей.
void write(String data); void write(String data, Object...arguments); void write(char[] data); void write(byte[] data); void write(char data); void write(byte data);
write(int, …)
Печатает нужную строку на указанный ряд.
void write(int row, String data, LCDTextAlignment alignment); void write(int row, String data, LCDTextAlignment alignment, Object...arguments); void write(int row, String data); void write(int row, String data, Object...arguments); void write(int row, char[] data); void write(int row, byte[] data); void write(int row, char data); void write(int row, byte data);
write(int, int, …)
Печатает нужную строку, начиная с указанной позиции.
void write(int row, int column, String data); void write(int row, int column, String data, Object...arguments); void write(int row, int column, char[] data); void write(int row, int column, byte[] data); void write(int row, int column, char data); void write(int row, int column, byte data);
writeln(int, …)
Метод печатает текст на жидкокристаллическом индикаторе на указанный ряд, после переводит курсор в начало следующего.
void writeln(int row, String data); void writeln(int row, String data, Object...arguments); void writeln(int row, String data, LCDTextAlignment alignment); void writeln(int row, String data, LCDTextAlignment alignment, Object...arguments);
Перечисление LCDTextAlignment
Это перечисление используется с методами отображения текста на ЖК-дисплее (write и writeln) для выравнивания текста.
ALIGN_CENTER— используется для размещения текста в середине экрана;ALIGN_LEFT— для размещения текста слева от экрана;ALIGN_RIGHT— для размещения текста справа.
Класс GpioLcdDisplay
Класс GpioLcdDisplay реализует интерфейс LCD для работы с дисплеем через GPIO. Конструктор класса используется для инициализации ЖК-дисплея 8-битном или 4-битном режиме:
public GpioLcdDisplay(int rows, int columns, Pin rsPin, Pin strobePin, Pin... dataPins)
Параметры:
int rows — количество строк;
int columns — количество символов;
Pin rsPin — пин выбора регистра;
Pin strobePin — пин строба;
Pin... dataPins — пины данных;
Схема подключения LCD в 8-битном режиме
Пример инициализации в 8-битном режиме
import com.pi4j.component.lcd.impl.GpioLcdDisplay;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.OrangePiPin;
import com.pi4j.platform.Platform;
import com.pi4j.platform.PlatformManager;
public class GpioLcd8Bit {
public final static int LCD_ROWS = 2;
public final static int LCD_ROW_1 = 0;
public final static int LCD_ROW_2 = 1;
public final static int LCD_COLUMNS = 16;
public final static int LCD_BITS = 4;
public static void main(String[] args) throws Exception {
PlatformManager.setPlatform(Platform.ORANGEPI);
GpioController gpio = GpioFactory.getInstance();
GpioLcdDisplay lcd = new GpioLcdDisplay(
LCD_ROWS, /* число строк */
LCD_COLUMNS, /* число символов */
OrangePiPin.GPIO_07, /* LCD бит RS */
OrangePiPin.GPIO_01, /* LCD бит Еnable */
OrangePiPin.GPIO_04, /* LCD бит данных 0 */
OrangePiPin.GPIO_05, /* LCD бит данных 1 */
OrangePiPin.GPIO_11, /* LCD бит данных 2 */
OrangePiPin.GPIO_21, /* LCD бит данных 3 */
OrangePiPin.GPIO_22, /* LCD бит данных 4 */
OrangePiPin.GPIO_23, /* LCD бит данных 5 */
OrangePiPin.GPIO_24, /* LCD бит данных 6 */
OrangePiPin.GPIO_25); /* LCD бит данных 7 */
lcd.clear();
Thread.sleep(1000);
lcd.write(LCD_ROW_1, "The Pi4J Project");
lcd.write(LCD_ROW_2, "site:micro-pi.ru");
gpio.shutdown();
}
}
Схема подключения LCD в 4-битном режиме
Пример инициализации в 4-битном режиме
import com.pi4j.component.lcd.impl.GpioLcdDisplay;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.OrangePiPin;
import com.pi4j.platform.Platform;
import com.pi4j.platform.PlatformManager;
public class GpioLcd4Bit {
public final static int LCD_ROWS = 2;
public final static int LCD_ROW_1 = 0;
public final static int LCD_ROW_2 = 1;
public final static int LCD_COLUMNS = 16;
public final static int LCD_BITS = 4;
public static void main(String[] args) throws Exception {
PlatformManager.setPlatform(Platform.ORANGEPI);
GpioController gpio = GpioFactory.getInstance();
GpioLcdDisplay lcd = new GpioLcdDisplay(
LCD_ROWS, /* число строк */
LCD_COLUMNS, /* число символов */
OrangePiPin.GPIO_04, /* LCD бит RS */
OrangePiPin.GPIO_05, /* LCD бит Еnable */
OrangePiPin.GPIO_21, /* LCD бит данных 4 */
OrangePiPin.GPIO_22, /* LCD бит данных 5 */
OrangePiPin.GPIO_23, /* LCD бит данных 6 */
OrangePiPin.GPIO_24); /* LCD бит данных 7 */
lcd.clear();
Thread.sleep(1000);
lcd.write(LCD_ROW_1, "The Pi4J Project");
lcd.write(LCD_ROW_2, "site:micro-pi.ru");
gpio.shutdown();
}
}
Класс I2CLcdDisplay
Класс I2CLcdDisplay — это второй класс, который реализует интерфейс LCD.java для передачи данных на ЖК-дисплей через протокол I2C. В этих случаях используются адаптеры на основе чипов PCF8574. В моем случае — это адаптер FC-113 на базе FCF8574AT, что имеет диапазон адресов от 38h до 3Fh.
Этот класс содержит дополнительные методы для включения и выключения подсветки ЖК-дисплея.
Схема подключения

Если хотите подключить LCD к 5В, тогда необходимо использовать I2C преобразователя логических уровней 5-3.3В по линиям SDA и SCL.

| Orange Pi | Преобразователь | PCF8574 | |
|---|---|---|---|
| LV/3.3В | HV/5.0В | ||
| 5В | — | HV | VCC |
| 3.3В | LV | — | — |
| GND | GND | GND | GND |
| SDA.0 | LV2 | HV2 | SDA |
| SCL.0 | LV1 | HV1 | SCL |
Пример программы
Эта программа инициализируется для работы с Orange Pi;
PlatformManager.setPlatform(Platform.ORANGEPI);
создает экземпляр класса I2CLcdDisplay. Стоит заметить, что бывают разные адаптеры на базе FCF8574AT и распиновка тоже разная;
I2CLcdDisplay lcd = new I2CLcdDisplay(
LCD_ROWS, /* число строк */
LCD_COLUMNS, /* число символов */
I2CBus.BUS_0, /* I2C шина */
PCF8574GpioProvider.PCF8574A_0x3F, /* I2C адрес */
PCF8574Pin.GPIO_03.getAddress(), /* LCD бит подсветки */
PCF8574Pin.GPIO_00.getAddress(), /* LCD бит RS */
PCF8574Pin.GPIO_01.getAddress(), /* LCD бит RW */
PCF8574Pin.GPIO_02.getAddress(), /* LCD бит Еnable */
PCF8574Pin.GPIO_07.getAddress(), /* LCD бит данных 7 */
PCF8574Pin.GPIO_06.getAddress(), /* LCD бит данных 6 */
PCF8574Pin.GPIO_05.getAddress(), /* LCD бит данных 5 */
PCF8574Pin.GPIO_04.getAddress()); /* LCD бит данных 4 */
записывает строку на ЖК-дисплей на первый ряд по центру;
lcd.write(LCD_ROW_1, "micro-pi.ru", LCDTextAlignment.ALIGN_CENTER);
выключает и включает подсветку;
lcd.setBacklight(false, true); lcd.setBacklight(true, true);
и выводит текущее время;
while (true) {
/* записывает строку на ЖК-дисплей: второй ряд по центру */
lcd.writeln(LCD_ROW_2, formatter.format(new Date()), LCDTextAlignment.ALIGN_CENTER);
Thread.sleep(1000);
}
Полный код программы:
import java.text.SimpleDateFormat;
import java.util.Date;
import com.pi4j.component.lcd.LCDTextAlignment;
import com.pi4j.component.lcd.impl.I2CLcdDisplay;
import com.pi4j.gpio.extension.pcf.PCF8574GpioProvider;
import com.pi4j.gpio.extension.pcf.PCF8574Pin;
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.platform.Platform;
import com.pi4j.platform.PlatformManager;
public class I2cLcdPCF8574AT {
public final static int LCD_ROWS = 2;
public final static int LCD_ROW_1 = 0;
public final static int LCD_ROW_2 = 1;
public final static int LCD_COLUMNS = 16;
public static void main(String[] args) throws Exception {
PlatformManager.setPlatform(Platform.ORANGEPI);
I2CLcdDisplay lcd = new I2CLcdDisplay(
LCD_ROWS, /* число строк */
LCD_COLUMNS, /* число символов */
I2CBus.BUS_0, /* I2C шина */
PCF8574GpioProvider.PCF8574A_0x3F, /* I2C адрес */
PCF8574Pin.GPIO_03.getAddress(), /* LCD бит подсветки */
PCF8574Pin.GPIO_00.getAddress(), /* LCD бит RS */
PCF8574Pin.GPIO_01.getAddress(), /* LCD бит RW */
PCF8574Pin.GPIO_02.getAddress(), /* LCD бит Еnable */
PCF8574Pin.GPIO_07.getAddress(), /* LCD бит данных 7 */
PCF8574Pin.GPIO_06.getAddress(), /* LCD бит данных 6 */
PCF8574Pin.GPIO_05.getAddress(), /* LCD бит данных 5 */
PCF8574Pin.GPIO_04.getAddress()); /* LCD бит данных 4 */
/* очищает LCD */
lcd.clear();
Thread.sleep(1000);
/* записывает строку на ЖК-дисплей: первый ряд по центру */
lcd.write(LCD_ROW_1, "micro-pi.ru", LCDTextAlignment.ALIGN_CENTER);
Thread.sleep(1000);
/* выключает подсветку */
lcd.setBacklight(false, true);
Thread.sleep(1000);
/* включает подсветку */
lcd.setBacklight(true, true);
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
/* обновляет текущее время каждую секунду */
while (true) {
/* записывает строку на ЖК-дисплей: второй ряд по центру */
lcd.writeln(LCD_ROW_2, formatter.format(new Date()), LCDTextAlignment.ALIGN_CENTER);
Thread.sleep(1000);
}
}
}
Проверяем код:
- создаём java файл и вставляем код;
nano I2cLcdPCF8574AT.java
- компилируем файл;
javac -classpath .:classes:/opt/pi4j/lib/'*' I2cLcdPCF8574AT.java
- запускаем программу.
sudo java -classpath .:classes:/opt/pi4j/lib/'*' I2cLcdPCF8574AT
Результат
Если у Вас будут вопросы — можете задать их в комментариях.
Материалы
LCD Library (HD44780U)
PCF8574_PCF8574A.pdf
Sainsmart 16×2 I2C lcd


По поводу подключения LCD по i2c. У вас подключение к плате без преобразования уровней. Разве GPIO Orange PI толерантны к 5В ой логике?
заработок на аккаунтах профиль с подписчиками
купить аккаунт с прокачкой маркетплейс аккаунтов
маркетплейс аккаунтов соцсетей безопасная сделка аккаунтов
аккаунты с балансом купить аккаунт
Account Buying Service Social media account marketplace
Profitable Account Sales Secure Account Purchasing Platform
Account Purchase Account Catalog
Account Catalog Account Exchange Service
Account Purchase Database of Accounts for Sale
secure account purchasing platform buy account
account sale account trading
marketplace for ready-made accounts ready-made accounts for sale
accounts marketplace guaranteed accounts
sell pre-made account account market
accounts for sale account exchange service
account selling platform find accounts for sale
account exchange service account trading platform
account buying platform account market
account sale buy accounts
account buying platform account exchange
account acquisition account acquisition
account exchange account exchange
account buying platform account market
verified accounts for sale account sale
account market website for buying accounts
find accounts for sale secure account purchasing platform
social media account marketplace account market
account selling platform account sale
purchase ready-made accounts https://accounts-offer.org/
account selling service https://accounts-marketplace.xyz/
secure account purchasing platform https://accounts-marketplace.live/
accounts market https://social-accounts-marketplace.xyz/
buy pre-made account https://buy-accounts.space
secure account purchasing platform https://buy-accounts-shop.pro
sell pre-made account https://accounts-marketplace.art
account market https://social-accounts-marketplace.live
маркетплейс аккаунтов соцсетей https://rynok-akkauntov.top
продать аккаунт https://akkaunt-magazin.online/
купить аккаунт https://akkaunty-optom.live/
маркетплейс аккаунтов https://online-akkaunty-magazin.xyz/
маркетплейс аккаунтов соцсетей kupit-akkaunt.online
buy facebook ad account https://buy-adsaccounts.work/
buy fb account https://buy-ad-accounts.click
facebook ad accounts for sale https://ad-account-buy.top
facebook ad accounts for sale https://buy-ads-account.work
buy facebook ad account buy facebook ads manager
buy fb ads account buy fb ad account
buy adwords account buy google agency account
buy google ads verified account https://ads-account-buy.work/
buy google ad threshold account https://buy-ads-invoice-account.top
buy google ads threshold account https://buy-account-ads.work
buy google ad account https://buy-ads-agency-account.top
buy google ads threshold account https://sell-ads-account.click
verified bm for sale https://buy-business-manager.org
google ads account for sale https://ads-agency-account-buy.click
verified bm for sale buy bm facebook
facebook verified business manager for sale https://buy-verified-business-manager.org/
verified bm facebook business manager account buy
facebook bm account buy https://verified-business-manager-for-sale.org
tiktok ads agency account https://tiktok-ads-account-buy.org
tiktok agency account for sale https://tiktok-ads-account-for-sale.org
buy tiktok ads accounts https://tiktok-agency-account-for-sale.org
tiktok ad accounts https://buy-tiktok-ad-account.org
tiktok agency account for sale https://buy-tiktok-ads-accounts.org
buy tiktok ads accounts https://buy-tiktok-business-account.org
tiktok ads agency account https://buy-tiktok-ads.org
buy facebook accounts find accounts for sale online account store
facebook ad accounts for sale buy pre-made account account trading
A Med Spa in Little Elm offers a sanctuary for rejuvenation and relaxation, blending medical expertise with spa luxury. Specializing in facial services, it provides a range of treatments tailored to individual skincare needs. Among them, the deep cleansing facial stands out as a transformative experience, targeting impurities and revitalizing the skin’s natural radiance. With the latest techniques and premium products, it ensures the best facial treatment in Little Elm, leaving clients feeling refreshed, renewed, and glowing with confidence.
ankara emek çilingir https://ankaracilingirim.com/emek-cilingir-anahtarci-0541-579-57-70/
how to get medicines online [url=https://drindiameds.xyz/#]online medicine india[/url] india pharmacy
verified Mexican pharmacies USA delivery: doctor recommended Mexican pharmacy — mexico pharmacy
Mexico to USA pharmacy shipping [url=https://drmedsadvisor.xyz/#]mexican pharmacy[/url] mexican pharmacy
Indian pharmacy coupon codes: no prescription pharmacy India — safe Indian generics for US patients
generic medicine from Mexico: Dr Meds Advisor — trusted Mexican drugstores online
Indian pharmacy coupon codes [url=https://drindiameds.xyz/#]safe Indian generics for US patients[/url] trusted medical sources from India
india pharmacy [url=http://drindiameds.com/#]safe Indian generics for US patients[/url] how to get medicines online
Dr India Meds: indian pharmacy — no prescription pharmacy India
safe Canadian pharmacies for Americans: safe Canadian pharmacies for Americans — trusted Canadian generics
cheap amoxil: cheap amoxil — Amoxicillin 500mg buy online
Navikara Pharmacy: generic amoxil — Navikara Pharmacy
Ivermectin tablets for humans: Stromecta Direct — StromectaDirect
IndiavaMeds: indian pharmacy — IndiavaMeds
Ivermectin tablets for humans [url=http://stromectadirect.com/#]best pharmacy buy Stromectol[/url] cost of ivermectin medicine
Prednexa Med: buy prednisone — buy prednisone
Amoxicillin 500mg buy online: buy amoxil — buy amoxil
buy amoxil: Navikara Pharmacy — Navikara Pharmacy
http://navikarapharmacy.com/# Navikara Pharmacy
https://stromectadirect.xyz/# Ivermectin tablets for humans
india pharmacy: online medicine india — IndiavaMeds
amoxicillin 500 mg capsule: amoxil online — generic amoxil
indian pharmacy: indian pharmacy — Indiava Meds
buy prednisone: Prednexa Med — buy generic prednisone online
Ivermectin tablets for humans: buy ivermectin online — Stromecta Direct
https://navikarapharmacy.com/# cheap amoxil
http://navikarapharmacy.com/# Amoxicillin 500mg buy online
prednisone price: PrednexaMed — prednisone price
indian pharmacy [url=http://indiavameds.com/#]online medicine[/url] online medicine
https://stromectadirect.com/# how to buy ivermectin
Navikara Pharmacy: buy amoxil — amoxil online
indian pharmacy: online medicine sites in india — online medicine
https://indiavameds.xyz/# IndiavaMeds
IndiavaMeds: online medicine — indian pharmacy
Indiava Meds: Indiava Meds — india pharmacy
PrednexaMed: buy prednisone — buy prednisone
indian pharmacy [url=https://indiavameds.com/#]indian pharmacy[/url] india pharmacy
https://prednexamed.xyz/# buy prednisone
https://stromectadirect.com/# Stromectol buy cheap
buy ivermectin online: best pharmacy buy Stromectol — dosage of ivermectin for dogs
https://indiavameds.xyz/# online medicine
india pharmacy: IndiavaMeds — online medicine
Prednexa Med: prednisone prescription drug — Prednexa Med
prednisone 5mg price: 50 mg prednisone from canada — prednisone 5mg coupon
indian pharmacies: indian pharmacy — IndiavaMeds
https://prednexamed.xyz/# prednisone price
https://prednexamed.com/# prednisone price
https://navikarapharmacy.xyz/# buy amoxil
http://bluewavemeds.com/# fast delivery Kamagra pills
Tadalafil price: EveraMeds — EveraMeds
EveraMeds: buy cialis pill — Buy Tadalafil 5mg
kamagra oral jelly: kamagra — kamagra oral jelly
Cialis 20mg price [url=https://everameds.com/#]EveraMeds[/url] Generic Cialis price
https://aeromedsrx.com/# Cheap Sildenafil 100mg
http://aeromedsrx.com/# AeroMedsRx
https://everameds.xyz/# Buy Tadalafil 20mg
buy cialis pill: EveraMeds — Generic Cialis without a doctor prescription
AeroMedsRx [url=http://aeromedsrx.com/#]Sildenafil 100mg price[/url] AeroMedsRx
https://aeromedsrx.xyz/# AeroMedsRx
https://bluewavemeds.com/# kamagra
http://everameds.com/# Buy Cialis online
https://aeromedsrx.com/# Viagra generic over the counter
cialis for sale: EveraMeds — EveraMeds
https://everameds.xyz/# Cialis without a doctor prescription
https://bluewavemeds.xyz/# Blue Wave Meds
https://bluewavemeds.com/# Blue Wave Meds
EveraMeds: cialis generic — EveraMeds
https://aeromedsrx.com/# AeroMedsRx
http://bluewavemeds.com/# trusted Kamagra supplier in the US
https://aeromedsrx.xyz/# buy Viagra over the counter
http://bluewavemeds.com/# Blue Wave Meds
Cialis without a doctor prescription: Cheap Cialis — Buy Tadalafil 5mg
cialis for sale [url=https://everameds.xyz/#]EveraMeds[/url] EveraMeds
Generic Tadalafil 20mg price: EveraMeds — cialis generic
trusted Kamagra supplier in the US [url=https://bluewavemeds.xyz/#]online pharmacy for Kamagra[/url] buy Kamagra online
Tadalafil price: Buy Tadalafil 20mg — Buy Tadalafil 5mg
cialis for sale: Buy Tadalafil 5mg — cheapest cialis
Cialis without a doctor prescription [url=http://everameds.com/#]Generic Cialis without a doctor prescription[/url] Tadalafil Tablet
https://bluewavemeds.xyz/# kamagra oral jelly
Generic Tadalafil 20mg price: Generic Cialis price — cheapest cialis
http://bluewavemeds.com/# order Kamagra discreetly
AeroMedsRx: cheap viagra — Viagra Tablet price
Generic Cialis price: EveraMeds — EveraMeds
trusted Kamagra supplier in the US: fast delivery Kamagra pills — order Kamagra discreetly
https://aeromedsrx.com/# Buy Viagra online cheap
https://everameds.xyz/# EveraMeds
AeroMedsRx [url=https://aeromedsrx.xyz/#]AeroMedsRx[/url] cheap viagra
EveraMeds: Buy Tadalafil 20mg — cheapest cialis
cialis for sale: Cialis 20mg price — Generic Tadalafil 20mg price
https://bluewavemeds.com/# BlueWaveMeds
cialis generic: cialis generic — Generic Cialis price
http://aeromedsrx.com/# Viagra Tablet price
EveraMeds: EveraMeds — Cialis 20mg price in USA
online pharmacy for Kamagra: online pharmacy for Kamagra — trusted Kamagra supplier in the US
https://bluewavemeds.com/# fast delivery Kamagra pills
Cialis without a doctor prescription: cialis generic — EveraMeds
https://aeromedsrx.com/# AeroMedsRx
AeroMedsRx: over the counter sildenafil — sildenafil over the counter
http://aeromedsrx.com/# AeroMedsRx
kamagra [url=https://bluewavemeds.com/#]kamagra[/url] buy Kamagra online
AeroMedsRx [url=https://aeromedsrx.xyz/#]Sildenafil 100mg price[/url] AeroMedsRx
buy cialis pill: EveraMeds — EveraMeds
http://bluewavemeds.com/# buy Kamagra online
Blue Wave Meds: fast delivery Kamagra pills — trusted Kamagra supplier in the US
Cialis 20mg price: EveraMeds — Buy Tadalafil 5mg
online pharmacy for Kamagra [url=https://bluewavemeds.com/#]Blue Wave Meds[/url] Blue Wave Meds
kamagra oral jelly: kamagra — kamagra oral jelly
http://bluewavemeds.com/# trusted Kamagra supplier in the US
best price for viagra 100mg [url=https://aeromedsrx.xyz/#]Viagra online price[/url] Cheap generic Viagra
https://everameds.xyz/# Buy Tadalafil 5mg
Cialis 20mg price in USA: EveraMeds — EveraMeds
Blue Wave Meds: order Kamagra discreetly — trusted Kamagra supplier in the US
Cialis over the counter: EveraMeds — Buy Tadalafil 10mg
https://everameds.com/# EveraMeds
EveraMeds: cialis generic — EveraMeds
https://everameds.xyz/# EveraMeds
Sildenafil Citrate Tablets 100mg [url=http://aeromedsrx.com/#]buy viagra here[/url] AeroMedsRx
AeroMedsRx: AeroMedsRx — AeroMedsRx
buy Kamagra online: kamagra — kamagra oral jelly
https://aeromedsrx.com/# cheapest viagra
Blue Wave Meds [url=https://bluewavemeds.com/#]buy Kamagra online[/url] kamagra oral jelly
trusted Kamagra supplier in the US [url=https://bluewavemeds.xyz/#]buy Kamagra online[/url] BlueWaveMeds
http://everameds.com/# EveraMeds
https://isoindiapharm.com/# IsoIndiaPharm
escrow pharmacy canada https://isoindiapharm.xyz/# IsoIndiaPharm
canadian pharmacy review: MhfaPharm — MHFA Pharm
http://mhfapharm.com/# MhfaPharm
UvaPharm: purple pharmacy — UvaPharm
MhfaPharm: MhfaPharm — safe online pharmacies in canada
canadian pharmacy checker https://mhfapharm.xyz/# MHFA Pharm
canadian pharmacy sarasota [url=https://mhfapharm.xyz/#]MHFA Pharm[/url] MHFA Pharm
https://uvapharm.com/# mexican pharmacys
online pharmacy canada https://mhfapharm.com/# MHFA Pharm
MhfaPharm: canada drugs reviews — MHFA Pharm
Uva Pharm: UvaPharm — mexico drug store
UvaPharm: UvaPharm — UvaPharm
canadapharmacyonline https://isoindiapharm.xyz/# IsoIndiaPharm
MHFA Pharm: canadian pharmacy — MHFA Pharm
thecanadianpharmacy https://isoindiapharm.xyz/# online pharmacy india
canadianpharmacy com https://uvapharm.com/# Uva Pharm
MhfaPharm: MhfaPharm — ed meds online canada
Uva Pharm: UvaPharm — Uva Pharm
online canadian drugstore https://isoindiapharm.com/# Iso Pharm
http://isoindiapharm.com/# Iso Pharm
https://mhfapharm.xyz/# MHFA Pharm
canadian pharmacies that deliver to the us https://mhfapharm.xyz/# MhfaPharm
Iso Pharm: indian pharmacy paypal — buy prescription drugs from india
UvaPharm: buying prescriptions in mexico — farmacias mexicanas
best rated canadian pharmacy https://uvapharm.com/# Uva Pharm
https://isoindiapharm.xyz/# Iso Pharm
canadian pharmacy prices http://mhfapharm.com/# MhfaPharm
IsoIndiaPharm: п»їlegitimate online pharmacies india — top 10 pharmacies in india
top online pharmacy india: reputable indian pharmacies — indian pharmacy paypal
canadian pharmacy victoza https://mhfapharm.com/# MHFA Pharm
medication canadian pharmacy https://isoindiapharm.xyz/# IsoIndiaPharm
https://uvapharm.com/# Uva Pharm
https://mhfapharm.com/# MHFA Pharm
indianpharmacy com https://uclametformin.xyz/# where to buy metformin tablets
PmaIvermectin: ivermectin tablet 1mg — ivermectin 3 mg para que sirve
buy prescription drugs from india https://bswfinasteride.com/# BswFinasteride
PMA Ivermectin: PmaIvermectin — PMA Ivermectin
metformin 50 mg [url=http://uclametformin.com/#]metformin australia[/url] Ucla Metformin
online pharmacy india https://pmaivermectin.com/# PmaIvermectin
ivermectin poisoning: PmaIvermectin — ivermectin pour on for cattle label
Ucla Metformin: metformin buy online usa — Ucla Metformin
UclaMetformin: UclaMetformin — UclaMetformin
indian pharmacies safe http://socalabortionpill.com/# SocalAbortionPill
buy cheap propecia prices: BSW Finasteride — BswFinasteride
buy abortion pills: cytotec buy online usa — Socal Abortion Pill
indian pharmacy online http://socalabortionpill.com/# SocalAbortionPill
Online medicine order https://uclametformin.com/# 143 metformin
134 metformin 500 mg: UclaMetformin — metformin online uk
PMA Ivermectin: PmaIvermectin — PMA Ivermectin
PMA Ivermectin [url=http://pmaivermectin.com/#]PMA Ivermectin[/url] what is ivermectin
indian pharmacy https://uclametformin.xyz/# metformin for sale no prescription
order cheap propecia prices [url=http://bswfinasteride.com/#]BSW Finasteride[/url] BswFinasteride
Online medicine order https://socalabortionpill.com/# buy misoprostol over the counter
indian pharmacy online https://pmaivermectin.com/# use of ivermectin
SocalAbortionPill: buy abortion pills — Socal Abortion Pill
non prescription medicine pharmacy https://muscpharm.com/# MuscPharm
https://muscpharm.com/# Musc Pharm
MuscPharm [url=https://muscpharm.com/#]Musc Pharm[/url] online canadian pharcharmy
https://dmucialis.com/# Dmu Cialis
canada online pharmacies https://neokamagra.com/# Neo Kamagra
canada pharmacies without script https://muscpharm.com/# Musc Pharm
Cialis 20mg price: cialis for sale — DmuCialis
MuscPharm [url=https://muscpharm.xyz/#]Musc Pharm[/url] buy canadian drugs online
https://neokamagra.xyz/# Kamagra 100mg price
canadian pharmacy 24hr https://neokamagra.com/# NeoKamagra
https://muscpharm.com/# MuscPharm
Musc Pharm [url=https://muscpharm.xyz/#]MuscPharm[/url] MuscPharm
Generic Tadalafil 20mg price: Generic Cialis without a doctor prescription — DmuCialis
DmuCialis [url=https://dmucialis.xyz/#]Dmu Cialis[/url] Tadalafil Tablet
discount prescriptions https://dmucialis.com/# DmuCialis
DmuCialis: Generic Tadalafil 20mg price — Generic Cialis without a doctor prescription
https://neokamagra.com/# NeoKamagra
Musc Pharm [url=https://muscpharm.com/#]MuscPharm[/url] MuscPharm
Neo Kamagra [url=http://neokamagra.com/#]Neo Kamagra[/url] Neo Kamagra
family pharmacy online: canadian overnight pharmacy — safe canadian pharmacy
DmuCialis [url=https://dmucialis.com/#]DmuCialis[/url] Buy Tadalafil 20mg
Kamagra 100mg price [url=https://neokamagra.com/#]NeoKamagra[/url] Kamagra 100mg price
sildenafil oral jelly 100mg kamagra: NeoKamagra — Neo Kamagra
http://neokamagra.com/# sildenafil oral jelly 100mg kamagra
my canadian pharmacy rx reviews [url=https://muscpharm.com/#]Musc Pharm[/url] MuscPharm
Generic Cialis price: Dmu Cialis — Dmu Cialis
pharmacy review: cheap prescriptions — MuscPharm
24 hour pharmacy [url=https://muscpharm.xyz/#]Musc Pharm[/url] Musc Pharm
http://neokamagra.com/# Neo Kamagra
canadian pharmacy presription and meds http://neokamagra.com/# cheap kamagra