Помощь в написании студенческих работ
Антистрессовый сервис

Разработка устройства индикации данных на ЖК-дисплее, передаваемых по интерфейсу RS232 с ПК

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Контроллер HD44780 поддерживает как операции записи так и операции чтения. Чтение регистра DR приводит к загрузке содержимого DDRAM или CGRAM, в зависимости от текущего режима, при этом курсор смещается на одну позицию, как и при записи. Чтение регистра IR возвращает 8 значащих разрядов, причем в 7-ми младших содержится текущее значение счетчика АС (7 разрядов, если адресуется DDRAM, и 6 — если… Читать ещё >

Разработка устройства индикации данных на ЖК-дисплее, передаваемых по интерфейсу RS232 с ПК (реферат, курсовая, диплом, контрольная)

Введение

Тенденции развития современной техники таковы, что микропроцессорные устройства находят все более широкое применение там, где раньше обходились не только без них, но и без электроники вообще. Одновременно, в ранее «занятых» микропроцессорными устройствами областях круг решаемых задач и требования к качеству и скорости их решения растут там, где в 80-е годы применялись 4-разрядные устройства.

По статистическим данным за 2006 г, среди производителей Юго-Восточной Азии (одного из мировых центров производства электроники) 16- и 32-разрядные устройства уже более популярны, чем 8- разрядные. Однако, поскольку нет каких-либо глубоко принципиальных отличий в разработке изделий на базе 8-, 16- или более высокоразрядных микроконтроллеров, а 8-разрядные все еще дешевле своих собратьев, для целей обучения можно признать наиболее подходящими именно 8-разрядные микроконтроллеры.

На сегодня основную часть казахстанского рынка 8- разрядных микроконтроллеров между собой делят семейства Intel, MCS-51, Atmel, Maxim IC, HC05, HC08, HC11, Motorola.

1. Выбор микроконтроллера

Для выполнения курсового проекта был выбран микроконтроллер ATmega64 производства фирмы Atmel. Выбор данного микроконтроллера был осуществлен исходя из варианта, ниже приведены основные отличительные особенности:

· 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением

· Прогрессивная RISC архитектура

· Энергонезависимая память программ и данных

· Интерфейс JTAG (совместимый с IEEE 1149.1)

· Встроенная периферия

· Специальные микроконтроллерные функции

1.1 Описание микроконтроллера

ATmega64 — 8-разрядный микроконтроллер с внутрисхемно программируемой Flash памятью емкостью 64 кбайт (Рисунок 1.1).

ATmega64 является КМОП 8 — битным микроконтроллером, построенным на расширенной AVR RISC архитектуре. Используя команды исполняемые за один машинный такт, контроллер достигает производительности в 16 MIPS на рабочей частоте 16 МГц, что позволяет разработчику эффективно оптимизировать потребление энергии за счёт выбора оптимальной производительности.

Рисунок 1.1 — Блок-схема ATmega64

1.2 Архитектура ядра

Ядро микроконтроллеров AVR семейства Mega (рисунок 1.2) выполнено по усовершенствованной RISC-архитектуре (enhanced RISC) [2], в которой используется ряд решений, направленных на повышение быстродействия микроконтроллеров.

Арифметико-логическое устройство (АЛУ), выполняющее все вычисления, подключено непосредственно к 32 рабочим регистрам, объединенным в регистровый файл. Благодаря этому, АЛУ может выполнять одну операцию (чтение содержимого регистров, выполнение операции и запись результата обратно в регистровый файл) за такт. Кроме того, практически каждая из команд (за исключением команд, у которых одним из операндов является 16-битный адрес) занимает одну ячейку памяти программ.

В микроконтроллерах AVR реализована Гарвардская архитектура, характеризующаяся раздельной памятью программ и данных, каждая из которых имеет собственные шины доступа. Такая организация позволяет одновременно работать как с памятью программ, так и с памятью данных. Разделение информационных шин позволяет использовать для каждого типа памяти шины различной разрядности, причем способы адресации и доступа к каждому типу памяти также различаются. В сочетании с двухуровневым конвейером команд такая архитектура позволяет достичь производительности в 1 MIPS на каждый МГц тактовой частоты.

Рисунок 1.2 — Архитектура ядра микроконтроллера ATmega64

1.3 Характеристики микроконтроллера

Как и все микроконтроллеры AVR фирмы Atmel, микроконтроллеры семейства Mega являются 8-битными микроконтроллерами [8], предназначенными для использования во встраиваемых приложениях. Они изготавливаются по малопотребляющей КМОП-технологии, которая в сочетании с усовершенствованной RISC-архитектурой позволяет достичь наилучшего соотношения стоимость/быстродействие/энергопотребление. Микроконтроллеры описываемого семейства являются наиболее развитыми представителями микроконтроллеров AVR общего применения.

· 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением

· Прогрессивная RISC архитектура

— 130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл

— 32 8-разрядных рабочих регистра общего назначения + регистры управления периферией

— Полностью статическая работа

— Производительность приближающаяся к 16 MIPS (при тактовой частоте 16 МГц)

— Встроенный 2-цикловый перемножитель

· Энергонезависимая память программ и данных

— 64 Кбайт внутрисистемно-перепрограммируемой Flash памяти

— Обеспечивает 1000 циклов стирания/записи

— Дополнительный сектор загрузочных кодов с независимыми битами блокировки

— Внутрисистемное программирование встроенной программой загрузки

— Обеспечен режим одновременного чтения/записи (Read-While-Write)

— 2 Кбайта EEPROM

— Обеспечивает 100 000 циклов стирания/записи

— 4 Кбайта встроенной SRAM

— До 64 Кбайтов пространства дополнительной внешней памяти

— Программируемая блокировка, обеспечивающая защиту программных средств пользователя

— SPI интерфейс для внутрисистемного программирования

· Интерфейс JTAG (совместимый с IEEE 1149.1)

— Возможность сканирования периферии, соответствующая стандарту JTAG

— Расширенная поддержка встроенной отладки

— Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки

· Встроенная периферия

— Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения

— Два 16-разрядных таймера/счетчика, с расширенными возможностями, с отдельным предварительным делителем и режимами захвата и сравнения

— Счетчик реального времени с отдельным генератором

— Два 8-разрядных канала PWM

— Шесть каналов PWM с возможностью программирования разрешения от 1 до 16 разрядов

— 8-канальный 10-разрядный аналого-цифровой преобразователь

— 8 несимметричных каналов

— 7 дифференциальных каналов

— 2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат

— Байт-ориентированный 2-проводный последовательный интерфейс

— Сдвоенный программируемый последовательный USART

— Последовательный интерфейс SPI (ведущий/ведомый)

— Программируемый сторожевой таймер с отдельным встроенным генератором

— Встроенный аналоговый компаратор

· Специальные микроконтроллерные функции

— Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания

— Встроенный калиброванный RC-генератор

— Внутренние и внешние источники прерываний

— Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC

— Программная установка тактовой частоты

— Режим обеспечения совместимости с ATmega103 (перемычки)

— Глобальный запрет подтягивающих резисторов

· Выводы I/O и корпуса

— 53 программируемые линии ввода/вывода

— 64-выводной корпус TQFP

· Рабочие напряжения

— 4,5 — 5,5 В

· Рабочая частота

— 0 — 16 МГц

2. Описание ЖК-дисплея

2.1 Выбор ЖК-дисплея Наиболее распространенный контроллер управления алфавитно-цифровым модулем это контроллер HD44780 производства Hitachi. Практически все ведущие производители ЖКИ — Epson, Sanyo, Toshiba, Samsung, Philips выпускают аналоги этого контроллера или совместимые с ним по интерфейсу и командному языку микросхемы либо ЖКИ на базе этих контроллеров. То есть практически можно говорить об HD44780 как о неком промышленном стандарте. Модули с этим контроллером применяются в самых разнообразных устройствах: измерительные приборы, промышленнне, технологическое и медицинское оборудование, офисная техника.

Контроллер поддерживает размер символа 5×7 точек и 5×10 точек. HD44780 может управлять двумя строками по 40 символов (для управления четырехстрочного модуля по 40 символов используют два однотипных контроллера). При существующих стандартах ЖКИ контроллер не накладывает ограничений на количество и комбинации отображаемых символов (их количество может быть от 1 до 80).

2.2 Характеристики ЖК-модуля Операции чтения-записи байта являются базовыми для осуществления обмена данными с ЖКИ. Процесс обмена по 4-х и 8-ми разрядной шиной различается только реализацией этих операций. Эти две операции могут быть реализованны аппаратно, когда модуль подключен к системной шине, или программно, когда он взаимодействует с портами микро-ЭВМ. В таблице 2.1 приведены допустимые области значений временных интервалов.

Таблица 2.1 — Временные характеристики (нс)

Параметр

Обозн.

Мин.

Макс.

Операция чтения

Период сигнала E

tcycE

;

Положительный полупериод сигнала E

PWEH

;

Фронт/спад сигнала E

tEf, tEr

;

Установление адреса

tAS

;

Удержание адреса

tAH

;

Установление данных

tDSW

;

Удержание данных

tDSH

;

Операция записи

Период сигнала E

tcycE

;

Положительный полупериод сигнала E

PWEH

;

Фронт/спад сигнала E

tEf, tEr

;

Установление адреса

tAS

;

Удержание адреса

tAH

;

Установление данных

tDSW

;

Удержание данных

tDSH

;

2.3 Подключение модуля HD44780

Питающее напряжение составляет +5 В ± 10%. На вывод Vo для регулировки контрастности табло в большинстве ЖК-модулей должно подаваться напряжение 0…+5 В. Это напряжение легко получить с помощью подстроечного резистора (обычно сопротивлением 10 кОм), включенного между «землей» и выводом VCС.

На рисунке 2.1 показана схема включения, рассчитанная на стандартный диапазон температур. Подстроечный резистор R1 плавно меняет напряжение питания ЖКИ, что позволяет менять угол поворота жидких кристаллов и как следствие выставлять необходимую контрастность индикатора при необходимом угле обзора.

Рисунок 2.1 — Подключение модуля HD44780

После подачи напряжения на модуль и прохождения внутренней инициализации, устройство включается в режиме развертки верхней строки. При изменении напряжения на выводе Vo сегменты плавно меняют свой цвет от прозрачного к непрозрачному, что говорит о правильном подключении модуля питания. ЖКИ правильно отрегулирован, когда изображение сегментов едва проступает на основном фоне. Подсоединятся модул может к 4-х или 8-ми разрядной шине. При этом обмен можно организовать либо с системной шиной, либо через порты ввода-вывода программными средствами.

Таблица 2.2 — Расположение выводов ЖК-модуля HD44780

Вывод

Функция

Gnd

VCC

V0

RS

R/W

E

D0

D1

D2

D3

D4

D5

D6

D7

Регистр модуля HD44780, в который будут записываться значения, выбирают с помощью вывода RS (Register Select). Если в режиме доступа на запись на этот вывод подан сигнал низкого уровня, то записывается команда, в противном случае происходит запись в регистр данных. В режиме доступа на чтение состоянию RS = 0 соответствует комбинация флага занятости (Busy) и счетчика адреса, а состоянию RS =1 — чтение из регистра данных.

Режим чтения или записи определяется по уровню сигнала на выводе R/W (вывод 5). Лог. 0 соответствует записи, а лог. 1 — чтению (Рисунки 2.2 — 2.3).

Рисунок 2.2 — Временная диаграмма операции записи Рисунок 2.3 — Временная диаграмма операции чтения После того как управляющие сигналы RS и R/W стабильно установлены на протяжении как минимум 140 нс, микроконтроллер AVR подает на вывод 6 (Е-Enable) модуля строб-импульс положительной полярности длительностью минимум 450 нс, по которому в контроллер HD44780 записываются биты данных, выставленные микроконтроллером AVR на выводы D0… D7, или же, наоборот, микроконтроллер AVR считывает биты данных, выставленные на тех же выводах контроллером HD44780. До появления на выводе Е ниспадающего фронта данные должны быть стабильны на протяжении минимум 195 нс.

Таблица 2.3 — Операции записи и чтения для 8-ми разрядной шины

Операции записи для 8-ми разрядной шины

1 Установка значения линии RS

2 Вывод значения байта данных на шину DB0… DB7

3 Установка линии Е=1

4 Установка линии Е=0

5 Установка шины DB0… DB7 в состояние HI

Операции чтения для 8-ми разрядной шины

1 Установка значения линии RS

2 Установка линии R/W=1

3 Установка линии Е=1

4 Считывание байта данных с шины DB0… DB7

5 Установка линии Е=0

6 Установка линии R/W=0

2.4 Программирование и управление модулем HD44780

На рисунке 2.4 приведена упрощенная структурная схема контроллера, приведены основные элементы, которые напрямую взаимодействуют с управляющей программой — регистр данных (DR), регистр команд (IR), видеопамять (DDRAM), ОЗУ знакогенератора (CGRAM), счетчик адреса памяти (AC), флаг занятости контроллера. Элементы не взаимодействующие с управляющей программой не так важны для получения общей картины и поэтому пропущены. Управление контроллером ведется через интерфейс управляющей системы. Основные объекты взаимодействия — регистры DR и IR. Выбор адресуемого регистра осуществляется линией RS, если RS=0 — адресуется регистр команд (IR), если RS=1 — регистр данных (DR). Данные через регистр DR могут помещаться или прочитываться в видеопамять (DDRAM) или в ОЗУ знакогенератора (CGRAM) по текущему адресу, на который указывает счетчик адреса (АС). Информация в регистре IR интерпретируется устройством выполнения команд как управляющая последовательность. Прочтение регистра IR возвращает в 7-ми младших разрядах текущее значение счетчика АС, а в старшем разряде флаг занятости (BF). Видеопамять имеет общий объем 80 байтов и предназначена для хранения кодов символов. Видеопамять жестко организована в две строки по 40 символов в каждой и не подлежит изменению. То есть, независимо от того, сколько строк будет иметь конкретный ЖКИ-модуль, адресация видеопамяти всегда производится в две строки по 40 символов.

Рисунок 2.4 — Упрощенная структурная схема контроллера HD44780

Контроллер циклически производит обновление информации на ЖКИ, который организован как матрица, состоящая в зависимости от режима работы из 8-ми (одна строка символов 5×7 точек), 11-ти (одна строка символов 5×10 точек) или 16-ти (две строки символов 5×7 точек) строк по 200 сегментов (когда строка насчитывает 40 символов) в каждой. Собственный драйвер контроллера HD44780 имеет только 40 выходов (SEG1…SEG40) и самостоятельно может поддерживать только 8-ми символьные ЖКИ. Это означает, что ЖКИ-модули форматов до 8×2 реализованы на одной единственной микросхеме HD44780, модули, имеющие большее количество символов, содержат дополнительные микросхемы драйверов, например, HD44100, каждая из которых дополнительно предоставляет управление еще 40-ка сегментами. ЖКИ-модули формата 16×1 также реализованы с помощью одной единственной микросхемы HD44780, но одна 16-ти символьная строка в них фактически составлена из двух 8-ми символьных. Это усложняет программное управление, ведь строка оказывается логически разорванной посередине, тем не менее, экономически это оправдано, ибо позволило создать ЖКИ-модуль, содержащий всего одну микросхему. Другой вариант пространственной адресации встречается в 4-х строчных модулях. Из-за проблем разводки токоведущих дорожек, первая и вторая строки этих модулей являются таковыми как обычно, третья же является продолжением первой строки, а четвертая — второй.

В таблице 2.4 показан набор различных флагов для HD44780. Флаги определяют режимы работы различных элементов контроллера. Также в таблице приведены значения управляющих флагов непосредственно после подачи на ЖКИ-модуль напряжения питания. Переопределение значений флагов производится специальными командами, записываемыми в регистр IR, при этом комбинации старших битов определяют группу флагов или команду, а младшие содержат собственно флаги.

Таблица 2.4 — Флаги, управляющие работой контроллера HD44780

I/D Режим смещения счетчика адреса АС, 0 уменьшение, 1 увеличение

S Флаг режима сдвига содержимого экрана. 0 сдвиг экрана не производится, 1 после записи в DDRAM очередного кода экран сдвигается в направлении, определяемым флагом I/D: 0 вправо, 1 влево. При сдвиге не производится изменение содержимого DDRAM. изменяются только внутренние указатели расположения видимого начала строки в DDRAM

S/C Флаг-команда, производящая вместе с флагом R/L операцию сдвига содержимого экрана (так же, как и в предыдущем случае, без изменений в DDRAM) или курсора. Определяет объект смещения: 0 сдвигается курсор, 1 сдвигается экран

R/L Флаг-команда, производящая вместе с флагом S/C операцию сдвига экрана или курсора. Уточняет направление сдвига: 0 влево, 1 вправо

D/L Флаг, определяющий ширину шины данных: 0 4 разряда, 1 8 разрядов

N Режим развертки изображения на ЖКИ: 0 одна строка, 1 две строки

F Размер матрицы символов: 0 5×8 точек, 1 5×10 точек

D Наличие изображения: 0 выключено, 1 включено

C Курсор в виде подчерка: 0 выключен, 1 включен

B Курсор в виде мерцающего знакоместа: 0 выключен, 1 включен

Список управляющих комбинаций битов регистра IR и выполняемые ими команды приведены в таблице 2.5. Так как на момент включения ЖКИ-модуль ничего не отображает (флаг D=0), то для того, чтобы вывести какой-либо текст необходимо, как минимум, включить отображение, установив флаг D=1. Вот пример широко распространенной последовательности для инициализации ЖКИ-модуля:, $OC, 6 (знак $ перед числом указывает на шестнадцатеричное основание). устанавливает режим отображения 2-х строк с матрицей 5×8 точек и работу с 8-ми разрядной шиной данных; $OC включает отображение на экране ЖКИ-можуля, без отображения курсоров; 6 устанавливает режим автоматического перемещения курсора слева-направо после вывода каждого символа.

Таблица 2.5 — Список управляющих комбинаций битов регистра IR и выполняемые ими команды

Управляющие комбинации битов регистра IR

Назначение

D7

D6

D5

D4

D3

D2

D1

D0

Очистка экрана, АС = 0, адресация АС на DDRAM

АС = 0, адресация на DDRAM, сброшены сдвиги, начало строки адресуется в начале DDRAM

;

Выбирается направление сдвига курсора или экрана

I/D

S

Выбирается режим отображения

D

C

B

Команда сдвига курсора/экрана

S/C

R/L

;

;

Определение параметров развертки и ширины шины данных

DL

N

F

;

;

Присвоение счетчику АС адреса в области CGRAM

AG

AG

AG

AG

AG

AG

Присвоение счетчику АС адреса в области DDRAM

AD

AD

AD

AD

AD

AD

AD

Контроллер HD44780 поддерживает как операции записи так и операции чтения. Чтение регистра DR приводит к загрузке содержимого DDRAM или CGRAM, в зависимости от текущего режима, при этом курсор смещается на одну позицию, как и при записи. Чтение регистра IR возвращает 8 значащих разрядов, причем в 7-ми младших содержится текущее значение счетчика АС (7 разрядов, если адресуется DDRAM, и 6 — если CGRAM), а в старшем — флаг занятости BF. Этот флаг имеет значение 1 когда контроллер занят и 0 — когда свободен. Необходимо учитывать, что большинство операций, выполняемых контроллером, занимают значительное время, около 40 мкс, а время выполнения некоторых доходит до единиц миллисекунд, поэтому цикл ожидания снятия флага BF должен обязательно присутствовать в программах драйвера ЖКИ-модуля и предшествовать совершению любой операции (естественно, кроме операции проверки флага BF).

После совершения операции записи или чтения DDRAM и появления после нее признака готовности (BF = 0), прочитанное в этом же цикле (вместе с флагом BF) значение АС скорее всего не будет достоверным. Дело в том, что между появлением признака готовности и вычислением контроллером нового значения АС существует некоторый временной интервал, составляющий около 4 мкс при тактовой частоте контроллера 270 кГц. Поэтому, если необходимо получить истинное значение АС, нужно совершить повторную операцию прочтения IR спустя не менее чем 4 мкс (если контроллер работает на частоте 270 кГц время ожидания необходимо пропорционально увеличить).

Вывод на экран символа производится записью его кода в регистр DR. При этом символ размещается в DDRAM по текущему адресу, указываемому АС, а значение АС увеличивается или уменьшается на 1. Чтобы произвести переустановку курсора на нужную позицию, необходимо присвоить АС соответствующее значение. Здесь есть одна тонкость. Когда производится последовательная запись символов и в результате заполняется вся строка, курсор автоматически переходит на вторую строку, но если необходимо принудительно установить курсор, скажем, на начало второй стороки, то будет неверным присвоить АС казалось бы логичное значение (40), правильным является значение (64). Значения адресов DDRAM в диапазоне… fF (а равно и… F) являются неопределенными и результаты работы с ними могут быть непредсказуемыми.

3. Приём данных от ПК

Проектируемое в данном курсовом проекте устройство осуществляет приём данных от ПК по интерфейсу RS 232.

RS 232 — интерфейс передачи информации между двумя устройствами на расстоянии до 20 м. Информация передается по проводам с уровнями сигналов -15 В +15 В для обеспечения большей устойчивости к помехам. Асинхронная передача данных осуществляется с установленной скоростью при синхронизации уровнем сигнала стартового импульса.

Интерфейс RS 232-C был разработан для простого применения, однозначно определяемого по его названию «Интерфейс между терминальным оборудованием и связным оборудованием с обменом по последовательному двоичному коду.

CD — Устройство устанавливает этот сигнал, когда обнаруживает несущую в принимаемом сигнале. Обычно этот сигнал используется модемами, которые таким образом сообщают хосту о обнаружении работающего модема на другом конце линии.

RXD — Линия приема хостом данных от устройства. Подробно описана в разделе «Протокол обмена данными» .

RXD — Линия передачи хостом данных к устройству. Подробно описана в разделе «Протокол обмена данными» .

DTR — Хост устанавливает этот сигнал, когда готов к обмену данными. Фактически сигнал устанавливается при открытии порта коммуникационной программой и остается в этом состоянии все время, пока порт открыт.

DSR — Устройство устанавливает этот сигнал, когда включено и готово к обмену данными с хостом. Этот и предыдущий (DTR) сигналы должны быть установлены для обмена данными.

RTS — Хост устанавливает этот сигнал перед тем, как начать передачу данных устройству, а также сигнализирует о готовности к приему данных от устройства. Используется при аппаратном управлении обменом данными.

CTS — Устройство устанавливает этот сигнал в ответ на установку хостом предыдущего (RTS), когда готово принять данные (например, когда предыдущие присланные хостом данные переданы модемом в линию или есть свободное место в промежуточном буфере).

RI — Устройство (обычно модем) устанавливает этот сигнал при получении вызова от удаленной системы, например при приеме телефонного звонка, если модем настроен на прием звонков.

Таблица 3.1- Назначение выводов 9-контактного разъема

Контакт

Сигнал

Направление

Описание

CD

Вход

Обнаружена несущая

RXD

Вход

Принимаемые данные

TXD

Выход

Передаваемые данные

DTR

Выход

Хост готов

GND

;

Общий провод

DSR

Вход

Устройство готово

RTS

Выход

Хост готов к передаче

CTS

Вход

Устройство готово к приему

RI

Вход

Обнаружен вызов

микроконтроллер данные интерфейс дисплей В протоколе RS-232 существуют два метода управления обменом данных [7]: аппаратный и программный, а также два режима передачи: синхронный и асинхронный. Протокол позволяет использовать любой из методов управления совместно с любым режимом передачи. Также допускается работа без управления потоком, что подразумевает постоянную готовность хоста и устройства к приему данных, когда связь установлена (сигналы DTR и DSR установлены).

Аппаратный метод управления реализуется с помощью сигналов RTS и CTS. Для передачи данных хост (компьютер) устанавливает сигнал RTS и ждет установки устройством сигнала CTS, после чего начинает передачу данных до тех пор, пока сигнал CTS установлен. Сигнал CTS проверяется хостом непосредственно перед началом передачи очередного байта, поэтому байт, который уже начал передаваться, будет передан полностью независимо от значения CTS. В полудуплексном режиме обмена данными (устройство и хост передают данные по очереди, в полнодуплексном режиме они могут делать это одновременно) снятие сигнала RTS хостом означает его переход в режим приема.

Программный метод управления заключается в передаче принимающей стороной специальных символов остановки (символ с кодом 0×13, называемый XOFF) и возобновления (символ с кодом 0×11, называемый XON) передачи. При получении данных символов передающая сторона должна соответственно остановить передачу или возобновить ее (при наличии данных, ожидающих передачи). Этот метод проще с точки зрения реализации аппаратуры, однако обеспечивает более медленную реакцию и соответственно требует заблаговременного извещения передатчика при уменьшении свободного места в приемном буфере до определенного предела.

Синхронный режим передачи подразумевает непрерывный обмен данными, когда биты следуют один за другим без дополнительных пауз с заданной скоростью. Этот режим COM-портом не поддерживается.

Асинхронный режим передачи состоит в том, что каждый байт данных (и бит контроля четности, в случае его наличия) «оборачивается» синхронизирующей последовательностью из одного нулевого старт-бита и одного или нескольких единичных стоп-битов. Схема потока данных в асинхронном режиме представлена на рисунке.

Формат передаваемых данных показан на рисунке 3.1. Собственно данные (5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение — не более 10%. Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19 200, 38 400, 57 600, 115 200 бит/с.

Рисунок 3.1 Формат данных RS-232

Преобразование уровней RS-232(-15 В +15 В) в TTL уровень (0 В +5 В) в данном курсовом проекте реализовано с помощью микросхемы MAX232, конфигурация выводов которой: представлена на рисунке 3.2.

Рисунок 3.2 — Расположение выводов микросхемы MAX232

Характеристики MAX232:

· могут работать от единственного источника питания (+3 или +5 В)

· поддерживают скорость обмена 115 200 бод

· имеют достаточно малое число выводов

· приемлемую цену

· содержат по два передатчика и приемника

· не могут быть переведены в режим микропотребления (shut down)

На структурной схеме MAX232 (рисунке 3.3) изображены удвоитель напряжения и инвертор напряжения +10 В в -10 В. Эти напряжения используются для формирования сигналов соответствующих RS-232.

Рисунок 3.3 — Структурная схема микросхемы MAX232

4. Алгоритм работы программы Основной алгоритм работы устройства (рисунок 4.1):

1. Настройка портов микроконтроллера;

2. Настройка ЖК-модуля (рисунок 4.2);

3. Настройка UART (рисунок 4.3);

4. Организация задержки (рисунок 4.4);

5. Организация передачи (рисунок 4.5).

На рисунке 4.8 приведена структура всей программы.

Рисунок 4.1 — Основной алгоритм работы устройства Рисунок 4.2 — Настройка HD44780

Рисунок 4.3 — Настройка UART микроконтроллера Рисунок 4.4 — Организация задержки

Рисунок 4.5 — Организация передачи с МК на дисплей

Рисунок 4.6 — Передача команд и данных Рисунок 4.7 — Вывод символа

Рисунок 4.8 — Структура всей программы

Заключение

В данном курсовом проекте была осуществлена разработка устройства индикации данных на ЖК-дисплее, передаваемых по интерфейсу RS232 с ПК. Были описаны в аналитическом, структурном и расчетно-графическом виде все необходимые узлы и элементы.

При расчете данной курсовой работы использовались математические и графические пакеты, такие как:

· Proteus Professional 7 (Данное ПО используется для симуляции основных цифровых устройств и систем)

· sPlan 6.0.0.2 (Данное ПО используется для графического построения микросхем памяти, а также для структурных схем и узлов системы)

· AVR Studio 4 (Данное ПО используется для создания и отладки программы на языке Ассемблер)

Список использованных источников

[1] Гребнев В. В. Микроконтроллеры семейства AVR фирмы ATMEL. — М.: ИП РадиоСофт, 2002.

[2] Угрюмов Е. П. Цифровая схемотехника. СПб: БХВ-СПб, 2000.

[3] Большие интегральные микросхемы запоминающих устройств: справочник. М.: Радио и связь, 1990.

[4] Бойко В. И. и др. Схемотехника электронных систем. Аналоговые и импульсные устройства. СПб.: БХВ-Петербург, 2004.

[5] Опадчий Ю. Ф. и др. Аналоговая и цифровая электроника. — М.: Радио и связь, 1997.

[6] Трамперт В. AVR-RISC микроконтроллеры.: Пер. с нем. — К.: «МК-Пресс», 2006.

[7] Кузьминов А. Ю. Интерфейс RS232. Связь между компьютером и микроконтроллером. — М.: Радио и связь, 2004.

[8] Справочник по ATmega64 (64L). Atmel corporation, 2001.

Приложение (обязательно)

(программа)

nolist

.include «64def.inc»

.list

;***** Регистровые переменные

.def tmp1 = r16; Рабочий регистр 1

.def tmp2 = r17; Рабочий регистр 2

.def prm1 = r18; Передаваемый параметр

.def tim1 = r19; Счетчик 1

.def tim2 = r20; Счетчик 2

.def Cnt = r21; Вспомогательный счетчик

.equ RS = 6; Register Select = разряд 6 порта C

.equ Ena = 7; Enable Impuls = разряд 7 порта C

.equ RW = 6; R/W = разряд 6 порта D (/WR)

.equ BF = 7; Флаг занятости = разряд 7 порта A

.cseg

.org 0×00

rjmp Initial ;После сброса — к главной программе

.org 0x0B

rjmp osnovnaja ;Прерывание по завершению приёма данных

InitLCD:

rcall wait5ms

rcall wait5ms

rcall wait5ms; Задержка на 15 мс после подачи питания

ldi prm1,48; $ 30: установка функции, 8 разрядов

rcall SendCom; Отправка команды на ЖК-модуль

rcall wait5ms; Задержка на 5 мс

ldi prm1,48; $ 30: установка функции, 8 разрядов

rcall SendCom; Повторяем команду

rcall wait5ms; Задержка на 5 мс

ldi prm1,48; $ 30: установка функции, 8 разрядов

rcall SendCom; Повторяем команду

rcall wait5ms; Задержка на 5 мс

rcall WaitBusy; Ожидаем готовности ЖК-модуля к приему

ldi prm1,56; $ 38: функция = 8 разрядов, 2 строки, 5x8

rcall SendCom; Отправляем команду

rcall wait150us; Задержка на 150 мкс

rcall WaitBusy; Ожидаем готовности ЖК-модуля к приему

ldi prm1,8; $ 08: отключение табло, курсора, мерцания

rcall SendCom; Передаем команду

rcall wait150us; Задержка на 150 мкс

rcall WaitBusy; Ожидаем готовности ЖК-модуля к приему

ldi prm1,1; $ 01: очистка табло

rcall SendCom; Передаем команду

rcall wait5ms; Задержка на 5 мс

rcall WaitBusy; Ожидаем готовности ЖК-модуля к приему

ldi prm1,6; $ 06: режим инкремента адреса

rcall SendCom; Передаем команду

rcall wait150us; Задержка на 150 мкс

ret

InitUART:

ldi prm1,23

out UBRR, prm1 ;настроили регистр скорости передачи данных

sbi UCR, 4 ;разрешили приём данных от ПК

sbi UCR, 7 ;разрешили прерывание по завершению приёма данных от ПК (переходим на osnovnaja)

SEI ;установили флаг глобального прерывания

ret

SendCom: ;Передача в ЖК-модуль команды

cbi PortC, RS ;Register Select = команда

rcall Ausgabe

ret

SendDat: ;Передача в ЖК-модуль байта данных

sbi PortC, RS ;Register Select = байт данных

rcall Ausgabe

ret

Ausgabe: ;Длина данных = 8 бит

out PortA, prm1 ;Выдача команды/данных на порт A

sbi PortC, Ena ;Подаем импульс разрешения

nop

nop ;Длительность импульса — минимум 450 нс

cbi PortC, Ena ;Снимаем импульс разрешения

ret

OutSimvol: ;Вывод символа на табло

rcall WaitBusy ;Ожидаем готовности ЖК-модуля к приему

rcall SendDat; Передаем символ, автоинкремент адреса

ret

OutText: ;Вывод приветствия на табло

lsl ZL

rol ZH ;Указатель Z — на 1 позицию влево

OT1:

lpm ;Загружаем код символа в r0

mov prm1, r0 ;Копируем код символа в prm1

rcall WaitBusy ;Ожидаем готовности ЖК-модуля к приему

rcall SendDat ;Передаем символ, автоинкремент адреса

adiw ZL, 1 ;Инкрементируем указатель Z

dec cnt ;Счетчик — 1

brne OT1 ;Выводим все символы на ЖК-табло

ret

WaitBusy: ;Ожидание готовности ЖК-модуля к приему

clr tmp1

out DDRA, tmp1 ;Порт A = вход

cbi PortC, RS ;Register Select = команда

sbi PortD, RW ;Направление = чтение из ЖК-модуля

WB1:

sbi PortC, Ena ;Подаем импульс разрешения

nop

nop ;После макс. 320 нс стабильности данных

in tmp1, PinA ;считываем BF и значение счетчика адреса

cbi PortC, Ena ;Снимаем импульс разрешения

nop

sbrc tmp1, BF ;Пропускаем следующую команду, если ЖК-модуль готов (BF=0)

rjmp WB1

cbi PortD, RW ;Направление записи = в ЖК-модуль

ser tmp1

out DDRA, tmp1 ;Порт A = выход

ret

Wait50us: ;Такт системной синхронизации = 3,6864 МГц

ldi tim1,65 ;Загрузка счетчика

Wait51:

dec tim1

brne Wait51

ret

Wait150us: ;Такт системной синхронизации = 3,6864 МГц

rcall wait50us

rcall wait50us

rcall wait50us

ret

Wait5ms: ;Такт системной синхронизации = 3,6864 МГц

ldi tim2,100 ;Загрузка счетчика

Wait501:

rcall wait50us

dec tim2

brne Wait501

ret

Wait38ms: ;Такт системной синхронизации = 3,6864 МГц

ldi tim2,0 ;Загрузка счетчика

Wait381:

rcall wait150us

dec tim2

brne Wait381

ret

Wait5s: ;Такт системной синхронизации = 3,6864 МГц

ldi cnt, 130 ;Загрузка счетчика

Wait5s1:

rcall wait38ms

dec cnt

brne Wait5s1

ret

Initial:

ldi tmp1, High (RamEnd)

out sph, tmp1

ldi tmp1, Low (RamEnd) ;Настроили стек

out spl, tmp1 ;Инициализируем стек

ldi tmp1,$3 °F ;Разряды 7.6 = 0, остальные = 1

out PortC, tmp1 ;Ena, RS = 0

cbi PortD, RW ;WR = 0

ldi tmp1,$C0 ;Разряд 7 = 1, разряд 6 = 1

out DDRC, tmp1 ;Разряды 7.6 — выходы, остальные — входы

sbi DDRD, RW ;Разряд 6 — выход

ser tmp1 ;Устанавливаем tmp1

out DDRA, tmp1 ;Порт A — выход

rcall InitLCD ;Инициализируем ЖК-модуль

clr tmp2 ;Счетчик символов

rcall InitUART ;Инициализируем UART

Privetstvie1:

ldi prm1,$ 0C ;Включаем табло, откл. курсор и мерцание

rcall WaitBusy ;Ожидаем готовность ЖК-модуля к приему

rcall SendCom ;Передаем команду

ldi prm1,$ 01 ;Очищаем табло, курсор — в начало

rcall WaitBusy ;Ожидаем готовность ЖК-модуля к приему

rcall SendCom ;Передаем команду

ldi ZH, high (Text1)

ldi ZL, low (Text1) ;Z указывает на начало текста

ldi cnt, 20 ;Текст состоит из 16 символов

rcall OutText ;Выводим Text1

Privetstvie2:

ldi prm1,64 ;Адрес = начало второй строки

sbr prm1,1<<7 ;Устанавливаем разряд 7 -> память DD

rcall WaitBusy ;Ожидаем готовность ЖК-модуля к приему

rcall SendCom ;Передаем команду

ldi ZH, high (Text2)

ldi ZL, low (Text2) ;Z указывает на начало текста

ldi cnt, 20 ;Текст состоит из 16 символов

rcall OutText ;Выводим Text2

rjmp pc

osnovnaja:

osnov:

rcall WaitBusy ;Ожидаем готовности ЖК-модуля к приему

ldi prm1,15 ;функция мерцания

rcall SendCom ;Передаем команду

rcall wait150us ;Задержка на 150 мкс

rcall WaitBusy ;Ожидаем готовности ЖК-модуля к приему

ldi cnt, 20

ldi prm1,$ 01 ;Очищаем табло, курсор — в начало

rcall WaitBusy ;Ожидаем готовность ЖК-модуля к приему

rcall SendCom ;Передаем команду

osnov1:

sbis USR, 7 ;Проверяем перешли данные из сдвигового регистра в р-р данных (UDR)?

rjmp osnov1 ;Если нет, то возвращаемся на метку osnov

in prm1, UDR ;Поместили содержимое р-ра данных в р-р передаваемого параметра

rcall OutSimvol ;Выводим символ

dec cnt ;Декрементировали

cpi cnt, 0 ;Сравнили с нулём

brne osnov1 ;Перешли если неравно, предыдущие символы видны

ldi prm1,192 ;Адрес = начало второй строки

rcall WaitBusy ;Ожидаем готовность ЖК-модуля к приему

rcall SendCom ;Передаем команду

osnov2:

sbis USR, 7 ;Проверяем перешли данные из сдвигового регистра в р-р данных (UDR)?

rjmp osnov2 ;Если нет, то возвращаемся на метку osnov

in prm1, UDR ;Поместили содержимое р-ра данных в р-р передаваемого параметра

rcall OutSimvol ;Выводим символ

inc cnt

cpi cnt, 20

brne osnov2 ;Перешли если неравно, предыдущие символы видны

rjmp osnov

Показать весь текст
Заполнить форму текущей работой