Символьный жки на базе контроллера hd44780

AVR Lab устройства на микроконтроллерах AVR

Форум по AVR

  • не работает программа из примера про пролистывания меню
  • sinaprog не работает
  • Пароль к архивам на сайте
  • Пароль
  • HDD и прерывания — доработка программы из статьи /node/220

Подключение HD44780 Работа с алфавитно-цифровым ЖКИ инициализация

  • atmega8
  • Attiny2313
  • avr
  • HD44780
  • LCD
  • WH1602A
  • ЖКИ
  • индикатор
  • инициализация

Работа с символьным ЖКИ на базе контроллера HD44780

Рассмотрим взаимодействие пользователя и устройства на базе микроконтроллера. Очень часто пользователю нужно чем-то вводить информацию, и с чего-то ее считывать. Для этих целей очень хорошо подходит клавиатура и дисплей (заметка про считывание клавиши).Рассмотрим взаимодействие пользователя и устройства на базе микроконтроллера. Очень часто пользователю нужно чем-то вводить информацию, и с чего-то ее считывать. Для этих целей очень хорошо подходит клавиатура и дисплей (заметка про считывание клавиши). В этой заметке рассмотрим поподробнее отображение информации на символьном ЖКИ со знакосинтезирующим контроллером HD44780.

Такие индикаторы часто используются при проектировании цифровых устройств, поэтому с ним необходимо уметь работать.
Рассмотрим типовое внутреннее строение знакосинтезирующего ЖКИ:

Внутренняя структура HD44780


В основе ЖКИ лежит матрица из жидких кристаллов, подавая напряжение на элемент которой мы можем «зажечь» точку на экране. В нашем случае матрица состоит из знакомест (чаще всего 8х5 пикселей), сгруппированых в несколько рядков. Этим всем управляет встроенный контроллер HD44780. У контроллера есть однобайтные ячейки памяти (DDRAM), содержимое которых собственно отображается на экране согласно таблице записанной в CGRAM. Ячеек памяти обычно больше чем знакомест в ЖКИ, поэтому адресацию знакомест нужно смотреть в даташите. То есть нам необходимо только в нужную позицию записать код нужного знака, а все остальное HD44780 сделает сам.

Для выбора позиции существует виртуальный курсор (номер текущей ячейки памяти, АС), которым можно управлять посредством команд, курсор можно сделать видимым. По умолчанию при записи символа в ячейку, курсор сдвигаеться вперед на одну позицию. Коды символов для ЖКИ поддерживающего кириллицу можно увидеть в таблице:

Старшая тетрада кода будет равна ряду выбранного символа, а младшая – строке. Можно создать свою таблицу символов, записав ее в CGRAM. На каждый символ требуется 5 байт, где единицы отвечают за «зажженные» пиксели. Например, цифра «8» кодируется последовательностью 0x6c,0x92,0x92,0x92,0x6c.
Коды команд приведены в таблице.

Таблица символов HD44780


Значения флагов:

Остается открытым вопрос: «как записать в нужную позицию код требуемого символа»? Для этого рассмотрим за что отвечают выводы ЖКИ. Выводы DB0-DB7 отвечают за входящие/исходящие данные. Высокий уровень на выводе RS дает индикатору понять, что сигнал на выводах DB0-DB7 является данными, а низкий – командой. Вывод W/R отвечает за направление данных, пишутся ли данные в память или читаются из нее (обычно чтение из ЖКИ не используется, можем смело на него подать низкий уровень). Импульс на выводе Е (длительностью не менее 500 нс) используется как сигнал для записи/чтения данных с выводов DB0-DB7, RS и W/R.

Вывод V0 используется для задания контраста изображения, вывода А,К – для питания подсветки (если она есть в вашей модели ЖКИ). Оставшиеся 2 вывода – собственно питание ЖКИ. То есть, для управления ЖКИ потребуется 8+1+1=10 выводов. Но можно работать в режиме 4-х битного интерфейса. При этом, сперва будет передавать старшая тетрада команды/данных на выводах DB4-DB7, а после – младшая. Выводы при DB0-DB3 при этом не используются. Итого для управления требуется 6 выводов микроконтроллера.
Теперь рассмотрим живой пример. Напишем программу для вывода текста «avrlab.com» на имеющийся у меня в наличии WH1602А (2 строки по 16 символов).

