Как подключить LСD дисплей на базе HD44780 к ATmega16 или его цифровой аналог LM016L 16×2 в Proteus
При работе с Arduino, Atmega, PIC или с другим микроконтроллером часто возникает необходимость вывести какие-либо текстовые данные на дисплей. С цифрами проще, можно использовать 7 сегментный индикатор, а для вывода текста необходимо использовать LCD-дисплеи (ЖКИ). В данной статьи мы рассмотрим подключение LCD-дисплея на базе контроллера HD44780 к ATmega16.
Для подключения LCD-дисплея на базе HD44780 к ATmega16 нам нужно использовать 12 выводов, можно и все 16, но не на всех контроллерах это удастся сделать, ибо физически невозможно, а программно — да:
- 1 — Vss, земля -> GND
- 2 — Vdd, питание -> +5 В
- 3 — Vo (Vee), управление контрастностью напряжением -> выход потенциометра
- 4 — RS, выбор регистра
- 5 — R/W, чтение/запись -> земля (режим записи)
- 6 — E, он же Enable, cтроб по спаду
- 7-10 — DB0-DB3, младшие биты 8-битного интерфейса; не подключены
- 11-14 — DB4-DB7, старшие биты интерфейса
- 15 — A, питание для подсветки -> +5 В
- 16 — K, земля для подсветки -> GND
Пример программы в Atmel Studio 7
LCD.h
#ifndef LCD_H_ #define LCD_H_ #define LCDDATAPORT PORTB // Порт и пины, #define LCDDATADDR DDRB // к которым подключены #define LCDDATAPIN PINB // сигналы D4-D7. #define LCD_D4 3 #define LCD_D5 4 #define LCD_D6 5 #define LCD_D7 6 #define LCDCONTROLPORT PORTB // Порт и пины, #define LCDCONTROLDDR DDRB // к которым подключены #define LCD_RS 0 // сигналы RS, RW и E. #define LCD_RW 1 #define LCD_E 2 #define LCD_STROBEDELAY_US 5 // Задержка строба #define LCD_COMMAND 0 #define LCD_DATA 1 #define LCD_CURSOR_OFF 0 #define LCD_CURSOR_ON 2 #define LCD_CURSOR_BLINK 3 #define LCD_DISPLAY_OFF 0 #define LCD_DISPLAY_ON 4 #define LCD_SCROLL_LEFT 0 #define LCD_SCROLL_RIGHT 4 #define LCD_STROBDOWN 0 #define LCD_STROBUP 1 #define DELAY 1 void lcdSendNibble(char byte, char state); char lcdGetNibble(char state); char lcdRawGetByte(char state); void lcdRawSendByte(char byte, char state); char lcdIsBusy(void); void lcdInit(void); void lcdSetCursor(char cursor); void lcdSetDisplay(char state); void lcdClear(void); void lcdGotoXY(char str, char col); void lcdDisplayScroll(char pos, char dir); void lcdPuts(char *str); void lcdPutsf(char *str); void lcdPutse(uint8_t *str); void lcdLoadCharacter(char code, char *pattern); void lcdLoadCharacterf(char code, char *pattern); void lcdLoadCharactere(char code, char *pattern); #endif /* LCD_H_ */
LCD.c
// Подключение LCD на базе HD44780 к ATmega16 (LM016L LCD 16x2)
// сайт http://micro-pi.ru
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include <avr/interrupt.h>
#include "LCD.h"
/*
Отправляет младшую половину байта byte в LCD. Если state == 0,
то передаётся как команда, если нет, то как данные.
*/
void lcdSendNibble(char byte, char state) {
// Пины управления - на выход
LCDCONTROLDDR |= 1<<LCD_RS | 1<<LCD_RW | 1<<LCD_E;
// Пины данных - на выход
LCDDATADDR |= 1<<LCD_D4 | 1<<LCD_D5 | 1<<LCD_D6 | 1<<LCD_D7;
// Режим записи, RW = 0
LCDCONTROLPORT &= ~(1<<LCD_RW);
// Устанавливаем 1 в RS
if (state) {
// если отдаём данные
LCDCONTROLPORT |= 1<<LCD_RS;
} else {
LCDCONTROLPORT &= ~(1<<LCD_RS);
}
// Взводим строб
LCDCONTROLPORT |= 1<<LCD_E;
// Обнуляем пины данных
LCDDATAPORT &= ~(1<<LCD_D4 | 1<<LCD_D5 | 1<<LCD_D6 | 1<<LCD_D7);
// Записываем младшую
if (byte & (1<<3)) {
// половину байта
LCDDATAPORT |= 1<<LCD_D7;
}
// byte в порт вывода данных
if (byte & (1<<2)) {
LCDDATAPORT |= 1<<LCD_D6;
}
if (byte & (1<<1)) {
LCDDATAPORT |= 1<<LCD_D5;
}
if (byte & (1<<0)) {
LCDDATAPORT |= 1<<LCD_D4;
}
// Пауза
_delay_us(LCD_STROBEDELAY_US);
// Опускаем строб. Полубайт ушёл
LCDCONTROLPORT &= ~(1<<LCD_E);
}
/*
Читает половину байта из LCD. Если state == 0, то читается команда,
если нет, то данные.
*/
char lcdGetNibble(char state) {
char temp = 0;
// Пины управления - на выход
LCDCONTROLDDR |= 1<<LCD_RS | 1<<LCD_RW | 1<<LCD_E;
// Режим чтения
LCDCONTROLPORT |= 1<<LCD_RW;
// Устанавливаем 1 в RS
if (state) {
// если получаем данные
LCDCONTROLPORT |=(1<<LCD_RS);
} else {
LCDCONTROLPORT &= ~(1<<LCD_RS);
}
// Взводим строб
LCDCONTROLPORT |= 1<<LCD_E;
// Пины данных - на вход
LCDDATADDR &= ~(1<<LCD_D4 | 1<<LCD_D5 | 1<<LCD_D6 | 1<<LCD_D7);
// с подтяжкой
LCDDATAPORT |= 1<<LCD_D4 | 1<<LCD_D5 | 1<<LCD_D6 | 1<<LCD_D7;
// Пауза
_delay_us(LCD_STROBEDELAY_US);
// Опускаем строб
LCDCONTROLPORT &= ~(1<<LCD_E);
// Читаем пины
if (LCDDATAPIN & (1<<LCD_D7)) {
// во временную переменную
temp |= 1<<3;
}
if (LCDDATAPIN & (1<<LCD_D6)) {
temp |= 1<<2;
}
if (LCDDATAPIN & (1<<LCD_D5)) {
temp |= 1<<1;
}
if (LCDDATAPIN & (1<<LCD_D4)) {
temp |= 1<<0;
}
// возвращаем прочитанное
return temp;
}
/*
Читает байт из LCD. Если state == 0, то читается команда,
если нет, то данные.
*/
char lcdRawGetByte(char state) {
char temp = 0;
temp |= lcdGetNibble(state);
temp = temp<<4;
temp |= lcdGetNibble(state);
return temp;
}
/*
Отравляет байт в LCD. Если state == 0, то передаётся как команда,
если нет, то как данные.
*/
void lcdRawSendByte(char byte, char state) {
lcdSendNibble((byte>>4), state);
lcdSendNibble(byte,state);
}
/*
Читает состояние LCD, возвращает 0xff, если флаг занятости установлен,
и 0x00, если нет.
*/
char lcdIsBusy(void) {
/* TODO
if (lcdRawGetByte(LCD_COMMAND) & (1<<7))
return 0xff;
else
return 0x00;
*/
_delay_ms(DELAY);
return 0x00;
}
/*
Выполняет начальную инициализацию дисплея. Четырёхбитный режим.
*/
void lcdInit(void) {
while (lcdIsBusy()) ;
lcdSendNibble(0b0010, LCD_COMMAND);
while (lcdIsBusy()) ;
lcdRawSendByte(0b00101000, LCD_COMMAND);
while (lcdIsBusy()) ;
lcdRawSendByte(0b00000001, LCD_COMMAND);
while (lcdIsBusy()) ;
lcdRawSendByte(0b00000110, LCD_COMMAND);
while (lcdIsBusy()) ;
lcdRawSendByte(0b00001100, LCD_COMMAND);
}
/*
Устанавливает режим курсора: 0 - выключен, 2 - включен, 3 - моргает.
Если на момент запуска LCD был выключен (lcdSetDisplay), то он будет включен.
*/
void lcdSetCursor(char cursor) {
while (lcdIsBusy());
lcdRawSendByte((0b00001100 | cursor), LCD_COMMAND);
}
/*
Включает или выключает отображение символов LCD.
При каждом вызове выключает курсор.
*/
void lcdSetDisplay(char state) {
while (lcdIsBusy());
lcdRawSendByte((0b00001000 | state), LCD_COMMAND);
}
/*
Очищает LCD.
*/
void lcdClear(void) {
while (lcdIsBusy()) ;
lcdRawSendByte(0b00000001, LCD_COMMAND);
}
/*
Устанавливает курсор в заданную позицию.
*/
void lcdGotoXY(char str, char col) {
while (lcdIsBusy());
lcdRawSendByte((0b10000000 | ((0x40 * str) + col)), LCD_COMMAND);
}
/*
Сдвигает область отображения на указанное количество символов
вправо или влево.
*/
void lcdDisplayScroll(char pos, char dir) {
while (pos){
while (lcdIsBusy()) ;
lcdRawSendByte((0b00011000 | dir), LCD_COMMAND);
pos--;
}
}
/*
Выводит строку из RAM в позицию курсора.
*/
void lcdPuts(char *str) {
while (*str){
while (lcdIsBusy()) ;
lcdRawSendByte(*str++, LCD_DATA);
}
}
/*
Выводит строку из flash в позицию курсора.
*/
void lcdPutsf(char *str) {
while (pgm_read_byte(str)){
while (lcdIsBusy()) ;
lcdRawSendByte(pgm_read_byte(str++), LCD_DATA);
}
}
/*
Выводит строку из eeprom в позицию курсора.
*/
void lcdPutse(uint8_t *str) {
while (eeprom_read_byte(str)){
while (lcdIsBusy()) ;
lcdRawSendByte((char)(eeprom_read_byte(str++)), LCD_DATA);
}
}
/*
Загружает символ в знакогенератор.
*/
void lcdLoadCharacter(char code, char *pattern) {
while (lcdIsBusy());
lcdRawSendByte((code<<3) | 0b01000000, LCD_COMMAND);
for (char i = 0; i <= 7; i++){
while (lcdIsBusy()) ;
lcdRawSendByte(*pattern++, LCD_DATA);
}
while (lcdIsBusy());
lcdRawSendByte(0b10000000, LCD_COMMAND);
}
/*
Загружает символ из flash в знакогенератор.
*/
void lcdLoadCharacterf(char code, char *pattern) {
while (lcdIsBusy());
lcdRawSendByte((code<<3) | 0b01000000, LCD_COMMAND);
for (char i = 0; i <= 7; i++){
while (lcdIsBusy());
lcdRawSendByte(pgm_read_byte(pattern++), LCD_DATA);
}
while (lcdIsBusy());
lcdRawSendByte(0b10000000, LCD_COMMAND);
}
/*
Загружает символ из eeprom в знакогенератор.
*/
void lcdLoadCharactere(char code, char *pattern) {
while (lcdIsBusy());
lcdRawSendByte((code<<3) | 0b01000000, LCD_COMMAND);
for (char i = 0; i <= 7; i++){
while (lcdIsBusy()) ;
lcdRawSendByte(eeprom_read_byte(pattern++), LCD_DATA);
}
while (lcdIsBusy()) ;
lcdRawSendByte(0b10000000, LCD_COMMAND);
}
main.c
// Подключение LCD на базе HD44780 к ATmega16 (LM016L LCD 16x2)
// сайт http://micro-pi.ru
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include "LCD.h"
int main(void) {
_delay_ms(100);
lcdInit();
lcdClear();
lcdSetDisplay(LCD_DISPLAY_ON);
lcdSetCursor(LCD_CURSOR_OFF);
char text[17];
strcpy(text, " Hello World! ");
lcdGotoXY(0, 0);
lcdPuts(text);
strcpy(text, "site:micro-pi.ru");
lcdGotoXY(1, 0);
lcdPuts(text);
while (1);
}
Схема подключения LCD на базе HD44780 к ATmega16 в ISIS 7 Professional — Proteus. Симуляция.
Вам также потребуется добавить резистор номиналом 100-150 Ом к 15-му контакту, чтобы индикатор подсветки не вышел из строя.
Скачать
проект в Atmel Studio 7 LCD 16×2 ATmega16.7z
проект в Proteus LCD 16×2 ATmega16.DSN.7z


