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

 
 
> 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
сообщение Aug 5 2007, 09:00
Сообщение #2


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

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



Вот посмотрите пожалуйсто код:
--------------------------------------------------------
#include <TINY2313.h>
#include<delay.h>

#define D7 PD3
#define D6 PD2
#define D5 PD1
#define D4 PD0
#define E PD4
#define RW PD5
#define RS PD6


// ii?aaaeyai naaoiaeia
#define LED_OFF (PORTD |= (1<<6))
#define LED_ON (PORTD &= ~(1<<6))


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

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

// ?EE iiaee??ai ieaaoaio iieoaaeoo ii?oa PB!
#define WRITE_HIGH_NIBBLE(x) ( PORTD = (PORTD & 0xF0) | ((x) >> 4) )
#define WRITE_LOW_NIBBLE(x) ( PORTD = (PORTD & 0xF0) | ((x) & 0x0F) )

#define MKS_PBYT 2 /* a?aiy ia ia?aaa?o iieoaaeoa ia aenieae */
#define MKS_BYTE 40 /* a?aiy iinea ia?aaa?e aaeoa ia aenieae */

#define PAGE0 0x28 // Ia?aay eiaiaay no?aieoa
#define PAGE1 0x2A // Aoi?ay eiaiaay no?aieoa

//**************************************
// P R O T O T Y P E
//**************************************
void CLR_ALL(void);
void BLINK_LED (void);

void WRITE_LCD(char);

void INIT_LCD(void);
void CLR_LCD(void);


//**************************************
// M A I N
//**************************************
int main(void)
{

DDRB = 0xff; // iacia?aai ana eeiee ii?oa B ia auoia
PORTB = 0x00; // e onoaiaaeeaaai ia ieo ieceee o?iaaiu
DDRD = 0xff; // iacia?aai ana eeiee ii?oa D ia auaoia
PORTD = 0x00; // e onoaiaaeeaaai ia ieo ieceee o?iaaiu
LED_OFF;

BLINK_LED ();
INIT_LCD();
while(1);
}

void INIT_LCD(void)
{
CLR_ALL();
delay_ms(MKS_BYTE); // ?aai aieaa 30 in

// O?e?au onoaiaaeeaaai 8-aeoiue ?a?ei - ia?aeuiay eieoeaeecaoey
SET_D5;
SET_D4; // eiiaiaa "8-aeoiue ?a?ei"


CLR_ALL();
SET_D5; // Ia?aaiaei a 4-aeoiue ?a?ei


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

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


}
void CLR_LCD()
{
WRITE_LCD (0x01);
delay_ms(30);
}

void _E (void)
{
delay_us(MKS_PBYT);
SET_E;
delay_us(MKS_PBYT);
CLR_E;
delay_us(MKS_BYTE); //iaoca ia?ao eiiaiaaie
}

void _Epb (void)
{
delay_us(MKS_PBYT);
SET_E;
delay_us(MKS_PBYT);
CLR_E;
delay_us(MKS_PBYT); // iaoca ia?ao iieoaaeoaie
}
void WRITE_LCD(char value) {
delay_us(MKS_PBYT);
WRITE_HIGH_NIBBLE(value);
_Epb();
WRITE_LOW_NIBBLE(value);
_E();
delay_us(MKS_BYTE);
}

void BLINK_LED (void)
{
delay_ms(50);
LED_ON; // Ca?eaaai LED
delay_ms(5); // iaoca 250 ms
LED_OFF; // aanei LED
delay_ms(15); // Anaai 500 ms
// Delay_50ms(50); // n yoie no?ieie 1 nae.
}

void CLR_ALL(){

PORTD = 0x00; // onoaiaaeeaaai ia PB ieceee o?iaaiu

}

------------------------------------------------------------------------------
Что не так?

Всё некак немогу сделать так чтобы он загорелся.


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post
korobov_michael
сообщение Aug 5 2007, 21:21
Сообщение #3


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

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



Внимательно проверь инициализацию!
Похоже, ты неправильно инициализируешь ЖКИ
После каждого выставления на портах необходимо провести процедуру clockE(); иначе эти данные не защелкнутся и ЖКИ их не увидит!
И, поскольку ты все равно не пользуешься прерываниями, сделай отдельную функцию clockE, что-то вроде

Код
void lcd_clock_E(void)
{
    CNTRL_PORT |= _BV(LCD_ENABLE);    //E = 1
    __delay_cycles(150);            //10us но вроде достаточно 1мкс
    CNTRL_PORT &= ~(_BV(LCD_ENABLE)); //E = 0

}


Код
void lcd_init(void)
{
    CNTRL_PORT &= ~(_BV(LCD_RS));
    CNTRL_PORT &= ~(_BV(LCD_RW));
    __delay_cycles(222000);    // Wait more than 15ms
    LCD_PORT = 0x3A;            // Startup Sequence
    lcd_clock_E();  //Вот это ты забыл!!!
    __delay_cycles(61000);      // Wait more than 4.1ms
    lcd_clock_E();  //Вот это ты забыл!!!
    __delay_cycles(1500);        // Wait more than 0.1ms
    lcd_clock_E();  //Вот это ты забыл!!!
    LCD_PORT = 0x3A;
    lcd_clock_E();  //Вот это ты забыл!!!
     while(LCD_GET_BUSY()); //С этого момента ЖКИ дает адекватную инфу в бите BF
     __delay_cycles(61000);

    lcd_wr_reg(INST_REG,0x0E);
     while(LCD_GET_BUSY());
     __delay_cycles(61000);

     lcd_wr_reg(INST_REG,0x01);
     while(LCD_GET_BUSY());
     __delay_cycles(61000);

    lcd_wr_reg(INST_REG,0x06);
     while(LCD_GET_BUSY());
     __delay_cycles(61000);
}


По окончании инициализации индикатор может мигнуть. Это можно расценивать как успешную инициализацию. Только учти, что данная процедура -- для 8-ножечного обмена. Для 4-ножечного она немного уменьшится.
ВАЖНО!!! Может быть очень смешно, но уточни, как ты подаешь смещение на ножку контрастности - а то можно вообще ничего не увидеть и при правильной инициализации smile.gif
Скажешь, получилось ли smile.gif
Успехов!

Сообщение отредактировал korobov_michael - Aug 5 2007, 21:26
Go to the top of the page
 
+Quote Post
ESL
сообщение Aug 6 2007, 05:59
Сообщение #4


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

Группа: Свой
Сообщений: 153
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 932



Обратите внимание, что у МЭЛТовских дисплеев не до конца совместимая c hd44780 инициализация (сам в своё время обжёгся). Он требует не одного, а если память мне не врёт - 3х циклов. Также советую заглянуть к ним на форум - там были всякие исходники и подобные темы.

З.Ы. Если делать по даташиту - всё работает, по крайней мере, у меня работало.
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
- - Serg_greS   Посмотрите может вся проблема у Вас в этом: В 4-х...   Aug 6 2007, 07:25
- - PaulB   Переделал схему, сделал на меге16, но вот всё равн...   Sep 7 2007, 10:35
- - 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 Текстовая версия Сейчас: 21st July 2025 - 10:25
Рейтинг@Mail.ru


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