Для других ЖКИ следует сверить соответствие ячеек DDRAM знакоместам. Схема подключения ЖКИ к контроллеру выглядит так.

Схема подключения к микроконтроллеру AVR


Резистор R3 — 17 Ом ограничивает ток через подсветку, а переменный VR1 задает контраст (если все правильно подключено и запрограммировано, но индикатор молчит, покрутите VR1, чтобы изображения стало видимым). Также не в коем случае не следует путать полярность ЖКИ, питать его выше 5,5В, со своего опыта могу сказать, что горят они моментально. Назначение всех остальных деталей такое же как в макетной платы для ATtiny2313.
Теперь перейдем к написанию программы. Для контроля индикатора напишем программу с несколькими ключевыми функциями работы с ЖКИ: lcd_dat(unsigned char x) – для записи данных х, lcd_com(unsigned char x) – для записи команды х, lcd_init(void) – для начальной инициализации индикатора:

Программа очень проста, разобраться в ней не составит труда любому, кто хоть немного владеет C для AVR. Для латиницы и цифр ASCII коды совпадают с зашитыми в знакогенератор ЖКИ, поэтому позволительно использовать lcd_dat(‘A’). Можно создать свою библиотеку для работы с ЖКИ, выделив функции lcd_dat(unsigned char x), lcd_com(unsigned char x), lcd_init(void) в отдельный модуль LCD.h и подключать его за надобностью.

Эта затея очень экономит время, стоит только один раз написать нужные функции, а потом все время их только использовать. Также можно подметить, что неудобно выводить длинную фразу по одной букве, для этого можно нашу выводимую строку запихнуть в массив из unsigned char и выводить с помощью цикла:

Только не стоит забывать, что нумерация массивов в С начинается с нуля. Существующую программу можно без существенных изменений использовать совместно с контроллером ATtiny2313, подключив ЖКИ к PORTB, та как PORTD у ATtiny2313 имеет всего 7 выводов, а не 8, как у ATmega8.

Также советую подключать ЖКИ с помощью разъемных соединений. Очень удобно при отладке программы, когда нужно вывести некоторые промежуточные данные. Подсоединил один разъем и всего дела. В продолжение этой заметки в ближайшее время рассмотрю ввод с матричной клавиатуры 4х4 и отображение считанной информации на ЖКИ.
Всем хорошего дня 😉

есть маленький недочет в этом примере

есть маленький недочет в этом примере, возможно по этой причине у многих не работает пример!

вобщем пример лаконичен и прост, поэтому в глаза не бросается маленький недочет(тем кто ориентируется в языке «С»), и уж тем более тем кто только только знакомится с AVR и языком «С», возможно они даже недоумевают как так. пишут сделайте так и будет как на картинке. а не тут то было.

вобщем вся проблема с циклами задержки, для того чтоб дисплей поспевал за контроллером, а именно в функции-

//Программа формирвоания задержки

void pause (unsigned int a)

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

по крайней мере это справедливо для atmel studio 6.1, и в этом можно убедится просмотрем папку проэкта, там есть *.lss файл содержащий асемблерный код данной программы, генерируемы при сборке проекта. никакого намека на реализацию функции void pause.

в итоге при прошивке контроллера на дисплее получается случайный мусор или пустота. при нажатии несколько раз на ресет мусор может исчезать и вновь появлятся. явно на лицо расссинхронизация проца и экрана

а вот если сделать маленькую поправку

void pause (unsigned int a)

Читайте также  Стоимость фотоэлементов можно уменьшить благодаря использованию 3d-графена

. то для компилятора это обретает смысл, это так же подтверждается явным появлением реализации функции в асемблерном коде

:
6c: 9c 01 movw r18, r24
6e: 03 c0 rjmp .+6 ; 0x76

