реклама на сайте
подробности

 
 
> 16S2D, LCD
PaulB
сообщение Aug 4 2007, 13:02
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681



Имеется мт-16S2D подключонный к мк Tiny2313 по 4-х битной шине.
Программирую на С, но только что-то не чего не получается.
При включении питания дисплей какбы загорает и сразуже гаснит (LCD новый) это так задуманно? Питание у меня 3.6В.
Помогите запустить дисплей. ? sad.gif


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
PaulB
сообщение Sep 7 2007, 10:35
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681



Переделал схему, сделал на меге16, но вот всё равно прошивка неработает что не так?

Код
#include <MEGA16.h>
#include <delay.h>

#define D7        PA1
#define D6        PA0
#define D5        PA3
#define D4        PA2
#define E         PC5
#define RW        PC6
#define RS        PC4


// определяем светодиод
#define LED_OFF (PORTD |= (1<<6))
#define LED_ON (PORTD &= ~(1<<6))


#define SET_D7        (PORTA |= (1<<3))
#define SET_D6        (PORTA |= (1<<2))
#define SET_D5        (PORTA |= (1<<1))
#define SET_D4        (PORTA |= (1<<0))

//#define SET_RW (PORTB |= (1<<5))
//#define CLR_RW (PORTB &= ~(1<<5))
#define SET_RS (PORTA |= (1<<6))
#define CLR_RS (PORTA &= ~(1<<6))
#define SET_E  (PORTA |= (1<<4))
#define CLR_E  (PORTA &= ~(1<<4))

// ЖКИ подключен младшему полубайту порта PB!
#define WRITE_HIGH_NIBBLE(x)  ( PORTA = (PORTA & 0xF0) | ((x) >> 4) )
#define WRITE_LOW_NIBBLE(x) ( PORTA = (PORTA & 0xF0) | ((x) & 0x0F) )

#define MKS_PBYT 2 /* время на передачу полубайта на дисплей */
#define MKS_BYTE 40 /* время после передачи байта на дисплей */

#define PAGE0 0x28 // Первая кодовая страница
#define PAGE1 0x2A // Вторая кодовая страница

//**************************************
//          P R O T O T Y P E
//**************************************

void BLINK_LED (void);
void WRITE_LCD(char);
void _E (void);
void _Epb (void);
void INIT_LCD(void);
void Delay_50ms(int t);
void CLR_LCD();
    
  int main(void)
{

  DDRA  = 0xff;  // назначаем все линии порта B на выход
  PORTA = 0x00;  // и устанавливаем на них низкий уровень
  DDRD  = 0xff;  // назначаем все линии порта D на вывход
  PORTD = 0x00;  // и устанавливаем на них низкий уровень
  LED_OFF;

    BLINK_LED (); //Вспышка светодиода на порту
    INIT_LCD(); //ИНИЦИАЛИЗАЦИЯ

while(1);
}

/**********************************************************
Имя функции:    void Delay_50ms(int t)
Описание:       Задержка, кратная 50 ms
Вход:           t -> Число повторов цикла
Выход:          нет
Примечание:     Arsen, редакция от 17.04.2006
**********************************************************/

void Delay_50ms(int t) {
  unsigned int i;
  for(i=0; i<t; i++) {
  delay_ms(50);
  }
}
/**********************************************************
Имя функции:    void BLINK_LED(void)
Описание:       Вспышка светодиода на порту PD6
Вход:           нет
Выход:          нет
Примечание:     Arsen, редакция от 17.04.2006
**********************************************************/

void BLINK_LED (void)
{
    Delay_50ms(50);
    LED_ON; // Зажигаем LED
    Delay_50ms(5);  // пауза 250 ms
    LED_OFF; // гасим LED
    Delay_50ms(15);  // Всего 500 ms
//    Delay_50ms(50);  // с этой строкой 1 сек.
}

/**********************************************************
Имя функции:    void CLR_LCD(void)
Описание:       Очистка экрана ЖКИ
Вход:           нет
Выход:          нет
Примечание:     Arsen, редакция от 17.05.2006
**********************************************************/

void CLR_LCD()
{
WRITE_LCD (0x01);
delay_ms(3);
}
          
/**********************************************************
Имя функции:    void _E(void)
Описание:       выдача сигнала "Е" на ЖКИ с полным временем
                ожидания (после выдачи всей команды)
Вход:           нет
Выход:          нет
Примечание:     Arsen, редакция от 17.04.2006
**********************************************************/

void _E (void)
{
    delay_us(MKS_PBYT);
    SET_E;
    delay_us(MKS_PBYT);
    CLR_E;
    delay_us(MKS_BYTE);        //пауза между командами
}    
  

/**********************************************************
Имя функции:    void _Epb(void)
Описание:       выдача сигнала "Е" на ЖКИ с укороченным временем
                ожидания (между вводом полубайтов)
Вход:           нет
Выход:          нет
Примечание:     Arsen, редакция от 17.04.2006
**********************************************************/

void _Epb (void)
{
     delay_us(MKS_PBYT);
    SET_E;
     delay_us(MKS_PBYT);
    CLR_E;
     delay_us(MKS_PBYT);        // пауза между полубайтами
}
    
