Easyelectronics.ru

Электроника для всех
Текущее время: 23 авг 2017, 09:25

Часовой пояс: UTC + 5 часов



    • JLCPCB for PCB Prototyping: 10 шт. 2-слоя 100*100mm 2$(около 140rub), изготовление за 24 часа.
    • Создание принципиальных схем и проектирование печатных плат
    • Крупнейший китайский онлайн магазин радиодеталей. Скидка 50%
    • Просмотр GERBER файлов

Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 09:56 
Только пришел

Зарегистрирован: 03 май 2012, 09:49
Сообщения: 6
Здравствуйте! Помогите пожалуйста найти ошибку в коде. Только начал изучать программирование МК, писал по даташиту вывод команд и данных на LCD WH1602B при трассировке в AVRstudio вроде всё правильно проходит, нужные данные в ужные места пихаются. При эмуляции в Proteus и на Pinboard II ноль эмоции. Было предположение, что неправильно расставлены задержки, играл с ними по разному не реагирует. Код ниже. Там сейчас установлены задержки от балды, просто проэмулировать и глянуть как он посылает команды.

Код:
#include <avr/io.h>
#include <avr/delay.h>

#define RS 0
#define RW 1
#define E  2


void lcd_com(unsigned char lcd)
{
   unsigned char temp;
   temp=(lcd&~((1<<RS)|(1<<RW)|(1<<3)))|(1<<E);
   PORTB=temp;
   _delay_ms(100);
   PORTB=temp&~(1<<E);
   _delay_ms(100);
   temp=((lcd*16)&~((1<<RS)|(1<<RW)|(1<<3)))|(1<<E);
   PORTB=temp;
   _delay_ms(100);
   PORTB=temp&~(1<<E);
   _delay_ms(100);
   //PORTB=(0xff*16);
   //_delay_ms(2);
}

void lcd_data(unsigned char lcd)
{
   unsigned char temp;
   temp=(lcd&~((1<<RW)|(1<<3)))|(1<<RS)|(1<<E);
   PORTB=temp;
   _delay_ms(100);
   PORTB=temp&~(1<<E);
   _delay_ms(100);
   temp=((lcd*16)&~((1<<RW)|(1<<3)))|(1<<RS)|(1<<E);
   PORTB=temp;
   _delay_ms(100);
   PORTB=temp&~(1<<E);
   _delay_ms(100);
   //PORTB=(0xff*16);
   //_delay_ms(2);
}