70: 00 00 nop
72: 21 50 subi r18, 0x01 ; 1
74: 31 09 sbc r19, r1
76: 21 15 cp r18, r1
78: 31 05 cpc r19, r1
7a: d1 f7 brne .-12 ; 0x70

и скорей всего все заработает. покрайней мере у меня на atmega16 (внутренняя RC синхронизация 1Mhz) и использовании atmel studio 6.1 было именно так. возможно на др частотах придется поигратся с константой #define TIME 10 и/или значениями передаваемыми функции void pause

вот здесь-> pause(значение) . или pause(значение*TIME) .

удачи в обучении управлению AVR!

Большое спасибо! Сам замечал

Большое спасибо! Сам замечал пару раз проблемы именно с паузами и циклам (я большие пацзы через циклы или через вложенные циклы делал).

Это потому что пример он дает

Это потому что пример он дает от себя, а в архиве лежит совсем другой проект))

модуляция в proteus

модулировал схему в протус результат 0
так же как и с GPS трекером
визуально отличный код, достаточно простой но в протеус не работает

То есть у тебя притензии

То есть у тебя притензии какие-то?
Или ты просишь помощи? Определись и от этого будет зависеть мой ответ.

вот мои исходники + протеус

все что смог закоментировал. думаю что разобраться будет не сложно!

bonus: даташит на контролер от хитачи

Может я что-то не понял а

Может я что-то не понял а может на работе стоит блокиратор рапидшары, но я совсем не ашел кнопки «Скачать»

Там кнопку Get Free запрятали

добавьте в htaccess для rar

добвьте строчку AddType «application/x-rar-compressed» .rar в .htaccess,
чтобы архивные файлы нормально загружались.

Если не сложно поясните плз.

I/D
S
S/C
R/L
Поясните плз. их смысл более подробно.

Смотри, представь что ЖКИ —

Смотри, представь что ЖКИ — пишущая машинка, бумага в машинке — память ЖКИ, каретка — указатель курсора. Кроме того ЖКИ на экран выводит не все содержимое памяти, а лишь часть. Вроде как некоторое окно, которое мы налаживаем на нашу бумагу с текстом.

Вот I/D задает как мы будем печатать, справа-налево или слева-направо.
S определяет, будем ли мы сдвигать окно экрана вслед за тем, как печатаем или нет.
S/C — просто смещает видимое окно экрана или каретку машинки.
R/L — уточняет куда (влево или вправо) мы будем сдвигать экран или курсов с помощью флага S/C.

Работаем с ЖКИ на контроллерах ks0066 и hd44780

Сегодня все чаще для отображения простой символьной информации используют символьные жидкокристаллические индикаторы ЖКИ. О том, как с ними работать мы и поговорим. В этой части статьи, мы детально рассмотрим символьные ЖКИ на базе контроллера HITACHI HD44780 (или совместимым с ним SAMSUNG KS0066). Статья — попытка систематизировать найденную мной информацию при работе с этими ЖКИ.

СОДЕРЖАНИЕ:
1. Символьный ЖКИ с контроллером HD44780 (KS0066). Интерфейс.
2. Набор команд контроллера HD44780.
3. Инициализация ЖКИ.

Символьный ЖКИ с контроллером HD44780 (KS0066). Интерфейс

Символьный ЖКИ есть ничем другим, как матрицей из точек, разделенной на строки и поля символов:

Для управления этой матрицей и вывода собственно символов используется специальный контроллер.

HD44780 (и совместимый с ним KS0066) – есть де-факто стандартом на контроллеры монохромных жидкокристаллических знакосинтезирующих дисплеев с параллельным 4-х или 8-битным интерфейсом. На базе этого контроллера выпускается огромное количество моделей с различным конструктивном и разрешением, начиная с 8×1 (восемь символов в одной строке), и заканчивая 40×4 (содержащих два независимых управляющих чипа). Типичная частота работы контроллера – 270 кГц.

Контролер ЖКИ оперирует 3-мя блоками памяти:

1. Для вывода символа контроллер использует память DDRAM (Display Data RAM), где хранятся ASCII-коды символов, которые мы хотим видеть на ЖКИ. Под нее отведено 80 ячеек памяти. Понятно, что на ЖКИ мы увидим лишь часть символов, которые находятся в DDRAM — если наш ЖКИ 1 или 2-строчный и отображает 8 символов в строке, то так:

Рабочую область дисплея, как видно, можно смещать по ячейкам DDRAM (получается эффект бегущей строки).

2. Шаблоны самих символов контроллер берет из CGROM (Character Generator ROM) – памяти знакогенератора. Таблицу символов можно посмотреть в спецификации на HD44780.

3. Для хранения пользовательских символов (их шаблонов) предусмотрена память CGRAM (Character Generator RAM).

Также, контроллер в зависимости от некоторых условий распределяет пришедшие в него данные в регистр инструкций или регистр данных.

Типичный 14-пиновый интерфейс контроллеров HD44780 :

1 Земля, общий провод, GND
2 Напряжение питания, Vcc (+5V)
3 Настройка контрастности (Vo)
4 Выбор регистра (R/S для HD44780, A0 для KS0066)
5 Чтение/запись (R/W)
6 Строб по спаду Е (Enable)
7 Bit 0 (младший для 8мибитного интерфейса)
Линия данных
8 DB 1
9 DB 2
10 DB 3
11 DB 4 (младший для 4х битного интерфейса)
12 DB 5
13 DB 6
14 DB 7 (старший для 8-х (4х) битного интерфейса)
Для дисплея с подсветкой
15 Питание подсветки для дисплеев с подсветкой (анод)
16 Питание подсветки для дисплеев с подсветкой (катод)

Нумерацию пинов на конкретном ЖКИ смотрим в datasheet.

Контрастность изображения на ЖКИ можно изменять, подключив дополнительно построечный резистор на 10 кОм по схеме:

Но, следует смотреть в спецификацию на свой контроллер (например у ЖКИ Klsn10294v-0 на чипе KS0066 1-Vcc, а 2-GND). Подача питания подсветки может различаться от модели к модели в зависимости от её типа. Обычно подсветка питается от 5 вольт, токоограничительный резистор (50-100 Ом) обычно не обязателен.

Назначение выводов R/S, R/W, E:

При переходе Е с высокого лог. уровня на низкий данные, которые уже «висят» на выводах DB0..DB7, записываются в память контроллера ЖКИ для последующей обработки.

При высоком лог. уровне на R/S(Register Select) контроллер ЖКИ воспринимает этот набор битов как данные(код символа), а при низком – как инструкцию и направляет их в соответствующий регистр.

R/W определяет направление работы выводов DB0..DB7 – если на R/W «0», то мы можем только писать в порт DB, а если R/W = «1», то можем прочитать с него (например узнать занят контроллер или свободен для приема новых данных). Если мы не будем читать данные из ЖКИ, то можно «посадить» R/W на землю.

Набор команд HD44780

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

I/D = 1: адрес DDRAM увеличивается I/D = 0: уменьшается
S = 1: сдвиг рабочей области дисплея по DDRAM разрешен
D = 1: дисплей (изображение) включен
C = 1: курсор включен
В = 1: мерцание курсора включено

S/C = 1: сдвинуть дисплей S/C = 0: переместить курсор
R/L = 1: вправо R/L = 0: влево

DL = 1: 8 bit DL = 0: 4 bits
N = 1: 2 lines N = 0: 1 line
F = 1: 5х10 F = 0: 5х8

ACG: CGRAM address
ADD: DDRAM address (адрес курсора)
AC: Address counter DD и CGRAM адресов

Инициализация ЖКИ

Есть 2 способа инициализации контроллера ЖКИ:

1. Через внутреннюю схему сброса.

2. В ручном режиме (через посылку в него ряда команд, которыми мы задаем режим работы ЖКИ)

Внутренняя схема сброса контроллера начинает работать сразу после включения питания. В этом есть один минус – если питание у нас «ползет» до рабочего уровня медленно (медленнее, чем за 10 мс), то самоинициализация контроллера может пройти некорректно. При этом способе инициализации контроллер сам исполняет следующие команды:

Читайте также  Питание ис шим контроллера и драйверов затвора стабилизированным напряжением

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

Второй способ исключает зависимость схемы от источника питания. Для инициализации контроллера ЖКИ в ручном режиме необходимо исполнить следующий алгоритм:

8-битный параллельный интерфейс.

4-битный параллельный интерфейс.

Как видно, здесь нет ничего сложного: посылаем в ЖКИ команду за командой, учитывая время их исполнения (около 40 мкс) или проверяя флаг занятости контроллера ЖКИ (тогда надо посадить пин RW на лапку микроконтроллера и выставлять его в «1», когда хотим узнать, занят ЖКИ или нет).

Жидкокристаллический символьный дисплей 0802 hd44780. Собираем ЛабБП часть 4

  • Цена: 4,49$ за два дисплея с доставкой
  • Перейти в магазин

Ого! Вот это некропост про некродисплей)

Да возможно это так и есть, но мне кажется, что для самодельного ампервольтметра этого вполне достаточно. Почему самодельный ампервольтметр? Ну во первых, захотелось сделать этот девайс самостоятельно, надеюсь это веская причина? 😉 Да, китайцы продают подобные устройства. Да цена их сопоставима или даже ниже. Но… Можно купить и готовый ЛабБП… Но это же не интересно и не «наш метод» ©

И так что же представляет собой этот дисплей? Данный дисплей работает на контроллере HD44780, и полностью совместим с более распространенными LCD1602, 2002 и 2004. Как видно из названия, имеет две строки по 8 символов.
Размеры платы всего 58х32 мм, тогда как у стандартного 1602 80х36 мм

Размер области цифр — 28х12 мм

Интерфейс, как и у всех HD44780, параллельный. 16 пинов идут в два ряда. Распиновка такая же как у 1602.

Порадовало, что на плате сразу установлен ограничивающий резистор для подсветки дисплея, потому можно на пины 15 и 16 подавать напряжения 5В.

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

Ток потребления индикатора — 0.5мА без подсветки и 15мА с подсветкой.

Что ж, попытаемся собрать ампервольтметр. Сразу даю ссылку на сайт где описано, как собирать, есть список деталей, печатная плата и прошивка для микроконтроллера… Желающие повторить проект могут все скачать оттуда напрямую…
Приведу лишь схему

Все детали (микросхемы и дисплей) заказаны были из Китая… Только микросхему LM358 нужно купить не китайскую, или выпаять с какой-нибудь платы… Только тогда амперметр без нагрузки будет показывать нулевые значения. Если без нагрузки дисплей показывается какие то цифры, то меняйте LM358…

Шунт я сделал самостоятельно из трех жил нихрома. Сопротивление шунта 0.017 Ом. Для точного измерения сопротивления использовался самодельный миллиомметр.

Не буду долго тянуть, вот такая получилась плата

Со стороны печатных проводников

Везде где только можно я впаял 6 танталовых конденсаторов 10мкФ*16В, вместо рекомендуемого автором электролита 100мкФ. Думаю емкости вполне достаточно.
В сборе с дисплеем…

Делаем первое включение:

Вроде все нормально, но с прогревом LM358 вместо нулевых значений тока, появились некоторые значения отличные от нуля, а значит, с первого раза не повезло, нужно подбирать микросхему.
А пока откалибровал вольтметр. Показывает на удивление очень точно, точнее некоторых китайских щитовых вольтметров… Результаты смотрите на серии фотографий:

Остальные фото под спойлером:



Перебрал штук 15 микросхем LM358 купленных в разных магазинах, заказанных с Али… Стабильных нулевых показаний амперметра без нагрузки нет… Наконец нашел нужную микросхему на старой материнской плате. Впаял… Нулевые показания встали как «вкопанные»… Выдержал 30 минут, дрейфа нулевых показаний нет…

Начинаем тестировать амперметр. К сожалению, под рукой был только блок питания с максимальным током 1.2А. Буду тестировать на нем.
Выставляем максимальный ток в цепи. И подстроечным резистором подгоняем показания под условно «образцовый» амперметр.

