Главное поймать значение максимального контраста, но чтобы не было видно знакомест серый ореол из квадратов вокруг символа. Если же выставить слишком малый контраст, то символы будут переключаться лениво и задумчиво. Примерно как в калькуляторе у которого сели батарейки. А это вход Анода светодиодной подсветки. Короче плюс. К соответственно Катод, он же минус. Подсветка хавает примерно 1. А и поэтому нужно выставить туда токоограничительный резистор на 1. HTB1F9JzQVXXXXccXpXXq6xXFXXXA/109622331/HTB1F9JzQVXXXXccXpXXq6xXFXXXA.jpg' alt='At90s8515 Datasheet На Русском' title='At90s8515 Datasheet На Русском' />Ом. Кстати, многие ЖК дисплеи имеют на плате пятачки для припайки резисторов. Если прозвонить, то можно убедиться в том, что эти линии ведут на входы питания LCD, поэтому, впаяв резисторы, можно не заморачиваться на запитку подстветки, она будет подключена к питанию контроллера. Логическая структура LCD контроллера HD4. Контроллер имеет свой блок управления, который обрабатывает команды и память. Она делится на три вида DDRAM память дисплея. Все что запишется в DDRAM будет выведено на экран. То есть, например, записали мы туда код 0x. Civilization 5 Чит На Золото. ASCII код цифры 1. Некоторые микроконтроллеры AVR например AT90S4414, AT90S8515. Здесь мы ограничим описание только функциями, уникальными для STK500. Сводное описание изменений в новых микроконтроллерах. Практические. Сводном описании замен на русском языке, www. Но есть тут одна особенность DDRAM память гораздо больше чем видимая область экрана. Как правило, DDRAM содержит 8. То есть, например, можно засунуть в DDRAM сразу пять пунктов меню, а потом просто гонять дисплей туда сюда, показывая по одному пункту. Для перемещения дисплея есть спец команда. Также есть понятие курсора это место в которое будет записан следующий символ, т. Курсор не обязательно может быть на экране, он может располагаться и за экраном или быть отключен вовсе. CGROM таблица символов. Когда мы записываем в ячейку DDRAM байт, то из таблицы берется символ и рисуется на экране. CGROM нельзя изменить, поэтому важно, чтобы она имела на борту русские буквы. Если, конечно, планируется русскоязычный интерфейс. CGRAM тоже таблица символов, но ее мы можем менять, создавая свои символы. Адресуется она линейно, то есть вначале идет 8 байт одного символа, построчно, снизу вверх один бит равен одной точке на экране. Потом второй символ тем же макаром. Поскольку знакоместо у нас 5 на 8 точек, то старшие три бита роли не играют. Всего в CGRAM может быть 8 символов, соответственно CGRAM имеет 6. Эти программируемые символы имеют коды от 0х. Так что, закинув, например, в первые 8 байт. CGRAM первый символ с кодом 0. DDRAM нуль код первого символа в CGRAM мы увидим на экране нашу хрень. Доступ к памяти. Тут все просто. Мы командой выбираем в какую именно память и начиная с какого адреса будем писать. А потом просто шлем байты. Если указано, что записываем в DDRAM то на экран или в скрытую область полезут символы, если в CGRAM то байты полезут уже в память знакогенератора. Главное потом не забыть переключится обратно на область DDRAMСистема команд. Система команд проста как мычание. О том, что передается команда контроллеру дисплея сообщит нога RS0. Сама команда состоит из старшего бита, определяющего за что отвечает данная команда и битов параметров, указывающих контроллеру HD4. Таблица команд DB7. DB6. DB5. DB4. DB3. DB2. DB1. DB0. Значение. Очистка экрана. Счетчик адреса на 0 позицию DDRAM0. Адресация на DDRAM сброс сдвигов, Счетчик адреса на 0. IDSНастройка сдвига экрана и курсора. DCBНастройка режима отображения. SCRLСдвиг курсора или экрана, в зависимости от битов. DLNFВыбор числа линий, ширины шины и размера символа. AGAGAGAGAGAGПереключить адресацию на SGRAM и задать адрес в SGRAM1. ADADADADADADADПереключить адресацию на DDRAM и задать адрес в DDRAMТеперь поясню что значат отдельные биты ID инкремент или декремент счетчика адреса. По дефолту стоит 0 Декремент. Если поставить 1 будет Инкремент. S сдвиг экрана, если поставить 1 то с каждым новым символом будет сдвигаться окно экрана, пока не достигнет конца DDRAM, наверное удобно будет когда выводишь на экран здоровенную строку, на все 4. D включить дисплей. Если поставить туда 0 то изображение исчезнет, а мы в это время можем в видеопамяти творить всякие непотребства и они не будут мозолить глаза. А чтобы картинка появилась в эту позицию надо записать 1. С включить курсор в виде прочерка. Все просто, записали сюда 1 включился курсор. B сделать курсор в виде мигающего черного квадрата. SC сдвиг курсора или экрана. Если стоит 0, то сдвигается курсор. Если 1, то экран. По одному разу за команду RL определяет направление сдвига курсора и экрана. DL бит определяющий ширину шины данных. N число строк. 0 одна строка, 1 две строки. F размер символа 0 5х. AG адрес в памяти CGRAM АD адрес в памяти DDRAM Я сам долго тупил в эту табличку, пытаясь понять, что же от меня хотят. Видимо был невыспавшийся, но и вправду, она на первый взгляд не очевидна, поэтому подкреплю все примером. Задача Включить дисплей. Очистить содержимое. Сдвинуть курсор на одну позицию. И записать туда 1. Решение последовательность команд Первым делом Инициализация дисплея без которой большая часть дисплеев на HD4. Некоторые виды имеют дефолтные состояние шина 8 бит, курсор в 0 и им только дисплей включить. Но все же ее лучше сделать, мало ли что там намудрил разработчик. Лишней не будет. 0. Шина 8 бит, 2 строки. Очистка экрана. 00. Инкремент адреса. Экран не движется. Включили дисплей D1 0. Очистили дисплей. Указатель встал на DDRAM 0. Сдвинули курсор SC0 вправо RL1 0. RS1 код 1 0х. Жирным шрифтом выделен идентификатор команды, ну а остальное по таблице увидите. Задача создать свой символ. С кодом 0. 1 и вывести его на экран. Считаем, что дисплей у нас уже инициализирован и готов к приему данных. Решение 0. 10. 01. Выбираем в CGRAM адрес 0х. Это пошли 8 байт данных. Старшие три бита не действуют 0. Туда можно писать что угодно, на 0. Последний байт данных 1. А это уже команда переключение адреса на DDRAM и указатель на адрес 0. И снова данные RS1, код 0. Опа и он на экранеТак, с логикой разобрались, пора вкуривать в физику протокола общения. Код я приведу несколько позже, когда вылижу свою библиотеку и заоптимизирую до состояния идеала. Пока же дам алгоритм, а его уж на любом языке программирования реализовать можно. Хоть на ассемблере, хоть на Сях, да хоть на Васике Алгоритм чтениязаписи в LCD контроллер HD4.