Как подключить 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