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

 
 
> Управление LCD дисплеем с помощью ПЛИС, Как правильно написать программу на VHDL для LCD
Aleksandr_KPI
сообщение Mar 29 2010, 15:08
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Здравствуйте. Мне нужно написать программу на VHDL которая бы управляла дисплеем SC1602B. Я не могу найти толковой документации на него (datasheet на 2 страницы!!!), посоветовали читать описание HD44780U, правильно ли это?

Что касается программирования то, правильно ли я понял что порт RS при логическом 0 переводит дисплей в режим приема команд (к примеру сдвиг курсора), а при лог 1 считывает с 8 разрядной шины код требуемой буквы?
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 58)
Kuzmi4
сообщение Mar 29 2010, 15:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Цитата
посоветовали читать описание HD44780U, правильно ли это?

Вопрос 1:
Смотрим
http://microelect.net/lcd/charact/SC1602B.pdf
page 2 of 7
Цитата
Built-in Controller HD44780 or Comp


Вопрос 2:
там же, страница 3 laughing.gif
Go to the top of the page
 
+Quote Post
silverio
сообщение Mar 30 2010, 16:52
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 14-06-09
Из: Киев
Пользователь №: 50 273



Пример есть здесь: http://www.fpga4fun.com/
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Mar 31 2010, 06:20
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Пример есть здесь: http://www.fpga4fun.com/


На примере плохо видно, но я так понимаю что в ПЛИС входит тактовая частота из вне, ее задают счетчиком из микроконтроллера?
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Mar 31 2010, 06:44
Сообщение #5


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

Группа: Свой
Сообщений: 1 329
Регистрация: 6-12-08
Из: Москва
Пользователь №: 42 252



Цитата(Aleksandr_KPI @ Mar 31 2010, 10:20) *
На примере плохо видно, но я так понимаю что в ПЛИС входит тактовая частота из вне, ее задают счетчиком из микроконтроллера?

Нет, там применен внешний кварцевый генератор на 1.8432MHz для создания baud клока 115200.
И также вариант деления внешних 2 МГц до 115200

Сообщение отредактировал yakub_EZ - Mar 31 2010, 06:53
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Mar 31 2010, 07:05
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



А задать такти из МК все же можно? У меня в схеме кварцевый генератор подключен к микроконтроллеру, а последний к ПЛИС. Плата уже произведена, поэтому переделать не выйдет.

Сообщение отредактировал Aleksandr_KPI - Mar 31 2010, 07:06
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Mar 31 2010, 09:05
Сообщение #7


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

Группа: Свой
Сообщений: 1 329
Регистрация: 6-12-08
Из: Москва
Пользователь №: 42 252



Можно. Только не понимаю зачем такт от генератора подавать на МК, а потом в ПЛИС?
Подавайте сразу такт на ПЛИС, там делите до нужного. На страничке http://www.fpga4fun.com/SerialInterface2.html это нерусски расписано.
Какая у вас ПЛИС?
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Mar 31 2010, 09:16
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Можно. Только не понимаю зачем такт от генератора подавать на МК, а потом в ПЛИС?


Дало в том, что плата уже произведена и ее надо прошить. ПЛИС XC2S50 PQ208.

Я просто интересовался нельзя ли как нибуть обойти использование МК, так как не желаю его програмить, но поскольку кварц подключен только к нему, то выбора нет.
Go to the top of the page
 
+Quote Post
yakub_EZ
сообщение Mar 31 2010, 13:26
Сообщение #9


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

Группа: Свой
Сообщений: 1 329
Регистрация: 6-12-08
Из: Москва
Пользователь №: 42 252



Хм.. А что собственно ожидается от обоих кристаллов? Отправлять информацию на ЖК можно как с помощью ПЛИС, так и с МК. Для самостоятельного управления ЖКИ от ПЛИС ей необходим клок для выдержки временных интервалов на обработку информации контроллером ЖКИ дисплея. Если в проекте планировалась передача данных между МК и ПЛИС, то должны были заложить в идею передачу клока.
Увидев здесь ссылку на fpga4fun, думал что на ПЛИС вы столкнёте задачу приема по UART и распаковки информации c МК
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Mar 31 2010, 13:51
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Если в проекте планировалась передача данных между МК и ПЛИС, то должны были заложить в идею передачу клока


