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

 
 
> Помогите разобраться с символьным ЖКИ, HD44780
Pavel V.
сообщение Feb 20 2007, 10:49
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 3-06-06
Пользователь №: 17 742



Уже второй день пытаюсь оживить символьный ЖКИ под IAR. До этого момента использовал CodeVision и встроенную в него библиотеку, которая всегда работала как часы.

С IAR пришлось разбираться второпях, до этого с ним дела не имел.

Нашел кучу исходников библиотек для работы с HD44780, но толком ни одна так и не заработала. Пришлось разбираться самому, в результате чего была создана некая компиляция из кусков разных библиотек.

Она даже заработала и стала выводить на дисплей данные. Но радость моя была недолгая - программа работает крайне нестабильно. То все нормально, то выводится куча левых символов без какой-либо закономерности.

С железом это никак не может быть связано - с CodeVision все работало хорошо.

Много игрался с задержками, думал из-за них, но они как будто не влияют на этот глюк.

К сообщению прицепляю код, помогите, пожалуйста, разобраться! Или, быть может, у кого-то есть готовая библиотека для работы с этими ЖКИ?

Контроллер - ATmega48, частота 1 МГц.

Сообщение отредактировал Pavel V. - Feb 20 2007, 10:52
Прикрепленные файлы
Прикрепленный файл  main.txt ( 303 байт ) Кол-во скачиваний: 105
Прикрепленный файл  lcd.txt ( 4.59 килобайт ) Кол-во скачиваний: 162
 


--------------------
Good News Everyone!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Pavel V.
сообщение Feb 20 2007, 20:11
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 3-06-06
Пользователь №: 17 742



Что-то никак не получается ничего..

prottoss, я и Ваш код пробовал, не работает почему-то. У меня вопрос - при подключении по 4-битной шине, куда именно должны на шину подключаться пины DB4,5,6,7?

У меня в железе вот какой расклад:

PORTD.0 - RS
PORTD.1 - R/W
PORTD.2 - E
PORTD.3
PORTD.4 - DB4
PORTD.5 - DB5
PORTD.6 - DB6
PORTD.7 - DB7

Не подскажете, как должны при этом выглядеть настройки?

У меня сейчас вот так:

// Шина данных
#define LCD_PORTDATA PORTD
#define LCD_PINDATA PIND
#define LCD_DDRDATA DDRD

// Порт управления
#define LCD_PORTCTRL PORTD
#define LCD_PINCCTRL PIND
#define LCD_DDRCTRL DDRD

// Линии управления LCD
#define LCD_wire_RS (1 << PD0)
#define LCD_wire_RW (1 << PD1)
#define LCD_wire_E (1 << PD2)
#define LCD_wire_BL (1 << PD3) // (BackLight)

Правильно? Или в программе подразумевается, что шина данных должна находиться на порту, отличном от порта с линиями управления?

UPDATE
Ура! Заработало! Подправил свой исходный текcт в соответствии с рекомендациями Сергея Борщ. Теперь все стабильно smile.gif Видимо, все-таки с задержками у меня какая-то фигня была. Приведу текст к более красивому виду и выложу, мало ли кому пригодится!

Теперь на повестке дня чтение данных из АЦП по SPI.

Сообщение отредактировал Pavel V. - Feb 20 2007, 20:33


--------------------
Good News Everyone!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:40
Рейтинг@Mail.ru


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