Easyelectronics.ru

Электроника для всех
Текущее время: 25 апр 2017, 21:29

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



    • Изготовление печатных плат. Примерные цены: 10 штук 2-слоя 100*100mm 8.21$ или около ~470 рублей
    • Создание принципиальных схем и проектирование печатных плат
    • Симуляция работы на spice моделях
    • Просмотр 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
Сообщения: 852
Откуда: Харьков
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
Сообщения: 750
Откуда: Минск
Вот проверенный исходник для работы с LCD в 4-битном режиме:


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

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


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

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


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

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 852
Откуда: Харьков
Производить слияние ниббла данных с битами управления надо по ИЛИ а не по И. И мне кажется что 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
Сообщения: 852
Откуда: Харьков
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
Сообщения: 852
Откуда: Харьков
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
Сообщения: 2372
Откуда: Москва
Это что было?


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

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


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

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


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

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

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


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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