Электрическую схему составлял не я, мне нужно написать программу для отображения вводимых команд на дисплее. Передача данных между МК и ПЛИС заложена и еще какая: 2 8-разрядные шины адреса и данных (они так подписаны) + еще одна 8 разрядная шина. С МК в ПЛИС идет сигнал SYSCLK, наверное это и есть "заложенной идеей клока". Вообще чем дальше я разбираю схему тем меньше понимаю предназначение МК (особенно такого большого около 98 ног!!!!).

Да, есть еще 2 сигнала идущих от МК к ПЛИС: DONE и PROG, по них МК должен инициализировать ПЛИС?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Mar 31 2010, 14:28
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Aleksandr_KPI
какой контроллер ? какая шина ? как именно клокается плиска относительно шины ?.....
телепаты в отпуске в обсчем
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Mar 31 2010, 14:50
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Контроллер C8051F020.

Цитата
как именно клокается плиска относительно шины ?


Извините нашел на схеме входной порт под 56 МГц который поступает на ПЛИС, так что вариант что ПЛИС через МК тактируется отпала.

На приведенной схеме выделил сигналы которые не могу понять. Все что зеленым то шины, а желтым некий синхроимпульс от ПЛИС к МК или наоборот, при этом все что мне нужно для программирования дисплея заведено на ПЛИС. Зачем нужен МК?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Mar 31 2010, 15:11
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 Aleksandr_KPI

С того что смог понять и протелепатировать - плиска юзается как отображатель поступаемой инфы на LCD.
Данные (видимо) в плиску попадают по Cygnal-овскому EMIF-у. Так же (видимо) сушествуют оповещательные стробы о стадиях/окончании операции записи в ЖК-контроллер.

Исходя из всего вышеперечисленного выдолжны сделать такие действия:
разобраться в стробах, написать Cygnal-овский EMIF со стороны спартана, написать ЖК-контроллер для LCD, совместить это всё.
И по идее оно должно заработать rolleyes.gif (жалко что нет клока эмифовского, заведённого в плису, там нужно будет повозиться с синхронизацией read-а и write-а чтоб гонки и другую каку отбросить)
А лучше спросите схемотехника, который разрабатывал эту схему - как он всё это видит (избавите себя от многих вопросов laughing.gif ).
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 1 2010, 10:38
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Да, есть еще 2 сигнала идущих от МК к ПЛИС: DONE и PROG, по них МК должен инициализировать ПЛИС?
Не только по ним, должны быть еще. Судя по всему ПЛИС загружается с МК, так что программу для МК все равно придется писать smile.gif
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 2 2010, 11:39
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Не только по ним, должны быть еще. Судя по всему ПЛИС загружается с МК, так что программу для МК все равно придется писать


Я не первый раз слышу о загрузке ПЛИС с МК но никак не понимаю что имеется ввиду. У ПЛИС есть своя тактовая частота, память, контроль загрузки прошивки из PROM, она сама по себе может функционировать, что загружает МК какие данные.

При написании программы возник вопрос: как правильно организовать опрос регистров SN74HC573. Замысел таков:

Код
for i in 1 to 5 loop -- регистров 5 поэтому применяем цикл до 5
        
X_RD_KEY <= rol "00001" i;  -- это не правильно (компилятор ругается), X_RD_KEY - шина сигналов разрешающих запись в 5 регистров.  
        
F_D <= X_D; -- из шины считываю данные с выбранного регистра.

numb:= numb + 1; --счетчик итераций
        
exit when F_D'event


Сообщение отредактировал Aleksandr_KPI - Apr 2 2010, 11:40
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 2 2010, 14:20
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Apr 2 2010, 15:39) *
У ПЛИС есть своя тактовая частота, память, контроль загрузки прошивки из PROM,
У нее нет встроенного PROM'а. Если на плате предусмотрен внешний для ее загрузки, то МК может в этом участия не принимать
Цитата
При написании программы возник вопрос:
Ой. Сейчас начнется smile3046.gif На VHDL пишут не программу, а описывают аппаратуру. А ПЛИС это не микропроцессор (она программу выполнять не может), а программируемая и конфигурируемая схема.