Затем уменьшаем ток до 1А

Пол ампера

Выставляем ток в 100мА

Отключаем нагрузку

Предварительные выводы: вроде как получился неплохой приборчик… Окончательно будет понятно, когда буду измерять ток выше 3А. Если линейность во всем диапазоне измерения будет нормальная, то можно использовать данную самоделку в качестве ампервольтметра.
На этом всё… Всем мира и добра…

Технические статьи

Работа микроконтроллера AVR с алфавитно-цифровым ЖКИ на базе
контроллера HD44780 и совместимых (KS0066U, ST7066, SPLC780 и т. п.)

Электрические характеристики ЖКИ
(кратко)

Стандартная разводка выводов
1 GND Общий провод
2 Vcc Питание, +5 В
3 Vo Питание драйверов ЖК-панели
4 RS Выбор регистра
5 R/W' Чтение/запись’
6 E Строб записи, в модулях 40*4 – строб первого контроллера
7 .. 14 DB0 .. DB7 Данные 0 .. 7
15 Анод подсветки/E (не всегда имеется и не всегда подключен, в модулях 40*4 – строб второго контроллера)

При работе на прием порт данных контроллера представляет собой КМОП вход с Р-МОП «подвеской» к Vcc, при передаче – КМОП выход, переходит Линии управления RS (выбор регистра – данные/команды’) представляют собой КМОП входы «подвеской» Линия управления Enable (разрешение) представляют собой КМОП вход. Входные уровни нагрузочная способность порта

Потребление по цепи питания контроллера (+5В) – около 0.6 мА (макс.). ЖКИ, рассчитанные на работу в расширенном температурном диапазоне требуют отрицательного напряжения питания для драйверов индикатора (вывод N3). При его отсутствии (вывод N3 соединен с N1) либо будет отсутствовать изображение, либо оно будет недостаточно контрастным.

Потребление по цепи питания драйверов (при -2 В) – 0.5 мА (измерено на одном образце PC1602LRS-LEH-H).
Дальнейшие подробности смотрите в фирменной технической документации на контроллеры (Hitachi, HD44780 и др.).

В пределе, монопольного управления требует только линия Enable. Это видно, например, из фирменной документации на модули где выводы RS, R/W' двух контроллеров (каждому контроллеру соединены параллельно модуля. при низком уровне можно производить обмен устройствами, имеющими вход разрешения (перевода выводов Например, микроконтроллера ATmega128, ATmega162 или AT90USB128x можно параллельно подключить ЖКИ их пространство

Некоторые программные особенности
контроллеров ЖКИ

С точки зрения программиста контроллер представляет собой:
Регистр управления: при чтении – содержит флаг готовности контроллера к выполнению новой команды и значение счетчика адреса, при записи – принимает команды;
Регистр данных: для чтения/записи ОЗУ знакогенератора и видеопамяти.

Информация, записанная в регистр команд, определяет режимы работы контроллера, записанная в регистр данных, перемещается в ОЗУ знакогенератора или видеопамять режимом работы контроллера.

Видеопамять организована как 2 строки по 40 символов, причем адрес начала 2-й строки не $27, а $40 (при последовательном заполнении видеопамяти счетчика адреса правильный перевод производится автоматически).

В «окне» дисплея отображается часть видеопамяти соответствующего размера, поэтому, на мой взгляд, есть несколько наиболее удобных размеров модулей. Имеется ввиду возможность заполнить видеопамять несколькими сообщениями и показывать требуемое прокрутки дисплея относительно видеопамяти. нобходимо учитывать, что первые 8 отображаемых символов принадлежат первой строке видеопамяти, второй. Дальнейшие подробности смотрите технической документации

Возможные способы связи
микроконтроллеров с ЖКИ

ОТОБРАЖЕНИЕ НА АДРЕСНОЕ ПРОСТРАНСТВО ОЗУ

