Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Архитектура и система команд контроллера жкиСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Рассмотрим вопросы аппаратного и программного сопряжения микроконтроллеров AVR и символьных ЖКИ, построенных на базе контроллера HD44780 ( LCD – модуль ). Рассматриваемый ЖКИ при помощи 14–контактного разъема (табл. 8) обменивается информацией с микроконтроллером AVR. Микроконтроллер посылает в ЖКИ команды (табл. 9) и ASCII–коды выводимых символов. В свою очередь, ЖКИ может посылать AVR–микроконтроллеру по его запросу информацию о своем состоянии и данные из своих внутренних блоков памяти. Таблица 8. Описание выводов ЖКИ на базе HD44780
Три вывода 14–контактного разъема предназначены для подачи питающего напряжения и напряжения смещения, которое управляет контрастностью дисплея. На рис. 11показана рекомендуемая схема подключения этих выводов. Из оставшихся 11 выводов 8 (DB0 – DB7) используются для организации мультиплексированной шины «команды / данные», и на 3 вывода (RS, R/W, E) AVR–микроконтроллер выставляет управляющие сигналы. На рис. 12 изображены временные диаграммы этих сигналов при записи команд / данных в контроллер ЖКИ.При помощи сигнала на линии RS микропроцессор сообщает контроллеру индикатора о том, что именно передается по шине: команда или данные. Cигнал на линии Е является стробом, сопровождающим сигналы на шине «команды / данные». Запись информации в ЖКИ происходит по спа- ду этого сигнала. Потенциал на управляющем выводе R/W Рис. 11. Схема питания задает направление передачи данных: запись в RAM индикатора (R/W=0) или считывание оттуда (R/W=1). Для случая, когда микроконтроллер имеет ограниченное количество линий ввода / вывода, предусмотрен второй вариант подключения ЖКИ с использованием 4–х разрядной шины «команды / данные». При этом каждый байт данных передается по линиям DB4 – DB7 последовательно двумя тетрадами, начиная со старшей. Контроллер ЖКИ после приема байта команды или байта данных требует некоторого времени табл. 9 для обработки полученной информации, в течение которого AVR–микроконтроллер не должен выполнять новых передач. Для того, чтобы определить, когда контроллер ЖКИ закончит свои внутренние операции, AVR может опрашивать BUSY–флаг индикатора (команда «чтение busy–флага»). Второй, более простой способ заключается в том, что управляющий микроконтроллер просто выполняет временную задержку после каждой передачи информации. Если во время цикла записи AVR–микроконтроллер передает в контроллер индикатора код команды, то этот код записывается в регистр команд контроллера ЖКИ, и команда сразу же начинает выполняться. Если AVR–микроконтроллер передает в контроллер ЖКИ данные, которые представляют собой ASCII–коды отображаемых символов, то они записываются в буфер данных (DDRAM), который обычно содержит 80 ячеек (рис. 13). При записи или считывании буфера данных обращение осуществляется к ячейке, на которую в данный момент указывает курсор. Таблица 9. Система команд контроллера НD4478
Примечание: Буфер данных имеет больше ячеек, чем число знакомест дисплея. Смещая окно индикатора относительно буфера данных (см. систему команд), можно отображать на дисплее различные области буфера. У индикаторов с двумя строками первые 40 ячеек буфера данных, обычно, отображаются на верхней строке дисплея, а вторые 40 ячеек – на нижней строке. Сдвиг окна дисплея относительно буфера данных для верхней и нижней строк происходит синхронно. Курсор будет виден на индикаторе только в том случае, если он попал в зону видимости дисплея (и если предварительно была подана команда – отображать курсор). Кроме DDRAM, контроллер ЖКИ содержит еще один блок памяти – знакогенератор. Его «прошивка», то есть соответствие ASCII–кодов начертанию символов, обычно имеется в описании индикатора. Знакогенератор состоит из двух частей. Основная его часть представляет собой ПЗУ (CGROM) и ее, следовательно, нельзя изменить. Вторая часть, в которой задаются начертания символов для первых 16–ти кодов таблицы знакогенератора, представляет собой перепрограммируемое ОЗУ(CGRAM). Имеется возможность задать начертание 8 символов, соответствующих кодам 0(8), 1(9), 2(10)... 7(15). Для каждого из восьми перепрограммируемых символов в CGRAM отводится по 8 ячеек памяти, каждая из которых соответствует одной строке точек в изображении символа. Таким образом, перепрограммируемая часть знакогенератора содержит 64 байта памяти (8х8). Пример кодирования CGRAM для одной буквы приведен на рис. 14. Узел формирования стробирующего сигнала E здесь выполнен так же, как и на фирменных платах STK200, STK300 и использует сигнал записи WR AVR–микроконтроллера и старший разряд адреса A15. Таким образом, информация на индикатор поступает при выполнении AVR–микроконтроллером команды записи данных во внешнюю память с любым адресом, имеющим A15=1. На рис. 16 представлена временная диаграмма записи данных во внешнюю память AVR–микроконтроллера. Сравнивая ее с диаграммой сигналов записи данных в контроллер ЖКИ (рис. 12), не трудно заметить, что сигналы E и WR имеют разную полярность. Различаются также временные соотношения этих сигналов с сигналами на шине данных. Поэтому узел формирования сигнала E на рис. 15 имеет дополнительный инвертор и дифференцирующую цепочку, укорачивающую импульс записи. В качестве сигнала выбора регистра RS в рассматриваемой схеме используется еще один разряд адреса – A14. Таким образом, операции записи в контроллер ЖКИ команд или данных отличаются между собой только адресом. Например, данные можно записывать по адресу $C000, а команды – по адресу $8000. Вывод R/W ЖКИ в предлагаемой схеме непосредственно присоединен к линии «земля», тем самым задается единственно возможное направление передачи информации от AVR–микроконтроллера на ЖКИ. При этом потеря возможности опрашивать BUSY–флаг и считывать данные из блоков памяти контроллера ЖКИ окупается экономией одного управляющего вывода AVR.
Рис. 15. Включение ЖКИ как блока внешней памяти На рис. 17 изображена схема подключения ЖКИ, которую можно использовать для AVR–микроконтроллеров, не имеющих возможности подключения внешней памяти данных. В этой схеме управляющие сигналы E и RS формируются программно на обычных линиях ввода/вывода AVR. В приведенном примере шина данных состоит из 4 разрядов. Каждый байт данных при этом, как упоминалось выше, передается за две последовательные посылки, начиная со старшей тетрады. Простейшими составными «кирпичиками» драйвера ЖКИ могут быть подпрограммы, представленные в файле Lab2.asm: LCD_SETUP – подпрограмма инициализации и установки LCD модуля; LCD_HELLO – подпрограмма вывода на LCD модуль сообщения «HELLO»; LCD_CMD – подпрограмма вывода в LCD модуль команды; LCD_DATA – подпрограмма вывода в LCD модуль данных; LCD_CURSOR – подпрограмма установки курсора в LCD. Используется 4 битовая схема подключения LCD модуля к микроконтроллеру. Подпрограмма «WAIT_2M» осуществляет задержку 2.3 мсек с тактовой частотой микроконтроллера 1 МГц; В файле Lab_2.prj используется строка с LCD модулем: X[inst_name] LCD(chars lines oscil_freq) RS RW E D7 D6 D5 D4 D3 D2 D1 D0 В следуэщей редакции: Xdisp LCD(24 2 250K) PD2 PB0 PD3 PD7 PD6 PD5 PD4 nc3 nc2 nc1 nc0, где Disp – имя LCD модуля; nc3 nc2 nc1 nc0 – выводы D3 D2 D1 D0 LCD модуля не используются (применена схема с 4 битовым подключением к микроконтроллеру) 24 2 250K – параметры LCD модуля (число символов, число строк, частота) PD2 – RS PB0 – RW PD3 – E/ Задание к лабораторной работе
Изучить программу Lab2.asm и файл проекта Lab_2.prj. Отладить программу в среде VMLab, подключив необходимую периферию к микроконтроллеру AVR – интерфейс UART и LCD модуль (дисплей). На рис.18 представлены результаты моделирования программы в среде VMLab. Рис. 18. Результаты моделирования программы Lab2.asm в среде VMLab.
Файл Lab_2.prj .MICRO "ATmega16"; ATmega16 with 16 of external RAM .PROGRAM "Lab2.asm" .TARGET "Lab2.hex" .TRACE; Activate micro trace .POWER VDD=5 VSS=0; Power nodes .CLOCK 1meg; Micro clock .STORE 250m; Trace (micro+signals) storage time Xterm TTY(4800 8) PD0 PD1; place terminal Xdisp LCD(24 2 250K) PD2 PB0 PD3 PD7 PD6 PD5 PD4 nc3 nc2 nc1 nc0 .plot v(pd0) v(pd1)
Файл Lab2.asm .include "m16def.inc" .EQU OE = 0b001000; bit 3 Port D .EQU RS = 0b0001004; bit 2 Port D .DEF TEMP = R16; temporary working register .DEF PARAM = R17; Parameter transfer register .DEF DELAY = R10; .DEF DELAY1 = R11; To generate long delays .DEF DELAY2 = R12; ; Reset and interrupt vectors CSEG ORG 0x00 START: Rjmp RESET; Reset vector Org URXCaddr rjmp uart_rx Org UDREaddr Reti Org UTXCaddr Reti ; Device initialization RESET: Ldi temp, high(RAMEND); инициализация памяти стека Out SPH, temp Ldi temp, low(RAMEND)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 411; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.45.238 (0.007 с.) |