Цитата
как правильно организовать опрос регистров SN74HC573. Замысел таков:
Замысел неправильный - вам надо организовать счетчик и дешифратор. Ваш for развернется в 5 последовательных операторов присваивания, сработает только последний.

Посмотрите примеры в встроенном хелпе ISE (в library guide) и почитайте какой нибудь букварь по проектированию схем на HDL
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 5 2010, 18:14
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
У нее нет встроенного PROM'а. Если на плате предусмотрен внешний для ее загрузки, то МК может в этом участия не принимать

Да, на плате присутствует в виде отдельной микросхемы PROM Xilinx.


Цитата
Замысел неправильный - вам надо организовать счетчик и дешифратор. Ваш for развернется в 5 последовательных операторов присваивания, сработает только последний.

Посмотрите примеры в встроенном хелпе ISE (в library guide) и почитайте какой нибудь букварь по проектированию схем на HDL


Спасибо. Пошел читать про организацию счетчиков и дешифраторов на VHDL.
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 6 2010, 22:04
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



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


Цитата
for i in 1 to 5 loop

case i is

when 1 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 1);
when 2 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 2);
when 3 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 3);
when 4 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 4);
when 5 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 5);

end case;

exit when (F_D'event and F_D /= "00000000") ;

end loop;


Такой код выдает ошибку что оператор SHIFT_LEFT не может быть употреблен в данном контексте. F_RD_KEY и X_RD_KEY имеют тип unsignet.
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Apr 6 2010, 22:42
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Так ничего и не понял - что требуется? Что делает МК и что делает ПЛИС? Может вам вообще как-нибудь Picoblaze примострячить? Попробовать поркдить с помощью него дисплеем. Потом додумать, как с МК сопрячься. А то и подход у вас все-таки больше программистский. Всякие loop-ы в VHDL - это зло, ИМХО. Кроме случаев структурного описания.
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 6 2010, 23:08
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Так ничего и не понял - что требуется?


Требуется написать программу для уже готовой платы с ПЛИС, МК, дисплеем и 40 кнопками на ней. Кнопки завязаны на 5 регистров (по 8 на каждом). Все регистры подключены к ПЛИС. С помощью кода выше хочу мониторить эти регистры на предмет нажатия кнопки. Не знал что loop это зло. В литературе читал о циклах, там о них только хорошее пишут, ни о каких ограничениях не говорилось.

Цитата
Может вам вообще как-нибудь Picoblaze примострячить


С Picoblaze не сталкивался, когда вникну смогу ответить.

Сообщение отредактировал Aleksandr_KPI - Apr 6 2010, 23:09
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 7 2010, 04:08
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Требуется написать программу для уже готовой платы с ПЛИС, МК, дисплеем и 40 кнопками на ней. Кнопки завязаны на 5 регистров (по 8 на каждом). Все регистры подключены к ПЛИС. С помощью кода выше хочу мониторить эти регистры на предмет нажатия кнопки.
Не влезет ваша программа в вашу ПЛИС crying.gif На VHDL это будет монстр огромных размеров.
Я думаю, что автор схемы расчитывал, что с кнопками и LCD будет работать МК, а ПЛИС будет не более чем расширителем портов для него.

Покажите, что уже написали - вам тут подробно раскажут, почему это работать не будет smile.gif

PS. Ваш loop не синтезируемый, компиляция не пройдет (даже если исправить SHIFT_LEFT)
PPS. Бросайте VHDL и берите Verilog. Там гораздо меньше писанины и все более прозрачно smile.gif
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 9 2010, 13:13
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Не влезет ваша программа в вашу ПЛИС crying.gif На VHDL это будет монстр огромных размеров.


А как это можно определить? У меня программа загружается с PROM XC18VO1SO20, а там память 1,048,576 бит.
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 9 2010, 15:58
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Apr 9 2010, 17:28) *
А как это можно определить?
Написать и попробовать синтезировать
Цитата
У меня программа загружается с PROM XC18VO1SO20, а там память 1,048,576 бит.
Ну и что? Возможности определяются вместимостью ПЛИС, а не размерами загрузочной ПЗУ.
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Apr 9 2010, 18:17
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(Aleksandr_KPI @ Apr 7 2010, 03:23) *
В литературе читал о циклах, там о них только хорошее пишут, ни о каких ограничениях не говорилось.

