Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Подключение LCD 16x2 на шину данных к 8051+EEPROM (Bascom).

Вс ноя 12, 2017 18:42:34

В интернете почти ничего не нашел по этой теме. Потратил несколько дней.
Своих знаний не хватает.
Есть стандартный дисплей 16х2 типа 1602 итд.
Есть камень 80С51 (80С52) совместимый + 27С512 через защелку 74HC573 ( плата от старой кассы).
Куда подключать D0-D7 вроде как понятно. А вот куда RS,E, RW - НУ СОВСЕМ НИКАК((.
В Bascom предлагается вот такой код:
Код:
Config Lcd = 16 * 2
Config Lcdbus = 8
$lcd = &HC000                                                 'writing to this address will make the E line of the LCD high
$lcdrs = &H8000
Lcd "Hello world"
End


Что это за адреса? Откуда они берутся??? Как в итоге подключить дисплей, чтобы он отображал текст?


Схема из протеуса прилагается.

Может быть кто-то сталкивался?


http://img.radiokot.ru/files/96376/medium/1ff79ar2ib.jpg

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вс ноя 12, 2017 18:50:49

В справке все есть. https://8051help.mcselec.com/configlcdpin.htm

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вс ноя 12, 2017 18:52:49

Это метод PIN. А мне нужен метод BUS - 8 бит на общей шине данных.

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вс ноя 12, 2017 20:04:43

.. Что это за адреса? Откуда они берутся ? ..
Это адреса, записанные шестнадцатиричными цифрами, а поелику по четыре hex-цифры, то определены 16бит адреса .
Они берутся из текста программы, который Вы изволили привести. ( в тексте они появляются при наборе оного программистом )

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

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вс ноя 12, 2017 20:19:29

Ну да, записываю в двоичном виде. Запись в порт происходит на заданные выходы. На что цеплять 3 сигнала?

Вот, что в описании:
The address where must be written to, to enable the LCD display.

The db0-db7 lines of the LCD must be connected to the datelines D0-D7.

The RS line of the LCD must be connected to the address line A0.

$lcd = &HA000 'writing to this address will make the E line of the LCD high.

Cls

Lcd "Hello world"

End

RS дисплея я соединяю с 39 контактом МК (AD0).
Далее, разбираем число A000 - 1010000000000000

Сигнал E дисплея соединяю с сигналом A15 (ну или A13, судя по адресу A000??)

RW - GND.

Результат - ноль.

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вс ноя 12, 2017 20:50:42

.. RS дисплея я соединяю с 39 контактом МК (AD0).
..
.. Сигнал E дисплея соединяю с сигналом A15 (ну или A13, судя по адресу A000??)

RW - GND ..
А почему Вам показалось ,что так надо соединять ? :o :roll:
( У меня тоже есть трудности с пониманием аглицкой мовы, но я прогоняю через разные переводчики, далее пытаюсь понять на основании сопоставления с описаниями и.м.с. ,имеющихся в нормальном переводе и здравого смысла )
То есть Вы не поняли что такое енти самые "RS" , "E" и "RW" - так ?

.. Результат - ноль.
Неудивительно.
Хорошо, что не "волшебный дым" .

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вс ноя 12, 2017 20:59:02

The RS line of the LCD must be connected to the address line A0. Ну это из описания.
RW - GND. Как в варианте с 4 pin.
Установка адреса А000 поднимает сигнал Е на дисплее в высокий уровень.
Ну и я уже некоторые схемы посмотрел в гугле.
Откуда дым? Пока в симуляторе всё.
Да, куда их подключать? Хотя бы судя по официальному описанию.

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вс ноя 12, 2017 21:14:02

.. RS line of the LCD must be connected to the address line A0. Ну это из описания ..
Надо разобраться с линией RS
C "RW" всё ясно - в дисплейчик всегда только запись, никогда чтение не производится.
С "E" тоже ясно - для экономии на деширации берут A1510 и дисплейчик занимает верхние 32k адресного пространства в.п.д.
, но ( ! ) обязательно посмотрите в какой части в.п.п. Вы при этом подключили п.з.у. в.п.п.
( как правильно подключить п.з.у. в.п.п. посмотрите например вот там : digteh.ru/MCS51/pam_cntr.php -рис.1 )

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Пн ноя 13, 2017 02:28:02

В итоге вот это заработало:
E пришлось бросить на WR ( 16 нога МК). Методом тыка ((.
RS - нога 21 МК.
RW - GND

Config Lcd = 16 * 2
Config Lcdbus = 8
$lcd = &H8000 (что теперь делает эта команда, кроме как переводит в режим 8 бит??)
$lcdrs = &H0100 (это RS на А8 нога 21 МК)
Lcd "HELLO LCD"
End

По даташит с сигналом Е на адресной шине не заработало. Символы отображались через один или вообще произвольно из строки.



А если второй дисплей вешать, то им управлять через другой RS?


PS
Проверил в железе. Надпись выводится.
Жаль, что сигнал Е можно только так криво подключить... Странно, что по официальному описанию не заработало.

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вт ноя 14, 2017 01:25:54

.. Методом тыка ..
..
.. Жаль, что сигнал Е можно только так криво подключить ..
Жаль другое - что "метод тыка" без попыток осознать что и к чему и без изучения "матчасти" .

А сигнал "Е" можно не только "так криво" - можно и правильно.
Но для этого п.з.у. в.п.п. надо сначала правильно подключить ( как - уже сказал где посмотреть, да почитайте что такое сигнал "PSEN" и зачем он нужен. )
Сигнал "RS" Вы подключили на младший бит старшего байта адреса , то есть на бит№8 - таким образом дисплейчик занял все нечётные 256-и-байтные блоки адресного пространства в.п.д.

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Вт ноя 14, 2017 03:57:40

Подключено вот так, как на скриншоте.
Это почти копия подключения платы от кассы. Может оно и не правильно...
Только там Е подключен на 15 ногу МК. И это, видимо, совсем нереально сделать.
PSEN как по Вашей ссылке подключен.

Изображение

Больше, чем это я не понимаю. А по описанию из Bascom с сигналом Е не получилось.

По описанию работы сигналов LCD, сигнал Е, вообще имеет низкий уровень изначально.
В то же время сигнал WR ( который в качестве Е и от которого LCD заработало) имеет изначально высокий уровень. Это мне тоже не понятно.
Или вот, например, захотел я сделать управление LCD своими средствами... а как записывать в порт P0 свои данные, когда этот порт постоянно общается с ПЗУ? Простая запись в порт типа P0=&Bxxxxxxxx + доп сигналы (RS,E) с других портов ничего не дает. Во время подачи этих сигналов на шине уже не то, что я там выставляю.

===
Попытался понять еще раз про сигнал PSEN. Есть подозрение, что в одном случае адресное пространство задается как все сразу, которое есть, а в другом случае ровно столько, сколько занимает программа в ПЗУ и дальше адреса свободны.
В коммутации второй вариант это PSEN на 20 и 22 ногу ПЗУ одновременно?
В симуляторе это ничего не дало. Цифры 1234567890 печатаются, как и раньше 13579, если Е висит на А15.
Судя по схемам сигнал PSEN подключается на 22 ногу ПЗУ и все. А что с ним еще можно сделать?

Re: Подключение LCD 16x2 на шину данных к 8051+EEPROM (Basco

Чт ноя 16, 2017 19:47:35

Цитата из книги про BASCOM Кулиша М.Л.
"Линия «E» индикатора подключается через инвертор к линии процессора «Wr»(P3.6). Линия «RS» подключается к формирователю адреса A0 (регистру, защелкиваемому сигналом ALE). Линия «RW» индикатора заземляется, т.к. чтение из индикатора не производится"

Значит, решение в BASCOM может быть только таким.
Правда вот сигнал Е работает и без инвертора. Проверил в железе.
Осталось непонятным, можно ли повесить на шину еще что-то? Например, еще одну 8 битную защелку в качестве порта.
Ведь при каждой записи WR индикатор может ловить мусор с шины.
Ответить