1. Естествено, че може да се чете. Примерно може да искаш да знаеш състоянието на дисплея, или да разбереш позицията на курсора, или да прочетеш кода на съответния символ.
2. Не
3. Да, стандартни ANSI 8-битови символи
4. Не, защото самият процес нулира всяка точка от дисплея и той се командва от контролера, вграден в дисплея.
5. В графичния да.... ако го накараш :lol: Тоест, това си е твое задължение да измислиш алгоритъма
6. Чрез крачето RS. 0V за инструкции, високо ниво за данни (Umax; 1ца)
Ето алгоритми за текстово LCD -
Така се инициализира:
1. Изчакваш над 30 ms, за да се зареди дисплея.
2. Избираш регистъра за инструкции, т.е. ниско ниво на RS
3. Избираш колко голяма да ти е магистралата - 4 бита или 8 бита, като ипращаш съответния код (погледни в описанието инструкцията "Function Set". Това ти позволява да използваш само горните 4 крачета (DB4-DB7), или всички. Допълнително, ако използваш всички, можеш да зададеш големината на символите и броя редове, ако не, изпращаш само горните 4 бита.
4. Изчакваш над 5 ms
5. Крачето Е го даваш на високо ниво за 1 us и после го връщаш на ниско.
6. Изчакваш над 160 us
7. Повтаряш 5
8. Повтаряш 6
9. Изпращаш инструкцията "Function Set" отново, ако си избрал 4-битов вариан, като този път изпращаш и долните 4 бита, чрез специална подпрограма.
10. Изпращаш инструкцията "Display ON/OFF Control", като D,C и B са 0
11. Изпращаш инструкцияата "Clear Display"
12. Повтаряш 4
13. Изпращаш "Display ON/OFF Control", като D е 1, а другите ти си избираш
Подпрограма за изпращане на инструкция:
Ако си във 8-битов режим:
0. Избираш изпращане на данни, като подаваш 0 на R/W
1. Вкарваш данните на DB0-DB7
2. Избираш регистъра за инструкции (0 на RS)
3. Даваш Е на високо ниво за 1 us, после го връщаш 0
4. Чакаш 50 us(5ms за изчистващата инструкция)
4.1 Опционално, може периодично да проверяваш Busy флага, вместо да чакаш, като използваш подпрограма за четене на данни. 1 означава, че дисплея е зает, 0 - свободен.
Ако си във 4-битов режим:
0. Избираш изпращане на данни, като подаваш 0 на R/W
1. Избираш регистъра за инструкции (0 на RS)
2. Вкарваш горните 4 бита на DB4-DB7
3. Извършваш далаверата с Е отново
4. Вкарваш долните 4 бита на DB4-DB7
5. Повтаряш 3
6. Чакаш 50 us(5ms за изчистващата инструкция)
Подпрограмата за изпращане на данни е същата като тази за инструкциите, с тази разлика, че RS = 1
Подпрограмата за четене на иструкции(и Busy флага)
8-битов вариант
0. Избираш четене на данни, R/W = 1
1. RS = 0
2. Пак даваш сигнал на Е
3. Четеш данните на DB0-DB7
4-битов
0. Избираш четене на данни, R/W = 1
1. RS = 0
2. Пак даваш сигнал на Е
3. Четеш долните 4 бита от датата на DB4-DB7
4. Повтаряш 2
5. Четеш горните 4 бита от датата на DB4-DB7
Подпрограмата за четене на данни е същата, само RS = 1
По-късно ще напиша алгоритъм и за графичния.