Ну и я из своего опыта ничего плохого про них сказать не могу, т.к. использую только при структурном описании. Однако нехорошее про них читал у Полякова "Языки VHDL и Verilog". Там приводился пример, когда при использовании цикла получалось очень нехорошо в плане аппаратных затрат. Учтите, что VHDL - это изначально язык для описания работы цифровых устройств и моделирования. Для синтеза (проектирования) используется подмножество языка. Так что какие-то конструкции вообще нельзя использовать, какие-то не желательно. И опять таки все зависит от самой программы синтеза. Как пример - сумматор/вычитатель. Два варианта vhdl-описания. Функционально одно и тоже. На выходе XST (программа синтеза в WebPack-е) - результаты синтеза по аппаратным затратам отличаются в два раза! В первом случае сумматор/вычитатель формируется из LUT, логики переноса и дополнительного элемента XOR из состава логической ячейки. Во втором случае - один сумматор + один вычитатель + мультиплексор на выходе. Так что кроме "общих" учебников по синтаксису дополнительно полистайте книги именно по теме проектирования на ПЛИС, правда все они на английском (путных книг на русском не попадалось).
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 10 2010, 04:48
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Учтите, что VHDL - это изначально язык для описания работы цифровых устройств и моделирования.
Я это ТС уже говорил, но похоже он это проигнорировал sad.gif У меня возникает нехорошее предчуствие, что он вообще не представляет, что такое ПЛИС huh.gif
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 8 2010, 13:07
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



1. Подскажите назначение сигнала E, микроконтроллера SC1602B. Прочитав datasheet я не понял, он применяется только в случае записи данных или команд тоже? Например при начальной установке микроконтроллера: выбор ширины шины, очистка экрана и.т.д.
2. В каком случае производится чтение данных из дисплея и для чего это нужно?
3. Минимальное время записи команд и записи данных, 230 ns ? Согласно datasheet : Enable Pulse Width -- High Level -- PWEH --230 ns.
4. У меня в шине применяется временное разделение, отрезок времени выделенный под дисплей составляет 1,9 мкс, этого мало?
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 8 2010, 17:51
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Sep 8 2010, 17:07) *
1. Подскажите назначение сигнала E, микроконтроллера SC1602B.

Насколько я помню это строб выбора контролера. Т.е. именно он определяет циклы записи и чтения регистров контролера
Цитата
Прочитав datasheet я не понял, он применяется только в случае записи данных или команд тоже? Например при начальной установке микроконтроллера: выбор ширины шины, очистка экрана и.т.д.
Всегда.
Цитата
2. В каком случае производится чтение данных из дисплея
Для проверки готовности дисплея к приему следующих команд и для чтения из ОЗУ контролера
Цитата
и для чего это нужно?
Нафиг не нужно
Цитата
3. Минимальное время записи команд и записи данных, 230 ns ? Согласно datasheet : Enable Pulse Width -- High Level -- PWEH --230 ns.
Это минимум, можно делать больше.
Цитата
4. У меня в шине применяется временное разделение, отрезок времени выделенный под дисплей составляет 1,9 мкс, этого мало?
Если E формируется там, где надо, то наверное должно хватить (нужно смотреть даташит на тему времен установок и удержания шин данных и адреса относительно E)

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 9 2010, 08:17
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Насколько я помню это строб выбора контролера. Т.е. именно он определяет циклы записи и чтения регистров контролера


Но ведь запись или чтение определяются сигналом R/W. Сигнал E (Enable) я так понимаю запускает выполнение команд отправленных по шине в дисплей. Судя по временной диаграмме (ниже), каждой команде или данным переданным по шине в дисплей должен соответствовать этот сигнал E c периодом не мение 500 ns и длительностью импульса не мение 250 ns. Тоесть каждая команда или переданные данные будут иметь длительность минимум 500 ns, а значит один переданный символ для дисплея так же будет 500 ns. Правильный ли ход мыслей?
Цитата
Цитата

