Как подключить 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 .
jp 99 slot login http://jp99-online.com/ .
aviator game at valor casino valorslots.com .
перепланировка под ключ москва стоимость 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 .
kena jp99 https://www.jp99-online.com .
стоимость согласования перепланировки стоимость согласования перепланировки .
valor casino official site valor casino official site .
1 x bet https://www.1xbet-7.com .
согласование проекта перепланировки квартиры согласование проекта перепланировки квартиры .
surewin casino review http://www.surewin-online.com .
jp99 alternatif http://www.jp99-online.com .
стоимость оформления перепланировки стоимость оформления перепланировки .
good day 4 play promo codes no deposit http://goodday4play-online.com/ .
valor casino online valor casino online .
1xbet ?ye ol http://www.1xbet-7.com .
surewin casino login register https://surewin-online.com .
1xbet resmi sitesi 1xbet-14.com .
777 bet online 777 bet online .
goliath casino bewertung http://www.goliath-casino.com .
безрамное раздвижное остекление террас 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 .
1xbet tr 1xbet tr .
seo курсы seo курсы .
изготовление кухни на заказ в спб изготовление кухни на заказ в спб .
1xbet spor bahislerinin adresi 1xbet spor bahislerinin adresi .
goliathcasino goliath-casino.com .
ice bet slot ice bet slot .
юридический перевод текстов юридический перевод текстов .
seo с нуля http://kursy-seo-12.ru/ .
топ -10 бюро переводов в мск teletype.in/@alexd78/iF-xjHhC3iA .
синхронный перевод цена dzen.ru/a/aRDuRn3LkCngCegS .
ТОП бюро переводов в Москве teletype.in/@alexd78/iF-xjHhC3iA .
it переводчик в москве telegra.ph/Oshibka-lokalizacii-pochemu-vash-IT-produkt-ne-ponimayut-za-granicej-11-09 .
лучшие бюро переводов в Мск teletype.in/@alexd78/iF-xjHhC3iA .
??????? ??? aviator-game-deposit.com .
jahaj udane wala game https://aviator-game-predict.com .
гардина с электроприводом http://www.prokarniz36.ru .
карнизы с электроприводом карнизы с электроприводом .
электрокарнизы купить в москве электрокарнизы купить в москве .
рулонные шторы с электроприводом на окна http://rulonnye-shtory-s-elektroprivodom499.ru/ .
автоматические рулонные шторы автоматические рулонные шторы .
римские шторы с пультом управления prokarniz28.ru .
тканевые электрожалюзи http://www.prokarniz23.ru/ .
автоматическое открывание штор http://www.prokarniz23.ru/ .
топ компаний по продвижению сайтов топ компаний по продвижению сайтов .
жалюзи для пластиковых окон с электроприводом http://prokarniz23.ru .
melbet бонус за регистрацию http://melbetbonusy.ru .
мелбет сайт https://www.v-bux.ru .
1xbet t?rkiye 1xbet t?rkiye .
918kiss app 918kiss app .
1x lite 1x lite .
918kiss ori download 918kiss ori download .
заказ курсовых работ http://www.kupit-kursovuyu-4.ru/ .
где можно заказать курсовую работу где можно заказать курсовую работу .
заказ курсовых работ http://www.kupit-kursovuyu-1.ru .
написание курсовых работ на заказ цена kupit-kursovuyu-8.ru .
написать курсовую на заказ написать курсовую на заказ .
кухни под заказ спб https://kuhni-spb-9.ru/ .
кухни на заказ в санкт-петербурге http://www.kuhni-spb-9.ru/ .
кухни на заказ в санкт-петербурге http://www.kuhni-spb-9.ru/ .
aviator bonus game aviator-game-winner.com .
aviator bonus game http://aviator-game-winner.com .
aviator money http://www.aviator-game-best.com .
aviator bonus game http://www.aviator-game-winner.com .
играть в слоты wwwpsy.ru .
контора мелбет https://www.v-bux.ru .
лучшие компании по ремонту квартир в москве лучшие компании по ремонту квартир в москве .
фирмы по ремонту квартир в москве фирмы по ремонту квартир в москве .
высококачественный ремонт квартир в москве высококачественный ремонт квартир в москве .
aviator x https://aviator-game-best.com/ .
компании по ремонту квартир в москве компании по ремонту квартир в москве .
мелбет https://www.v-bux.ru .
фирмы по ремонту квартиры rejting-remontnyh-kompanij-moskvy.com .
inverter game https://aviator-game-predict.com/ .
рулонные шторы виды механизмов https://www.avtomaticheskie-rulonnye-shtory11.ru .
слоты на деньги https://www.wwwpsy.ru .
aviator x http://www.aviator-game-best.com/ .
премиум ремонт квартир москва https://luchshie-remontnye-kompanii-moskvy.com/ .
букмекер мелбет https://www.v-bux.ru .
электрические рулонные жалюзи http://avtomaticheskie-rulonnye-shtory11.ru .
какие бывают рулонные шторы avtomaticheskie-rulonnye-shtory11.ru .
meta trader 5 download metatrader-5-sync.com .
жалюзи для пластиковых окон с электроприводом http://www.elektricheskie-zhalyuzi5.ru .
forex metatrader 5 http://www.metatrader-5-pc.com/ .
metatrader 5 download mac metatrader 5 download mac .
срок проведения экспертизы залива http://www.ekspertiza-zaliva-kvartiry-3.ru/ .
metatrader 5 http://www.metatrader-5-downloads.com .
download metatrader 5 metatrader-5-sync.com .
forex metatrader 5 metatrader-5-platform.com .
возмещение ущерба после залива возмещение ущерба после залива .
download mt5 for mac metatrader-5-downloads.com .
metatrader 5 mac metatrader-5-sync.com .
mt5 mt5 .
download metatrader 5 download metatrader 5 .
metatrader5 metatrader5 .
meta trader 5 download https://metatrader-5-platform.com/ .
оценка мебели после залива оценка мебели после залива .
metatrader5 download http://www.metatrader-5-downloads.com .
mt5 trading platform mt5 trading platform .
акт о заливе квартиры акт о заливе квартиры .
mt5 mac download https://www.metatrader-5-platform.com .
mt5 download mac https://metatrader-5-downloads.com .
рулонные шторы с электроприводом на окна http://www.avtomaticheskie-rulonnye-shtory11.ru/ .
mt5 mt5 .
документы для оценки ущерба после залива документы для оценки ущерба после залива .
купить рулонные шторы москва купить рулонные шторы москва .
mt5 trading platform mt5 trading platform .
электрокарнизы для штор купить в москве elektrokarnizmoskva.ru .
Плиты Армстронг http://www.potolok-armstrong1.ru/ .
курсовая работа купить москва kupit-kursovuyu-1.ru .
заказать курсовую заказать курсовую .
оценка ущерба после затопления оценка ущерба после затопления .
купить филлеры москва купить филлеры москва .
курсовая работа недорого курсовая работа недорого .
покупка курсовых работ http://www.kupit-kursovuyu-1.ru .
топ агентств seo продвижения http://www.reiting-seo-kompanii.ru .
курсовые под заказ курсовые под заказ .
купить курсовую http://kupit-kursovuyu-1.ru .
куплю курсовую работу куплю курсовую работу .
seo оптимизация агентство http://www.reiting-seo-kompanii.ru .
курсовой проект цена http://kupit-kursovuyu-8.ru/ .
наркологические клиники в москве наркологические клиники в москве .
написать курсовую на заказ написать курсовую на заказ .
наркологические услуги http://www.narkologicheskaya-klinika-35.ru/ .
рейтинг seo студий http://reiting-seo-kompanii.ru .
бамбуковые электрожалюзи http://www.elektricheskie-zhalyuzi5.ru .
написать курсовую на заказ написать курсовую на заказ .
рейтинг сео компаний рейтинг сео компаний .
тканевые электрожалюзи https://elektricheskie-zhalyuzi5.ru/ .
сколько стоит сделать курсовую работу на заказ сколько стоит сделать курсовую работу на заказ .
seo продвижение рейтинг seo продвижение рейтинг .
написать курсовую на заказ написать курсовую на заказ .
Потолочные плиты Армстронг https://www.potolok-armstrong1.ru .
электрокарнизы цена электрокарнизы цена .
электрический карниз для штор купить elektrokarniz1.ru .
гардина с электроприводом http://prokarniz36.ru .
лучшие seo агентства лучшие seo агентства .
стоимость экспертизы залива стоимость экспертизы залива .
купить филлеры оптом купить филлеры оптом .
электрокарнизы для штор цена https://www.prokarniz36.ru .
Подвесной потолок Армстронг http://www.potolok-armstrong1.ru .
электрокарнизы купить в москве http://www.elektrokarniz1.ru .
карниз для штор с электроприводом prokarniz36.ru .
наркология москва наркология москва .
оценка ущерба от залива квартиры оценка ущерба от залива квартиры .
купить филлеры москва купить филлеры москва .
наркологическая клиника анонимно http://www.narkologicheskaya-klinika-35.ru .
электрокарнизы цена электрокарнизы цена .
электрокарниз москва http://www.provorota.su .
карниз для штор электрический https://www.elektrokarniz2.ru .
электрокарниз электрокарниз .
платная наркологическая клиника в москве https://www.narkologicheskaya-klinika-36.ru .
карниз для штор электрический карниз для штор электрический .
электрические карнизы для штор в москве elektrokarniz2.ru .
гардина с электроприводом elektrokarniz-dlya-shtor11.ru .
электрический карниз для штор купить elektrokarniz-dlya-shtor15.ru .
телефон наркологии телефон наркологии .
электрокарниз купить электрокарниз купить .
электрокарнизы цена электрокарнизы цена .
клиника наркология http://www.narkologicheskaya-klinika-36.ru .
автоматический карниз для штор https://provorota.su/ .
автоматические карнизы для штор https://elektrokarniz2.ru/ .
клиники наркологические https://www.narkologicheskaya-klinika-40.ru .
рулонные шторы с электроприводом на окна http://www.rulonnye-shtory-s-elektroprivodom177.ru/ .
автоматическая рулонная штора http://www.rulonnye-shtory-s-elektroprivodom.ru/ .
римские шторы с пультом управления https://prokarniz28.ru .
наркологический анонимный центр http://narkologicheskaya-klinika-40.ru .
автоматические рулонные шторы с электроприводом на окна https://rulonnye-shtory-s-elektroprivodom177.ru/ .
рулонные шторы на кухню купить рулонные шторы на кухню купить .
электрическая рулонная штора http://www.rulonnye-shtory-s-elektroprivodom499.ru .
автоматические рулонные шторы на окна http://www.rulonnye-shtory-s-elektroprivodom.ru .
умные шторы с алисой http://www.prokarniz27.ru .
рулонные шторы с пультом управления рулонные шторы с пультом управления .
гидроизоляция подвала цена за м2 гидроизоляция подвала цена за м2 .
услуги гидроизоляции подвала http://www.gidroizolyacziya-podvala-iznutri-czena1.ru .
услуги экскаватора в москве http://www.arenda-ekskavatora-pogruzchika-5.ru .
усиление проёма швеллером усиление проёма швеллером .
гидроизоляция подвала цена гидроизоляция подвала цена .
инъекционная гидроизоляция обзор методов https://www.inekczionnaya-gidroizolyacziya.ru .
рейтинг seo студий http://www.reiting-seo-kompanii.ru/ .
автоматическое открывание штор https://prokarniz29.ru/ .
умные шторы купить умные шторы купить .
гидроизоляция подвала снаружи цены gidroizolyacziya-czena.ru .
технология усиления проема https://usilenie-proemov1.ru .
наплавляемая гидроизоляция цена за м2 работа https://www.gidroizolyacziya-czena1.ru .
аренда экскаватора погрузчика москва аренда экскаватора погрузчика москва .
инъекционная гидроизоляция стен инъекционная гидроизоляция стен .
гидроизоляция подвала внутреняя гидроизоляция подвала внутреняя .
управление шторами с телефона управление шторами с телефона .
гидроизоляция подвала цена за м2 гидроизоляция подвала цена за м2 .
гидроизоляция подвалов цена gidroizolyacziya-czena1.ru .
инъекционная гидроизоляция стен инъекционная гидроизоляция стен .
электронные шторы http://www.prokarniz29.ru .
аренда экскаватора погрузчика в москве срочно аренда экскаватора погрузчика в москве срочно .
гидроизоляция подвалов цена http://www.gidroizolyacziya-czena1.ru/ .
подвал дома ремонт http://www.gidroizolyacziya-podvala-iznutri-czena1.ru/ .
инъекционная гидроизоляция фундамента инъекционная гидроизоляция фундамента .
гидроизоляция подвала грунтовые воды http://www.gidroizolyacziya-podvala-samara.ru .
усиление проема оконного усиление проема оконного .
порно отец и дочь порно отец и дочь .
усиление проема оконного усиление проема оконного .
дипломные работы на заказ http://kupit-kursovuyu-24.ru/ .
заказ курсовых работ заказ курсовых работ .
курсовые под заказ http://kupit-kursovuyu-21.ru/ .
сколько стоит сделать курсовую работу на заказ https://kupit-kursovuyu-23.ru .
курсовая заказать курсовая заказать .
гидроизоляция подвала снаружи цены гидроизоляция подвала снаружи цены .
фен дайсон оригинал купить https://fen-d-1.ru .
canadian pharmacy 24: Nyu Pharm — canadian pharmacy reviews
http://unmpharm.com/# rybelsus from mexican pharmacy
http://unmpharm.com/# buy viagra from mexican pharmacy
1win yangi domen 1win5514.ru
http://umassindiapharm.com/# online shopping pharmacy india
https://umassindiapharm.com/# world pharmacy india
https://nyupharm.xyz/# canadian pharmacies compare
https://unmpharm.xyz/# buy antibiotics from mexico
https://nyupharm.com/# thecanadianpharmacy
https://nyupharm.xyz/# canadianpharmacymeds com