Объяснение в любви. Подключаем LCD к микроконтроллеру по 4-х

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Аватара пользователя
Артур
Нашел транзистор. Понюхал.
Сообщения: 157
Зарегистрирован: Пн дек 04, 2006 09:50:08
Откуда: Vladivostok

Сообщение Артур »

Барсик Спасибо погляжу, но вряд ли пойму там ведь все крутые! Терминами выражаются :)
Век живи! - Век учись!
ICQ-15B87330h
Аватара пользователя
moLCHec
Мявтор!
Сообщения: 825
Зарегистрирован: Вс дек 18, 2005 20:04:42
Откуда: Свердловская обл.
Контактная информация:

Сообщение moLCHec »

Артур строб на то и строб чтоб быть преременным. Вообще на сколько я помню в статье описано как что работает.
Настоящий кот всегда либо голоден,
либо невыспался ...
VIY
Открыл глаза
Сообщения: 55
Зарегистрирован: Вт май 01, 2007 12:01:53
Откуда: Минск

Сообщение VIY »

Вот ссылочка на замечательный документ... Сам разбирался по статье, о каторой топик, с трудом, но разобрался...

http://www.atmel.ru/Articles/Atmel17.htm

Эхх, жаль я сразу не попал туда там всё предельно разжовано, и по полачкам разложено, что и как работает у дисьплея день сэкономил-бы! :)
Аватара пользователя
Pa5ha
Прорезались зубы
Сообщения: 243
Зарегистрирован: Ср авг 31, 2005 20:09:08
Откуда: Петрозаводск, Карелия.
Контактная информация:

Сообщение Pa5ha »

Кстати, насчет строба. Я когда отлаживал и смотрел на сигналы светодиодные на шинах, то строб шел секунд через 5. И то оно все инициализировалось! (хотя куда оно делось бы)
2kb of eeprom should be enought for everybody (C) Bill Gates` cat :)
CiSi
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Сб авг 04, 2007 15:12:54

Сообщение CiSi »

Здраствуйте знатоки.
Подскажите пожалуйсто как включить этот (16S2D) дисплей, доку на него читал , но там больно уж всё кратко. Пишу на С и юзаю CVAVR. Паял всё по схеме, вот только мк у меня Tiny2313 и питание у меня 3,6В. Помогите с исходником.
CiSi
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Сб авг 04, 2007 15:12:54

Сообщение CiSi »

Извините за тупые вопросы.
CiSi
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Сб авг 04, 2007 15:12:54

Сообщение CiSi »

Переделал схему, сделал на меге16, прогу написал (она работает-по крайней мере в протеусе)

Код: Выделить всё

#include <MEGA16>
#include<delay>
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x15 ;PORTA
#endasm
#include <lcd>

void main(void)
{

PORTD=0xFF;
DDRD=0xFF;

// LCD module initialization
lcd_init(16);
lcd_putsf("Initializing...");
lcd_putchar(0);

PORTD.6=1;
delay_ms(50);
PORTD.6=0;
delay_ms(50);
while (1);

}

Но на дисплее всё равно нечего не появляется, хотя во время инициализации экран мерцает.
Что не так?
Аватара пользователя
Степаныч
Открыл глаза
Сообщения: 68
Зарегистрирован: Ср июн 20, 2007 18:46:54
Откуда: Красноярск
Контактная информация:

Сообщение Степаныч »

Добрый день! Господа можете помочь, в общем есть ATmega32 и дисплей Winstar WH1602B!Соединены они точно по схеме из данной статьи(тоесть к порту Д только естественно на Меге)!Что нужно менять в прошивке если все это на Winstare и Меге32 причем желательно чтоб мега работала на 1 Мгц внутреннего RC. Ну понятно если на мега пашет на 1 Мгц то нужно поменять задержки для перехода в 4 битный режим(тоесть уменьшить их в 10 раз т.к. частота работы протца не 10Мгц а в 10 раз меньше).Это я понял!А вот что делать с контроллером??Если просто поменять в тексте программы заголовочные файлы(at2313 def на m32def) то компилятор выдает что то типо этого : 'Constant 0x85f out of range (0x00-0xFF)
и вторая строка: ldi Temp,RamEnd !!!
Как я понимаю это указывает что константа RamEnd каким то образом не может испоьзоваться(толи из за стека то что у всех мег есть старший и младший SPH и SPL а у at90s2313 и attiny2313 только SPL ). Подскажите плиз!!!!И с LCD не все понятно в данной теме описано что принцип работы с Winstar немного отличается от МЕЛТовских дисплеев только я так и не понял чем!!!!Напишите пожалуйста а то так охота сделать устройство а опыта работы с LCD нет!!!!
IN GOD WE TRUST
Аватара пользователя
wellcom
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Чт фев 24, 2011 13:00:49

Re: Объяснение в любви. Подключаем LCD к микроконтроллеру по

Сообщение wellcom »

Привет! Валерьянка закончилась, бьюсь уже второй день и никак не могу проинициализировать 16*2 дисплей в 4-х битном режиме. Хочу сделать свою библиотеку для CVAVR.
вот код

Код: Выделить всё

void lcd_init()
{
    PORTE &= (~ (1<<3));
    delay_ms(15); //по даташиту, внутрение процедуры LCD
    lcd_write(0x30, COMAND); //8 bit
    delay_ms(6);
    lcd_write(0x30, COMAND);
    delay_ms(1);
    lcd_write(0x30, COMAND);
    delay_ms(1);   
    lcd_write(0x30, COMAND);  //
    delay_us(50);
     lcd_write(0x20, COMAND);  //4 bit
    delay_ms(50);                           
    lcd_write(0x28, COMAND);  //4 bit 2 str, 5x7
    delay_ms(50);
    lcd_write(0x80, COMAND);  //adrr DRAM -> 0
    delay_ms(50);
    lcd_write(0x08, COMAND); //выкл дисплей
    delay_us(50);       
    lcd_write(0x06, COMAND); //сдвигать курсор вправо
    delay_ms(1);
     lcd_write(0x02, COMAND); // курсор  в нулевую позицию
    delay_ms(2);   
    lcd_write(0x0E, COMAND); //вкл дисплей и курсор
    delay_ms(5);
        lcd_write(0x01, COMAND); //очистить
    delay_ms(2);
}

void lcd_write(unsigned char data, unsigned char mode)
{
    if (mode)   //выбор режима 1-data 0-comand
     {
       PORTE |= (1<<3);
     }
     else
     {
       PORTE &= (~ (1<<3));
     };
    SetBit (PORTE,2); // E=1     
    delay_us(5);
    PORTD = ((PIND & 0x0F) | (data & 0xF0)); //обнул 4-7 разр   старший нибл  и пишем  в 4-7 данные
    delay_us(5);
    ClearBit (PORTE,2); //E=0
    delay_us(60);        //что бы лсд успел переварить инфо
    SetBit (PORTE,2); //E=1       
    delay_us(5); 
    PORTD = ((PIND & 0x0F) | (data <<4));    //младший нибл   
    delay_us(5);
    ClearBit (PORTE,2); //E=0
   
    //PORTD |= 0xF0; //1 на  D4-D7 согласно описан
}


В протеусе дисплей не оживает. Не могу понять что делаю не так, перечитал и перепробовал разные варианты из сети, все равно ничего не выходит. Если использовать внутреннюю библиотеку CVAVR все работает на ура. Пробовал и задержки разные и очередность команд менял и все без толку. Инициализация проходит без ошибок в протеусе, а при попытке вывести что нить на екран, после нескольких символов пишет что контроллер дисплея занят. Частоты тактов контроллера в протеусе и проекте одинаковы. Что делаю не так?
:solder: 32-х ядерный процессор из П213В
Ответить

Вернуться в «Статьи»