Цитата

Цитата

2. В каком случае производится чтение данных из дисплея

Для проверки готовности дисплея к приему следующих команд и для чтения из ОЗУ контролера

и для чего это нужно?

Нафиг не нужно

Тоесть чтение можно не проводить, а просто посылать команды и данные в микроконтроллер с учетом требуемых временных параметров и дисплей будет работать корректно?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 9 2010, 08:32
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Sep 9 2010, 12:17) *
Но ведь запись или чтение определяются сигналом R/W.
НАПРАВЛЕНИЕ (т.е. выбор - чтение или запись) осуществляется сигналом R/W, а собственно сам цикл обмена (как чтения так и записи) запускается сигналом E
Цитата
Сигнал E (Enable) я так понимаю запускает выполнение команд отправленных по шине в дисплей.
Не совсем - он просто записывает (или читает) регистр контролера. Как результат записи может быть запущена команда.
Цитата
Судя по временной диаграмме (ниже), каждой команде или данным переданным по шине в дисплей должен соответствовать этот сигнал E c периодом не мение 500 ns и длительностью импульса не мение 250 ns. Тоесть каждая команда или переданные данные будут иметь длительность минимум 500 ns, а значит один переданный символ для дисплея так же будет 500 ns. Правильный ли ход мыслей?
Опять же не совсем. Это требуемые времянки именно для доступа к регистру. Запущенная в результате этого команда может занять гораздо больше времени. И в течении этого времени контролер будет игнорировать все записи и чтения в его регистры. Читаться будет только регистр состояния, и в нем будет валиден только бит BUSY.

Цитата
Тоесть чтение можно не проводить, а просто посылать команды и данные в микроконтроллер с учетом требуемых временных параметров и дисплей будет работать корректно?
Да. Только 'временные параметры' это не только 500ns по E, но и время выполнения команды (а это уже единицы ms)

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 9 2010, 09:02
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Опять же не совсем. Это требуемые времянки именно для доступа к регистру. Запущенная в результате этого команда может занять гораздо больше времени. И в течении этого времени контролер будет игнорировать все записи и чтения в его регистры. Читаться будет только регистр состояния, и в нем будет валиден только бит BUSY.


Сколько понадобится времени, чтобы вывести на дисплей слово : "Hallo". Выходит 5 букв по 500 нс на каждую, это 2,5 мкс?

Цитата
Да. Только 'временные параметры' это не только 500ns по E, но и время выполнения команды (а это уже единицы ms)


А как узнать время выполнения той или иной команды, к примеру очистка экрана. В datasheet я нашел упоминание о миллисекундах только в пункте оптические характеристики. Опять таки повторюсь, хотелось бы знать возможно ли управлять полноценно дисплеем если при временном разделении шины для этого выделено 1,9 мкс на период приблизительно 25 мкс.

Сообщение отредактировал Aleksandr_KPI - Sep 9 2010, 09:03
Прикрепленные файлы
Прикрепленный файл  Optical_Characteristics.bmp ( 1.62 мегабайт ) Кол-во скачиваний: 10
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 9 2010, 09:17
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Sep 9 2010, 13:02) *
Сколько понадобится времени, чтобы вывести на дисплей слово : "Hallo". Выходит 5 букв по 500 нс на каждую, это 2,5 мкс?
Нет. 41mks * 5 = 205mks. А в вашем случае 50mks*5 = 250mks

Цитата
А как узнать время выполнения той или иной команды, к примеру очистка экрана. В datasheet я нашел упоминание о миллисекундах только в пункте оптические характеристики.
Какой то не тот у вас DS. См. http://www.stanford.edu/class/ee281/handou...r_datasheet.pdf страницы 25 & 26

Цитата
Опять таки повторюсь, хотелось бы знать возможно ли управлять полноценно дисплеем если при временном разделении шины для этого выделено 1,9 мкс на период приблизительно 25 мкс.
Да.
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 10 2010, 09:06
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Спасибо за datasheet, очень толковый. Нашел в нем следующий пункт:

