Цитата(-TIM- @ Nov 16 2004, 20:54)
Можно ли использовать специальные выводы для управления LCD модулем (segment и com) в качестве универсальных портов ввода вывода? Т.е. управлять ими что то другое - например символьный LCD дисплей с встроенным контроллером.
По поводу использования выводов, предназначенных для LCD (а именно S0…S23 и COMx), могу сказать с уверенностью, что использовать их в качестве портов ВВОДА невозможно, а вот в качестве портов ВЫВОДА - наверное, можно, но сложно. Здесь надо помнить, что, скорее всего, их нагрузочная способность будет намного ниже, чем у обычных портов (LCD потребляет очень мало энергии, и выходы вместе с внутренними блоками рассчитаны именно на него). Я думаю, максимум, чего можно ожидать – это токи порядка микроампер против 25-40 мА у стандартных портов ввода-вывода. Однако, это можно выяснить в ходе эксперимента (у меня, к сожалению, образца этого процессора в настоящее время нет).
Для полноценной работы портов необходимо:
- во-первых, использовать статический режим LCD,а не мультиплексный;
- во-вторых, вывод R03 подключить к общему проводу;
- в-третьих, самое главное, для более или менее сложных задач придется все-таки поставить дополнительную микросхему – буфер (заодно решается и проблема выходного тока). Подойдет 1554ИР22 (74AC373). К ее стробирующему входу подключается сигнал COM0, а к остальным восьми входам – порты Sxx. Более надежно будет, если использовать микросхему 1554ИР23 (74АС374), срабатывающему по фронту сигнала, а не по уровню. Но в этом случае придется как-то формировать фазовый сдвиг – задержку сигнала с вывода COM0 по сравнению с сигналом на выводах Sxx; Если -TIM- в своей разработке использует 5-вольтовый символьный LCD с контроллером, то буфер следут запитать от 5 вольт, а MSP от 3В до 3,6В.
- и в-четвертых, загрузить сразу байт в сделанный таким образом порт вывода не удастся, поскольку память LCD-memory MSP использует по одному-двум битам из каждого своего байта для формирования уровня на выводах Sxx в статическом режиме. Поэтому придется писать подпрограмму, которая бы ваш байт побитно переписывала бы в LCD-memory. Кстати, будет легче, если, например, для вывода восьмибитного байта использовать сегменты S0, S2, …, S14, так как будут использоваться только нулевые биты LCD-memory.
Если кто-нибудь предложит способ проще - без буферной микросхемы, будет очень интересно почитать, а пока только такой.