void lcd_init()
{
   lcd_com(0x2c);
   _delay_ms(100);
   lcd_com(0x0f);
   _delay_ms(100);
   lcd_com(0x01);
   _delay_ms(100);
}
int main(void)
{
   DDRB=0xff;
   PORTB=0x00;
   
   _delay_ms(5000);
   lcd_init();
   
   lcd_data('H');
   lcd_data('E');
   lcd_data('L');
   lcd_data('L');
   lcd_data('O');
   
    while(1)
    {
       
    }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 10:20 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
ToDDIk писал(а):
Здравствуйте! Помогите пожалуйста найти ошибку в коде. Только начал изучать программирование МК, писал по даташиту вывод команд и данных на LCD WH1602B при трассировке в AVRstudio вроде всё правильно проходит, нужные данные в ужные места пихаются. При эмуляции в Proteus и на Pinboard II ноль эмоции. Было предположение, что неправильно расставлены задержки, играл с ними по разному не реагирует. Код ниже. Там сейчас установлены задержки от балды, просто проэмулировать и глянуть как он посылает команды.
Show

Для 4х битного режима по моему инициализация не верна. И при передаче и команды и данных у Вас RS одинаковый, определитесь.RW в Вашем случае вообще трогать не нужно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 10:45 
Только пришел

Зарегистрирован: 03 май 2012, 09:49
Сообщения: 6
RS, при подаче данных - 1, а при команде RS=0, при трассировке это всё видно. а инициализация, согласно таблице. На RW и 3 бит накладываю маску просто, чтобы не дёргались, даже если при подключении посадил их на землю


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 11:34 
Только пришел

Зарегистрирован: 03 май 2012, 09:49
Сообщения: 6
Добавил в код ещё раз установку и сброс по E. вывоить начал, но добавляет бежду буквами разные символы. Изменяя задержку ничего не происходит.
Код:
PORTB=temp|(1<<E);
   _delay_ms(2);
   PORTB=temp&~(1<<E);
   _delay_ms(2);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 13:44 
Только пришел

Зарегистрирован: 03 май 2012, 09:49
Сообщения: 6
Если писать вот так
Код:
#include <avr/io.h>
#include <avr/delay.h>

#define RS 0
#define RW 1
#define E  2


void lcd_com(unsigned char lcd)
{
   unsigned char temp;

    temp=(lcd&~((1<<RS)|(1<<RW)|(1<<3)|(1<<E)));
   PORTB=temp;
   _delay_ms(2);
   PORTB|=(1<<E);
   _delay_ms(1);
    PORTB&=~(1<<E);
    _delay_ms(2);
PORTB|=(1<<E);
   _delay_ms(1);
    PORTB&=~(1<<E);
    _delay_ms(2);
   
   temp=((lcd*16)&~((1<<RS)|(1<<RW)|(1<<3)|(1<<E)));
   PORTB=temp;
   _delay_ms(2);
   PORTB|=(1<<E);
   _delay_ms(1);
   PORTB&=~(1<<E);
   _delay_ms(2);
   PORTB|=(1<<E);
   _delay_ms(1);
    PORTB&=~(1<<E);
    _delay_ms(2);



}

void lcd_data(unsigned char lcd)
{
   unsigned char temp;
   
   temp=(lcd&~((1<<RW)|(1<<3)|(1<<E)))|(1<<RS);
   PORTB=temp;
   _delay_ms(2);
   PORTB|=(1<<E);
   _delay_ms(1);
   PORTB&=~(1<<E);
   _delay_ms(2);
   PORTB|=(1<<E);
   _delay_ms(1);
    PORTB&=~(1<<E);
    _delay_ms(2);


   temp=((lcd*16)&~((1<<RW)|(1<<3)|(1<<E)))|(1<<RS);
   PORTB=temp;
   _delay_ms(2);
   PORTB|=(1<<E);
   _delay_ms(1);
   PORTB&=~(1<<E);
   _delay_ms(2);
   PORTB|=(1<<E);
   _delay_ms(1);
    PORTB&=~(1<<E);
    _delay_ms(2);

}

void lcd_init()
{
   lcd_com(0x2c);
   _delay_ms(5);
   lcd_com(0x0f);
   _delay_ms(1);
   lcd_com(0x02);
   _delay_ms(1);
   lcd_com(0x01);
   _delay_ms(20);
}
int main(void)
{
   DDRB=0xff;
   PORTB=0x00;
   
   _delay_ms(500);
   lcd_init();
   
   lcd_data('1');
   lcd_data('2');
   lcd_data('3');
   lcd_data('4');
   lcd_data('5');
   lcd_data('6');
   lcd_data('7');
   lcd_data('8');
    while(1)
    {
        //TODO:: Please write your application code
    }
}


то на дисплей выводится информация :[ 1 2#334C5S6c7s8]
В принципе можно предположить, что он данные хавает по нескольку раз поэтому после символа выходит какой-то значок.
Не понимаю, почему в исходном состоянии он ничего не выводит! =(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 14:53 
Старожил
Аватара пользователя

Зарегистрирован: 20 фев 2012, 19:20
Сообщения: 751
Откуда: Минск
Вот проверенный исходник для работы с LCD в 4-битном режиме:


Вложения:
Lcd.zip [2.08 Кб]
Скачиваний: 154
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 15:38 
Только пришел

Зарегистрирован: 03 май 2012, 09:49
Сообщения: 6
Спасибо за исходник, но просто заставить экран выводить информацию я могу при помощи готовых библиотек в CVAVR. Хочется разобраться в логике работы, поэтому и начал писать свою библиотеку посылки команд и данных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 17:08 
Старожил
Аватара пользователя

Зарегистрирован: 20 фев 2012, 19:20
Сообщения: 751
Откуда: Минск
Ну так и посмотрите, в чем отличие Вашего исходника от моего.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 17:15 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
Производить слияние ниббла данных с битами управления надо по ИЛИ а не по И. И мне кажется что RS у Вас и в lcd_data и в lcd_cmd в «0».


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 17:19 
Старожил
Аватара пользователя

Зарегистрирован: 27 янв 2010, 12:18
Сообщения: 1259
Откуда: Moscow
1. возьмите даташит и пошагово сравните ваш код.
2. Что бросается в глаза - lcd_data - сколько маханий ногой E? - 8 упоминаний, 4 перехода от 0 до 1 и обратно. А нужно сколько? А нужно записать две тетрады - два перехода или 4 упоминания.
3. С задержками - ну очень щедро. В том же даташите посмотрите временные диаграммы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 20:53 
Свой человек

Зарегистрирован: 24 мар 2012, 15:01
Сообщения: 38
Если хотите разобраться, то могу предложить код Ассемблера:
Код:
; инициализация дисплея
   ldi LCD_Data, 0x38;
   rcall Lcd_com;
   ldi LCD_Data, 0x0C;
   rcall Lcd_com;
   ldi LCD_Data, 0x06;
   rcall Lcd_com;
   ldi LCD_Data, 0x01;
   rcall Lcd_com;
   rcall Delay2 ;
   rcall Delay2;
   rcall Delay2;

; проба вывода текста
   
   ldi LCD_Data, 0xA8; П
   rcall LCD_dat ;
   ldi LCD_Data, 0x70; Р
   rcall LCD_dat ;
   ldi LCD_Data, 0x75; И
   rcall LCD_dat ;
   ldi LCD_Data, 0xB3; В
   rcall LCD_dat ;
   ldi LCD_Data, 0x65; Е
   rcall LCD_dat ;
   ldi LCD_Data, 0xBF; Т
   rcall LCD_dat ;


задержка Delay2 - для инициализации согласно даташита.

коды процедур:
Код:
; запись команды в LCD
Lcd_com:
   cbi PortB, 1 ;
   cbi PortB, 2;
   out PortA, LCD_Data;
   sbi PortB, 0;
   nop;
   ldi temp, 0b11111111;
   cbi PortB, 0;
   out PortA, temp;
   rcall DelayOne;
   ret;


Код:
; Запись данных в LCD
Lcd_dat:
   cbi PortB, 1 ;
   sbi PortB, 2;
   out PortA, LCD_Data;
   sbi PortB, 0;
   nop;
   ldi temp, 0b11111111;
   cbi PortB, 0;
   out PortA, temp;
   rcall DelayOne;
   ret;


При тактовой частоте 1 Мгц все работает прекрасно. Режим восьмибитной шины.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 03 май 2012, 23:04 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
ToDDIk писал(а):
Код:
void lcd_init()
{
   lcd_com(0x2c);
   _delay_ms(5);
   lcd_com(0x0f);
   _delay_ms(1);
   lcd_com(0x02);
   _delay_ms(1);
   lcd_com(0x01);
   _delay_ms(20);
}

Не понимаю, почему в исходном состоянии он ничего не выводит! =(


При переводе индикатора в 4х битный режим команду размера шины надо повторить трижды, причем первые две в 8ми битном формате т.е. без передачи младшего ниббла и без проверки готовности, если таковая производится. Интервал между командами в соответствии с даташитом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 04 май 2012, 12:34 
Только пришел

Зарегистрирован: 03 май 2012, 09:49
Сообщения: 6
Всем спасибо.Я разобрался. Ошибка была в инициализации.
Теперь всё выводит нормально
Для тех, кто решит повторить мой опыт вот вам в помощь описание на lcd: http://easyelectronics.ru/img/readydev/ControllerIO/lcd.pdf
если прочитаете повнимательней, там будет вся последовательность инициализации с правильными временами задержки.
Так-же можно покурить datasheet: http://www.compel.ru/datapdf/winstar/pn/wh1602b-ygk-ctk/e3923129ca947317a12efbe84b4cc148.pdf
Код:
    #include <avr/io.h>
    #include <util/delay.h>
     
    #define RS 0
    #define E 2 
    #define LCD_PORT PORTB
   #define LCD_DDR DDRB

     
    //команды в ЖКИ
    void lcd_com (unsigned char lcd)
    { unsigned char temp;
     
    temp=(lcd&~(1<<RS))|(1<<E);
    LCD_PORT=temp;
    LCD_PORT=temp&~(1<<E);     
    temp=((lcd*16)&~(1<<RS))|(1<<E);
    LCD_PORT=temp;
    LCD_PORT=temp&~(1<<E);     
    _delay_us(100);
    }
     
    //данныхе в ЖКИ
    void lcd_dat (unsigned char lcd)
    { unsigned char temp;
     
    temp=(lcd|(1<<RS))|(1<<E);
    LCD_PORT=temp;
    LCD_PORT=temp&~(1<<E);
    temp=((lcd*16)|(1<<RS))|(1<<E);
    LCD_PORT=temp;
    LCD_PORT=temp&~(1<<E);     
    _delay_us(100);
    }
     
   //Первичная инициализация, как по 8-ми битной шине
   //Стандартной командой lcd_com работать не захотел
   //т.к посылая команду $30 или $20 он в догон шлёт 0000
   //lcd начинает сходить с ума.
   void lcd_i(unsigned char lcd)
   {
   unsigned char temp;
    temp=(lcd&~(1<<RS))|(1<<E); //RS=0 – это команда
    LCD_PORT=temp; //Выводим на portB старшую тетраду команды, сигналы RS, E
    LCD_PORT=temp&~(1<<E); //Сигнал записи команды
   }      
   
    //Программа иниализации ЖКИ
    void lcd_init (void)
    {   
lcd_i(0x30);
_delay_ms(5);
lcd_i(0x30);
_delay_us(105);   
lcd_i(0x30);
_delay_us(105);
lcd_i(0x20);
_delay_us(105);

lcd_com(0x28);
lcd_com(0x0c);
lcd_com(0x06);   
 
   }


int main(void)

{
   LCD_DDR=0xff; //Инициализация portD
    LCD_PORT=0x00;
     
   _delay_ms(40);
    lcd_init();
   

   lcd_com(0x85);
    lcd_dat('H');               
    lcd_dat('D');
    lcd_dat('4');
    lcd_dat('4');
    lcd_dat('7');
    lcd_dat('8');
    lcd_dat('0');
   lcd_com(0xC3);     
   lcd_dat('H');               
    lcd_dat('D');
    lcd_dat('4');
    lcd_dat('4');
    lcd_dat('7');
    lcd_dat('8');
    lcd_dat('0');
    
}


Инициализация сильно мудрёная.Если после подачи 0x20, как обычному 8-ми битному порту, не выдержать задержку, перед подачей 0x28 как 4-х битному (т.е биты N и F не пройдут), вторая строка не инициализируется =(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 04 май 2012, 16:32 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
ToDDIk писал(а):
Код:

    //Программа иниализации ЖКИ
    void lcd_init (void)
    {   
lcd_i(0x30);
_delay_ms(5);
lcd_i(0x30);
_delay_us(105);   
lcd_i(0x30);
_delay_us(105);
lcd_i(0x20);
_delay_us(105);

lcd_com(0x28);
lcd_com(0x0c);
lcd_com(0x06);   
 
   }


Инициализация сильно мудрёная.Если после подачи 0x20, как обычному 8-ми битному порту, не выдержать задержку, перед подачей 0x28 как 4-х битному (т.е биты N и F не пройдут), вторая строка не инициализируется =(

Я делал вот так:
Код:
;********************************************************
; Инитим индикатор в 4х битный режим
;********************************************************
      ldi   count1,   $9c   ; 7.5 mS
      rcall   delayl         
      ldi   count1,   $9c   ; 7.5 mS
      rcall   delayl         
      ldi   temp,   $28      
      call   wrlcd8         
      ldi   count1,   $56   ; 4 mS
      rcall   delayl         
      ldi   temp,   $28      
      call   wrlcd8         
      ldi   count1,   $2   ; 100 mkS
      rcall   delayl         
      ldi   temp,   $28      
      call   wrlcd8         
      ldi   temp,   $28      
      rcall   wrlcdl         
      ldi   temp,   $0c      
      rcall   wrlcdl         
      ldi   temp,   $06      
      rcall   wrlcdl         


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 20 мар 2017, 18:04 
Здравствуйте!

Зарегистрирован: 20 мар 2017, 17:52
Сообщения: 1
Китайский 1602
а слабо подключить на один порт?
avr studio 6 Atmega8 без кварца LCD сидит на PORTC АЦП там совершенно бестолковый
а 1602 встал как там и был рекомендую все задержки из даташта

#define F_CPU 8000000UL// 8 MHz clock
#include <avr/io.h>
#include <util/delay.h>

#define RS PC5
#define EN PC4

unsigned int value;


void lcd_com(unsigned char p) // Функция записи команды в ЖКИ
{
PORTC &= ~(1 << RS); // RS = 0 (запись команд)
PORTC |= (p >>4);
PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD)
_delay_us(50);
PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
_delay_us(50);
PORTC = 0x00;
//--------------------------------------
PORTC |= (p& 0x0F); // Выделяем младший нибл
PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD)
_delay_us(50);
PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
_delay_us(50);
PORTC = 0x00;
}
void lcd_dat(unsigned char p) // Функция записи данных в ЖКИ
{

PORTC |= (1 << RS); // RS = 1 запись данных
PORTC |= (p >>4); // Выделяем старший нибл сдвигаем на 4
PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD)
_delay_us(50);
PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
_delay_us(50);
PORTC = 0x00;
//--------------------------------------
PORTC |= (1 << RS); // RS = 1 запись данных
PORTC |= (p& 0x0F); // Выделяем младший нибл
PORTC |= (1 << EN); // EN = 1 (начало записи команды в LCD);
_delay_us(50);
PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
_delay_us(50);
PORTC = 0x00;
}
void lcd_init(void)// Функция инициализации ЖКИ void lcd_init(void)
{
DDRC = 0xFF; // - выходы
PORTC = 0x00;
//DDRC |= (1<<PD6)|(1<<PD7);
_delay_us(100);
// Конфигурирование четырехразрядного режима
PORTC |= (1 << PC1);//5
PORTC &= ~(1 << PC0);//4

//Активизация четырехразрядного режима
PORTC |= (1 << EN);// EN = 1 (начало записи команды в LCD)
_delay_us(50);// 40 мкс
PORTC &= ~(1 << EN); // EN = 0 (конец записи команды в LCD)
_delay_ms(5);
lcd_com(0x28); // Шина 4 бит, LCD - 2 строки
_delay_us(50);// 40 мкс
lcd_com(0x08); // Полное выключение дисплея
_delay_us(50);// 40 мкс
lcd_com(0x01); // Очистка дисплея
_delay_ms(2);// 1640 мкс
lcd_com(0x06); // Сдвиг курсора вправо
_delay_us(50);
lcd_com(0x0C); // Включение дисплея, курсор не видим
_delay_us(50);// 40 мкс
}
void lcd_indic(void)
{
lcd_com(0x80); // Вывод в верхнюю левую позицию
lcd_dat('F');
lcd_dat('=');
lcd_dat((value/10000000)%10 + 48); // Выделяем десятки млн
lcd_dat((value/1000000)%10 + 48); // Выделяем единицы млн
lcd_dat('.');
lcd_dat((value/100000)%10 + 48); // Выделяем сотни тыс
lcd_dat((value/10000)%10 + 48); // Выделяем десятки тыс
lcd_dat((value/1000)%10 + 48); // Выделяем тысячи
lcd_dat('.');
lcd_dat((value/100)%10 + 48); // Выделяем сотни
lcd_dat((value/10)%10 + 48); // Выделяем десятки
lcd_dat(value%10 + 48); // Выделяем единицы

lcd_com(0xC0); // Вывод в нижнюю левую позицию
lcd_dat('R');
lcd_dat('a');
lcd_dat('n');
lcd_dat('g');
lcd_dat('e');
lcd_dat('=');

}
int main(void)
{
lcd_init();

//******************************************
while(1)
{
lcd_indic();
value++;

}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B76
СообщениеДобавлено: 20 мар 2017, 21:13 
Старожил

Зарегистрирован: 04 окт 2012, 00:23
Сообщения: 2429
Откуда: Москва
Это что было?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B76
СообщениеДобавлено: 21 мар 2017, 05:25 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3304
Откуда: Новосибирск
Не так. Надо: #Хто здесь???!!!#


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 21 мар 2017, 09:56 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 1490
Откуда: Русь, Новороссийск
"...мёртвые с косами..." (с) Свадьба в Малиновке


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LCD WH1602B
СообщениеДобавлено: 21 мар 2017, 10:58 
Старожил

Зарегистрирован: 31 янв 2010, 20:19
Сообщения: 4940
Откуда: Донецк-Мариуполь
RAV писал(а):
Китайский 1602
а слабо подключить на один порт?

А теперь сделай плату и разведи этот порт и дисплей с минимумом геморроя.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Cthulhu


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB