Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблема с LCD
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Zolten
Проверял на 3-х LCD все фирмы Winstar на контроллере KS 0066.
Всё остальное работает отлично, а на ЖКИ одни квадратики.
Соединение перепроверил раз 10,пробовал компилировать в 3 разных версиях CVAVRа
уже даже не знаю что и делать crying.gif .
Может у кого нибуть были такие проблемы.
Зарание спасибо!
wodya
Скорее всего проблема в инициализации. Этот вопрос уже обсуждался не так давно.
Zolten
LCD полностью исправные, проверил МЭЛТовской утилитой.
притом в симуляторе всё ОК, а на железе квадратики на верхней строке.
и еще если отключить R/W то контроллер виснит на строке записи в LCD.
Может ктонибуть подскажет как правильно в CVAVR инициализировать дисплей.
ALexx
Цитата(Zolten @ Sep 14 2007, 07:29) *
Может ктонибуть подскажет как правильно в CVAVR инициализировать дисплей.


Если пользуетесь встроенными в КодВижн функциями, то в хелпе есть даже пример использования Обратите внимание на схему подключения ЖКИ, представленную там же:
Код
The LCD module must be connected to the port bits as follows:
[LCD]            [AVR Port]
RS (pin4) ------     bit 0
RD (pin 5) ------    bit 1
EN (pin 6) ------    bit 2
DB4 (pin 11) ---    bit 4
DB5 (pin 12) ---    bit 5
DB6 (pin 13) ---    bit 6
DB7 (pin 14) ---    bit 7


Если пишете свои функции работы с ЖКИ, то инициализация в соответствии с требованиями датащита (отправка определенных кодов, выдержка определенных времянок и т.д.)
У меня, например, успешно работает такой кусок кода:

Код
/*******************************************************************************
* Function Name  : Lcd_DisplayInit
* Description    : Инициализация ЖКИ
*******************************************************************************/
void LCD_DisplayInit(void){
// Далее следует код, который изменять не рекомендуется!!!
    pLCD_SetPortOut();
    conLCD_OUT.EN_BIT=0; conLCD_DIR.EN_BIT=1;
    conLCD_OUT.RS_BIT=0; conLCD_DIR.RS_BIT=1;
#ifdef RW_WORK
    conLCD_OUT.RW_BIT=0; conLCD_DIR.RW_BIT=1;    
#endif      

    delay_us(2);
    #ifdef DBUS8
        pLCD_OUT=0x30;
    #else  
        pLCD_OUT=(pLCD_OUT&0x0f)|0x20;
    #endif
    EN=1; delay_us(2); EN=0; delay_us(1500);  
    #ifdef DBUS8
        pLCD_OUT=0x30;
    #else
        pLCD_OUT=(pLCD_OUT&0x0f)|0x20;
    #endif
    EN=1; delay_us(2); EN=0;
    delay_us(1500);  //  ~1.5 мс

#ifdef DBUS8
    #if (NUMBER_OF_LINES >=2)
        LCD_WriteByte(COMMAND, FUNCTION_SET | BUS_8BIT | TWO_LINES | CHAR_5_8);
    #else
        LCD_WriteByte(COMMAND, FUNCTION_SET | BUS_8BIT | ONE_LINE | CHAR_5_8);
    #endif
#else
    #if (NUMBER_OF_LINES >=2)
        LCD_WriteByte(COMMAND, FUNCTION_SET | BUS_4BIT | TWO_LINES | CHAR_5_8);
    #else
        LCD_WriteByte(COMMAND, FUNCTION_SET | BUS_4BIT | ONE_LINE | CHAR_5_8);
    #endif
#endif

  LCD_WriteByte(COMMAND, DISP_ON_OFF | DIS_ON | UNDER_ON | BLINK_ON);
  LCD_WriteByte(COMMAND, ENTRY_MODE | CURS_INC | DIS_SHIFT_DIS);
  LCD_WriteByte(COMMAND, CLEAR);     
  LCD_WriteByte(COMMAND, GO_HOME);
}


После его выполнения экран очищается, появляется мигающий курсор и дисплей готов к работе.
backa
Цитата(Zolten @ Sep 13 2007, 09:29) *
Проверял на 3-х LCD все фирмы Winstar на контроллере KS 0066.
Всё остальное работает отлично, а на ЖКИ одни квадратики.
Соединение перепроверил раз 10,пробовал компилировать в 3 разных версиях CVAVRа
уже даже не знаю что и делать crying.gif .
Может у кого нибуть были такие проблемы.
Зарание спасибо!

не много не в тему :
имеется LCD на KS0065B - не знаю какая распиновка и какой у него протокол (раньше работал с HD44700) . Может есть какие-то доки - поделитесь smile.gif ...
Zolten
Цитата(ALexx @ Sep 14 2007, 10:54) *
Если пользуетесь встроенными в КодВижн функциями, то в хелпе есть даже пример использования Обратите внимание на схему подключения ЖКИ, представленную там же:
Код
The LCD module must be connected to the port bits as follows:
[LCD]            [AVR Port]
RS (pin4) ------     bit 0
RD (pin 5) ------    bit 1
EN (pin 6) ------    bit 2
DB4 (pin 11) ---    bit 4
DB5 (pin 12) ---    bit 5
DB6 (pin 13) ---    bit 6
DB7 (pin 14) ---    bit 7


Пользуюсь именно встроенными функциями.
Соединение проверил вроде правильно.
только у жки DB0-DB3 не подключены(так и должно быть?).
Zolten
Всем спасибо за помошь!
Тема похоже закрыта.
Оказалось ЖКИ сидел на PORTC,
переставил на PORTB и все заработало!
толко непонятно что с портом С.
smk
Цитата
толко непонятно что с портом С.

Все с ним хорошо. С следующий раз при запуске мастера обращайте внимание на порт или выбирайте сами из его менбю.
DiMomite
А на порту С, наверно, JTAG включенный оставили
Zolten
Цитата(DiMomite @ Sep 14 2007, 18:32) *
А на порту С, наверно, JTAG включенный оставили

Да вы правы, про него какраз то и забыл.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.