/**********************************************************
Имя функции:    void WRITE_LCD(unsigned char ch)
Описание:       Запись байта команды в ЖКИ
Вход:           ch -> байт для записи
Выход:          нет
Примечание:     Arsen, редакция от 17.04.2006
**********************************************************/

void WRITE_LCD(char value) {
  delay_us(MKS_PBYT);
    WRITE_HIGH_NIBBLE(value);
    _Epb();
    WRITE_LOW_NIBBLE(value);
    _E();
  delay_us(MKS_BYTE);
}


/**********************************************************
Имя функции:    void INIT_LCD(void)
Описание:       Начальная инициализация ЖКИ
Вход:           нет
Выход:          нет
Примечание:     Arsen, редакция от 17.05.2006
**********************************************************/

void INIT_LCD(void)
{
PORTA = 0x00;
delay_ms(MKS_BYTE); // ждем более 30 мс

// Трижды устанавливаем 8-битный режим - начальная инициализация
    SET_D5;
    SET_D4;    // команда "8-битный режим"
    _E();
    _E();
    _E();

/***/

    PORTA = 0x00;
    SET_D5;           // Переводим в 4-битный режим
    _E();

/***************************************************/

WRITE_LCD(0x2A);
WRITE_LCD(0x0C);
CLR_LCD();
WRITE_LCD(0x06);


}


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- PaulB   16S2D   Aug 4 2007, 13:02
- - prottoss   Цитата(PaulB @ Aug 4 2007, 21:02) Имеется...   Aug 4 2007, 14:01
- - PaulB   Дисплей поддерживает 3-х В-ое и 5В-ое питание. Кс...   Aug 4 2007, 14:21
|- - prottoss   Цитата(PaulB @ Aug 4 2007, 22:21) Кстате,...   Aug 4 2007, 14:45
- - PaulB   а как заставить его хоть зажечься, неговорю о том ...   Aug 4 2007, 15:02
|- - prottoss   Цитата(PaulB @ Aug 4 2007, 23:02) а как з...   Aug 4 2007, 15:05
|- - Petka   Цитата(PaulB @ Aug 4 2007, 19:02) а как з...   Aug 5 2007, 10:57
- - PaulB   Нашёл там один исходник, но он оказался очень слож...   Aug 4 2007, 15:13
|- - prottoss   Цитата(PaulB @ Aug 4 2007, 23:13) Нашёл т...   Aug 4 2007, 15:26
- - PaulB   нУ ДИОДАМ ПОМОГАТЬ ПРЫГАТЬ УЖЕ НАУЧИЛСЯ. На С нео...   Aug 4 2007, 15:47
|- - korobov_michael   Попробуй это. У меня это рабочая версия при тестир...   Aug 5 2007, 07:05
- - PaulB   Вот посмотрите пожалуйсто код: -------------------...   Aug 5 2007, 09:00
|- - korobov_michael   Внимательно проверь инициализацию! Похоже, ты ...   Aug 5 2007, 21:21
|- - ESL   Обратите внимание, что у МЭЛТовских дисплеев не до...   Aug 6 2007, 05:59
- - Serg_greS   Посмотрите может вся проблема у Вас в этом: В 4-х...   Aug 6 2007, 07:25
- - Serg_greS   Попробуйте так: WRITE_LCD(0x2e); WRITE_LCD(0x0f);...   Sep 12 2007, 12:38
- - PaulB   Всё мучаюсь! Вот код программы, Проверял в пр...   Oct 2 2007, 05:46
- - Serg_greS   ЦитатаЯ уже начинаю подазривать что ЖК нерабочий.Ч...   Oct 2 2007, 05:57
|- - D H   Прекрасно работает библиотека CodeVision с Мелтовс...   Oct 2 2007, 07:05
- - PaulB   Контрасность на землю завёл даже подсветку подключ...   Oct 2 2007, 09:45
- - PaulB   Вот обнаружил один момент: в то время когда происх...   Oct 2 2007, 15:56
- - D H   Цитата(D H @ Oct 2 2007, 11:05) Прекрасно...   Oct 3 2007, 12:18
- - PaulB   Всё точно так же и у меня, даже светодиод стоит (г...   Oct 3 2007, 14:08
- - D H   Что значит "немного мерцает"? Зажигаются...   Oct 3 2007, 18:28
- - PaulB   Мерцает сама подсветка одновременно с миганием све...   Oct 4 2007, 06:32
- - D H   Вот твой текст: lcd_init(16); Где здесь у тебя вык...   Oct 4 2007, 08:27
- - PaulB   >Вот твой текст: >lcd_init(16); >Где здес...   Oct 4 2007, 11:20
|- - REGBIST11   #include <Mega16.h> #include <delay.h...   Oct 4 2007, 16:37
- - PaulB   Получилось!!!!!!!...   Oct 5 2007, 06:15
- - REGBIST11   Цитата(PaulB @ Oct 5 2007, 09:15) Получил...   Oct 5 2007, 06:46


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st August 2025 - 20:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016