Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение dosikus »

HHIMERA писал(а):Не нужно сгущать краски...


Не..., пора аватар Ди вешать в рамочку и молиться, молиться ... Заодно и бубном постучать... :)))
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

Всем привет. Приобрел LCD 16x2 с данным контроллером. Перерыл весь интернет - не нашел кода на Atmel Studio, который просто выводит текст/переменную на экран.
Помогите, пожалуста. Максимально простую :)
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Gudd-Head »

tantrum писал(а):не нашел кода на Atmel Studio

Однако :)))
Обычно пишут или на АСМе, или на Сях.
А вы скурили что-то злое и пишите на Студии? :))) :facepalm:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Alexeyslav »

Максимально простое это надо Arduino смотреть.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ARV »

tantrum писал(а):Приобрел LCD 16x2 с данным контроллером. Перерыл весь интернет - не нашел кода на Atmel Studio, который просто выводит текст/переменную на экран.
Помогите, пожалуста. Максимально простую :)

самый простой код, который выводит текст на экран:

Код: Выделить всё

#include <avr/io.h>
#include "lcd_io.h"

int main(void){
   printf("HELLO, WORLD\nI like WinAVR!");
   return 0;
}
о том, как этого добиться, я написал небольшую статью: http://www.simple-devices.ru/articles/7 ... -interface

Alexeyslav писал(а):Максимально простое это надо Arduino смотреть.
вряд ли у ардуино будет проще :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

ARV

Спасибо большое! А синтаксис у WinAVR и Atmel Studio одинаковый?

Gudd-Head

Меня Atmel Studio устраивает.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Gudd-Head »

Подозреваю что вы всё-таки пишете на СИ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

Gudd-Head

Естественно.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Gudd-Head »

Так и надо было говорить, потому что в Студии можно писать и на АСМе.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение ARV »

tantrum писал(а):А синтаксис у WinAVR и Atmel Studio одинаковый?
6-я студия использует более свежую версию AVR-GCC, чем WinAVR. так как обычно свежее поддерживает все предыдущее, проблем быть не должно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

А не подскажете, как можно выводить русские буквы на дисплей?
Дисплей такой:
http://1.bp.blogspot.com/-JfBo6DWlSvM/U ... CD16x2.JPG
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение Gudd-Head »

А он вообще русифицирован (шрифты есть)?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

Я не знаю, честно говоря, впервые имею дело с LCD.
P.S. Я же не зря показал, какой у меня LCD :)
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

Если в дисплей прошита таблица русских символов - просто код нужного символа выводить. Учитывая, что для более плотной упаковки символов в таблице обычно есть только те русские символы, у которых нет латинских аналогов с таким же начертанием. Т.е. вместо русской "А" нужно печатать латинскую "A" и т.д. Впрочем, некоторые индикаторы российского производства имеют более привычные таблицы символов, типа той же cp1251.

Если же символов нужных нет - можно сгенерировать до 8-ми пользовательских.

P.S. В цикле от 0 до 255 тупым перебором выведите все символы, узнаете - русифицирован или нет. Я похожие видел, использовал (видео) - там кириллицы не было, генерировал нужное "на лету".
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

WiseLord писал(а):Если в дисплей прошита таблица русских символов

Как это узнать?
WiseLord писал(а):Если же символов нужных нет - можно сгенерировать до 8-ми пользовательских.

Можно поподробнее, пожалуйста?
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

В даташите на hd44780/ks0066 всё расписано.
Если в двух словах - объяснять, то как-то так:
- В дисплей можно послать байт команды (rs=0) или байт данных (rs=1). Соответственно, посылая в цикле данные от 0 до 255 можно перебрать всю таблицу символов. Естественно, каждый раз позиционируя курсор в нужное место (например, в точку 0, 0) чтобы не "печатать" мимо экрана.
- Вся память в дисплее делится на 2 области - область памяти DDRAM (ОЗУ для хранения текста) и область CGRAM (ОЗУ для пользовательских символов):
Записать в CGRAM = послать команду 0b01xxxxxx, где xxxxxx - адрес (от 0 до 63, т.е. всего 64 бита = 8 байт)
Записать в DDRAM = послать команду 0b1xxxxxxx, где xxxxxxx - адрес (от 0 до 127).

Таким образом, чтобы записать в дисплей нужно:
1. Установить курсор в нужную строку и столбец (т.е. задать некий адрес в DDRAM). Т.е. дать команду (rs = 0) 0b1xxxxxxx.
2. Записать нужный байт данных по таблице символов (т.е. некое число в диапазоне 0..255, при rs = 1).

При этом первые 8 таких чисел (0..7) берутся не из таблицы символов, зашитой на производстве методом масочного ПЗУ, а из области CGRAM.
Каждому этому числу соответствует 8 байт CGRAM, в которых, если смотреть на двоичное представление чисел, и нарисован символ.

Вот, например, как я формирую массив с русскими буквами:

Дальше в коде я записываю этот массив (64 байта) в область CGRAM, и могу, например, русские слова выводить как последовательный вывод байтов:
УЛИЦА => 0x00, 0x01, 0x02, 0x03, 'A'
БАТАРЕЯ => 0x04, 'A', 'T', 'A', 'P', 'E', 0x05
САЛОН => 'C', 'A', 0x01, 'O', 'H'

Для понятности, разберём русскую букву "Я":

0x0F, 0x11, 0x11, 0x0F, 0x05, 0x09, 0x11, 0x00

В двоичном виде это:

0b01111
0b10001
0b10001
0b01111
0b00101
0b01001
0b10001
0b00000

Буква вполне просматривается.
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

Спасибо, но, честно говоря, не все понял.
Можно в виде кода (просто вывести хотябы одно русское слово на дисплей)?
P.S.
WiseLord писал(а):Буква вполне просматривается.

Ухты, точно :shock:
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение WiseLord »

Вот пример с моей библиотекой и примером генерации русских символов. Там же и файл для Proteus.
Вложения
testcg.zip
(33.3 КБ) 197 скачиваний
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

Ой-ой-ой как все запутано. Еще и протеус отказывается "воспроизводить" схему.
Аватара пользователя
tantrum
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Сб фев 09, 2013 11:39:13
Откуда: Украина, Марганец

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах

Сообщение tantrum »

А еще: не подскажете, как выводить переменную на символьный lcd?
Типа как на графический
Lcd_printf (0,0,FONT_1X,((readADC(0)*2.56*(15/2.56))/1023),2);
Ответить

Вернуться в «Периферия»