Данный способ связи микроконтроллеров с ЖКИ, примененный в устройствах ATSTK 200/300 (схема), имеет одно достоинство – простоту программной реализации обмена данными зрения объема исполняемого кода).

  • Работа с невысокой тактовой частотой контроллера
    (при использовании цикла доступа к ОЗУ с 1-м тактом ожидания – около 4 МГц макс., при уменьшении длительности строба ЖКИ до минимально ожидания
  • Уменьшение скорости обмена с внешним ОЗУ (при использовании тактов ожидания);
  • Часть адресного пространства внешнего ОЗУ перекрывается внутренним
    (в практической конструкции для предотвращения этого может быть использован инвертор на линии ADR15);
  • Возможность работы только с микроконтроллерами, допускающими использование внешнего ОЗУ.
Читайте также  Бистабильный сенсорный выключатель

Карта ОЗУ в данном случае (ATSTK 200/300) имеет вид (шестнадцатеричные адреса):

В диапазоне адресов от 0000 до RAMEND расположено внутреннее ОЗУ, включающее в себя:

  • Регистры общего назначения (0000 – 001F),
  • Регистры портов ввода/вывода (0020 – 005F),
  • Собственно внутреннее ОЗУ (0060 – RAMEND).

В диапазоне адресов от RAMEND+1 до 7FFF расположено внешнее ОЗУ 32К*8 (диапазон адресов внешнего ОЗУ от 0000 до RAMEND перекрыт

В диапазоне адресов от 8000 до ВFFF расположен регистр команд контроллера ЖКИ регистр команд, регистр состояния);

В диапазоне адресов от С000 до FFFF расположен регистр данных контроллера ЖКИ.

Временные диаграммы обмена данными имеют следующий вид:

В устройствах ATSTK 200/300 длительность сигнала Enable (t) составляет около 360 нС (минимально допустимая

ПОДКЛЮЧЕНИЕ К ПОРТАМ ВВОДА/ВЫВОДА МИКРОКОНТРОЛЛЕРА

Данный способ связи микроконтроллеров с ЖКИ имеет следующие достоинства:

Возможность работы с любыми микроконтроллерами на произвольной тактовой частоте. Для работы постоянно используются только 3 линии порта ввода/вывода (порт данных контроллера ЖКИ при отсутствии обмена находится управляющего микроконтроллера, через который осуществляется обмен данными, может быть использован усмотрению).

Больший объем исполняемого кода (может быть уменьшен при использовании внешней схемы, формирующей необходимые временные диаграммы обмена).

Описание тестовой программы

Программы (драйверы) служат примерами работы с ЖКИ, подключенными к портам ввода/вывода DIS.ASM (листинг) и отображенными на адресное пространство внешнего ОЗУ RAM_DIS.ASM (листинг)

Программы осуществляют инициализацию контроллера ЖКИ, вывод сообщений и прокрутку экрана. Для продвижения по программам (только для демонстрации) используется внешнее для завершения внешнее Подпрограммы данных, расположенные файлах DISPLAY.INC (листинг) и RAM_DIS.INC (листинг), рассчитаны ЖКИ обеспечивается наилучшая связность выводимой информации).

P. S. Данный пример написан с оглядкой на структуру языков высокого уровня и получился несколько усложненным. Если разбить код на несколько подпрограмм, более компактным (особенно, если чтение вместо
Следите за изменениями.

Символьный жки на базе контроллера hd44780

Документацию на индикаторы можно взять тут — http://www.melt.com.ru/shop/indikatory- . ry-19.html
Библиотека LCD HD44780 для PIC
Библиотека для HD44780 на ассемблере:
— 4- битное, гибкое подключение к любым портам, любых линий дисплея, при этом остальные пины порта никак не изменяются!,
— занимает мало памяти, даже очень мало,
— любая частота МК,
— для 1 и 2х строчных ЖКИ,
— чтение флага занятости реализовано,
— загрузка собственных 8 символов при компиляции (по необходимости).
— все исходники были для АВРСтудии 4.19
А также гибкая условная компиляция, т.е. если я не хочу читать флаг занятости, могу просто посадить ногу на землю, и не компилировать часть библиотеки, а также собственные символы можно тоже не компилировать.
З.Ы. Очень много комментариев в исходном коде и главный файл для АТТИНИ2313 с примером использования.

PS: Если у кого-нибудь будут полезные ссылки (на документацию, всякие примеры, библиотеки, ..) — пишите мне ( Alex ) в ЛС. Добавлю в этот пост.
Пишите также, если Вы найдёте в этой теме полезную информацию. Добавлю ссылки на эти посты.

Добрый вечер всем, а также поздравляю всех с Днем Святого Валентина!

Т.к сам только разбираюсь в програмировании микроконтроллеров посмотрел статью на этом сайте по подключению мелтовского LCD но т.к в наш город их почему то не завозят то приобрел LCD следующей марки WH1602D фирма Winstar

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

Вот справочная информация на него начальная инициализация отличается от мелтовского но циклы записи и чтения вроде совпадают
http://www.compel.ru/pdf/WINSTAR/WH1602D-YGB-CP.pdf

JLCPCB, всего $2 за прототип печатной платы! Цвет — любой!

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

Смотрю явно с таким дисплеем никто не работал и такую картину на нем не наблюдал при попытке вывести символы.

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

_________________
Настоящий кот всегда либо голоден,
либо невыспался .

При замене в современном автомобиле электромеханических реле на интеллектуальные силовые ключи PROFET производства Infineon необходимо учитывать особенности их коммутации по сравнению с «сухими контактами» реле, а также особенности управления с их помощью различными типами нагрузок.

пешы хоть что за сцылки, а то так и за спам можно принять Ржавый

_________________
Настоящий кот всегда либо голоден,
либо невыспался .

Вебинар посвящен проектированию и интеграции встроенных и внешних антенн Quectel для сотовых модемов, устройств навигации и передачи данных 2,4 ГГц. На вебинаре вы познакомитесь с продуктовой линейкой и способами решения проблем проектирования. В программе: выбор типа антенны; ключевые проблемы, влияющие на эффективность работы антенны; требования к сертификации ОТА; практическое измерение параметров антенн.

Спасибо за ссылки я по ним по весем уже ходил.

Странно как-то к первому сообщению прикрепил файл но он что-то не отображается.

_________________
Настоящий кот всегда либо голоден,
либо невыспался .

ну говори модератору, что у него логики нет, говори

писал бы лучше так:

сцылка по методам программирования ПЛИС. Форум.
реез://плис.ру/форум

это было бы не только понятно, но и народ мог бы определить — надо ли ему жрать траф по этой сцылке, будет ли она ему полезна и др.

_________________
путь наименьшего сопротивления проходит по пути наитолстого провода (с) Сергей Соболь

_________________
Настоящий кот всегда либо голоден,
либо невыспался .

переделал прошивку автора под свой индикатор следующим образом

Сам он вроде светиться но на экранчике вместо отображения числа 555 в верхней строке закрашены все 16 символов причем только у всех первые (верхние точки). Что может быть не как.

УФ РАЗОБРАЛСЯ НАКОНЕЦ В ЧЕМ БЫЛ КОСЯК С МОИМ ИНДИКАТОРОМ. Мысль на эту тему возникла еще утром когда ехал на работу. И сейчас точно по приходе с работы подтвердилась у меня на плате когда ставил разьемчик по припарке перепутал местами выходы DB6 и DB7 и осуда и шел косяк с выводом на индикацию когда пишешь 555 а он показывает 999 и вместо букв всякую крякозябру. После постановки правильно сигналов все заработало на ура. Причем даже не было необходимости подправлять авторскую (менять временные задержки) прошивку из статьи про подключение индикатора MT-16S2D она с этим индикатором WH1602D фирма Winstar работает великолепно. Так что можно смело использовать с такими параметрами и эти индикаторы тем более что цена у него очень человеческая покупал на нашем радорынке всего за 180 руб. Можете поверить в такую цену.

Буду продолжать дальше опыты с этим индикатором.

P.S Хотелось бы у автора статьи поинтересоваться сколько он оддал денег при покупке своего Мелтовского индикатора MT-16S2D. Просто очень интересно сравнить.

_________________
Настоящий кот всегда либо голоден,
либо невыспался .