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

 
 
> проблема с LCD, ATMega16, CVAVR
Zolten
сообщение Sep 13 2007, 06:29
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 2-07-07
Пользователь №: 28 844



Проверял на 3-х LCD все фирмы Winstar на контроллере KS 0066.
Всё остальное работает отлично, а на ЖКИ одни квадратики.
Соединение перепроверил раз 10,пробовал компилировать в 3 разных версиях CVAVRа
уже даже не знаю что и делать crying.gif .
Может у кого нибуть были такие проблемы.
Зарание спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zolten
сообщение Sep 14 2007, 04:29
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 2-07-07
Пользователь №: 28 844



LCD полностью исправные, проверил МЭЛТовской утилитой.
притом в симуляторе всё ОК, а на железе квадратики на верхней строке.
и еще если отключить R/W то контроллер виснит на строке записи в LCD.
Может ктонибуть подскажет как правильно в CVAVR инициализировать дисплей.
Go to the top of the page
 
+Quote Post
ALexx
сообщение Sep 14 2007, 06:54
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 22-09-04
Из: Burbach, Germany
Пользователь №: 704



Цитата(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);
}


После его выполнения экран очищается, появляется мигающий курсор и дисплей готов к работе.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 11:47
Рейтинг@Mail.ru


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