- •Курсовой проект
- •Структурная схема
- •Выбор компонентов Анализ заданной микросхемы ad7495
- •Выбор микроконтроллера
- •Выбор жки экрана
- •Для реализации проекта понадобятся следующие устройства:
- •Принципиальная электрическая схема Пояснения к электрической схеме
- •О бщий алгоритм работы
- •Усреднение
- •Интерфейс spi
- •Листинг программы
- •Заключение
- •Список литературы
Выбор жки экрана
|
Видимая и скрытая область экранной памяти |
|
Структура адресации контроллера HD44780 |
|
Формирование символа в ячейке CGRAM |
Подключение.
LCD на базе HD44780 подключается к AVR микроконтроллеру напрямую к портам. Есть два способа подключения — на 8 бит и на 4 бита. В восьми- битном режиме немножко проще закладывать байты — не нужно сдвигать байт, зато в четырех битном резко нужно тратить на целых четыре ножки контроллера меньше. Есть еще одна особенность работы в 8- битном режиме — к некоторым контроллерам можно подключить этот дисплей как внешнее ОЗУ и засылать данные простыми командами пересылки. Я выбрал подключение в 8- битном режиме.
Выводы DB7…DB0 это шина данных/адреса.
E — стробирующий вход. Стробом напряжения на этой линии мы даем понять дисплею что нужно забирать/отдавать данные с/на шину данных.
RW — определяет в каком направлении у нас движутся данные. Если 1 — то на чтение из дисплея, если 0 то на запись в дисплей.
RS — определяет что передается, команда (RS=0) или данные (RS=1). Данные будут записаны в память по текущему адресу, а команда исполнена контроллером.
GND — шина нулевого потенциала.
Vcc — напряжение питания, обычно 5 В
V0 — вход контрастности. Сюда нужно подавать напряжение от нуля до напряжения питания, тем самым задается контрастность изображения. Можно поставить переменный резистор, включенный потенциометром.
Логическая структура LCD контроллера HD44780.
Контроллер имеет свой блок управления, который обрабатывает команды и память. Она делится на три вида:
DDRAM — память дисплея. Все что запишется в DDRAM будет выведено на экран. То есть, например, записали мы туда код 0x31 — на экране выскочит символ «1» т.к. 0х31 это ASCII код цифры 1. Но есть тут одна особенность — DDRAM память гораздо больше чем видимая область экрана. Как правило, DDRAM содержит 80 ячеек — 40 в первой строке и 40 во второй, а на дисплей может двигаться по этой линейке как окошко на логарифмической линейке, высвечивая видимую область. То есть, например, можно записать в DDRAM сразу пять пунктов меню, а потом просто перелистывать дисплей туда сюда, показывая по одному пункту. Для перемещения дисплея есть спец команда. Также есть понятие курсора — это место в которое будет записан следующий символ, т.е. текущее значение счетчика адреса. Курсор не обязательно может быть на экране, он может располагаться и за экраном или быть отключен вовсе.
CGROM — таблица символов. Когда мы записываем в ячейку DDRAM байт, то из таблицы берется символ и рисуется на экране. CGROM нельзя изменить, поэтому важно, чтобы она поддерживала русские буквы. Если, конечно, планируется русскоязычный интерфейс.
CGRAM — тоже таблица символов, но ее мы можем менять, создавая свои символы. Адресуется она линейно, то есть вначале идет 8 байт одного символа, построчно, снизу вверх — один бит равен одной точке на экране. Потом второй символ тем же способом. Поскольку знакоместо у нас 5 на 8 точек, то старшие три бита роли не играют. Всего в CGRAM может быть 8 символов, соответственно CGRAM имеет 64 байта памяти. Эти программируемые символы имеют коды от 0х00 до 0х07. Так что, записав, например, в первые 8 байт CGRAM (первый символ с кодом 00) какой- нибудь символ, и записав в DDRAM нуль (код первого символа в CGRAM) мы увидим на экране этот символ.
Таблица команд.
Пояснение:
I/D — инкремент или декремент счетчика адреса. По умолчанию стоит 0 — декремент. То есть, каждый следующий байт будет записан в n-1 ячейку. Если поставить 1 — будет инкремент.
S - сдвиг экрана, если поставить 1 то с каждым новым символом будет сдвигаться окно экрана, пока не достигнет конца DDRAM, наверное, удобно будет, выводить на экран большую строку, на все 40 символов, но такого не предвидится.
D — включить дисплей. Если поставить туда 0 то изображение исчезнет. Чтобы картинка появилась, в эту позицию надо записать 1.
С - включить курсор в виде прочерка. Записали 1 — включился курсор.
B — сделать курсор в виде мигающего черного квадрата.
S/C сдвиг курсора или экрана. Если стоит 0, то сдвигается курсор. Если 1, то экран. По одному разу за команду
R/L — определяет направление сдвига курсора и экрана. 0 — влево, 1 — вправо.
D/L — бит определяющий ширину шины данных. 1-8 бит, 0-4 бита
N — число строк. 0 — одна строка, 1 — две строки.
F - размер символа 0 — 5х8 точек. 1 — 5х10 точек (встречается крайне редко)
AG - адрес в памяти CGRAM
АD — адрес в памяти DDRAM
Доступ к памяти.
Командой выбираем в какую именно память и начиная с какого адреса будем записывать, потом просто пересылаем байты. Если указано, что записываем в DDRAM, то на экране (или в скрытую область) будут появляться символы, если в CGRAM то байты будут занесены уже в память знакогенератора. Главное потом не забыть переключится обратно на область DDRAM.
Система команд.
О том, что передается команда контроллеру дисплея сообщит вывод RS=0. Сама команда состоит из старшего бита, определяющего за что отвечает данная команда и битов параметров, указывающих контроллеру HD44780 что делать дальше.
Таким образом, экран удовлетворяет требованиям технического задания, так как одной строчки хватает на вывод значения напряжения. Вторая строчка будет служебной, индикация усреднения.