В схеме нет токоограничивающего резистора подсветки (≈100 Ом). Без него подсветке индикатора быстро придёт конец.
Огромное спасибо за код lcd. Нужно было проверить дисплей и на атмеге8 запустился с 1го раза.
Аккуратный, понятный код. Всё сразу заработало как надо. Спасибо вам!
Спасибо большое из 2021, всё заработало тут же!
маркетплейс аккаунтов соцсетей продать аккаунт
заработок на аккаунтах магазин аккаунтов
купить аккаунт гарантия при продаже аккаунтов
Accounts market Buy and Sell Accounts
Purchase Ready-Made Accounts Accounts for Sale
Account Acquisition Account Acquisition
Account market Secure Account Purchasing Platform
Database of Accounts for Sale Accounts marketplace
accounts marketplace buy account
website for selling accounts find accounts for sale
website for selling accounts https://socialaccountsshop.com/
accounts market online account store
account trading service purchase ready-made accounts
website for buying accounts purchase ready-made accounts
account trading platform account exchange
sell account buy pre-made account
marketplace for ready-made accounts account catalog
gaming account marketplace account market
account acquisition database of accounts for sale
account acquisition profitable account sales
account store verified accounts for sale
account acquisition accounts market
secure account purchasing platform secure account purchasing platform
accounts for sale find accounts for sale
guaranteed accounts https://accounts-offer.org/
ready-made accounts for sale account market
account marketplace buy accounts
account market accounts market
online account store accounts-marketplace.art
account purchase https://accounts-marketplace-best.pro
купить аккаунт kupit-akkaunt.xyz
купить аккаунт https://rynok-akkauntov.top
продать аккаунт https://akkaunt-magazin.online
биржа аккаунтов маркетплейсов аккаунтов
биржа аккаунтов https://online-akkaunty-magazin.xyz/
маркетплейс аккаунтов kupit-akkaunt.online
buy facebook account https://buy-adsaccounts.work/
facebook accounts to buy https://buy-ad-account.top/
fb accounts for sale https://ad-account-buy.top
facebook ad accounts for sale https://buy-ad-account.click/
buy facebook ads manager https://ad-accounts-for-sale.work
adwords account for sale https://buy-ads-account.top
buy aged google ads account https://buy-ads-accounts.click
buy facebook profiles https://buy-accounts.click
google ads account buy https://ads-account-buy.work
google ads accounts https://ads-account-for-sale.top
google ads account for sale google ads accounts
google ads agency accounts https://buy-verified-ads-account.work
buy verified bm facebook https://buy-business-manager.org
buy verified business manager facebook facebook bm buy
buy facebook ads accounts and business managers https://buy-verified-business-manager.org/
buy facebook business account buy verified facebook
buy verified bm https://buy-business-manager-verified.org
unlimited bm facebook https://verified-business-manager-for-sale.org/
buy tiktok ads https://tiktok-agency-account-for-sale.org
tiktok ads account buy https://buy-tiktok-ads.org
buy facebook ads manager account purchase account marketplace
Taking too much Dianabol can result in severe health issues,
including liver injury, high blood pressure, and gynecomastia (enlarged breast tissue in men) amongst others.
Whether Or Not you’re utilizing it for muscle recovery or
to fill diet gaps, these good methods may help you get the most out of your protein powder.
Other easy post-workout combos embrace a whole-wheat English
muffin with avocado, or overnight oats with
cottage cheese, nuts, and fruit. These snacks ship protein, carbs, wholesome fat, and some minerals you might need misplaced throughout your workout.
Our purpose is to teach individuals about their effects, benefits, and the method to obtain a most wholesome lifestyle.
The objective is to create an anabolic surroundings throughout the body, thereby enabling athletes to target
specific muscle improvement and enhance their total bodily efficiency.
One of the important precautions when taking oral steroids is taking them on an empty stomach.
When you are taking oral steroids with meals, the meals will lower the steroid’s bioavailability.
The other basic trick is knowing the most
effective time to take your Metandienone steroids.
Ultimately, the most effective method is one which aligns with your particular person goals and health routine.
Many bodybuilders choose to separate their doses,
taking a portion pre-workout and the remainder post-workout, to maximise
the benefits all through the day. If you want more customized recommendation, think about consulting
with a healthcare professional or a health skilled.
For newbies, starting with a decrease dose, corresponding to
mg, is beneficial to assess tolerance.
While Dianabol is relatively secure when taken correctly, it isn’t suitable for everyone, and there could be potential unwanted effects.
A healthcare skilled might help determine if Dianabol is right for you and supply steerage on the correct dosage and cycle size.
In addition to this, the dosage and period of the Dbol cycle should be considered.
It is recommended to begin out with a low dosage and steadily improve it over
time. A typical Dbol cycle lasts for 6-8 weeks, after which a
break of no much less than 6 weeks is important to keep away from adverse results on the liver.
One Other approach is to separate the dose throughout the day, taking half in the
morning and half within the afternoon or night.
This method can help to maintain secure blood levels of Dbol, reducing the risk of side effects and providing a more consistent anabolic impact
throughout the day.
This strategy helps preserve steady blood levels of the steroid, minimizing potential unwanted effects and maximizing its anabolic advantages.
For customers who plan to train or practice, taking a dose minutes
before the workout may provide a noticeable increase in vitality
and performance. Selecting the proper time to take Dianabol is a important determination for anybody on a muscle-building journey.
Whereas it might possibly ship remarkable outcomes when used accurately,
it’s essential to bear in mind of the potential side effects and
seek the guidance of with a medical skilled. Keep In Mind that combining Dbol with a balanced food plan, train,
and responsible use may help you obtain your health goals
whereas minimizing dangers.
If you’re in search of a better, safer, and authorized various to dianabol before or after workout, DBal
is your best wager. Well, should you were to make use of correct nutrient timing for training, you would eat one hour earlier than training.
Most Oral steroids can do that, which is why orals are so powerful
at making you look huge and full. These side effects are more pronounced
the more of the Steroid you employ, the extra you employ it directly
(larger doses), and even how lengthy you’re taking it.
You must also start with a smaller dose and only increase if needed.
You ought to be looking in course of your overarching objective, which is hitting smaller targets.
A survey means that using testosterone supplements might make you are feeling more energized.
They can help you stop fatigue and cope with low testosterone
levels. Other analysis has discovered that immersing in cold water earlier
than exercising can activate the body’s fight-or-flight response, increasing
alertness and vitality. This could, in theory, help enhance
exercise performance by growing energy levels. «If you’re combining the 2 into one session, generally speaking, raise first and do cardio second», mentioned Enja Schenck, MS, CSCS.
She explained that aerobic conditioning before power
training has been shown to have a unfavorable influence on energy gains,
however not vice versa. It has a novel blend of ingredients that
not solely promotes muscle growth but in addition aids in recovery, allowing you to work out tougher and longer.
For males (and women) of any age, true low testosterone—called hypogonadism—is a legitimate medical condition. When ranges drop beneath regular, people would possibly experience
ongoing fatigue, decreased sex drive, loss of muscle mass, or temper modifications.
Nonetheless, these are additionally signs that may pop up when you’re dealing with stress, inadequate sleep,
and even dietary deficiencies. If you believe you studied a real hormonal
imbalance, the secret’s getting two morning blood exams (when T levels are usually highest) to confirm whether or not you’re
actually low.
If you are trying to enhance your athletic performance, focus on workout routines that can improve your energy and speed.
After eight weeks, you must take a break from using
Dianabol to permit your body to recover. When used as
a pre-workout supplement, Dianabol might help you take your exercises to the subsequent
degree. This is as a result of Dianabol might help to extend your strength and energy, permitting you to push
your self tougher throughout your workout. In this weblog submit, we are
going to focus on how Dianabol works for Pre-workout and the way you
can use it to get the most out of your exercises. Moreover,
for the latest scientific findings on steroid safety and efficiency
enhancement, visit this respected external link.
hgh online kaufen
References:
https://setiathome.berkeley.edu/show_user.php?userid=13273041
наркологическая частная клиника narkologicheskaya-klinika-23.ru .
гидроизоляция подвала цена гидроизоляция подвала цена .
клиника наркологическая платная https://narkologicheskaya-klinika-23.ru/ .
торкретирование бетона цена м2 http://www.torkretirovanie-1.ru/ .
xbet xbet .
автоматические гардины для штор http://elektrokarniz797.ru .
внутренняя гидроизоляция подвала внутренняя гидроизоляция подвала .
электронный карниз для штор электронный карниз для штор .
гидроизоляция подвала снаружи цена https://gidroizolyaciya-podvala-cena.ru/ .
торкретирование бетона цена торкретирование бетона цена .
наркологическая больница narkologicheskaya-klinika-23.ru .
гидроизоляция цена работы гидроизоляция цена работы .
торкретирование москва http://www.torkretirovanie-1.ru .
карниз с приводом https://elektrokarniz-kupit.ru/ .
карнизы для штор с электроприводом карнизы для штор с электроприводом .
рулонные жалюзи с электроприводом рулонные жалюзи с электроприводом .
one x bet one x bet .
заказать рулонные шторы в москве заказать рулонные шторы в москве .
рулонные шторы с электроприводом и дистанционным управлением rulonnye-shtory-s-elektroprivodom7.ru .
медтехника https://www.medicinskaya-tehnika.ru .
1xbet yeni giri? http://1xbet-giris-2.com/ .
1xbet resmi http://www.1xbet-giris-4.com .
медицинская техника медицинская техника .
1xbet mobi http://1xbet-giris-2.com/ .
электрические рулонные шторы электрические рулонные шторы .
one x bet one x bet .
1xbet giri? yapam?yorum http://www.1xbet-giris-2.com .
рольшторы заказать http://www.avtomaticheskie-rulonnye-shtory1.ru .
стоимость рулонных штор стоимость рулонных штор .
перепланировка нежилого помещения в нежилом здании перепланировка нежилого помещения в нежилом здании .
смартвэй официальный сайт смвэй http://www.sajt-smart-way.ru/ .
жалюзи с электроприводом купить жалюзи с электроприводом купить .
seo partner program http://www.optimizaciya-i-seo-prodvizhenie-sajtov-moskva.ru/ .
веб-аналитика блог http://www.statyi-o-marketinge7.ru .
продвижение сайтов топ агентство продвижение сайтов топ агентство .
согласовать перепланировку нежилого помещения pereplanirovka-nezhilogo-pomeshcheniya18.ru .
жалюзи с электроприводом купить жалюзи с электроприводом купить .
seo компания москва http://www.reiting-seo-kompanii.ru/ .
пошив футболок оптом http://www.arbuztech.ru .
сео продвижение сайтов топ 10 сео продвижение сайтов топ 10 .
поисковое seo в москве поисковое seo в москве .
заказать анализ сайта заказать анализ сайта .
как продвигать сайт статьи https://www.statyi-o-marketinge7.ru .
блог seo агентства http://www.statyi-o-marketinge6.ru .
рулонные жалюзи с электроприводом рулонные жалюзи с электроприводом .
net seo http://optimizaciya-i-seo-prodvizhenie-sajtov-moskva.ru/ .
материалы по маркетингу statyi-o-marketinge6.ru .
goliath casino mobile http://goliath-casino.com/ .
узаконить перепланировку квартиры стоимость узаконить перепланировку квартиры стоимость .
согласовать проект перепланировки http://soglasovanie-pereplanirovki-1.ru .
casino arica valor entrada casino arica valor entrada .
jompay99.com casino jp99-online.com .
перепланировка в нежилом помещении перепланировка в нежилом помещении .
icebet online casino icebet online casino .
seo firm ranking http://www.reiting-seo-kompanii.ru .
legitimate pharmacy shipping to USA: verified Canada drugstores — best online pharmacies Canada to USA
doctor recommended Mexican pharmacy: certified Mexican pharmacy discounts — doctor recommended Mexican pharmacy
заказать проект перепланировки квартиры в москве цена http://www.skolko-stoit-uzakonit-pereplanirovku-1.ru/ .
сколько стоит перепланировка в бти сколько стоит перепланировка в бти .
перепланировка узаконить цена москва http://www.skolko-stoit-uzakonit-pereplanirovku-1.ru .
doctor recommended Mexican pharmacy: DrMedsAdvisor — doctor recommended Mexican pharmacy
mexico pharmacy generic medicine from Mexico verified Mexican pharmacies USA delivery
canadian pharmacy online: trusted Canadian generics — best online pharmacies Canada to USA
ganabet entrar https://www.ganabet-online.com .
legitimate pharmacy shipping to USA verified Canada drugstores safe Canadian pharmacies for Americans
jp 99 slot login http://jp99-online.com/ .
aviator game at valor casino valorslots.com .
canadian pharmacy online: legitimate pharmacy shipping to USA — Doctor North Rx
перепланировка под ключ москва стоимость https://www.uzakonit-pereplanirovku-cena.ru .
surewin casino wallet http://www.surewin-online.com/ .
good day 4 play no deposit bonus code good day 4 play no deposit bonus code .
doctor recommended Mexican pharmacy: doctor recommended Mexican pharmacy — generic medicine from Mexico
узаконивание перепланировки квартиры в москве цена http://skolko-stoit-uzakonit-pereplanirovku.ru/ .
prednisone price prednisone in canada prednisone 21 pack
kena jp99 https://www.jp99-online.com .
стоимость согласования перепланировки стоимость согласования перепланировки .
valor casino official site valor casino official site .
https://indiavameds.xyz/# indian pharmacy
Ivermectin tablets for humans: Ivermectin tablets for humans — Stromecta Direct
newsky88 net newsky-online.com .
1 x bet https://www.1xbet-7.com .
buy prednisone: Prednexa Med — prednisone price
StromectaDirect: Ivermectin tablets for humans — Stromectol buy cheap
согласование проекта перепланировки квартиры согласование проекта перепланировки квартиры .
beep peep casino http://www.beepbeepcasino-online.com/ .
surewin casino review http://www.surewin-online.com .
Indiava Meds Indiava Meds IndiavaMeds
ganabet casino en linea https://ganabet-online.com/ .
IndiavaMeds: buy medicine — prescription medicine online
https://stromectadirect.com/# purchase stromectol online
pharmacy website: indian pharmacy — indian pharmacy
Stromectol tablets: StromectaDirect — Ivermectin tablets for humans
http://navikarapharmacy.com/# Amoxicillin 500mg buy online
jp99 alternatif http://www.jp99-online.com .
стоимость оформления перепланировки стоимость оформления перепланировки .
ivermectin covid trial Stromectol buy cheap Stromectol tablets
india pharmacy: buy drugs online — IndiavaMeds
good day 4 play promo codes no deposit http://goodday4play-online.com/ .
valor casino online valor casino online .
new sky88 slot newsky-online.com .
1xbet ?ye ol http://www.1xbet-7.com .
online medicine: IndiavaMeds — medicines from india to usa online
https://prednexamed.com/# PrednexaMed
beep beep casino bonus beepbeepcasino-online.com .
surewin casino login register https://surewin-online.com .
indian pharmacy: IndiavaMeds — india pharmacy
indian pharmacy Indiava Meds IndiavaMeds
Prednexa Med: prednisone price — buy prednisone
Navikara Pharmacy: amoxil online — amoxicillin online no prescription
PrednexaMed: prednisone price — PrednexaMed
Prednexa Med: PrednexaMed — Prednexa Med
Navikara Pharmacy generic amoxil cheap amoxil
best pharmacy buy Stromectol: Ivermectin tablets for humans — Stromectol over the counter
indian pharmacy: Indiava Meds — indian pharmacy
india pharmacy: Indiava Meds — drug store online
buy medicine online in india: indian pharmacy — online medicine
1xbet resmi sitesi 1xbet-14.com .
777 bet online 777 bet online .
goliath casino bewertung http://www.goliath-casino.com .
стеклянные перила для лестниц в частном доме https://telegra.ph/Steklyannye-perila-i-ograzhdeniya-kak-vybrat-kompaniyu-kotoraya-ne-sorvyot-sroki-10-21 .
безрамное раздвижное остекление террас http://www.telegra.ph/Prevratite-vashu-terrasu-v-lyubimuyu-komnatu-Polnoe-rukovodstvo-po-ostekleniyu-ot-SK-Grani-10-21/ .
icebet casino no deposit bonus code icebet casino no deposit bonus code .
prednisone 10 mg tablet buy prednisone prednisone price
перепланировка в москве перепланировка в москве .
домео дизайн москва домео дизайн москва .
indian pharmacy: online medicine — IndiavaMeds
https://prednexamed.xyz/# prednisone price
india pharmacy: Indiava Meds — online medicine
1xbet tr 1xbet tr .
seo курсы seo курсы .
medicines online india: buy medicines online — IndiavaMeds
заказ кухни спб https://www.kuhni-spb-11.ru .
изготовление кухни на заказ в спб изготовление кухни на заказ в спб .
устный переводчик teletype.in/@alexd78/D1bRUvZKB7G .
indian pharmacies: online medicine — india pharmacy
india pharmacy: online medicine — india pharmacy
1xbet spor bahislerinin adresi 1xbet spor bahislerinin adresi .
Indiava Meds Indiava Meds online medicine
goliathcasino goliath-casino.com .
ice bet slot ice bet slot .
устный перевод в москве teletype.in/@alexd78/D1bRUvZKB7G .
юридический перевод текстов юридический перевод текстов .
устный переводчик цена teletype.in/@alexd78/D1bRUvZKB7G .
seo с нуля http://kursy-seo-12.ru/ .
amoxil online: Navikara Pharmacy — Navikara Pharmacy
Navikara Pharmacy: buy amoxil — generic amoxil
StromectaDirect Stromectol tablets Stromectol tablets
aviator x http://aviator-game-best.com .
топ -10 бюро переводов в мск teletype.in/@alexd78/iF-xjHhC3iA .
400 mg prednisone: PrednexaMed — buy prednisone
синхронный перевод цена dzen.ru/a/aRDuRn3LkCngCegS .
cheap prednisone 20 mg: buy prednisone — Prednexa Med
buy prednisone Prednexa Med PrednexaMed
ТОП бюро переводов в Москве teletype.in/@alexd78/iF-xjHhC3iA .
http://prednexamed.com/# PrednexaMed
it переводчик в москве telegra.ph/Oshibka-lokalizacii-pochemu-vash-IT-produkt-ne-ponimayut-za-granicej-11-09 .
лучшие бюро переводов в Мск teletype.in/@alexd78/iF-xjHhC3iA .
buy amoxil: Amoxicillin 500mg buy online — Navikara Pharmacy
prednisone drug costs: prednisone price — how much is prednisone 10 mg
Navikara Pharmacy: amoxil online — amoxil online
http://stromectadirect.com/# Stromectol over the counter
best pharmacy buy Stromectol: buy ivermectin online — Stromectol over the counter
http://prednexamed.com/# prednisone without prescription
online medicine: india pharmacy — Indiava Meds
https://navikarapharmacy.xyz/# buy amoxil
Stromectol over the counter Stromectol tablets Stromecta Direct
prednisone 5 mg tablet without a prescription: prednisone price — Prednexa Med
??????? ??? aviator-game-deposit.com .
jahaj udane wala game https://aviator-game-predict.com .
гардина с электроприводом http://www.prokarniz36.ru .
http://indiavameds.com/# Indiava Meds
amoxil online: Navikara Pharmacy — generic amoxil
prednisone 500 mg tablet: PrednexaMed — PrednexaMed
Generic Cialis price: Cialis over the counter — Cialis 20mg price
автоматический карниз для штор https://elektrokarniz98.ru .
карнизы с электроприводом карнизы с электроприводом .
http://bluewavemeds.com/# BlueWaveMeds
EveraMeds Generic Cialis without a doctor prescription Generic Cialis without a doctor prescription
BlueWaveMeds: Blue Wave Meds — kamagra oral jelly
EveraMeds: EveraMeds — Buy Cialis online
https://aeromedsrx.xyz/# Buy Viagra online cheap
https://aeromedsrx.com/# Viagra Tablet price
AeroMedsRx: cheapest viagra — order viagra
order Kamagra discreetly: BlueWaveMeds — order Kamagra discreetly
Buy Tadalafil 10mg Buy Tadalafil 5mg EveraMeds
электрокарнизы купить в москве электрокарнизы купить в москве .
https://bluewavemeds.com/# Blue Wave Meds
online pharmacy for Kamagra: fast delivery Kamagra pills — BlueWaveMeds
http://bluewavemeds.com/# buy Kamagra online
Generic Viagra for sale: Viagra without a doctor prescription Canada — AeroMedsRx
http://bluewavemeds.com/# kamagra oral jelly
Buy Tadalafil 20mg: EveraMeds — Buy Cialis online
AeroMedsRx order viagra Viagra online price
https://bluewavemeds.com/# fast delivery Kamagra pills
Blue Wave Meds: kamagra — buy Kamagra online
http://aeromedsrx.com/# Viagra Tablet price
https://everameds.com/# Generic Tadalafil 20mg price
Cialis over the counter: Tadalafil price — EveraMeds
https://bluewavemeds.xyz/# kamagra oral jelly
trusted Kamagra supplier in the US: fast delivery Kamagra pills — online pharmacy for Kamagra
рулонные шторы с электроприводом на окна http://rulonnye-shtory-s-elektroprivodom499.ru/ .
trusted Kamagra supplier in the US: Blue Wave Meds — buy Kamagra online
trusted Kamagra supplier in the US order Kamagra discreetly online pharmacy for Kamagra
Cialis without a doctor prescription: EveraMeds — EveraMeds
Cialis without a doctor prescription: Generic Tadalafil 20mg price — Generic Cialis price
http://everameds.com/# EveraMeds
Viagra online price: AeroMedsRx — AeroMedsRx
EveraMeds: EveraMeds — cialis for sale
https://bluewavemeds.com/# BlueWaveMeds
over the counter sildenafil viagra without prescription AeroMedsRx
buy Kamagra online: BlueWaveMeds — Blue Wave Meds
http://everameds.com/# EveraMeds
автоматические рулонные шторы автоматические рулонные шторы .
over the counter sildenafil Viagra online price sildenafil online
EveraMeds: EveraMeds — EveraMeds
over the counter sildenafil viagra canada AeroMedsRx
AeroMedsRx: AeroMedsRx — AeroMedsRx
BlueWaveMeds buy Kamagra online order Kamagra discreetly
римские шторы с пультом управления prokarniz28.ru .
http://aeromedsrx.com/# best price for viagra 100mg
тканевые электрожалюзи http://www.prokarniz23.ru/ .
автоматическое открывание штор http://www.prokarniz23.ru/ .
trusted Kamagra supplier in the US: Blue Wave Meds — kamagra oral jelly
топ компаний по продвижению сайтов топ компаний по продвижению сайтов .
шторы на пульте управления шторы на пульте управления .
EveraMeds EveraMeds Tadalafil price
online pharmacy for Kamagra: BlueWaveMeds — buy Kamagra online
cheapest cialis EveraMeds Buy Tadalafil 10mg
AeroMedsRx: AeroMedsRx — AeroMedsRx
https://everameds.com/# п»їcialis generic
AeroMedsRx best price for viagra 100mg buy Viagra over the counter
https://everameds.xyz/# EveraMeds
kamagra: buy Kamagra online — online pharmacy for Kamagra
AeroMedsRx: Buy Viagra online cheap — Buy generic 100mg Viagra online
AeroMedsRx Sildenafil Citrate Tablets 100mg AeroMedsRx
AeroMedsRx: Buy Viagra online cheap — AeroMedsRx
kamagra oral jelly buy Kamagra online online pharmacy for Kamagra
AeroMedsRx: Viagra tablet online — AeroMedsRx
жалюзи для пластиковых окон с электроприводом http://prokarniz23.ru .
melbet бонус за регистрацию http://melbetbonusy.ru .
игровой слот dog house megaways melbet wwwpsy.ru .
мелбет сайт https://www.v-bux.ru .
https://everameds.com/# EveraMeds
fast delivery Kamagra pills buy Kamagra online buy Kamagra online
1xbet guncel 1xbet guncel .
one x bet http://www.1xbet-12.com .
http://bluewavemeds.com/# order Kamagra discreetly
Blue Wave Meds: online pharmacy for Kamagra — kamagra
Cheap Cialis Generic Tadalafil 20mg price EveraMeds
EveraMeds: Generic Tadalafil 20mg price — Buy Cialis online
https://bluewavemeds.xyz/# BlueWaveMeds
kamagra: trusted Kamagra supplier in the US — buy Kamagra online
https://aeromedsrx.xyz/# AeroMedsRx
Blue Wave Meds kamagra kamagra oral jelly
sildenafil over the counter: Generic Viagra for sale — sildenafil online
1xbet t?rkiye 1xbet t?rkiye .
918kiss app 918kiss app .
EveraMeds EveraMeds cheapest cialis
http://bluewavemeds.com/# fast delivery Kamagra pills
AeroMedsRx: AeroMedsRx — AeroMedsRx
п»їcialis generic EveraMeds EveraMeds
best price for viagra 100mg: AeroMedsRx — buy Viagra online
kamagra oral jelly kamagra BlueWaveMeds
https://everameds.xyz/# EveraMeds
1x lite 1x lite .
918kiss ori download 918kiss ori download .
AeroMedsRx: AeroMedsRx — AeroMedsRx
https://everameds.com/# cialis for sale
Cheap generic Viagra online Viagra online price AeroMedsRx
EveraMeds: EveraMeds — cialis for sale
https://aeromedsrx.xyz/# AeroMedsRx
order Kamagra discreetly trusted Kamagra supplier in the US BlueWaveMeds
cheapest online pharmacy india IsoIndiaPharm reputable indian pharmacies
IsoIndiaPharm: Iso Pharm — IsoIndiaPharm
canadian pharmacy 24 com https://isoindiapharm.xyz/# india online pharmacy
https://mhfapharm.com/# MhfaPharm
best canadian online pharmacy: MHFA Pharm — MHFA Pharm
https://isoindiapharm.com/# reputable indian online pharmacy
escrow pharmacy canada MhfaPharm MHFA Pharm
MhfaPharm: canadian online pharmacy — MhfaPharm
MhfaPharm: reliable canadian pharmacy reviews — canadian pharmacy com
online canadian pharmacy https://uvapharm.xyz/# mexican pharmacys
MHFA Pharm: MhfaPharm — MHFA Pharm
https://isoindiapharm.xyz/# IsoIndiaPharm
farmacia mexicana en chicago: mexican pharmacies near me — tijuana pharmacy online
http://isoindiapharm.com/# IsoIndiaPharm
mexico online pharmacy п»їmexican pharmacy Uva Pharm
IsoIndiaPharm: IsoIndiaPharm — Iso Pharm
http://mhfapharm.com/# best rated canadian pharmacy
best canadian online pharmacy http://isoindiapharm.com/# Iso Pharm
https://mhfapharm.com/# MhfaPharm
pharmacies in canada that ship to the us https://uvapharm.com/# farmacia mexicana en linea
заказ курсовых работ http://www.kupit-kursovuyu-4.ru/ .
где можно заказать курсовую работу где можно заказать курсовую работу .
купить курсовую работу купить курсовую работу .
заказать студенческую работу https://www.kupit-kursovuyu-4.ru .
заказ курсовых работ http://www.kupit-kursovuyu-1.ru .
заказать практическую работу недорого цены https://www.kupit-kursovuyu-6.ru .
MHFA Pharm MhfaPharm MhfaPharm
reliable canadian pharmacy http://mhfapharm.com/# MhfaPharm
написание курсовых работ на заказ цена kupit-kursovuyu-8.ru .
написать курсовую на заказ написать курсовую на заказ .
canadapharmacyonline com: MhfaPharm — MHFA Pharm
buy prescription drugs from canada cheap http://uvapharm.com/# UvaPharm
http://uvapharm.com/# mexico pharmacy list
UvaPharm: UvaPharm — UvaPharm
http://uvapharm.com/# UvaPharm
canadian king pharmacy https://isoindiapharm.xyz/# cheapest online pharmacy india
IsoIndiaPharm: IsoIndiaPharm — IsoIndiaPharm
canadian pharmacy near me legitimate canadian pharmacy MhfaPharm
https://uvapharm.xyz/# Uva Pharm
canadian pharmacy sarasota https://mhfapharm.xyz/# canadian pharmacy mall
http://uvapharm.com/# Uva Pharm
canadian online drugs https://mhfapharm.xyz/# MHFA Pharm
https://isoindiapharm.com/# IsoIndiaPharm
legit canadian pharmacy: MhfaPharm — MhfaPharm
MHFA Pharm MhfaPharm canadian pharmacy near me
кухни под заказ спб https://kuhni-spb-9.ru/ .
https://isoindiapharm.com/# IsoIndiaPharm
safe canadian pharmacy https://uvapharm.xyz/# UvaPharm
mexico online pharmacy Uva Pharm UvaPharm
кухни на заказ в санкт-петербурге http://www.kuhni-spb-9.ru/ .
canadian pharmacy oxycodone https://uvapharm.com/# Uva Pharm
canadian drugs: pharmacy wholesalers canada — MHFA Pharm
кухни на заказ санкт петербург кухни на заказ санкт петербург .
изготовление кухни на заказ в спб https://www.kuhni-spb-11.ru .
кухни на заказ в санкт-петербурге http://www.kuhni-spb-9.ru/ .
battery aviator game apk battery aviator game apk .
aviator bonus game aviator-game-winner.com .
legitimate canadian pharmacy online: MHFA Pharm — MhfaPharm
online mexico pharmacy Uva Pharm Uva Pharm
http://isoindiapharm.com/# indian pharmacy
UclaMetformin: Ucla Metformin — metformin average cost
cheap propecia without rx: BswFinasteride — BswFinasteride
BSW Finasteride BSW Finasteride order generic propecia for sale
battery aviator game apk battery aviator game apk .
online pharmacy india http://uclametformin.com/# metformin 100 mg
aviator bonus game http://aviator-game-winner.com .
BSW Finasteride: BSW Finasteride — buying generic propecia without insurance
ivermectin 250ml PMA Ivermectin PMA Ivermectin
PmaIvermectin: PMA Ivermectin — ivermectin for sarcoptic mange
aviator money http://www.aviator-game-best.com .
Ucla Metformin UclaMetformin UclaMetformin
aviator bonus game http://www.aviator-game-winner.com .
играть в слоты wwwpsy.ru .
контора мелбет https://www.v-bux.ru .
лучшие компании по ремонту квартир в москве лучшие компании по ремонту квартир в москве .
электрокранизы http://elektrokarnizmsk.ru .
карнизы для штор купить в москве карнизы для штор купить в москве .
melbet casino bonus melbetbonusy.ru .
india pharmacy https://bswfinasteride.xyz/# BSW Finasteride
indian pharmacy https://uclametformin.com/# Ucla Metformin
фирмы по ремонту квартир в москве фирмы по ремонту квартир в москве .
высококачественный ремонт квартир в москве высококачественный ремонт квартир в москве .
лучшая компания по ремонту квартир лучшая компания по ремонту квартир .
aviator x https://aviator-game-best.com/ .
электрокарниз двухрядный http://elektrokarnizmsk.ru .
компании по ремонту квартир в москве компании по ремонту квартир в москве .
мелбет https://www.v-bux.ru .
india pharmacy https://pmaivermectin.com/# PMA Ivermectin
Ucla Metformin: UclaMetformin — UclaMetformin