Цитата
Initializing by Internal Reset Circuit
An internal reset circuit automatically initializes the HD44780U when the power is turned on. The
following instructions are executed during the initialization. The busy flag (BF) is kept in the busy state
until the initialization ends (BF = 1). The busy state lasts for 10 ms after VCC rises to 4.5 V.

1. Display clear
2. Function set:
DL = 1; 8-bit interface data
N = 0; 1-line display
F = 0; 5 × 8 dot character font
3. Display on/off control:
D = 0; Display off
C = 0; Cursor off
B = 0; Blinking off
4. Entry mode set:
I/D = 1; Increment by 1
S = 0; No shift


Я так понимаю после подачи питания и перед началом записи кодов символов в DDRAM нужно выждать 10 ms и после этого питающее напряжение возрастет к 4.5 В ? А до этого оно сколько было?
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 10 2010, 09:25
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Я так понимаю после подачи питания и перед началом записи кодов символов в DDRAM нужно выждать 10 ms и после этого питающее напряжение возрастет к 4.5 В ?
Нет. ПОСЛЕ подачи питающего напряжения (после подьема Vcc до 4.5В минимум), контролер будет инициализироваться в течении 10ms. В течении этого времени BF будет держаться в 1, а писать в него (контролер) ничего не нужно (да и бесполезно - он все будет игнорировать)

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 10 2010, 09:46
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Ну я почти это и имел ввиду, только напутал с 4,5В. Выходит, что бы вывести слово Hello нужно в моем случае 10ms + 50mks*5 = 250mks?
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 10 2010, 10:54
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Sep 10 2010, 13:46) *
Ну я почти это и имел ввиду, только напутал с 4,5В. Выходит, что бы вывести слово Hello нужно в моем случае 10ms + 50mks*5 = 250mks?
Нет. После 10ms инициализации самого контролера ему еще надо скормить последовательность команд для установки режима работы (4/8 бит) и начального состояния (см. в том же DS). И только потом можно будет выводить Hello

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 29 2010, 13:50
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
После 10ms инициализации самого контролера ему еще надо скормить последовательность команд для установки режима работы (4/8 бит) и начального состояния (см. в том же DS). И только потом можно будет выводить Hello


Все так и сделал. Сначала подождал 10 мс, потом последовательно подал команды: 2 строки дисплея, 8 разрядная шина (00111000); включить дисплей (00001110); инкремент адреса и сдвиг курсора в право (00000110). Судя по datasheet у меня должен появится курсор на экране, но его нет. Ниже привожу временную диаграмму работы программы.


Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 29 2010, 16:28
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Sep 29 2010, 17:50) *
Все так и сделал. Сначала подождал 10 мс, потом последовательно подал команды: 2 строки дисплея, 8 разрядная шина (00111000); включить дисплей (00001110); инкремент адреса и сдвиг курсора в право (00000110). Судя по datasheet у меня должен появится курсор на экране, но его нет. Ниже привожу временную диаграмму работы программы.
Насколько видно по диаграмме вы сделали только одну запись в LCD (сигнал x_lcd_en формирует только один импульс). Если за пределами окна там были еще импульсы, проверьте, что интервал между ними не меньше минимального по DS

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 29 2010, 19:02
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



На диаграмме я показал только один импульс x_lcd_en но на самом деле их три, для каждого из кодов, а период даже больше требуемого (требуемый 41 мс). Попробую подать непрерывно один из кодов и посмотреть осциллографом доходит ли он до дисплея.
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 30 2010, 08:50
Сообщение #39


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Проверил все сигналы, все нормально. Может есть какой способ проверки дисплея на пригодность, а то он вообще молчит, хотя бы курсор вывел. sad.gif
Go to the top of the page
 
+Quote Post
Corvus
сообщение Sep 30 2010, 09:34
Сообщение #40


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



ЕМНИП, на дисплее есть пин, отвечающий за контрастность. Как он у вас подключён?
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 30 2010, 10:17
Сообщение #41


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



А как это может повлиять на правильную работу дисплея?

Сообщение отредактировал Aleksandr_KPI - Sep 30 2010, 10:17
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 30 2010, 10:42
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Sep 30 2010, 14:17) *
А как это может повлиять на правильную работу дисплея?
Ну например дисплей может вообще ничего не выводить rolleyes.gif Выкрутите переменный резистор в крайнюю левую позицию (что бы на V0 был GND)

