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

 
 
> Пример кода для atmega328 + LCD
POLL
сообщение Dec 15 2011, 12:33
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-06-11
Пользователь №: 65 640



Добрый день!

Подскажите, пожалуйста, простой пример кода на Си по работе с текстовым экраном 16*2, в 4bit режиме.

Соединения:
DB4 -> PORTB0
DB5 -> PORTB1
DB6 -> PORTB2
DB7 -> PORTB3

RS -> PORTB4
R/W -> PORTB5

Enable -> PORTD7


Перерыл в сети кучу примеров - ну все с ошибками в коде, у кого #define F_CPU не прописан, у кого синтаксические ошибки...
Делаю все в AVR Studio. Собственно, для OLED индикатора WEH001602 пишу инициализацию, пока ни в какую, то вроде зафурычит, а потом хоп и погаснет или выведет не на той строке или ни в том месте или закарючки пойдут...

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Dec 15 2011, 17:22
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Вот тут http://www.cqham.ru/forum/showthread.php?t=9688 лежит проект, в котором я победил проблемы WEH02002. Файл HD44780.C
НА мой взгляд, проблема вот в чём:
При подключени по 4-м битам надо обеспечить корректное переключение в 4 бита и после включения питания (легко) и после ресета процессора (делается трюком из трёх команд, которые переводят в 8 бит, потом обратно в 4).
Так вот - этот трюк с WEH* (с его контроллером) не проходит, так как в ранее игнорировавшихся битах младшего байта команды теперь другая информация. Как я с этим разобрался - смотрите в исходник. Коротко - по 4-х битному интерфейсу устанавливаю позицию курсора, а потом считываю её (ненулевая и с разными старшим/младшим нибблами). Если считалось - индикатор в 4-х битном режиме и ничего делать не надо. Если не считалось - инициализируем.
Правда, есть ещё состояния, когда процессор сбросили в момент чтения первого из двух нибблов статуса - но это я не проверял (да и иделаьнее решить ключём в питании индикатора).
Или перейти на SPI интерфейс - с WEH это можно сделать.
http://www.cqham.ru/forum/showthread.php?t=18954

Сообщение отредактировал Genadi Zawidowski - Dec 15 2011, 17:32
Go to the top of the page
 
+Quote Post
POLL
сообщение Dec 15 2011, 19:50
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 300
Регистрация: 11-06-11
Пользователь №: 65 640



Цитата(Genadi Zawidowski @ Dec 15 2011, 21:22) *
Вот тут http://www.cqham.ru/forum/showthread.php?t=9688 лежит проект, в котором я победил проблемы WEH02002. Файл HD44780.C
НА мой взгляд, проблема вот в чём...



У этих дисплеев на контроллере WS0010 немного другая инициализация в 4битном режиме.
Цитата
Repeated procedures for an 4-bit bus interface
Noise causing transfer mismatch between the four upper and lower bits can be corrected by a reset triggered by consecutively writing a ”0000” instruction five times. The next transfer starts from the lower four bits and then first instruction ”Function set” can be executed normally.
Please insert the synchronization function in the head of procedures. The repeated procedures are show as follows


Т.е. после включения питания нужно выждать 500ms и затем послать 5 раз ”0000” и уже затем делать ”Function Set” ...
Об этом написано в самом конце даташита на WS0010

Сообщение отредактировал POLL - Dec 15 2011, 19:52
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:34
Рейтинг@Mail.ru


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