Посмотрите последовательность инициализации на стр 46 DS. Там немного больше, чем 3 записи smile.gif
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 30 2010, 10:43
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



А в реальности, там поставили постоянный резистор на 10 КОм. Не думаю что это связано с резистором, на дисплей раньше уже выводили данные.

Посмотрел на страницу 46, она не сходится в плане инициализации со страницей 24. На 46 указано что инициализация длится 15 ms, а на 24 что 10 ms. Если 15 ms это правильно, то конечно контроллер ничего не будет выводить, так как команды поступают после 10 ms.

Сообщение отредактировал Aleksandr_KPI - Sep 30 2010, 11:04
Go to the top of the page
 
+Quote Post
FalloutMan
сообщение Sep 30 2010, 12:22
Сообщение #44


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 19-04-10
Из: Москва
Пользователь №: 56 743



 
Цитата(Aleksandr_KPI @ Sep 30 2010, 14:43) *
Посмотрел на страницу 46, она не сходится в плане инициализации со страницей 24. На 46 указано что инициализация длится 15 ms, а на 24 что 10 ms. Если 15 ms это правильно, то конечно контроллер ничего не будет выводить, так как команды поступают после 10 ms.

Есть такое дело, раньше тоже натыкался на такие вещи.В принцапе, если при инициализации Вы подождете чуть дольше при подаче очередной команды, то ничего страшного не случиться (благо для индикаторов такого типа скорость не критична).


Вот ссылка на документ компании МЭЛТ, отечественная фирма дерущая деньги за то что приделала память с рускими шрифтами. Но у них не плохо скомпонованна документация + великий могучий  biggrin.gif столь приятный нашему уху

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 30 2010, 12:46
Сообщение #45


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Есть такое дело, раньше тоже натыкался на такие вещи.В принцапе, если при инициализации Вы подождете чуть дольше при подаче очередной команды, то ничего страшного не случиться (благо для индикаторов такого типа скорость не критична).


Период подачи команд для дисплея у меня составляет около 58 us, а время под начальную инициализацию, увеличил до 15 мс так что я думаю здесь все нормально. За DS спасибо.
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 30 2010, 13:41
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
А в реальности, там поставили постоянный резистор на 10 КОм.
В реальности там нужно V0 замкнуть на землю, и не ставить никаких резисторов.
Кстати, куда именно там 'поставили постоянный резистор на 10 КОм'? Сдается мне, что именно из за этого и не работает

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 30 2010, 13:54
Сообщение #47


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Вот ссылка на документ компании МЭЛТ, отечественная фирма дерущая деньги за то что приделала память с рускими шрифтами. Но у них не плохо скомпонованна документация + великий могучий biggrin.gif столь приятный нашему уху


Чем больше я читаю тем больше вариантов "правильного" подключения дисплея появляется. Вот и тут время инициализации уже 20 мс ( а начинали с 10 мс) и зачем посли инициализации нужно трижды посылать один и тот же код. Насколько можно доверять такому DS?

P.S. После включения питания, курсор сам, по умолчанию, появится не должен?

Цитата
Кстати, куда именно там 'поставили постоянный резистор на 10 КОм'? Сдается мне, что именно из за этого и не работает


Извините за дезинформацию, все там правильно касательно контрастности и переменного резистора. То я не туда посмотрел. Только что крутил резистор, добился того что V0 = 0, результат по дисплею отрицательный, данных нет.

Сообщение отредактировал Aleksandr_KPI - Sep 30 2010, 13:48
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 30 2010, 16:06
Сообщение #48


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



РАЗОБРАЛСЯ. smile.gif Проблема таки была с контрастностью. Если посадить V0 на землю, то получалось что все пиксели становились черными и цифр не было видно, пришлось покрутить резистор в сторону увеличения напряжения на V0 и цифры появились (крутить от нуля). Всем спасибо.
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Oct 14 2010, 07:53
Сообщение #49


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Подскажите, какие языки присутствуют в дисплее SC1602BSLB_SH_HB_R, буквы HB обозначают: hitachi / English-European, но я кроме английского и китайских иероглифов не могу добиться больше ничего. Заглянул в DS на микроконтроллер, ввожу коды для русских букв, а он выводит все те же китайские иероглифы. Как работать с русским шрифтом?
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 14 2010, 09:10
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Oct 14 2010, 11:53) *
Подскажите, какие языки присутствуют в дисплее SC1602BSLB_SH_HB_R,
Вы же сами и ответили
Цитата
буквы HB обозначают: hitachi / English-European
Английские буквы и разные умляуты
Цитата
, но я кроме английского и китайских иероглифов не могу добиться больше ничего.
Вам повезло - не должно быть там иероглифов. И Русских букв быть не должно
Цитата
Заглянул в DS на микроконтроллер, ввожу коды для русских букв, а он выводит все те же китайские иероглифы. Как работать с русским шрифтом?
Сменить LCD на другой, с другими буквами в конце
Цитата
Заглянул в DS на микроконтроллер,
Там перечисленны ВСЕ возможные таблицы знакогенератора. В конкретном экземпляре контролера зашита только одна конкретная таблица (и она не может быть изменена)

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Oct 14 2010, 09:17
Сообщение #51


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Английские буквы и разные умляуты


Я думал English-European подразумевает наличие русского языка. Почему тогда просто не написать что есть только English.
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 14 2010, 10:35
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Oct 14 2010, 13:17) *
Я думал English-European подразумевает наличие русского языка.
Никоим образом. Русский язык указывается явно
Цитата
Почему тогда просто не написать что есть только English.
Не только English. Туда добавлено все не-English из немецкого и французкого (например). Именно поэтому он и European
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Oct 14 2010, 11:03
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Ясно, спасибо, значит Россия не Европа )))).
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 14 2010, 13:15
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Aleksandr_KPI @ Oct 14 2010, 15:17) *
Я думал English-European подразумевает наличие русского языка. Почему тогда просто не написать что есть только English.
Потому, что English - анлгийский язык, который основан на латинском алфавите и многие европейские языки тоже используют латинский алфавит. А русский язык имеет свой собственный алфавит (кириллицу), в котором лишь часть символов совпадает с латинским алфавитом по начертанию.
Цитата(Aleksandr_KPI @ Oct 14 2010, 17:03) *
Ясно, спасибо, значит Россия не Европа )))).
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Oct 18 2010, 12:24
Сообщение #55


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Подскажите как обновить часть данных на дисплее. Например мне нужно оставить слово "frequency", но поменять цифры после него с 3 на 5 и оставить слово после них "MHz". Неужто нужно стирать весь экран полностью?
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 18 2010, 12:32
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Oct 18 2010, 16:24) *
Подскажите как обновить часть данных на дисплее. Например мне нужно оставить слово "frequency", но поменять цифры после него с 3 на 5 и оставить слово после них "MHz". Неужто нужно стирать весь экран полностью?
Нужно выдать команду на установку адреса RAM (см в DS), потом выдавать то, что нужно как обычно

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Oct 18 2010, 12:47
Сообщение #57


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Я так пробовал. Сначала я выдал по адресу "10000000" первых 8 букв (октава), а потом по этому же адресу при нажатой кнопке они должны заменится другой октавой букв, но перезаписать данные таки образом не получается, первая октава остается. Если адрес для другой октавы заменить на "11000000" (вторая строка), то данные по нажатию клавиши там появляются.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Oct 18 2010, 12:57
Сообщение #58


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(Aleksandr_KPI @ Oct 18 2010, 16:47) *
Я так пробовал. Сначала я выдал по адресу "10000000" первых 8 букв (октава), а потом по этому же адресу при нажатой кнопке они должны заменится другой октавой букв, но перезаписать данные таки образом не получается, первая октава остается. Если адрес для другой октавы заменить на "11000000" (вторая строка), то данные по нажатию клавиши там появляются.

Ошибка в коде управления. Писать можно по любому адресу и это прекрасно работает, если соблюдаются необходимые задержки и нет ошибок в выдаче управляющих сигналов.
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Oct 18 2010, 14:20
Сообщение #59


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Спасибо, нашел ошибку в алгоритме и все заработало.
Go to the top of the page
 
+Quote Post

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

 


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


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